首頁 > 軟體

以官方Wiki的方式安裝Arch Linux

2020-06-16 16:48:41

寫在前面

這可能是你能找到的最適合你的中文ArchLinux安裝教學。

前幾天硬碟掛了,萬幸的是家目錄放在了另一塊硬碟上所以存活了下來。不得不再重灌一遍Arch,算上幫朋友裝的,這已經是我第四次安裝Arch了。也想藉此機會記錄這個過程寫一篇完全按照官方Wiki指導再加上Wiki上沒有重點寫出來但是安裝過程中會遇到的一些問題的一篇不太一樣的安裝教學。

 

很多人提起起Arch的第一反應就是安裝困難,這種困難有很多原因,也就是接下來我們將會面對的問題。

  • 沒有圖形介面的引導:Arch只給我們提供了一個最小的環境,所有的安裝操作都需要在命令列中完成,這對於不習慣命令列操作的人來說是最難以跨越的一個坎。許多發行版之所以可以流行開來就是因為他們提供了友好的、流程化的安裝過程,這幫很多人解決了學習Linux的第一步:安裝一個Linux
  • 預備知識的不足與缺乏查詢並解決問題的能力:一些對於安裝系統比較重要的知識例如系統引導、組態檔的編輯、簡單的命令列操作等沒有接觸過,所以操作時往往摸不著頭腦,一旦自己的操作結果與教學不符便不知道如何去解決遇到的問題。
  • 缺乏合適的教學:安裝Arch最好的也是最完備的教學就是官方的Installation guideWiki,雖然部分內容有中文版,但是中文的翻譯有些時候會落後於英文版,不推薦完全依賴於中文Wiki。並且官方Wiki的寫作方式更偏向於文件,沒有我們所習慣的按步驟編排的安裝過程,給不熟悉這種寫作方式的同學造成了閱讀與使用上的困難。國內的可以找到的教學往往都是時間比較久遠,或是沒有提及或是忽略了一些新手容易犯錯誤的地方。

本篇教學致力於與現有的Wiki保持一致,並且適當地加入一些適合初學者學習的連結,希望可以讓閱讀了這篇教學的同學可以提高自己利用現有及以後可能出現的新的Wiki內容的能力。

ArchLinux或者是Linux的優點就不在這裡多說了,我相信開啟這篇教學的同學一定可以從這樣的過程中得到很多。

注意事項

請一定仔細閱讀教學中的每一個指示,絕大部分安裝失敗都是由於沒有仔細看教學,遺漏、錯輸指令導致的。安裝的方式根據引導方式的不同會有所不同,所以請按教學中的指示進行,切忌一味地輸命令而不管說明。

對於硬碟分割區相關的操作,請更加小心檢查命令,資料無價。

下面就正式開始我們的教學。

安裝教學

前期準備

安裝媒介

在安裝之前我們先要準備一個安裝媒介,在這裡只推薦U盤作為安裝媒介。

  1. https://www.archlinux.org/download/頁面下方的中國映象源中下載archlinux-**-x86_64.iso這個iso檔案。

磁碟準備

我們需要有一塊空閒的磁碟區域來進行安裝,這裡的空閒指的是沒有被分割區的空間。下面來介紹如何準備這塊空間。

  • windows下空出一塊分割區來安裝:利用windows自帶的磁碟管理工具就可以:

    1. 右擊windows圖示,在彈出選單中選擇磁碟管理(其他版本的windows請自行找到開啟磁碟管理的方式):

    2. 右擊想要刪除的分割區,選擇刪除捲(注意這步之後這個分割區的所有資料將會丟失):

  • linux下分出一塊區域安裝:使用fdisk進行,教學請見連結中的刪除分割區:

    https://www.linuxidc.com/Linux/2018-08/153580.htm

  • 空閒的磁碟(新磁碟):不需要進行任何操作。

U盤安裝

下面的過程實際上都在剛剛準備好的U盤啟動媒介上的Linux系統下進行,所以啟動時都應該選擇U盤

設定啟動順序

這一步在不同品牌的電腦上都不一樣,所以需要大家自行搜尋自己電腦品牌+啟動順序這個關鍵詞來進行設定。

一般來說現在的主機板都可以不用進入BIOS而快速地切換啟動順序,只要找到相應的快捷鍵就可以了。

