遷移自己的archLinux到新的硬盤時遇到了很多坑,記一下,說不定以后用的著
思路
借鑒了網上的各種操作,總體的操作思路就是克隆當前的分區到新的硬盤分區中,只是使用的工具各不相同,常見的是使用
tar
打包或者使用dd
直接復制分區tar
命令相對于dd
來說效率比較低,且還需要手動解壓到新分區,好處是留下了一個原系統的備份。個人在使用時還踩了坑,系統的體積比較大,處理器又比較渣,壓縮過程中直接變僵尸,浪費了我一個晚上時間等待。dd
相對來說比較好用,但是這里有個大坑,使用dd
命令前需要自己確保新的分區大小不小于原來的分區,當你使用dd
命令時,它不會自己檢測大小,而是直接復制,結果復制完了新分區的空間,發現地方不夠了才報錯... 又是浪費大把的時間。還有一些可視化工具,像Clonezilla,doClone等,都可以克隆系統,不過個人沒有嘗試。
解決
-
使用
dd
克隆分區之前,先使用gparted進行分區大小調整
注意: gparted不能安裝在當前操作系統中,對于正在使用的分區,它將不能進行壓縮操作。因此,需要安裝在live USB
(即燒錄到啟動盤)或者其它的Linux操作系統中(對于多系統電腦)。個人使用的ubuntu 20.04
的啟動盤,上面有預裝的gparted
。
-
調整好分區大小后不要退出啟動盤,直接使用
dd
命令復制分區到目的位置
-
踩坑: 由于
dd
也會將uuid
復制,此時原分區的uuid
與新分區的相同,如果這時退出啟動盤進入系統(不要退出,這條及下條都是我踩的坑),查看系統發現還是掛載的原來的分區(/dev/sda8)。
-
要想掛載新的分區,就需要改變兩者的
uuid
,但使用這個問題中提供的命令時,發現需要將該分區卸載才能繼續。對于正在運行的系統,/home
肯定是不能卸載的:
-
因此,繼續在啟動盤中進行更改
uuid
的操作
使用下面命令更新新分區的大小
$ sudo resize2fs /dev/sdb5
-
更改完成后,啟動系統。掛載分區已經改變。
最后
- 只遷移了系統的
/
目錄,/boot
目錄并未遷移。也不影響系統運行速度,遷移/boot
可能還需要處理其它幾個系統的引導,懶得搞了,以后再說吧。