遷移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系統到新硬碟 - FindHaowww.findhao.net圖標
推薦閱讀:

TAG:Linux | Linux入門 | Linux運維 |