進入U盤下的Linux系統

  1. 按上一步設定好啟動順序,啟動之後會看到如下介面(UEFI啟動方式的介面可能不同):

    如果直接進入windows,請檢查啟動順序是否設定成功,U盤是否在製作啟動媒介時成功寫入。

    如果沒有看到這個介面,請檢查U盤是否製作成功,如果多次遇到問題可以考慮換一個U盤。

    選擇第一個選項。

  2. 這時Arch開始載入,你將會看到螢幕顯示如下內容:

    載入完成後你將會進入一個有命令提示字元的介面:

    如果出現FAIL或是其他錯誤資訊導致無法啟動請自行搜尋錯誤資訊來獲得解決方法。

    這就是Linux的終端介面了,接下來我們將通過在這個介面執行一系列命令來將Arch安裝到我們的磁碟上。


下面進行的過程是按照官方Installation guide為依據進行的,出現的任何問題都可以到連結中的相應部分查詢原文找到解決方式。

檢查引導方式

目前的引導方式主要分為EFI引導+GPT分割區表與BIOS(LEGACY)引導+MBR分割區表兩種,幾乎比較新的機器都採用了EFI/GPT引導的方式。關於這部分的內容如果有興趣可以通過這個連結進行了解:

https://www.linuxidc.com/Linux/2018-08/153581.htm

如果你不知道自己的引導方式,請在命令提示字元下執行以下命令:

ls /sys/firmware/efi/efivars

這裡的ls是命令,空格後面的一串為路徑,作為ls命令的引數。ls命令的作用是顯示路徑目錄下的所有的檔案(夾)。


如果你對命令列下的常用操作(TAB補全、取消命令等)不熟悉,請先學習了解下面部分實用的快捷鍵或命令:

Tab鍵 命令列自動補全。鍵入命令或檔名的前幾個字元,然後按 [Tab] 鍵,它會自動補全命令或顯示匹配你鍵入字元的所有命令

↑(Ctrl+p) 顯示上一條命令

↓(Ctrl+n) 顯示下一條命令

Ctrl-C: 終止當前正在執行的命令


輸入命令並回車執行後,如果提示

ls: cannot access '/sys/firmware/efi/efivars': No such file or directory

表明你是以BIOS方式引導,否則為以EFI方式引導。現在只需要記住這個資訊,之後會用到。

聯網

arch並不能離線安裝,因為我們需要聯網來下載需要的元件,所以我們首先要連線網路。

  • 如果你是有線網並且路由器支援DHCP的話插上網線後先執行以下命令獲取IP地址:

    dhcpcd
  • 然後執行以下命令來判斷網路連線是否正常:

    ping www.baidu.com

    如果可以看到類似下面的內容就說明連上了網路:

    再次提示用快捷鍵Ctrl-C可以終止當前正在執行的命令

  • 如果你是無線網,請執行以下命令:

    wifi-menu

    這是一個實用的命令列下聯網工具,有字元形式的圖形化介面,利用它可以方便地聯網,如果它沒能起作用,需要進入以下頁面查詢解決方式:

    https://wiki.archlinux.org/index.php/Wireless_network_configuration

    連線以後同樣可以通過上面的ping命令來進行測試。

更新系統時間

執行如下命令:

timedatectl set-ntp true

正常情況下這樣的命令並沒有輸出,所謂沒有訊息就是最好的訊息

分割區與格式化

特別注意:涉及到分割區與格式化的操作要格外注意,命令在迴車之前請再三確認知道自己在做什麼,並且沒有輸錯命令,否則將會來帶來資料的丟失!如果有需要在操作之前請備份重要的資料。

但是我們也並不要過於懼怕分割區與格式化過程,正確操作的情況下不會對你其他資料產生任何影響。

檢視目前的分割區情況

執行命令:

fdisk -l

以我的電腦為例:

可以看到我的一塊238.5g的硬碟(/dev/sda就代表這塊硬碟),下面列出了/dev/sda*這三個分割區,/dev/sda3是我存活下來的家目錄,可以看到它的型別為Linux分割區。注意看StartEnd的數值,這個數值代表磁區號,可以理解成硬碟被劃分成了一個個小單元,可以直觀地看出來在/dev/sda2End/dev/sda3Start之間空出了一大塊未分配的空間,接下來我們將分配這塊區域。


  • 如果你是BIOS/MBR方式引導,跳過下面建立一個引導分割區的步驟。
  • 如果你是EFI/GPT方式引導,並且同時安裝了其他系統,那麼你應該可以在分割區列表中發現一個較小的並且型別為EFI的分割區(注意檢視硬碟的大小,這個EFI分割區有可能是你U盤中的,需要排除),這是你的引導分割區,請記下它的路徑(/dev/sdxY)備用,跳過下面建立一個引導分割區的步驟。
  • 如果你是EFI/GPT方式引導,但是沒有這個較小的並且型別為EFI的引導分割區(這種情況一般只會出現在新的硬碟),那麼你需要先建立一個引導分割區

