遷移到新硬件
本文討論將Arch Linux系統遷移到新硬件所需的步驟。 我們的目標是實現相同的Arch Linux安裝過程,對於硬件無關的軟件和配置。
移植已安裝的系統有兩種不同的方法:
- 「自下而上」:在新硬件上安裝全新的Arch Linux系統,然後恢復已安裝的軟件包和配置文件,如以點為開頭的文件中所述。
- 「自上而下」:將舊硬盤克隆到新硬盤,或將舊硬盤放入新系統;在需要的地方修改配置文件。
「自上而下」的方法比「自下而上」的方法更準確地再現了原始系統。
適配新硬件[編輯 | 編輯原始碼]
在開始之前,先研究一下新硬件的各個方面,並列出不同之處。一般的區別有
機械硬盤與固態硬盤[編輯 | 編輯原始碼]
參見文章Solid state drive。
CPU供應商[編輯 | 編輯原始碼]
如果將CPU切換到其他供應商的CPU(例如從Intel更換為AMD),請更改微碼配置。
GPU供應商[編輯 | 編輯原始碼]
如果您將GPU更換為其他供應商(例如,從AMD更換為NVIDIA),請更換圖形驅動程序。
UEFI與MBR引導代碼引導[編輯 | 編輯原始碼]
如果您更換到較新的支持UEFI的主板,則可能更可取或需要從「MBR引導代碼」引導切換到UEFI引導。在這種情況下,需要一個新的EFI分區。
自下而上[編輯 | 編輯原始碼]
在舊系統上[編輯 | 編輯原始碼]
我們在這裏定義了從舊系統遷移到新系統的最小配置,這是此方法與安裝指南的不同之處。考慮要複製到新系統的/etc
中的配置文件和/home
中的「.」文件,以及用戶數據文件。如果您無法從新系統訪問舊系統,則備份要複製的所有文件。
列出已安裝的軟件包[編輯 | 編輯原始碼]
$ pacman -Qqen > pkglist.txt $ pacman -Qqem > pkglist_aur.txt
為您提供從軟件倉庫和AUR顯式安裝的軟件包的列表。如果您創建了備份,請將其包含在備份中。
您還可以使用以下腳本查找pacman感知不到的二進制文件和庫(例如,g. 通過Steam、Desura或使用自己的安裝方法安裝的軟件):
find / -regextype posix-extended -regex "/(sys|srv|proc)|.*/\.ccache/.*" -prune -o -type f \ -exec bash -c 'file "{}" | grep -E "(32|64)-bit"' \; | \ awk -F: '{print $1}' | \ while read -r bin; \ do pacman -Qo "$bin" &>/dev/null || echo "$bin"; \ done
pacman 緩存[編輯 | 編輯原始碼]
如果不更改體系結構(例如,從x86更改為x86_64),請考慮備份/var/cache/pacman/pkg/
。
在新系統上[編輯 | 編輯原始碼]
安裝指南的前半部分[編輯 | 編輯原始碼]
有關安裝新系統的基本信息,請參閱Installation guide。按照安裝指南的前半部分操作,但不包括pacstrap命令。
複製pacman緩存[編輯 | 編輯原始碼]
將位於/var/cache/pacman/pkg/
的pacman緩存從舊系統複製到新系統,或從備份複製到新系統。
安裝指南的後半部分[編輯 | 編輯原始碼]
繼續執行中的安裝指南(包括pacstrap命令),直到最後,但不要重新啟動。不要跳過pacstrap命令,因為它除了安裝軟件包之外還會執行其他工作。
安裝以前安裝的軟件[編輯 | 編輯原始碼]
編輯pkglist.txt(和pkglist_aur.txt)並刪除新系統上不需要的驅動程序。然後使用下述命令安裝之前安裝過的軟件
# pacman -S --needed - < pkglist.txt
自上而下[編輯 | 編輯原始碼]
自上而下方法有兩個選項,您可以保留已安裝系統的驅動器並修改其內容,也可以將系統複製到新驅動器。如果保留驅動器並對其進行修改,然後將其放回舊系統中,則修改可能會導致舊系統無法啟動。
清理舊系統[編輯 | 編輯原始碼]
在克隆系統之前清理系統也是值得的,如System maintenance#清理文件系統中所述。在繼續之前,請確保舊系統在清理後仍按預期工作。
將系統複製到新驅動器[編輯 | 編輯原始碼]
將系統複製到新驅動器有兩種基本方法:硬盤克隆和文件複製。
硬盤克隆[編輯 | 編輯原始碼]
需要使用Live系統,而不是舊的Arch Linux系統;例如,您可以使用Arch Linux U 盤安裝介質。將複製舊系統的分區佈局和文件系統。
文件複製[編輯 | 編輯原始碼]
- 在新驅動器上創建新的分區和文件系統。您可以利用此機會選擇與以前不同的分區佈局和/或文件系統。
- 對於每種文件系統,使用rsync或其他可以保留文件權限、屬性等的工具將文件從舊驅動器複製到新驅動器。更多詳細信息,參見rsync#Full system backup,Rsync#作為備份工具。
傳輸方法的選擇[編輯 | 編輯原始碼]
如何在兩個驅動器之間傳輸數據有許多不同的方法:
- 將源硬盤和目標硬盤連接到同一台計算機,無論是舊盤還是新盤。數據鏈路:舊硬盤->電腦->新硬盤。
- 使用外部硬盤或雲備份等臨時存儲設備。數據鏈路:舊硬盤->舊電腦->存儲->新電腦->新硬盤。有關概述,請參閱文章系統備份。
- 通過網絡傳輸數據,例如使用rsync。數據鏈路:舊硬盤->舊電腦->網絡->新電腦->新硬盤。
對於前兩個選項,請考慮您可能需要適配器來連接硬盤(PATA->SATA轉接、USB移動硬盤盒等),並選擇足夠快的連接。
後兩個選項要求您在新計算機上使用Live系統,因為此時尚無法從新硬盤啟動。
更新fstab[編輯 | 編輯原始碼]
如果您使用的是Arch Linux安裝映像,請將新的根分區掛載到/mnt
,並掛載好其他需要的分區,就像您在正常安裝中所做的那樣(請參閱掛載分區)。
在/mnt/etc/fstab
的末尾插入任意註釋,如#end of old fstab
。按照安裝指南#Fstab中的說明生成一個新的fstab文件,並將其附加到當前的fstab文件中。一定要檢查genfstab創建的fstab文件。在這種情況下,請在註釋之前檢查較舊的fstab條目,刪除過期項和重複項;如果舊條目仍然有用,則保留它們。例如,可以保留網絡驅動器的掛載條目。一般推薦使用持久化命名。
重新安裝引導加載程序[編輯 | 編輯原始碼]
出於以下原因,您可能需要重新安裝和/或重新配置啟動加載器:
- 不同的磁盤、分區佈局或文件系統
- 將UEFI引導條目添加到新的主板NVRAM
- 從「MBR引導代碼」引導遷移到UEFI引導
- 從USB遷移到SATA/NVMe
- 更新內核命令行(commandline)
- 如果使用不同的GPU,請更新幀緩衝區模式
- 更新微碼和initramfs鏡像
如果您使用的是Arch Linux live環境,則在重新安裝引導加載程序之前,請更改根路徑進入新系統:
# arch-chroot /mnt
有關如何安裝/重新安裝引導程序的說明,請參閱啟動加載器。
重新生成內核映像[編輯 | 編輯原始碼]
建議使用mkinitcpio重新生成initramfs映像,儘管最初可以使用備用initramfs映像。
重新配置音頻[編輯 | 編輯原始碼]
- alsamixer volume
- 保存設置
重新配置網絡[編輯 | 編輯原始碼]
如果舊系統和遷移後的系統在同一網絡中共存,請使用hostnamectl設置新主機名。
另請考慮主機名更改後所需的配置更改:
- /etc/hosts
- 使用主機名的其他應用程式:synergy,nut(網絡 ups 工具)
grep -Ri 'hostname' /etc
(以root身份運行)也會對需要更新的文件提供一些提示
將dhcpcd配合已命名的網絡接口使用時,網絡接口名稱可能會有變化。
- 使用命令
$ dmesg | grep 'renamed from eth'
可幫助查找新接口名稱 - 刪除舊接口:disable
dhcpcd@enpXs0.service
- 激活新接口:enable
dhcpcd@enpXs0.service