Linux整个系统盘迁移指南(以ArchLinux为例)
作者:互联网
这两天心血来潮想要装一个黑苹果,原本想要将系统安装在256G的主盘上。但是主盘是三星PM981的,在安装黑苹果系统时会假死卡住。所以需要安装了另一块西数的硬盘上,也就是我现在的Linux系统所在的盘。显然安装黑苹果有一定的风险,所以我不想直接将Linux所在的盘完全抹掉。因此想到将整个Linux系统迁移到另一块系统盘上。
主要的思路就是从根目录将整个系统必要的文件夹打包成一个压缩文件,然后在另一个系统盘上解包就可以了。dd命令也是一种方法,但是由于我的主盘的空间要小于Linux盘,所以如果直接dd两个盘会报错。在Linux系统上主要包括 usr, etc, home 三个文件夹,如果可以的话也可以打包 opt 和 var 两个文件夹,boot文件夹也可以打包,但是后面会修改一些东西。根目录下其它的文件夹则都是一些Linux系统在运行以后会创建的东西了,所以没有打包的必要。此外,home目录下的一些文件夹也可以不用打包,比如.cache文件夹,里面都是一些临时缓存,但是占用了很大的磁盘空间。
首先需要将迁移的目的盘的原有分区抹除,重新分区成与现有分区完全一致的分区,主分区大小可以不一致,boot分区和swap分区尽量一致。分区可以用fdisk工具。当然也需要写入文件系统,文件系统类型也保持一致。这些工作完成以后,将主分区挂载到当前系统的/mnt目录下。
接下来可以通过tar工具进行打包了,具体的命令为
sudo tar -xzvfp archlinux.tar.gz --exclude=/proc --exclude=/sys --exclude=/run --exclude=/tmp --exclude=/lost+found --exclude=/mnt /
这里注意需要切换到/mnt目录下后运行,也就是需要将压缩包存储到另一块硬盘下,因为压缩包在进行压缩时已经生成,因此可以把自己也打包进去,而这时压缩包可能已经几十G了。因此可以直接压缩到另一块硬盘下避免被重复打包。但是如果另一块硬盘的空间不够同时容纳压缩包和解压后的文件系统的话,也可以将压缩包放在本盘的一个单独文件夹下,然后将该文件夹也放在上面的 exclude 文件夹中。
压缩完成之后,确保硬盘空间足够的前提下,将另一块盘的boot分区挂载到/mnt/boot下,这一步非常重要,是为了让压缩文件中的boot文件复制到另一个盘的boot分区下。将压缩文件解压到/mnt文件夹下。
解压完成后,这时需要创建另外一些没有被复制的文件夹的空文件夹供后续系统使用。而由于系统时根据/etc/fstab文件来识别系统的引导分区的,因此现在换盘后需要重新创建fstab文件并重新安装引导文件。创建fstab需要用到genfstab工具,这一个在安装arch的liveCD环境里面有,因此需要另外一个U盘用于这一步,但是好像arch也是可以安装这一个工具的,我手头有一个arch的安装盘,因此没有去折腾。
进入安装盘环境之后,挂载目的盘,包括主分区和boot分区。然后使用`genfstab -U /mnt > /mnt/etc/fstab`命令重新生成fstab。
之后`arch-chroot`进入系统,通过
grub-mkconfig > /boot/grub/grub.cfg
grub-install --target=x86_64-efi --efi-directory=/boot
重新安装一下grub,⚠️这里我并不清楚是否是必要的,只是为了保险起见重新生成了grub配置文件和安装了一下grub。
接下来重启进入bios就应该看到引导了,但是我这里有个问题的是在迁移完系统之后,原来系统的引导就在bios里不见了,这一点需要注意一下。
上述所说除了用于迁移系统盘,还可以用于定期备份系统,只需要定期通过上面打包的方式给系统打快照,在arch滚挂时就可以迅速恢复系统。可以说礼遇不败之地了。
标签:ArchLinux,grub,为例,--,mnt,分区,boot,系统盘,文件夹 来源: https://www.cnblogs.com/kaleidopink/p/16372862.html