Arch LInux 系统迁移

版权声明:博主原创文章转载请注明出处。 欢迎访问个人主页:www.alanzjl.com https://blog.csdn.net/alanzjl/article/details/51476185

概述

换电脑之后需要在新的硬盘上安装系统,由于文件过多解决各种依赖太麻烦,所以打算直接将旧的系统迁移到新的硬盘。

文件系统

旧系统分区:

----sda
    |----sda1   /boot
    |----sda2   /
    |----sda3   swap

新系统分区:

----sda
    |----
    ......
    |----sda4   /home
----sdb
    |----sdb1   /boot
    |----sdb2   swap
    |----sdb3   /

怎么分区没有关系,复制系统的时候只要对应复制好就行。

系统复制

这是关键一步,我是用的是cp -rap命令。 -r递归复制,-a保留链接信息,-p保留权限信息,然后除了根目录下的 /proc /sys /dev /tmp全部复制。注意如果要某一目录挂载在其他盘(如我的/home目录),需要现在根目录下新建这个空目录,挂载相应盘到该目录之后再复制。

修改引导信息

我的是EFI引导,如果你的电脑使用MBR,貌似重新安装Grub即可。如果是EFI其实更简单,编辑/boot/loader/entries/<entry.conf>
首先使用sodu blkid查看硬盘uuid、partuuid编号,找到你的根分区的编号,比如我的是/dev/sdb3,显示结果为/dev/sdb3: UUID="a077881d-00b8-4028-9e00-98425937e18e" TYPE="ext4" PARTUUID="117b7cc3-c071-4ef7-a02c-a9ff6e194038",使用PARTUUID后的字符串替换.conf中的字符串。

/boot/loader/entries/arch.conf
-----------------------------------------------------
title       Arch Linux
linux       /vmlinuz-linux
initrd      /initramfs-linux.img
options     root=PARTUUID=117b7cc3-c071-4ef7-a02c-a9ff6e194038 rw

然后修改fstab信息。与上面方法一样,分别找到每个分区的uuid,然后用它来覆盖fstab。

重新生成内核镜像

这时新系统还是无法引导启动的。在宿主系统中(被迁移的系统或是安装u盘的live cd均可),按照新系统的挂载规则挂载上所有分区(swap除外),并且:

# mkdir /proc /dev /sys /tmp
# chmod 777 -R /tmp
# mount -o bind /proc /mnt/proc
# mount -o bind /dev /mnt/dev
# mount -o bind /sys /mnt/sys

然后chroot /mnt进入新系统,

# mkinitcpio -p linux
# exit

这样就大功告成了。

猜你喜欢

转载自blog.csdn.net/alanzjl/article/details/51476185