遷移到新硬件

出自 Arch Linux 中文维基

本文討論將Arch Linux系統遷移到新硬件所需的步驟。 我們的目標是實現相同的Arch Linux安裝過程,對於硬件無關的軟件和配置。

警告: 以下某些操作可能有危險:建議您在繼續操作之前,先備份舊系統上的所有重要數據。

移植已安裝的系統有兩種不同的方法:

  1. 「自下而上」:在新硬件上安裝全新的Arch Linux系統,然後恢復已安裝的軟件包和配置文件,如以點為開頭的文件中所述。
  2. 「自上而下」:將舊硬盤克隆到新硬盤,或將舊硬盤放入新系統;在需要的地方修改配置文件。

「自上而下」的方法比「自下而上」的方法更準確地再現了原始系統。

適配新硬件[編輯 | 編輯原始碼]

警告: 對於這兩種方法,我們必須考慮新舊硬件之間的差異,並相應地修改安裝的驅動程序和配置。

在開始之前,先研究一下新硬件的各個方面,並列出不同之處。一般的區別有

機械硬盤與固態硬盤[編輯 | 編輯原始碼]

參見文章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 backupRsync#作為備份工具

傳輸方法的選擇[編輯 | 編輯原始碼]

如何在兩個驅動器之間傳輸數據有許多不同的方法:

  • 將源硬盤和目標硬盤連接到同一台計算機,無論是舊盤還是新盤。數據鏈路:舊硬盤->電腦->新硬盤。
  • 使用外部硬盤或雲備份等臨時存儲設備。數據鏈路:舊硬盤->舊電腦->存儲->新電腦->新硬盤。有關概述,請參閱文章系統備份
  • 通過網絡傳輸數據,例如使用rsync。數據鏈路:舊硬盤->舊電腦->網絡->新電腦->新硬盤。

對於前兩個選項,請考慮您可能需要適配器來連接硬盤(PATA->SATA轉接、USB移動硬盤盒等),並選擇足夠快的連接。

後兩個選項要求您在新計算機上使用Live系統,因為此時尚無法從新硬盤啟動。

更新fstab[編輯 | 編輯原始碼]

警告: 在執行此步驟之前,請確保您不希望在舊系統中使用此驅動器,因為更改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

另見[編輯 | 編輯原始碼]