Arch Linux 系统迁移
镜像下载、域名解析、时间同步请点击 阿里巴巴开源镜像站
备份 Arch Linux 系统
安装 pigz
使用 pigz
多线程压缩比使用 tar
单线程压缩速度明显提升多倍
sudo pacman -S pigz
安装 zstd
使用 zstd
多线程压缩比使用 tar
单线程压缩速度明显提升多倍。Arch Linux 邮件列表: zstd 压缩解压与其他压缩解压工具速度对比
sudo pacman -S zstd
pigz
打包 Arch Linux
--exclude
排除的路径/文件,根据自己系统挂载情况选择需要排除的路径或文件。
注:当前是在 /
目录下执行
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
排除的路径/文件,根据自己系统挂载情况选择需要排除的路径或文件。
注:当前是在 /
目录下执行
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
新建磁盘挂载目录
sudo mkdir -pv /mnt/arch
sudo mkdir -pv /mnt/arch/boot/efi
sudo mkdir -pv /mnt/arch/home
....
// 如果有其他分区自行创建对应挂载目录
挂载磁盘分区到对应挂载点
sudo mount /dev/sdb3 /mnt/arch
sudo mount /dev/sdb4 /mnt/arch/home
sudo mount /dev/sdb1 /mnt/arch/boot/efi
...
// 如果有其他分区自行创建对应挂载目录
pigz
恢复 ArchLinux 系统
将当前系统的备份恢复到新挂载点,Linux 一切皆文件的思路对于备份恢复非常方便。
sudo tar --use-compress-program=pigz -cvpf arch-backup.tgz -C /mnt/arch
zstd
恢复 ArchLinux 系统
将当前系统的备份恢复到新挂载点,Linux 一切皆文件的思路对于备份恢复非常方便。
sudo tar -z -c -T0 -18 -v -p -f - arch-backup.zstd -C /mnt/arch
创建刚才排除的文件夹
sudo mkdir -pv /mnt/arch/proc
sudo mkdir -pv /mnt/arch/sys
sudo mkdir -pv /mnt/arch/run
sudo mkdir -pv /mnt/arch/dev
获取 UUID
sudo lsblk
修改 /etc/fstab
挂载文件
可以使用 genfatab
自动生成 /mnt/arch/etc/fstab
文件
sudo genfstab -U /mnt/arch >> /mnt/arch/etc/fstab
cat /mnt/arch/etc/fstab
建议使用 vim
等文本编辑器修改 /etc/fstab
挂载文件
注:arch-chroot
是 Arch
用的 chroot
其他 Linux
有专用 *-chroot
就用没有的话直接 chroot
也可以(可能会提示权限问题或缺少设备信息之类,还可以尝试使用相应 Linux*.iso
复制到 Ventoy
启动盘(见 Ventoy 启动盘)
sudo arch-chroot /mnt/arch/
vim etc/fstab
修改 UUID 修改对应的挂载点
更新 Grub 引导
还是在 arch-chroot
权限下,此处已 UEFI
引导为例,MBR
或其他方式请参考 Arch WiKi 上的介绍。
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader=ArchLinux --recheck
update-grub
编辑 /etc/mkinitcpio.conf
加速 linux.img
速度
vim /etc/mkinitcpio.conf
// 修改配置文件的最后两行
// 需要安装 zstd 支持
// pacman -Syu zstd
// 还需要开启 zstd 支持
// 否则请使用其他 压缩算法
COMPRESSION="zstd"
COMPRESSION_OPTIONS=(-c -T0 -18 -)
更新 mkinitcpio
mkinitcpio -p linux/linux-lts/其他内核
mkinitcpio -p linux-lts
==> Building image from preset: /etc/mkinitcpio.d/linux-lts.preset: 'default'
-> -k /boot/vmlinuz-linux-lts -c /etc/mkinitcpio.conf -g /boot/initramfs-linux-lts.img
==> Starting build: 5.4.84-1-lts
-> Running build hook: [base]
-> Running build hook: [udev]
-> Running build hook: [autodetect]
-> Running build hook: [modconf]
-> Running build hook: [block]
-> Running build hook: [filesystems]
-> Running build hook: [keyboard]
-> Running build hook: [fsck]
==> Generating module dependencies
==> Creating zstd-compressed initcpio image: /boot/initramfs-linux-lts.img
==> Image generation successful
==> Building image from preset: /etc/mkinitcpio.d/linux-lts.preset: 'fallback'
-> -k /boot/vmlinuz-linux-lts -c /etc/mkinitcpio.conf -g /boot/initramfs-linux-lts-fallback.img -S autodetect
==> Starting build: 5.4.84-1-lts
-> Running build hook: [base]
-> Running build hook: [udev]
-> Running build hook: [modconf]
-> Running build hook: [block]
-> Running build hook: [filesystems]
-> Running build hook: [keyboard]
-> Running build hook: [fsck]
==> Generating module dependencies
==> Creating zstd-compressed initcpio image: /boot/initramfs-linux-lts-fallback.img
==> Image generation successful
不需要加速 linux.img
速度
直接更新 mkinitcpio
mkinitcpio -p linux/linux-lts/其他内核
mkinitcpio -p linux-lts
退出 arch-chroot
提权模式
exit
卸载分区
sudo umount /mnt/arch/home
sudo umount /mnt/arch/boot/efi
...
// 如果有其他分区自行卸载对应挂载目录,和挂载相反的是最后卸载 根(/) 分区
sudo umount /mnt/arch
迁移完成
重启宿主机后,在 BIOS
界面可以看到新增的 ArchLinux
引导。表示迁移完成即可使用。
推荐阅读
-
CentOS 5.4系统下安装VPN(pptp) 适用于Linux服务器
-
VMware14.0.0版本虚拟机安装Ubuntu16.04 LTS版本Linux系统图文教程
-
详细分析Linux文件系统
-
linux CentOS 系统下如何将php和mysql命令加入到环境变量中
-
linux通过挂载系统光盘搭建本地yum仓库的方法
-
Linux系统安装NoSQL(MongoDB和Redis)步骤及问题解决办法(总结篇)
-
shell脚本实现linux系统文件完整性检测
-
Shell脚本判断Linux系统是32位还是64位的几种方法分享
-
收集的55个Linux系统管理中常用的一些shell命令
-
Linux系统根据端口号来查看其进程并杀死进程