遷移UBuntu 16.04到全新硬盤

前幾天買了一個固態硬盤,Ubuntu重裝倒是可以,但是環境的搭建太麻煩了,因此還是採用系統遷移的辦法,免去環境搭建的痛苦。遷移過程中需要以下工具或材料:

(1)一個安裝好UBuntu的硬盤,這個自然不必多說;

(2)一個空白硬盤,一個空白U盤。

(3)GParted工具(https://gparted.org/),boot-repair工具(https://sourceforge.net/p/boot-repair/home/Home/)。其實boot-repair就夠了,並且boot-repair製作的U盤映像支持UEFI啓動。GParted不太清楚,因爲原來做好了Gparted的U盤映像,發現沒有UEFI啓動。另外,使用boot-repair的U盤映像啓動,會將硬盤中的SWAP分區自動掛載。

(4)grub-efi-amd64 (2.02-2ubuntu8)軟件包(https://packages.ubuntu.com/zh-cn/bionic/grub-efi-amd64)。

一. 製作boot-repair的U盤映像

使用映像製作工具,如UltraISO製作boot-repair的U盤映像,空白U盤用到了,U盤1GB足夠。

二. 硬盤分區

做好boot-repair的U盤映像後,啓動時選擇UEFI啓動(注:我的機器是B75主板,沒有掛載安裝Windows的硬盤),進入桌面,自動啓動boot-repair應用,關閉它,畢竟不是修復grub。

硬盤分區使用GParted工具,boot-repair中自帶了這個工具,這一點很方便,如果沒有也可以安裝一下。

(1)先創建硬盤分區表,建議使用GPT格式,畢竟GPT格式既支持BIOS啓動也支持UEFI啓動。

(2)分區根據個人喜好進行,更詳細的分區策略,可以參考CntChen的博文: Ubuntu16.10 遷移到 SSD

我分了4個區,一個是1MB的GRUB分區,格式爲unformated;一個是30GB的SWAP分區,格式選擇linux swap;一個是2GB的EFI分區,分區格式爲FAT32,其實這個分區沒必要這麼大,我當時分了這麼大,所以懶得改了;另一個就是系統分區,我沒有單獨創建mnt分區和home分區。

分區完成後,單擊"Apply"就可以完成並且格式化。既創建GRUB分區,又創建EFI分區的目的是,同時支持BIOS和UEFI啓動,如果僅是BIOS啓動,只創建GRUB分區即可。

(3)創建分區Flag,“manage flags”。1MB字節的GRUB分區,創建bios_grub標記;2GB的EFI分區,創建boot+esp標記。

(4)使用GParted的Partition-->information查看系統分區、SWAP分區以及EFI分區的UUID,並記錄。也可以使用sudo blkid查看。

三. 複製

關於硬盤間數據的複製,有多種方法。使用GParted自帶的分區複製--粘貼工具(這個最簡單,圖形界面,甚至連分區UUID都會複製),或者使用UBuntu的dd工具(這個應該屬於備份恢復類型),雖然這2個簡單,但是前提是目標分區的容量要大於或者等於源分區的容量,否則就使用下面的方法。

(1)使用sudo fdisk -l命令查看源硬盤和目標硬盤的信息,主要是硬盤的設備名以及分區的設備名,比如源盤是/dev/sdb,目的盤是/dev/sda,分區的設備名後面就有數字編號。

(2)在home/lubuntu目錄下創建sdb2目錄,將源盤的系統分區sdb2掛載到此:sudo mount /dev/sdb2 /home/lubuntu/sdb2;創建sda2目錄,將目的盤的系統分區sda2掛載到此:sudo mount /dev/sda2 /home/lubuntu/sda2。創建的目錄名與硬盤分區設備名相同,僅是爲了在操作時避免誤操作。

(3)使用cp命令,將源盤系統分區的內容複製到目的盤的系統分區:sudo cp -rf -a source destination。這個過程需要的時間由硬盤類型和源盤系統分區中數據的大小決定。

(4)數據複製完成後,將掛載的源盤設備卸載:sudo umount /dev/sdb2。

(5)安裝BIOS啓動方式需要的GRUB:sudo grub-install --target=i386-pc --root-directory=/home/lbuntu/sda2 --recheck --debug /dev/sda。

執行完後,如果沒有錯誤提示即表示成功。

(6)修改grub。修改sda2/etc/fstab文件,可以使用vi編輯器,也可以使用boot-repair映像自帶的文本編輯器。

主要是修改開機啓動自動掛載分區的UUID,將原來的UUID改爲新分區的UUID。

注:如果只是想使用BIOS啓動,那麼卸載掉掛載的sda2就可以了。如果還想使用UEFI啓動,還要繼續。

(7)使用dpkg -x命令解包grub-efi-amd64的deb包到一個目錄下,根據目錄結構,將包中的文件和目錄複製到sda2的相應目錄下,這個包中包含了UBuntu採用UEFI方式啓動所需要的文件。

注:我原來安裝UBuntu時採用的BIOS啓動方式,因此原來的系統中沒有關於UEFI啓動所需要的文件,如果原來就是按照UEFI啓動方式安裝的UBuntu,那麼這一步驟可以省略。

(8)安裝EFI。新建sda2/boot/efi目錄,將sda4分區(目的盤的EFI分區)掛載到此:sudo mount /dev/sda4 sda2/boot/efi。然後執行命令安裝:sudo grub-install --target=x86_64-efi --efi-directory=/home/lubuntu/sda2/boot/efi --directory=/home/lubuntu/sda2/usr/lib/grub/x86_64-efi --root-directory=/home/lubuntu/sda2/ --recheck --debug /dev/sda

命令執行完畢,如果沒有錯誤提示,則表示安裝成功。

(9)修改grub。修改sda2/etc/fstab文件,開機掛載efi分區,EFI分區是FAT32格式,增加一行(注:uid,gid,fmask,dmask也許不是必須的):

UUID=2AF2-0D74    /boot/efi    vfat    defaults,utf8,uid=1000,gid=1000,dmask=111,fmask=000    0    0

四. 掛盤開機啓動

完成以上步驟,基本大功告成。BIOS啓動方式應該是沒問題的。至於UEFI啓動,在開機時通過BIOS的啓動菜單即可選擇。但是,啓動時會提示錯誤,不同的主板可能提示的信息不同:對系統進行了非認證的修改,或者,違背了安全策略。

遇到上面的錯誤信息,進入BIOS設置,都是安全啓動相關的。第一種提示,修改安全啓動中的操作系統類型。第二種提示,修改CSM(兼容性支持模塊)爲Enabled,其他選擇UEFI,不用選Auto。

五. 結語

一個晚上沒有睡覺,將原來安裝的UBuntu16 64位遷移到了2塊硬盤,一塊是純BIOS啓動,一塊是BIOS+UEFI啓動。上面的步驟,完全憑記憶寫的,可能有些地方有些小問題,如遇到問題,網絡搜索一下相應的問題即可。

另外,遷移64位的系統,遷移32位的系統,相應的工具軟件應該匹配。Ubuntu能夠自適應顯示器分辨率,這一點真是不錯。

上幾張圖,第1張是GParted分區以後的截圖,第2張是boot-repair映像中的disks工具顯示硬盤信息的截圖,第3張是fdisk -l命令顯示的結果(EFI分區應該顯示EFI System類型),第4張是安裝EFI執行命令後的截圖。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章