【archlinux教程】更換磁盤又不想重裝archlinux?直接遷移就完事了。
沒有感情,全是技巧。
前段時間新購入一塊2T的M2硬盤,就想著把原有的1T的M2硬盤拿去做備胎。但又不想重裝系統(tǒng),因為要備份很多東西,裝完了還得更新系統(tǒng),下載軟件、配置一大堆東西,于是萌生了系統(tǒng)遷移的想法。上網(wǎng)搜到一篇教程,不過是ubuntu的(原文在此:https://jiajunhuang.com/articles/2020_05_22-linux_clone_sys.md.html)。本著都是linux,大差不差的原則,抄了下思路,于是有了本篇針對archlinux的教程。
一、先準(zhǔn)備好一塊沒有資料的硬盤,如果有資料,就先轉(zhuǎn)移,這樣是最方便的,因為這樣最不容易出錯。
將新硬盤進(jìn)行分區(qū),至少有n個分區(qū)能與現(xiàn)有l(wèi)inux系統(tǒng)的關(guān)鍵掛載點能一一對應(yīng)。
舉個例子:
假設(shè)現(xiàn)有l(wèi)inux所在磁盤為sda(當(dāng)然,現(xiàn)在大多數(shù)都是固態(tài)硬盤,是以nvme開頭的),分區(qū)掛載點如下:
devide? ? ? mountpoint? ? ? space
/dev/sda1? ?/boot/efi? ? ? ?300M(可根據(jù)需求來)
/dev/sda2? ?/? ? ? ? ? ? ? ?150G(我習(xí)慣root分大點,可根據(jù)需求來)
/dev/sda3? ?/home? ? ? ? ? ?750G(沒有與其他系統(tǒng)共享的需求,可以把剩余空間分完)
要轉(zhuǎn)移的目標(biāo)磁盤為sdb,那么這塊磁盤也應(yīng)該至少有這幾個分區(qū),且類似地進(jìn)行掛載(這樣方便理解,如果不想重新分區(qū),則需要自己將對應(yīng)關(guān)系記下來,以作備用)
二、一切操作切勿在當(dāng)前系統(tǒng)下進(jìn)行,這會導(dǎo)致資料因為掛載問題而循環(huán)同步,而無法完成!
自備archlinux的安裝盤(也經(jīng)常使用命令行來對系統(tǒng)進(jìn)行搶救維護(hù))。
最簡單的方式是找個U盤把鏡像燒錄進(jìn)去,教程很多,不多說明。也可以將U盤制作成ventoy盤,直接從鏡像文件引導(dǎo),我個人十分推崇這個方案,可以使各種linux發(fā)行版、windows包括pe系統(tǒng)共存于一個U盤,是非常方便的系統(tǒng)安裝、維護(hù)工具盤。
三、進(jìn)入archlinux安裝盤的終端,接下來一切操作將都在這里進(jìn)行。
輸入lsblk -f,來確認(rèn)各個磁盤的設(shè)備名稱與uuid,最好用手機(jī)拍個照,后面會用到。
將現(xiàn)有l(wèi)inux系統(tǒng)的掛載點,一次掛載到某個位置,比如:
devide? ? ? mountpoint
/dev/sda1? ?/mnt/boot/efi
/dev/sda2? ?/mnt/
/dev/sda3? ?/mnt/home
當(dāng)然,在掛載之前要用mkdir命令先建立好各自對應(yīng)的目錄,否則掛載不上
例如:mkdir /mnt/boot/efi && mkdir /mnt/home
接下來進(jìn)行掛載: mount /dev/sda2 /mnt && mount /dev/sda1 /mnt/boot/efi && mount /dev/sda2 /mnt/home
這樣,就把現(xiàn)有l(wèi)inux系統(tǒng)的所有分區(qū)都掛載好了,接下來如法炮制,將目標(biāo)磁盤的分區(qū)也掛載到另一個位置,比如:mkdir /data && mkdir /data/boot/efi && mkdir /data/home
mount /dev/sdb2 /data && mount /dev/sdb1 /data/boot/efi && mount /dev/sdb2 /data/home
如此一來,兩塊磁盤就各自掛載好了,那么接下來只需要對這兩塊磁盤的根目錄進(jìn)行同步就好,指令如下:rsync -av --progress /mnt/ /data/ (-a意思為--archive,即歸檔且盡可能保留原文件的各種屬性;-v意思為--verbose,即啰嗦模式;--progress則是顯示進(jìn)度,以便觀察情況)
由于linux小文件比較多,因此在同步幾百G的資料時,花費的時間往往不短,并且要保留各個文件的原有屬性,因此請耐心等待。
我遷移時花了大概一個小時才完成,但總比重裝系統(tǒng),再安裝所有軟件,并重新配置要強(qiáng)得多得多。
四、chroot到備份好的目標(biāo)磁盤系統(tǒng)中,對fstab文件進(jìn)行修改,使其正確地掛載新的分區(qū)。
命令為:arch-chroot /data
這時,理論上來說你可以使用系統(tǒng)已經(jīng)安裝好的各種工具進(jìn)行操作,一般安裝系統(tǒng)時都裝了vim的吧?
sudo vim /etc/fstab(記不得是否需要sudo了,自己嘗試,后同)
按i鍵進(jìn)入編輯模式,進(jìn)去把對應(yīng)的UUID都修改為目標(biāo)磁盤的,之前讓你拍照就是為了這一步,替換輸入好之后請仔細(xì)檢查,別有錯誤,否則進(jìn)不去系統(tǒng),還得進(jìn)入archlinux的安裝盤來進(jìn)行維護(hù)。
按esc鍵退出編輯模式,輸入冒號wq【:wq】,不成功就再次返回,輸入冒號wq嘆號【:wq!】,以保存退出。(w是write,寫入的意思;q是quit,退出的意思;嘆號是強(qiáng)制執(zhí)行的意思。)
四、在目標(biāo)磁盤上重建引導(dǎo)(否則在bios中識別不到目標(biāo)磁盤的啟動項)
sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB
sudo grub-mkconfig -o /boot/grub/grub.cfg
五、重啟
在重啟之前,需要先卸載掛載點
直接exit返回archlinux的安裝界面。
再umount -R /mnt && umount -R /data (-R是遞歸卸載目錄及子目錄的意思)
至此,大功告成,可以reboot重啟了。
六、進(jìn)入bios,應(yīng)該可以看到目標(biāo)磁盤的啟動項了,將其選為默認(rèn),保存退出,即可通過目標(biāo)磁盤進(jìn)入系統(tǒng)。
如果前面沒有做錯哪一步的話,你應(yīng)該可以安全地進(jìn)入新系統(tǒng)了。如果哪一步出錯,就自己去排查。建議先看完本教程,梳理好思路,再進(jìn)行操作!否則極有可能浪費時間。
先在新磁盤上使用一段時間,確定沒問題后,再隨意處置之前的系統(tǒng)所在磁盤。
教程到此結(jié)束,碼子大半天,懶得排版了。
視頻就不做了,前前后后一個小時呢(雖然大部分時間都是同步資料花費的)。
有幫到你的話,不妨點個贊。萬一以后能用上呢?