建立一個引導分割區(僅上面所列的第三種情況需要進行這步

執行命令:

fdisk /dev/sdx (請將sdx替換成你要操作的磁碟如sdb sdc等)

下面你就進入了fdisk的操作環境, 輸入m並回車可以檢視各命令的作用。

  1. 如果你是一塊全新的硬碟:輸入g來建立一個全新的gpt分割區表,否則直接進行第2步

  2. 輸入n建立一個新的分割區,首先會讓你選擇起始磁區,一般直接回車使用預設數值即可,然後可以輸入結束磁區或是分割區大小,這裡我們輸入+512M來建立一個512M的引導分割區。

  3. 這時我們可以輸入p來檢視新建立的分割區。

  4. 輸入t並選擇新建立的分割區序號來更改分割區的型別,輸入l可以檢視所有支援的型別,輸入ef更改分割區的型別為EFI

  5. 輸入w來將之前所有的操作寫入磁碟生效,在這之前可以輸入p來確認自己的分割區表沒有錯誤。

  6. 輸入以下命令來格式化剛剛建立的引導分割區:

    mkfs.fat -F32 /dev/sdxY (請將sdxY替換為剛建立的分割區)

現在引導分割區就建立好了。

建立根分割區

輸入命令:

fdisk /dev/sdx (請將sdx替換成你要操作的磁碟如sdb sdc等)
  1. 如果你是一塊全新的硬碟否則直接進行第2步):

    1. 如果你是BIOS/MBR引導方式:輸入o來建立一個全新的MBR分割區表。
    2. 如果你在上一步新建了分割區表並建立了引導分割區:直接進行步驟2。
    3. 如果你在另一塊硬碟中已經有引導分割區:輸入g來建立一個全新的gpt分割區表。
  2. 輸入n建立一個新的分割區,首先會讓你選擇起始磁區,一般直接回車使用預設數值即可,然後可以輸入結束磁區或是分割區大小,如果我們想要使建立的分割區完全佔滿空閒的空間,可以直接回車使用預設結束磁區。

  3. 這時我們可以輸入p來檢視新建立的分割區。

  4. 輸入w來將之前所有的操作寫入磁碟生效,在這之前可以輸入p來確認自己的分割區表沒有錯誤。

  5. 輸入以下命令來格式化剛剛建立的根分割區:

    mkfs.ext4 /dev/sdxY (請將的sdxY替換為剛建立的分割區)

這是我的分割區過程供參考:

掛載分割區

執行以下命令將根分割區掛載到/mnt

mount /dev/sdxY /mnt (請將sdxY替換為之前建立的根分割區)

如果你是EFI/GPT引導方式,執行以下命令建立/boot資料夾並將引導分割區掛載到上面。BIOS/MBR引導方式無需進行這步。

mkdir /mnt/boot
mount /dev/sdxY /mnt/boot (請將sdxY替換為之前建立或是已經存在的引導分割區)

選擇映象源

因為從這步開始,需要進行一些編輯組態檔的操作,所以需要掌握一些命令列下非常著名的一款編輯器Vim的基本操作,在這裡推薦學習下面這個連結中的存活部分,可以完成編輯、複製貼上與儲存工作即可。

http://coolshell.cn/articles/5426.html


映象源是我們下載的軟體包的來源,我們需要根據自己的地區選擇不同的源來加快下載的速度。

執行以下命令,用Vim來編輯/etc/pacman.d/mirrorlist這個檔案

vim /etc/pacman.d/mirrorlist

提示:輸入路徑時可以用Tab鍵補全

找到標有China的映象源,normal模式下按下dd可以剪下游標下的行,按gg回到檔案首,按P(注意是大寫的)將行貼上到檔案最前面的位置(優先順序最高)。

當然也可以直接手工輸入。

這裡推薦使用清華、浙大源:

