记一次将Gentoo系统从HD迁移至SSD
公司办公的主力电脑,是一块1T的机械硬盘,最近领导开心,给大家每人配了块256G的固态硬盘,于是我今天把机械硬盘里的Gentoo,迁移到了固态中。
磁盘分区
插入SSD后,旧的HD由原来的sda变成了sdb,新SSD成了sda。
原来HD的分区内容如下:
sdb1,EFI分区,原来挂载至/boot/efi下。
sdb2,swap分区,
sdb3,/home分区,
sdb4,/分区,
加入SSD后,准备新旧硬盘混用,新分区规划如下:
sda1,/分区
sdb1,EFI分区,挂至/boot/efi下。
sdb2,swap分区
sdb3,/home
sdb4,/var
将/var
放至HD下,以避免对SSD的频繁读写。
现对固态硬盘进行分区:
root # parted /dev/sda
(parted) mklabel gpt
# 为了对齐,以1作为起始,使用整个SSD的95%
(parted) mkpart primary ext4 1 95%
# 检查是否对齐
(parted) align-check optimal 1
1 aligned
(parted) quit
格式化分区
root # mkfs.ext4 -E stride=128,stripe-width=128 /dev/sda1
拷贝文件
清理系统垃圾
eclean distfiles
rm -rf /usr/portage/distfiles/*
挂载SSD
mkdir /mnt/gentoo
mount -o discard /dev/sda1 /mnt/gentoo
使用cp -av
命令,将/
下,除/dev
,/mnt
,/proc
,/run
,/tmp
,/var
,/sys
以外所有目录,拷贝至/mnt/gentoo
下。此处也可以使用dd
命令。
然后手动创建/mnt/gentoo/run
目录
mkdir -v /mnt/gentoo/run
将原/var
下目录拷贝至/
根下:
cp -av /var /
配置系统
挂载所需的目录,然后chroot
:
mount -t proc /proc /mnt/gentoo/proc
mount --rbind /sys /mnt/gentoo/sys
mount --make-rslave /mnt/gentoo/sys
mount --rbind /dev /mnt/gentoo/dev
mount --make-rslave /mnt/gentoo/dev
chroot /mnt/gentoo /bin/bash
source /etc/profile
export PS1="(chroot) $PS1"
使用blkid
命令,查看硬盘的UUID。
编辑/etc/fstab
文件,按硬盘分区规划,完善文件。
#/dev/sda1
UUID=XXX / ext4 defaults,relatime,discard 0 1
将/tmp
分区,放到HD上:
mkdir -pv /var/tmp
ln -s /var/tmp /tmp
将/etc/portage/make.conf
下缓存文件的路径,也设置到HD中。
安装Grub引导
安装,并配置grub
grub-install --target=x86_64-efi --efi-directory=/boot/efi
grub-mkconfig -o /boot/grub/grub.cfg
重启系统
取消挂载,重启系统,享受新系统。
exit
umount -l /mnt/gentoo/dev{/shm,/pts,}
umount -R /mnt/gentoo
reboot
问题排查
刚安装SSD后,系统无法启动,显示无法找到sda4。
原因是原来HD变成了sdb,所以grub应该寻找的是sdb4才对。
解决方法:
重启计算机,在grub选择菜单,近e
进入编辑模式,将hd0
修改为hd1
,将sda4
修改为sdb4
,按F10
从HD启动系统。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。