迁移SSD磁盘后引导原Slackware Linux系统的技术咨询
没问题,完全可以做到!不过得调整几个关键配置,让系统适配新的磁盘路径,我给你一步步拆解操作:
第一步:硬件更换后先别格式化旧盘
先把SSD换到原/dev/hda的位置(现在它会变成/dev/sda),旧硬盘移到/dev/hdb的位置。这时候先别急着格式化旧盘,先确保Linux能正常启动,留个回退余地。第二步:用Slackware安装介质进入救援环境
找个Slackware的U盘启动盘或者安装光盘,从它启动,进入救援模式(或者安装过程里的shell环境),这样能访问到你的SSD分区。第三步:挂载原Slackware分区并修改fstab
先把现在的/dev/sda1挂载到临时目录:mount /dev/sda1 /mnt如果你的系统有单独的
/boot分区,记得也挂载上:mount /dev/sda2 /mnt/boot然后编辑
/mnt/etc/fstab文件,把里面所有原来指向/dev/sdb1的条目改成/dev/sda1。更稳妥的方式是用UUID来配置(磁盘顺序变了也不会影响),先运行blkid命令找到/dev/sda1的UUID,比如类似abcdef12-3456-7890-abcd-ef1234567890,然后把fstab里的路径替换成UUID=你的UUID,比如:# 原来的条目 /dev/sdb1 / ext4 defaults 1 1 # 修改后 UUID=abcdef12-3456-7890-abcd-ef1234567890 / ext4 defaults 1 1第四步:重新安装并更新GRUB引导
先chroot到挂载的系统里,相当于进入你的Slackware环境:chroot /mnt然后把GRUB安装到新磁盘的MBR(也就是
/dev/sda,注意不是分区/dev/sda1):grub-install /dev/sda接着更新GRUB的配置文件,让它重新扫描磁盘生成新的引导项:
grub-mkconfig -o /boot/grub/grub.cfg如果你原来用的是LILO而不是GRUB,那就要修改
/etc/lilo.conf,把root和disk相关的路径改成/dev/sda,然后运行lilo命令更新引导。第五步:(可选)重新生成initramfs
如果你的Slackware使用了initrd/initramfs,可能需要重新生成它来适配新的磁盘路径,比如:mkinitrd -c -k 5.15.19 -m ext4 -f ext4 -r /dev/sda1这里的内核版本
5.15.19要换成你系统里实际的内核版本号,可以用uname -r(chroot后能运行)查看。第六步:验证启动并格式化旧盘
退出chroot环境:exit卸载挂载的分区:
umount /mnt/boot # 如果挂载了的话 umount /mnt重启系统,应该就能正常从新的
/dev/sda1启动Slackware了。确认系统运行没问题后,再格式化旧硬盘的/dev/hdb1,比如用mkfs.ext4 /dev/hdb1(换成你需要的文件系统格式即可)。
备注:内容来源于stack exchange,提问作者user1765083

