前段时间200在某鱼淘了一台小主机,银行淘汰下来的,处理器是j1900五脏俱全,到手就直接装了Ubuntu server系统跑docker当nas用。美中不足的是装完系统之后可用的存储空间只有50多G,而且这机器仅有一个硬盘插槽。基于长远考虑打算换个500G固态。环境懒得再重新搭一遍了,直接系统迁移。
准备
一个Ubuntu desktop的安装U盘,注意是Ubuntu desktop而不是Ubuntu server。
一个备用U盘1。
一个硬盘盒。
可以和Internet直接连通的网络环境
实操
主要分3步:
1.连接设备
2.进入try ubuntu进行分区,使用dd迁移数据
3.安装boot-repair补充引导分区
1
把旧硬盘从机器上拆下来,装在硬盘盒上连接机器的USB,新硬盘装在机器硬盘插槽里2,插上Ubuntu desktop的安装U盘。把机器连上显示屏。
2
开机,进入BIOS选择从U盘启动,选择try Ubuntu,而不是安装ubuntu.语言可以调成中文。
进入Ubuntu之后打开终端,输入sudo -i
切换root权限再输入gparted
打开图形化分区界面,给新硬盘分两个区,分区格式要和旧硬盘相同,我分的一个是fat32的引导分区,100Mb应该都绰绰有余了3。其余的全给系统盘(数据盘),ext4格式的。另外要在引导分区右键标注为boot,efi,除此之外分区名称什么的都不需要管,点击对勾执行操作。
使用dd命令迁移数据,把旧硬盘的系统盘(数据盘)分区的数据迁移到新硬盘系统盘(数据盘)分区。如果你的旧硬盘数据盘分区是/dev/sda2,新硬盘数据盘分区是/dev/sdb2,那么你的dd命令应该是
dd if=/dev/sda2 of=/dev/sdb2
if=参考的分区,of=写入的分区,这个一定不能搞反,否则旧硬盘中的数据会被抹去。
这个命令不会显示进度,我们再打开一个终端窗口,输入下面这段指令让它显示进度:
watch -n 1 pkill -USR1 -x dd
3
之后就是安装boot-repair进行修复了。首先由于网络环境需要换成中科大的源,不然无法安装boot-repair。在另一台电脑上创建一个txt文本文件,把下面内容复制进去,
deb https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
保存为sources.list 拷贝到备用U盘,插到机器上,在root权限下用cp命令拷贝覆盖/etc/apt/sources.list 换源完成。
执行下面几步安装boot-repair
sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair
安装完成之后,卸载旧硬盘和备用U盘,输入boot-repair,点recommend选项4进行修复,修复完成之后关机。进bios选择从新硬盘启动,进入系统发现欢迎文字里面显示的还是旧硬盘的容量,这时候用root执行命令resize2fs /dev/sdb1
更新一下硬盘容量即可。
到此,系统迁移结束5,除了容量扩大了之外,其他的丝毫没变,无缝切换。
注释
用于拷贝源文件sources.list,U盘文件系统得是linux能读取的FAT32等格式。 ↩︎
我第一次,把新硬盘放在外面用硬盘盒连接,执行dd,结果拷贝报了点错误,后面修复的时候也没有recommend选项。第二次把新硬盘装在机箱里,旧硬盘放在外面,拷贝速度是第一次的两倍,boot-repair里recommend选项也出来了。 ↩︎
原本旧硬盘引导分区总共是1G,但使用才10Mb,所以我改成512Mb了。关于它容量改小有什么影响我也不清楚,各位自行斟酌。 ↩︎
如果没有recommend选项说明你dd执行中出了错误,参考注脚2 ↩︎
本文如有不对之处请指教,有任何问题均可在评论区咨询 ↩︎