欢迎光临散文网 会员登陆 & 注册

【archlinux教程】更换磁盘又不想重装archlinux?直接迁移就完事了。

2023-02-19 12:44 作者:永远滴大冰棍  | 我要投稿

没有感情,全是技巧。

前段时间新购入一块2T的M2硬盘,就想着把原有的1T的M2硬盘拿去做备胎。但又不想重装系统,因为要备份很多东西,装完了还得更新系统,下载软件、配置一大堆东西,于是萌生了系统迁移的想法。上网搜到一篇教程,不过是ubuntu的(原文在此:https://jiajunhuang.com/articles/2020_05_22-linux_clone_sys.md.html)。本着都是linux,大差不差的原则,抄了下思路,于是有了本篇针对archlinux的教程。


一、先准备好一块没有资料的硬盘,如果有资料,就先转移,这样是最方便的,因为这样最不容易出错。

将新硬盘进行分区,至少有n个分区能与现有linux系统的关键挂载点能一一对应。

举个例子:

假设现有linux所在磁盘为sda(当然,现在大多数都是固态硬盘,是以nvme开头的),分区挂载点如下:

devide      mountpoint      space

/dev/sda1   /boot/efi       300M(可根据需求来)

/dev/sda2   /               150G(我习惯root分大点,可根据需求来)

/dev/sda3   /home           750G(没有与其他系统共享的需求,可以把剩余空间分完)

要转移的目标磁盘为sdb,那么这块磁盘也应该至少有这几个分区,且类似地进行挂载(这样方便理解,如果不想重新分区,则需要自己将对应关系记下来,以作备用)


二、一切操作切勿在当前系统下进行,这会导致资料因为挂载问题而循环同步,而无法完成!

自备archlinux的安装盘(也经常使用命令行来对系统进行抢救维护)。

最简单的方式是找个U盘把镜像烧录进去,教程很多,不多说明。也可以将U盘制作成ventoy盘,直接从镜像文件引导,我个人十分推崇这个方案,可以使各种linux发行版、windows包括pe系统共存于一个U盘,是非常方便的系统安装、维护工具盘。


三、进入archlinux安装盘的终端,接下来一切操作将都在这里进行。

输入lsblk -f,来确认各个磁盘的设备名称与uuid,最好用手机拍个照,后面会用到。

将现有linux系统的挂载点,一次挂载到某个位置,比如:

devide      mountpoint

/dev/sda1   /mnt/boot/efi

/dev/sda2   /mnt/

/dev/sda3   /mnt/home

当然,在挂载之前要用mkdir命令先建立好各自对应的目录,否则挂载不上

例如:mkdir /mnt/boot/efi && mkdir /mnt/home

接下来进行挂载: mount /dev/sda2 /mnt && mount /dev/sda1 /mnt/boot/efi && mount /dev/sda2 /mnt/home

这样,就把现有linux系统的所有分区都挂载好了,接下来如法炮制,将目标磁盘的分区也挂载到另一个位置,比如:mkdir /data && mkdir /data/boot/efi && mkdir /data/home

mount /dev/sdb2 /data && mount /dev/sdb1 /data/boot/efi && mount /dev/sdb2 /data/home

如此一来,两块磁盘就各自挂载好了,那么接下来只需要对这两块磁盘的根目录进行同步就好,指令如下:rsync -av --progress /mnt/ /data/ (-a意思为--archive,即归档且尽可能保留原文件的各种属性;-v意思为--verbose,即啰嗦模式;--progress则是显示进度,以便观察情况)

由于linux小文件比较多,因此在同步几百G的资料时,花费的时间往往不短,并且要保留各个文件的原有属性,因此请耐心等待。

我迁移时花了大概一个小时才完成,但总比重装系统,再安装所有软件,并重新配置要强得多得多。


四、chroot到备份好的目标磁盘系统中,对fstab文件进行修改,使其正确地挂载新的分区。

命令为:arch-chroot /data

这时,理论上来说你可以使用系统已经安装好的各种工具进行操作,一般安装系统时都装了vim的吧?

sudo vim /etc/fstab(记不得是否需要sudo了,自己尝试,后同)

按i键进入编辑模式,进去把对应的UUID都修改为目标磁盘的,之前让你拍照就是为了这一步,替换输入好之后请仔细检查,别有错误,否则进不去系统,还得进入archlinux的安装盘来进行维护。

按esc键退出编辑模式,输入冒号wq【:wq】,不成功就再次返回,输入冒号wq叹号【:wq!】,以保存退出。(w是write,写入的意思;q是quit,退出的意思;叹号是强制执行的意思。)


四、在目标磁盘上重建引导(否则在bios中识别不到目标磁盘的启动项)

sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB

sudo grub-mkconfig -o /boot/grub/grub.cfg


五、重启

在重启之前,需要先卸载挂载点

直接exit返回archlinux的安装界面。

再umount -R /mnt && umount -R /data (-R是递归卸载目录及子目录的意思)

至此,大功告成,可以reboot重启了。


六、进入bios,应该可以看到目标磁盘的启动项了,将其选为默认,保存退出,即可通过目标磁盘进入系统。

如果前面没有做错哪一步的话,你应该可以安全地进入新系统了。如果哪一步出错,就自己去排查。建议先看完本教程,梳理好思路,再进行操作!否则极有可能浪费时间。

先在新磁盘上使用一段时间,确定没问题后,再随意处置之前的系统所在磁盘。


教程到此结束,码子大半天,懒得排版了。

视频就不做了,前前后后一个小时呢(虽然大部分时间都是同步资料花费的)。

有帮到你的话,不妨点个赞。万一以后能用上呢?




【archlinux教程】更换磁盘又不想重装archlinux?直接迁移就完事了。的评论 (共 条)

分享到微博请遵守国家法律