Server = http://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch
Server = http://mirrors.zju.edu.cn/archlinux/$repo/os/$arch

最後記得用:wq命令儲存檔案並退出。

安裝基本包

下面就要安裝最基本的ArchLinux包到磁碟上了。這是一個聯網下載並安裝的過程。

執行以下命令:

pacstrap /mnt base base-devel

根據下載速度的不同在這裡需要等待一段時間,當命令提示字元重新出現的時候就可以進行下一步操作了。

設定Fstab

生成自動掛載分割區的fstab檔案,執行以下命令:

genfstab -L /mnt >> /mnt/etc/fstab

由於這步比較重要,所以我們需要輸出生成的檔案來檢查是否正確,執行以下命令:

cat /mnt/etc/fstab

如圖,可以看到/dev/sda4被掛載到了根分割區。

/dev/sda3是我之前存活下來的家目錄被掛載到了/home目錄(你們沒有這條)。

如果是EFI/GPT引導的還應該有引導分割區被掛載到/boot目錄

Chroot

Chroot意為Change root,相當於把操縱權交給我們新安裝(或已經存在)的Linux系統,執行了這步以後,我們的操作都相當於在磁碟上新裝的系統中進行

執行如下命令:

arch-chroot /mnt

這裡順便說一下,如果以後我們的系統出現了問題,只要插入U盤並啟動, 將我們的系統根分割區掛載到了/mnt下(如果有efi分割區也要掛載到/mnt/boot下),再通過這條命令就可以進入我們的系統進行修復操作。


設定時區

依次執行如下命令設定我們的時區為上海並生成相關檔案:

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
hwclock --systohc

提前安裝必須軟體包

因為我們現在已經Chroot到了新的系統中,只有一些最基本的包(元件),這時候我們就需要自己安裝新的包了,下面就要介紹一下ArchLinux下非常強大的包管理工具pacman,大部分情況下,一行命令就可以搞定包與依賴的問題。

安裝包的命令格式為pacman -S 包名pacman會自動檢查這個包所需要的其他包(即為依賴)並一起裝上。下面我們就通過pacman來安裝一些包,這些包在之後會用上,在這裡先提前裝好。

執行如下命令:

pacman -S vim dialog wpa_supplicant ntfs-3g networkmanager

一路確認之後包就被成功裝上了。

圖中只安裝了Vim和它的依賴。

設定Locale

設定我們使用的語言選項,執行如下命令來編輯/etc/locale.gen檔案:

vim /etc/locale.gen

在檔案中找到zh_CN.UTF-8 UTF-8 zh_HK.UTF-8 UTF-8 zh_TW.UTF-8 UTF-8 en_US.UTF-8 UTF-8這四行,去掉行首的#號,儲存並退出。如圖:

然後執行:

locale-gen

開啟(不存在時會建立)/etc/locale.conf檔案:

vim /etc/locale.conf

在檔案的第一行加入以下內容:

LANG=en_US.UTF-8

儲存並退出。

設定主機名

開啟(不存在時會建立)/etc/hostname檔案:

vim /etc/hostname

在檔案的第一行輸入你自己設定的一個myhostname

儲存並退出。

編輯/etc/hosts檔案:

vim /etc/hosts

作如下修改(將myhostname替換成你自己設定的主機名)

127.0.0.1	localhost.localdomain	localhost
::1 localhost.localdomain localhost
127.0.1.1 myhostname.localdomain myhostname

這裡我設定的是viseator

儲存並退出。

設定Root密碼

RootLinux中具有最高許可權帳戶,有些敏感的操作必須通過Root使用者進行,比如使用pacman,我們之前進行所有的操作也都是以Root使用者進行的,也正是因為Root的許可權過高,如果使用不當會造成安全問題,所以我們之後會新建一個普通使用者來進行日常的操作。在這裡我們需要為Root帳戶設定一個密碼:

執行如下命令:

passwd

按提示設定並確認就可以了。


或許有的人已經發現官方Wiki和一些其他教學資料中的命令是以#$開頭的,這兩個符號就對應著命令列中的命令提示字元,#代表以Root使用者執行命令,$代表以普通使用者執行命令,平時使用教學中的命令時應該注意這一點。


安裝Intel-ucode(非IntelCPU可以跳過此步驟)

直接pacman安裝:

pacman -S intel-ucode

安裝Bootloader

