欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Arch Linux 系统迁移

程序员文章站 2022-05-08 11:11:14
...

镜像下载、域名解析、时间同步请点击 阿里巴巴开源镜像站

备份 Arch Linux 系统

安装 pigz

使用 pigz 多线程压缩比使用 tar 单线程压缩速度明显提升多倍

  1. sudo pacman -S pigz

安装 zstd

使用 zstd 多线程压缩比使用 tar 单线程压缩速度明显提升多倍。Arch Linux 邮件列表: zstd 压缩解压与其他压缩解压工具速度对比

  1. sudo pacman -S zstd

pigz 打包 Arch Linux

--exclude 排除的路径/文件,根据自己系统挂载情况选择需要排除的路径或文件。

注:当前是在 / 目录下执行

  1. sudo tar --use-compress-program=pigz -cvpf arch-backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/arch-backup.tgz --exclude=/mnt --exclude=/sys --exclude=/run/media --exclude=/media /

zstd 打包 Arch Linux

--exclude 排除的路径/文件,根据自己系统挂载情况选择需要排除的路径或文件。

注:当前是在 / 目录下执行

  1. sudo tar -z -c -T0 -18 -v -p -f - arch-backup.zstd --exclude=/proc --exclude=/lost+found --exclude=/arch-backup.zstd --exclude=/mnt --exclude=/sys --exclude=/run/media --exclude=/media /

给新盘分区或挂载

使用 fdisk 等磁盘工具分区

自行参考 fdisk 或自己喜欢的磁盘工具使用帮助。不会用看帮助。或者看别人手册。

挂载新硬盘分区到 /mnt/arch

新建磁盘挂载目录

  1. sudo mkdir -pv /mnt/arch
  2. sudo mkdir -pv /mnt/arch/boot/efi
  3. sudo mkdir -pv /mnt/arch/home
  4. ....
  5. // 如果有其他分区自行创建对应挂载目录

挂载磁盘分区到对应挂载点

  1. sudo mount /dev/sdb3 /mnt/arch
  2. sudo mount /dev/sdb4 /mnt/arch/home
  3. sudo mount /dev/sdb1 /mnt/arch/boot/efi
  4. ...
  5. // 如果有其他分区自行创建对应挂载目录

pigz恢复 ArchLinux 系统

将当前系统的备份恢复到新挂载点,Linux 一切皆文件的思路对于备份恢复非常方便。

  1. sudo tar --use-compress-program=pigz -cvpf arch-backup.tgz -C /mnt/arch

zstd恢复 ArchLinux 系统

将当前系统的备份恢复到新挂载点,Linux 一切皆文件的思路对于备份恢复非常方便。

  1. sudo tar -z -c -T0 -18 -v -p -f - arch-backup.zstd -C /mnt/arch

创建刚才排除的文件夹

  1. sudo mkdir -pv /mnt/arch/proc
  2. sudo mkdir -pv /mnt/arch/sys
  3. sudo mkdir -pv /mnt/arch/run
  4. sudo mkdir -pv /mnt/arch/dev

获取 UUID

  1. sudo lsblk

修改 /etc/fstab 挂载文件

可以使用 genfatab 自动生成 /mnt/arch/etc/fstab 文件

  1. sudo genfstab -U /mnt/arch >> /mnt/arch/etc/fstab
  2. cat /mnt/arch/etc/fstab

建议使用 vim 等文本编辑器修改 /etc/fstab 挂载文件

注:arch-chrootArch 用的 chroot 其他 Linux 有专用 *-chroot 就用没有的话直接 chroot 也可以(可能会提示权限问题或缺少设备信息之类,还可以尝试使用相应 Linux*.iso 复制到 Ventoy 启动盘(见 Ventoy 启动盘

  1. sudo arch-chroot /mnt/arch/
  2. vim etc/fstab

修改 UUID 修改对应的挂载点

更新 Grub 引导

还是在 arch-chroot 权限下,此处已 UEFI 引导为例,MBR 或其他方式请参考 Arch WiKi 上的介绍。

  1. grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader=ArchLinux --recheck
  2. update-grub

编辑 /etc/mkinitcpio.conf 加速 linux.img 速度

  1. vim /etc/mkinitcpio.conf
  2. // 修改配置文件的最后两行
  3. // 需要安装 zstd 支持
  4. // pacman -Syu zstd
  5. // 还需要开启 zstd 支持
  6. // 否则请使用其他 压缩算法
  7. COMPRESSION="zstd"
  8. COMPRESSION_OPTIONS=(-c -T0 -18 -)

更新 mkinitcpio

  1. mkinitcpio -p linux/linux-lts/其他内核
  2. mkinitcpio -p linux-lts
  3. ==> Building image from preset: /etc/mkinitcpio.d/linux-lts.preset: 'default'
  4. -> -k /boot/vmlinuz-linux-lts -c /etc/mkinitcpio.conf -g /boot/initramfs-linux-lts.img
  5. ==> Starting build: 5.4.84-1-lts
  6. -> Running build hook: [base]
  7. -> Running build hook: [udev]
  8. -> Running build hook: [autodetect]
  9. -> Running build hook: [modconf]
  10. -> Running build hook: [block]
  11. -> Running build hook: [filesystems]
  12. -> Running build hook: [keyboard]
  13. -> Running build hook: [fsck]
  14. ==> Generating module dependencies
  15. ==> Creating zstd-compressed initcpio image: /boot/initramfs-linux-lts.img
  16. ==> Image generation successful
  17. ==> Building image from preset: /etc/mkinitcpio.d/linux-lts.preset: 'fallback'
  18. -> -k /boot/vmlinuz-linux-lts -c /etc/mkinitcpio.conf -g /boot/initramfs-linux-lts-fallback.img -S autodetect
  19. ==> Starting build: 5.4.84-1-lts
  20. -> Running build hook: [base]
  21. -> Running build hook: [udev]
  22. -> Running build hook: [modconf]
  23. -> Running build hook: [block]
  24. -> Running build hook: [filesystems]
  25. -> Running build hook: [keyboard]
  26. -> Running build hook: [fsck]
  27. ==> Generating module dependencies
  28. ==> Creating zstd-compressed initcpio image: /boot/initramfs-linux-lts-fallback.img
  29. ==> Image generation successful

不需要加速 linux.img 速度

直接更新 mkinitcpio

  1. mkinitcpio -p linux/linux-lts/其他内核
  2. mkinitcpio -p linux-lts

退出 arch-chroot 提权模式

  1. exit

卸载分区

  1. sudo umount /mnt/arch/home
  2. sudo umount /mnt/arch/boot/efi
  3. ...
  4. // 如果有其他分区自行卸载对应挂载目录,和挂载相反的是最后卸载 根(/) 分区
  5. sudo umount /mnt/arch

迁移完成

重启宿主机后,在 BIOS 界面可以看到新增的 ArchLinux 引导。表示迁移完成即可使用。

本文转自:https://juejin.cn/post/6990623175906164772