遷移到新硬體 - Arch Linux 中文维基

跳至內容

# 遷移到新硬體

出自 Arch Linux 中文维基
翻譯狀態：

- 本文（或部分內容）譯自 Migrate installation to new hardware，最近一次同步於 2021-03-02，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

相關文章

- 架構間遷移
- 將現有安裝移動到（或移出）虛擬機

本文討論將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 backup，Rsync#作為備份工具。

#### 傳輸方法的選擇

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

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

## 另見

- Howto clone a linux system
- [1]
- [2]

分類：​

- 系統恢復

遷移到新硬體
新增話題