經常聽說很多人因為引導問題導致系統安裝失敗,多數是因為教學沒有統一或是過時的教學引起的,這裡只要按照步驟來其實是不難的。

這裡我們安裝最流行的Grub2

  • 首先安裝os-prober這個包,它可以配合Grub檢測已經存在的系統,自動設定啟動選項。

    pacman -S os-prober

如果為BIOS/MBR引導方式:
  • 安裝grub包:

    pacman -S grub
  • 部署grub

    grub-install --target=i386-pc /dev/sdx (將sdx換成你安裝的硬碟)

    注意這裡的sdx應該為硬碟(例如/dev/sda),而不是形如/dev/sda1這樣的分割區。

  • 生成組態檔:

    grub-mkconfig -o /boot/grub/grub.cfg

如果你沒有看到如圖所示的提示資訊,請仔細檢查是否正確完成上面的過程。

如果報warning failed to connect to lvmetad,falling back to device scanning.錯誤。參照這篇文章,簡單的方法是編輯/etc/lvm/lvm.conf這個檔案,找到use_lvmetad = 11修改為0,儲存,重新設定grub。


如果為EFI/GPT引導方式:
  • 安裝grubefibootmgr兩個包:

    pacman -S grub efibootmgr
  • 部署grub

    grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub
  • 生成組態檔:

    grub-mkconfig -o /boot/grub/grub.cfg

提示資訊應與上面的圖類似,如果你發現錯誤,請仔細檢查是否正確完成上面的過程。

如果報warning failed to connect to lvmetad,falling back to device scanning.錯誤。參照這篇文章,簡單的方法是編輯/etc/lvm/lvm.conf這個檔案,找到use_lvmetad = 11修改為0,儲存,重新設定grub。

如果報grub-probe: error: cannot find a GRUB drive for /dev/sdb1, check your device.map類似錯誤,並且sdb1這個地方是你的u盤,這是u盤uefi分割區造成的錯誤,對我們的正常安裝沒有影響,可以不用理會這條錯誤。


安裝後檢查

如果你是多系統,請注意上面一節中對os-prober這個包的安裝。

強烈建議使用如下命令檢查是否成功生成各系統的入口,如果沒有正常生成會出現開機沒有系統入口的情況:

vim /boot/grub/grub.cfg

檢查接近末尾的menuentry部分是否有windows或其他系統名入口。下圖例子中是Arch Linux入口與檢測到的windows10入口(安裝在/dev/sda1),具體情況可能有不同:

如果你沒有看到Arch Linux系統入口或者該檔案不存在,請先檢查/boot目錄是否正確部署linux核心:

cd /boot
ls

檢視是否有initramfs-linux-fallback.img initramfs-linux.img intel-ucode.img vmlinuz-linux這幾個檔案,如果都沒有,說明linux核心沒有被正確部署,很有可能是/boot目錄沒有被正確掛載導致的,確認/boot目錄無誤後,可以重新部署linux核心:

pacman -S linux

再重新生成組態檔,就可以找到系統入口。

如果你已經安裝os-prober包並生成組態檔後還是沒有生成其他系統的入口

你目前處的U盤安裝環境下有可能無法檢測到其他系統的入口,請在下一步中重新啟動登陸之後重新執行

grub-mkconfig -o /boot/grub/grub.cfg

如果還沒有生成其他系統的入口,請參照:

https://wiki.archlinux.org/index.php/GRUB/Tips_and_tricks#Combining_the_use_of_UUIDs_and_basic_scripting

編輯組態檔手動新增引導的分割區入口。


重新啟動

接下來,你需要進行重新啟動來啟動已經安裝好的系統,執行如下命令:

exit
reboot

注意這個時候你可能會卡在有兩行提示的地方無法正常關機,長按電源鍵強制關機即可,沒有影響。

關機後拔出U盤,啟動順序會自動以硬碟啟動,如果一切順利,那麼你將會看到下面的介面:

啟動時有可能會有輸出資訊顯示在這裡,直接回車就可以了。

輸入root,再輸入之前設定的密碼,顯示出命令提示字元,恭喜你,你已經成功安裝ArchLinux

安裝後設定

雖然系統安裝好了,但是還沒有進行基本設定和安裝圖形介面,所以接下來我們要進行一些必須的設定和圖形介面的安裝。

請見下一篇文章:ArchLinux安裝後的必須設定與圖形介面安裝教學


IT145.com E-mail:sddin#qq.com