平台系统迁移指南
本文主要讲解更换Windows和Linux系统盘的方法。
Windows 系统迁移
🛠️ 准备工作
- 源系统盘:需要迁移的旧硬盘
- 目标磁盘:新硬盘(容量 ≥ 源盘已用空间)
- PE启动U盘:需集成DiskGenius工具(推荐微PE工具箱)
📝 详细操作步骤
制作启动盘
- 使用微PE工具箱制作启动U盘(官网:https://www.wepe.com.cn/)
进入PE环境
- 插入U盘 → 开机时反复按
F12/Del/F2
(不同主板按键不同) - 在BIOS中设置U盘为第一启动项 → 进入PE桌面
- 插入U盘 → 开机时反复按
执行系统迁移
- 打开DiskGenius软件
- 顶部菜单选择 工具 → 系统迁移
- 按向导操作:
- 选择源磁盘(原系统盘)
- 选择目标磁盘(新硬盘)
- 调整目标分区大小(默认自动填充)
迁移后操作
- 重启进入BIOS → 设置新硬盘为第一启动项
- 进入系统后运行
chkdsk C: /f
检查磁盘完整性
⚠️ 关键注意事项:
- 目标磁盘必须为GPT格式(如原系统为UEFI启动)
- 迁移前备份重要数据(目标磁盘将被覆盖)
- 迁移完成后拔出旧硬盘测试启动
Linux 系统迁移
🧰 准备工作
- Live USB(推荐和迁移系统相同的系统镜像)
- 新硬盘(建议容量 ≥ 源盘已用空间)
🐧 操作流程
1. 进入Live环境
1 | lsblk # 确认磁盘标识(假设原盘为sdb,新盘为sda) |
2. 分区操作
1 | cfdisk /dev/sda # 创建新分区 |
- 分区方案建议:
分区 类型 建议大小 /boot EFI 512M / f2fs 剩余空间
3. 格式化分区
1 | mkfs.fat -F32 /dev/sda1 # 格式化EFI分区 |
4. 挂载文件系统
1 | # 挂载新分区(假设新系统在sda2,新系统的EFI分区在sda1) |
5. 数据迁移
1 | rsync -avhP --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*"} /old_root/ /mnt/ |
6. 系统配置更新
1 | # 生成新fstab |
7. 引导修复
1 | grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=ArchLinux |
🔍 验证检查
- 确认
/etc/fstab
中UUID与blkid
输出一致 - 检查EFI分区是否包含引导文件
- 测试从新硬盘启动
Linux Home目录迁移方法
🏠 迁移目的
将用户的home目录迁移到新硬盘,可以有效扩展存储空间并提高系统性能。
📋 详细步骤
1. 查看硬盘UUID
1 | sudo blkid |
记录新硬盘的UUID,后续配置会用到
2. 开机自动挂载硬盘
编辑fstab文件:
1 | sudo vim /etc/fstab |
在文件末尾添加:
1 | UUID=<你的硬盘UUID> /media <你的硬盘格式,例如ext4> defaults 0 0 |
3. 临时挂载硬盘
如果不想立即重启,可以先手动挂载:
1 | sudo mount /dev/sdb1 /media |
4. 创建软链接
将新硬盘上的用户目录链接到home目录:
1 | sudo ln -s /media/abelxiaoxing /home/abelxiaoxing |
5. 创建用户并指定用户目录
1 | sudo useradd -d /home/abelxiaoxing abelxiaoxing |
6. 修改目录所属权
确保用户对自己的目录有完全控制权:
1 | sudo chown -R abelxiaoxing:abelxiaoxing /media/abelxiaoxing |
⚠️ 注意事项:
- 迁移前备份重要数据
- 确保新硬盘有足够空间
- 迁移后测试用户登录和文件访问权限
通用注意事项
数据备份:建议使用
dd
命令创建完整磁盘镜像1
dd if=/dev/sdX of=/path/to/backup.img bs=4M status=progress
迁移工具替代方案:
- Clonezilla(跨平台克隆工具)
- Timeshift(Linux系统快照工具)
故障排查:
- 引导失败:尝试
boot-repair
工具 - 文件系统错误:使用
fsck
进行检查修复
- 引导失败:尝试
历史数据(Linux,已废弃)
- 准备工作:
- 原系统硬盘
- 新系统硬盘
- 带有Live USB的Un盘
- bios设置启动U盘,进入U盘Live USB的linux系统
- 输入
lsblk
命令查看磁盘信息,找到原系统的磁盘和新系统的磁盘,例如/dev/sdb1和/dev/sdb2分别为原系统的EFI分区和根分区,/dev/sda为新系统磁盘(此处为举例,具体根据lsblk
命令输出进行修改) - 输入
cfdisk
命令,对新磁盘进行分区,创建efi分区和根分区,efi设置分区类型为fat32,根分区类型须和原来系统一致,例如原系统为ext4,则新系统根分区也为ext4
格式化EFI分区
1
2
3
4
5mkfs.fat -F32 /dev/sda1
```
格式化根分区
```bash
mkfs.ext4 /dev/sda2 - 挂载分区
- 挂载旧磁盘
1
2
3
4mkdir /sdb1
mount /dev/sdb1 /sdb1
mkdir /sdb2
mount /dev/sdb2 /sdb2 - 挂载新磁盘
1
2
3mount /dev/sda2 /mnt
mkdir /mnt/boot
mount /dev/sda1 /mnt/boot
- 挂载旧磁盘
- 复制原系统文件到新系统
- 复制根分区数据
1
rsync -aHAXxSP --exclude=/boot /sdb2/ /mnt/
- 复制EFI分区数据
1
rsync -aHAXxSP /sdb2/ /mnt/boot/
- 复制根分区数据
- 更新fstab
- 生成新的UUID
1
blkid
- 修改/etc/fstab文件,将原系统的UUID和新系统的UUID进行替换
- 生成新的UUID
- 配置启动加载器
1
2
3
4mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
cp /etc/resolv.conf /mnt/etc/resolv.conf - 切换到新根目录
1
arch-chroot /mnt
- 安装配置grub
1
2
3pacman -S grub efibootmgr
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=ArchLinux
grub-mkconfig -o /boot/grub/grub.cfg - 重启系统,bios设置从新硬盘启动,进入新系统