切换根目录

Catalogue
  1. 1. 第一步:影分身
  2. 2. 第二步:移花接木

切根有两步

  1. 复制一个一模一样的根目录(影分身)
  2. 修改grub,使系统启动时直接挂新的根目录(移花接木)

第一步:影分身

复制当让要复制的一模一样,把新的盘重新分区,写入ext4文件系统(原根分区就是ext4)

1
2
3
4
5
6
7
8
9
10
11
12
13
parted -s /dev/sda5 mklabel gpt mkpart primary ext4 0% 100%

mkfs.ext4 /dev/sda5

rsync -av --exclude=/proc --exclude=/sys --exclude=/dev --exclude=/home --exclude=/boot --exclude=/mnt --exclude=/std / /std
把根分区的东西复制过去(包括权限),记得排除/std,不然的话就无限循环了

在新的根目录/std下创建一些目录,如/boot ,/run ,/sys,/dev,/proc,/mnt等

然后执行下列命令绑定挂载临时文件系统到新的根下,
mount --rbind /proc /std/proc
mount --rbind /dev /std/dev
mount --rbind /sys /std/sys

第二步:移花接木

完成上一步后就可以切换的新根下了

chroot /std

此时/std已经是一个可以使用的系统

因为根目录已经变了,所以修改/etc/fstab,然后挂载boot分区到/boot目录下,通过执行 grub2-mkconfig -o /boot/grub2/grub.cfg 生成新的grub配置文件

如果不放心的话可以查看/boot/grub2/grub.cfg的root=UUID=,看看对应的uuid是否变为新根的uuid

如果ok了,放心大胆的重启,就算失败了还有 live cd 呢