遷移linux系統到新硬碟
Introduction
老師評上了學校的青年學者重點培養計劃,每年多了好多資金。實驗室機器的配置也在逐步升高。上一批加ssd的時候,我們沒分到,這次補上。
本文記錄的是將我的debian9 從原來的閃迪120G SSD遷移到三星 250G SSD的過程。
1. 準備工作
做好數據備份!
所有的操作均在u盤的livecd下進行的。
2. 查清楚分區號
通過在root用戶下fdisk -l
查清楚目前的分區號。
比如,我的閃迪是/dev/sdb
,有兩個分區,一個200MB的boot是sdb1,剩下的是擴展分區的根目錄sdb5。而三星是空的。
使用圖形化的GParted在三星的那塊硬碟上新建主分區,默認為sda1。
3. 使用dd拷貝數據
在網上查到的一些資料是直接拷貝整個硬碟/dev/sdb
到/dev/sda
,在拷貝時,包括了分區表。導致250G的硬碟,拷貝結束後,裡面有110GB(原硬碟的大小)的分區是拷貝過來的數據,剩下的是沒有劃分的空間,然而還不能直接調整新建的110GB的分區大小,把這沒有劃分的空間補充過去。
而且,由於歷史遺留原因,一開始劃分200MB的boot實在是不太方便的做法。因此,這裡只拷貝根目錄分區的內容過去,boot重新拷貝並標記上。
3.1 執行的dd命令
我的根目錄所在的分區是/dev/sdb5
,新硬碟劃分的是/dev/sda1
。
dd if=/dev/sdb5 of=/dev/sda1
由於dd命令沒有展示中間過程,因此使用另一條命令來讓他輸出中間過程:
watch -n 5 killall -USR1 dd
注意dd命令也會拷貝uuid過去,意味著,/dev/sda1
的uuid和/dev/sdb5
的uuid是一樣的。
uuid是一個唯一的標識符,因為類似/dev/sda
這樣的映射點,在新設備加入的時候,可能會生成新的映射點,比如原來系統里是/dev/sda
現在變成了/dev/sdb
等等,所以一般情況下,在/etc/fstab
里寫自己規則的時候,都是用uuid而非映射點。
可以不修改新硬碟分區的uuid,也就省去了修改/etc/fstab
或者/boot/grub/grub.conf
的麻煩。
3.2 拷貝boot分區內容
我的原系統boot分區在/dev/sdb1
,準備將其內容拷貝到新硬碟的默認根目錄下的boot
文件夾。
先掛載boot分區和新系統分區
cd /root/mkdir bootmount /dev/sdb1 /root/boot# 掛載新硬碟分區可以跳過,因為在文件管理器里,點擊新硬碟以後,會自動掛載到/media/ubuntu/your_uuidmkdir sdamount /dev/sda1 /root/sdacp -aur /root/boot/* /root/sda/boot/
3.3 更新硬碟信息
umount /dev/sdb1 // 記得在操作之前先卸載所有掛載e2fsck -f /dev/sdb1resize2fs /dev/sdb1
3.4 修改uuid,添加boot標記
如果你想修改uuid,比較簡單的辦法是打開gparted,在分區上右鍵,生成新的uuid。
同時還要修改/etc/fstab
中的內容,替換掉原來的uuid
右鍵設置標記中選中boot,表明這個分區是有啟動點的。
3.5 修復grub
更新grubupdate-grub2
。
如果重啟後,進入系統有問題,但是可以進入grub rescue,自己又不知道到底問題出哪裡的話,簡單的辦法是使用boot-repair這個工具。
sudo add-apt-repository ppa:yannubuntu/boot-repairsudo apt-get updatesudo apt-get install -y boot-repair
然後打開bootrepair進行一鍵修復即可。
我的在運行前,詢問我/dev/sda
是可移動硬碟嗎,當然不是。。在認為他的自動處理能力有問題以後,我點開了高級設置,手動選擇了正確的grub位置(/dev/sda
),然後等待修復完成,大概不到10mins。
完成後重啟即可進入系統。
Reference
把整個Linux系統遷移到另一個硬碟
Linux下修改引導器的工具:Boot-Repair
把一塊硬碟上的 Linux 系統整個複製到新硬碟上的方法.
↓↓↓若代碼格式混亂請查看原文↓↓↓
遷移linux系統到新硬碟 - FindHao推薦閱讀: