安全迁移Linux根文件系统到新硬盘需离线操作(Live USB),核心是修复UUID、重装GRUB、重建initramfs三处绑定点,否则无法启动;推荐rsync同步并排除/dev/proc/sys等伪文件系统,确保新盘独立可启动。

安全迁移 Linux 根文件系统到新硬盘,关键不是“复制完就完事”,而是保证新盘能独立启动、正确挂载、适配新硬件。整个过程必须离线操作(用 Live USB),并严格处理 UUID、引导加载程序和 initramfs 三处绑定点。直接 rsync 或 dd 后不修复,大概率进不了系统。
一、准备工作:确认设备与分区结构
用 Ubuntu 或 Debian Live USB 启动,打开终端:
- 运行 lsblk -f 或 sudo fdisk -l,明确识别出旧盘(如
/dev/sda)和新盘(如/dev/nvme0n1),注意别颠倒源/目标——dd 写反会彻底覆盖原系统; - 检查旧系统根分区的文件系统类型(ext4/xfs/btrfs)、是否使用 LVM 或加密,新盘需匹配或提前规划好分区方案;
- 若新盘为空,用 gparted 或 fdisk /dev/nvme0n1 创建与旧盘结构一致的分区(含 EFI 系统分区、/boot、/),并格式化(
mkfs.ext4 /dev/nvme0n1p2)。
二、数据迁移:推荐 rsync(比 dd 更可控)
dd 是扇区级克隆,适合硬件完全一致的“硬盘对拷”,但无法跳过未使用空间、不适应大小差异、且无法跳过运行中伪文件系统。rsync 更灵活安全:
- 挂载旧根分区(如
/dev/sda2)到/mnt/old,新根分区(如/dev/nvme0n1p2)到/mnt/new; - 执行完整同步(保留权限、属主、扩展属性、硬链接):
- 特别注意末尾斜杠:
/mnt/old/表示同步内容,/mnt/old会把整个目录名也复制进去; - 同步完成后,手动复制 EFI 分区(如有):
sudo rsync -av /mnt/old/boot/efi/ /mnt/new/boot/efi/。
三、关键修复:UUID、fstab 与 GRUB
这是最容易失败的环节。旧系统 fstab 和 GRUB 配置仍指向原硬盘 UUID,必须更新:
- 用 blkid 查看新根分区和新 EFI 分区的 UUID;
- 编辑新盘上的
/mnt/new/etc/fstab,将所有旧 UUID 替换为新 UUID(可用sudo nano /mnt/new/etc/fstab); - chroot 进新系统环境:
sudo mount --bind /proc /mnt/new/proc
sudo mount --bind /sys /mnt/new/sys
sudo chroot /mnt/new
- 在 chroot 中重装 GRUB:
– BIOS 系统:grub-install /dev/nvme0n1
– UEFI 系统:grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu; - 更新 GRUB 配置:
update-grub; - 重建 initramfs 以适配新存储控制器:
update-initramfs -u。
四、收尾验证与启动
退出 chroot,重启前做最后检查:
- 确认新盘已正确挂载所有必要虚拟文件系统(
/proc,/sys,/dev); - 卸载所有挂载点:
sudo umount -R /mnt/new; - 拔掉 Live USB,BIOS/UEFI 中设置新硬盘为第一启动项;
- 首次启动时观察 GRUB 菜单是否出现、能否进入系统、
df -h是否显示新盘为/、lsblk -f中 UUID 是否与/etc/fstab一致。


















