一:分区
首先用对固态硬盘分好区(可以用fdisk),再挂载固态硬盘,新硬盘的分区不一定要跟待迁移系统所在硬盘一致,但建议/boot作为单独分区存在,以备在系统引导出错时可以祭出终极武器–擦除启动分区并重装引导,如果没有单独将/boot作为一个分区,那就无法单独擦除/boot目录了,有时候遇到问题清空内容是咩有用滴。
参考分区方式(/boot + / ): <请以root权限运行>
1 2 3 |
fdisk /dev/nvme0n1 #注意不要带上分区号 |
- 然后键入d逐个删除原存在的各个分区(如果有的话。输入p打印磁盘情况,确认是否分区删除完全)
- 输入g,重建新的GPT磁盘标签
- 输入n,新建/boot分区,按照提示确认新建分区大小
- 输入t,再输入1改变分区格式为EFI System
- 输入n,新建根分区(一路回车将剩余的空间全部作为根分区)
- 输入t,再输入20改变分区格式为Linux filesystem
- 输入p,打印硬盘操作成功后的分区样式
- 确认无误后输入w保存当前所有设置 (在未输入w之前,所有变更尚未实际更新到硬盘,还来得及反悔)
以上是我的分区详情,没有细分出/opt /home /root等,主要是不确定会用多少空间,分得不好要不是不够用就是空间浪费,倒不如全整一起。
接下来格式化分区:
1 2 3 4 |
mkfs.fat -F32 /dev/nvme0n1p1 mkfs.ext4 /dev/nvme0n1p2 |
二:同步待迁移系统的所有文件到新SSD硬盘 <请以root权限运行>
1.挂载分区
1 2 3 |
mount /dev/nvme0n1p2 /mnt #挂载新SSD的根分区到/mnt |
如果/mnt目录下不为空,请自行新建文件夹并挂载于此, /dev/nvme0n1p2需修改成自己当前对应的新SSD设备分区。
2.同步文件
终端执行:
1 2 3 |
rsync -aAXv /* /mnt --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/boot" } |
我没有将/boot同步过去,如果需要的话,去掉–exclude后面的对应项即可。最后等待同步完成,我194G文件大概用了10多分钟,还是挺快的。
3.不一定需要,没有考证
1 2 3 4 5 6 |
cd /mnt mount -t proc proc proc/ mount --rbind /sys sys/ mount --rbind /dev dev/ |
三:修复引导
先关机,然后:
1.用 ArchLinux U盘启动盘修复引导
从启动盘进去后先联网
1 2 3 4 |
wifi-menu #输入后回车按提示连接wifi ping baidu.com #测试网络连通性 |
1 2 3 4 5 |
mount /dev/nvme0n1p2 /mnt #挂载新SSD的根分区到/mnt mkdir /mnt/boot mount /dev/nvme0n1p1 /mnt/boot |
1 2 3 |
genfstab -L /mnt > /mnt/etc/fstab #生成filesystem table |
1 2 3 4 5 |
arch-chroot /mnt pacman -S grub efibootmgr #安装依赖包 pacman -S linux #重装linux |
1 2 3 4 |
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub # 部署grub |
1 2 3 |
grub-mkconfig -o /boot/grub/grub.cfg # 生成引导文件 |
1 2 3 4 5 |
vim /boot/grub/grub.cfg # 查看是否有linux的入口,如果没有则从pacma -S linux那重新往下执行 # window的入口不太重要,可以正常启动linux成功后安装os-probe,再生成grub.cfg,此时可以生成win10入口 |
1 2 3 4 |
exit reboot |
如果系统启动失败,尝试进入到无界面的tty,检查/etc/fstab 和 fdisk -l 中的硬盘分区号是否一致,作者这边出现过好几次这种情况导致的无法进入桌面,修改一致后重启就可以了。
参考文章:
多谢,已成功迁移