跳至內容

從現有 Linux 發行版安裝 Arch Linux

出自 Arch Linux 中文维基

本指南給出了從當前 Linux 發行版安裝 Arch Linux 所需的準備步驟。 準備完成後的安裝參考 Installation guide

從當前 Linux 發行版安裝 Arch Linux 對以下情形有所幫助:

這些準備步驟的目的在於為搭建一個 arch-install-scripts(如 pacstrap(8)arch-chroot(8))可運行的環境。

如果當前系統是 Arch Linux,這個目的可通過在當前系統安裝 arch-install-scripts 達成。如果當前系統不是 Arch Linux,可以構建基於 Arch Linux 的 chroot 環境。

注意:本指南要求當前系統能夠運行目標 Arch Linux 構架的程序。這意味著當前系統必須是 x86_64 架構。
警告:在進行每一步前,確保你理解你在幹什麼。這些操作很容易毀壞你的系統或造成數據丟失!

備份和準備

備份你的所有數據,包括郵件、網頁伺服器等,把所有數據都放在手邊。記錄下你的伺服器配置、hostname 等數據。

你可能會用到的數據:

  • IP 地址
  • hostname(s),(注意:根伺服器可能是域名提供的一部份,在你刪除 /etc/hosts 前先檢查並備份)
  • DNS 伺服器(檢查 /etc/resolv.conf
  • SSH 密鑰(如果其它人也要用你的伺服器,如果你刪除了 SSH 密鑰,他們就需要新的密鑰了。這些密鑰可能來自:Apache、郵件伺服器、SSH 伺服器和其它服務)
  • 硬體信息(比如網卡,參考你的 /etc/modules.conf
  • 引導加載程序(Boot Loader)的配置文件。

總之,在本地備份一份原本的 /etc 總不會錯。

從一個正在運行 Arch Linux 的主機

安裝 arch-install-scripts

參考 Installation guide#掛載分區來掛載用來安裝的文件系統根目錄,以及其它必要的掛載點。如果 /mnt 文件夾已經被占用 , 只要新建一個文件夾,比如 /mnt/install 用來替代即可。

目前,Arch Linux 可以從頭安裝,或者作為宿主系統的鏡像,這兩種選項會在下面說明。

進行全新的 Arch Linux 安裝

參考 Installation guide#Installation

你可以跳過 Installation guide#選擇鏡像,因為主機中應該已經有了合適的鏡像列表。

警告:

pacstrap 會使用 來自宿主機的 /etc/pacman.conf 的配置文件以及 pacman 鉤子。參見 archlinux/arch-install-scripts#60。 如果你的設置偏離了標準(例如你在你的 pacman 配置中有 Noextract=),這也會影響到新安裝的系統。

提示:

創建已有的 Arch 的備份

複製宿主系統的文件系統到新分區,再做一些必要的調整,就可以備份已有的 Arch Linux。

第一步是拷貝宿主文件到新的分區裡,可以考慮使用 Rsync#全盤系統備份裡展示的方法。

然後,參考 Installation guide#配置系統裡的步驟,注意以下幾點:

如果鏡像 Arch 必須要使用與宿主系統不同的配置,或者要安裝到不同的硬體上,考慮進行以下操作:

從一個運行另一個 Linux 發行版的主機

下列是多個可以自動處理大量步驟的工具。具體方法可以參考他們各自主頁的相關說明。

以下是介紹手動處理的辦法,具體思路要麼是直接在宿主系統上運行 pacman,要麼是在宿主系統裡運行一個 Arch 系統,這個嵌套系統位於 chroot 中。

在宿主系統上運行 pacman

Pacman 可以在大部分 Linux 發行版上編譯運行,可以直接用來在宿主系統上創建 Arch Linux。最近的發行版上 arch-install-scripts 應該可以順利運行。

一些發行版官方提供 pacman 和 / 或者 arch-install-scripts 的軟體包。截止 2020 六月,Void Linux 提供了 pacman 軟體包,Apline Linux 和 Fedora 提供了 pacmanarch-install-scripts 的軟體包。

創建 chroot

鏡像站下載 bootstrap 鏡像到 /tmp。 從下載頁下載 bootstrap 的簽名文件並把它放在與鏡像相同的文件夾下。不要從鏡像站下載它。 使用 GnuPG 驗證

解壓 tarball:

 # tar xf /path-to-bootstrap-image/archlinux-bootstrap-x86_64.tar.zst --numeric-owner

留意最後的 --numeric-owner 選項。你當前的 Linux 系統使用的 UID 和 GID 可能與 Arch Linux 不同,這個選項可以保留解壓出文件的 UID 和 GID。

然後編輯來 /tmp/root.x86_64/etc/pacman.d/mirrorlist 選擇軟體倉庫伺服器。

進入 chroot:

  • 若安裝了4或更高版本的 bash,並且 unshare 支持 --fork --pid 選項 (util-linux 2.24 or later):
    # /tmp/root.x86_64/bin/arch-chroot /tmp/root.x86_64/
  • 若無,執行:
# mount --bind /tmp/root.x86_64 /tmp/root.x86_64
# cd /tmp/root.x86_64
# cp /etc/resolv.conf etc
# mount -t proc /proc proc
# mount --make-rslave --rbind /sys sys
# mount --make-rslave --rbind /dev dev
# mount --make-rslave --rbind /run run    # (假设文件系统上存在 /run)
# chroot /tmp/root.x86_64 /bin/bash

使用 chroot 環境

初始環境非常基礎(沒有 nano 或者 lvm2),因此,我們得設置好 pacman 來安裝必要的軟體包。

初始化 pacman 密鑰環

開始安裝前,需要設置 pacman 密鑰。執行以下命令:

# pacman-key --init
# pacman-key --populate

更多請參見 pacman/軟體包簽名#Initializing the keyring

下載基本工具

刷新軟體包列表安裝你需要的軟體包:basebase-devel包組parted 等等。

本文或本章節的語言、語法或風格需要改進。參考:幫助:風格

原因:This error is explained within arch-chroot(8) § DESCRIPTION, it should be linked there.(在Talk:從現有 Linux 發行版安裝 Arch Linux討論)
注意:你在用 pacman 安裝軟體包時,可能會遇到錯誤:error: could not determine cachedir mount point /var/cache/pacman/pkg。解決辦法是在 chroot 前運行:
# mount --bind directory-to-livecd-or-bootstrap directory-to-livecd-or-bootstrap
參考 FS#46169

安裝提示

請按照Installation guide中的掛載分區安裝必須的軟體小節進行安裝。

一些宿主系統或配置可能需要額外的步驟,參考下面的章節。

基於 Debian 的當前系統
/dev/shm

在基於 Debian 的當前系統上,pacstrap 會發生以下錯誤:

# pacstrap -K /mnt base
==> Creating install root at /mnt
mount: mount point /mnt/dev/shm is a symbolic link to nowhere
==> ERROR: failed to setup API filesystems in new root

Debian 中,/dev/shm 指向 /run/shm。而在基於 Arch 的 chroot 中,/run/shm 並不存在,因而連結失效。創建 /run/shm 目錄可修復此錯誤:

# mkdir /run/shm
基於Fedora的當前系統

在基於 Fedora 的宿主系統和 live USBs 上時,當你用 genfstab 生成你的 fstab 你可能會遇到問題。移除重複的入口和 seclabel 選項(如果有),因為它們是針對 Fedora 的。

重啟前要檢查的

為得到一個成功的安裝,重啟前請再次檢查一些你的安裝的細節。 首先 chroot 到你的新系統然後:

  • 創建一個用戶並設置密碼, 使得你可以通過 ssh 登錄。這很重要因為從 OpenSSH-7.1p2 開始登錄 root 被默認禁用。
  • 設置 root 用戶密碼 以便之後你可以通過 su 切換至 root。
  • 安裝一個 ssh 實現並啟用服務端實例使得它開機自動啟動。
  • 設置網絡配置使得你在啟動後能使用網絡。
  • 設置 boot loader 並配置它使用你之前所挪用的交換分區做為根分區 。 你可能還想讓你的 boot loader 能夠啟動到你的舊系統;對此可復用已存在的 /boot 分區來達成這個目的。

無 LiveCD 替換當前系統

在硬碟上劃分出 ~700 MiB 的空閒空間,如分割交換分區。你可以禁用交換分區並用省下的空間建立新系統。

把舊的交換分區設為新的根分區

檢查 cfdisk/proc/swaps 或者 /etc/fstab 來找到你的交換分區。假設你的硬碟位於 sdaXX 是數字)。

執行下面的操作:

禁用交換分區:

# swapoff /dev/sdaX

在上面建立新的文件系統

# fdisk /dev/sda
(设置 /dev/sdaX ID 为 "Linux" - Hex 83)
# mke2fs -j /dev/sdaX

創建一個新目錄來掛載它

# mkdir /mnt/newsys

最後,掛載新目錄並安裝過渡系統。

# mount -t ext4 /dev/sdaX /mnt/newsys

安裝

安裝必要軟體包和其它讓系統聯網和在臨時文件系統下運行的必需軟體包。注意 ~700 MB 的空間限制。當使用 pacstrap 安裝時,考慮加上 -c 選項來避免占滿寶貴的空間。

一旦完成安裝,修復引導器配置,然後重啟進入到新系統並rsync 整個系統至主分區。