Arch Linux——小白安裝教程
寫在前面
這可能是你能找到的最適合你的中文
ArchLinux
安裝教程。
前幾天硬碟掛了,萬幸的是家目錄放在了另一塊硬碟上所以存活了下來。不得不再重灌一遍Arch
,算上幫朋友裝的,這已經是我第四次安裝Arch
了。也想借此機會記錄這個過程寫一篇完全按照官方Wiki指導再加上Wiki上沒有重點寫出來但是安裝過程中會遇到的一些問題的一篇不太一樣的安裝教程。
很多人提起起Arch
的第一反應就是安裝困難,這種困難有很多原因,也就是接下來我們將會面對的問題。
- 沒有圖形介面的引導:
Arch
只給我們提供了一個最小的環境,所有的安裝操作都需要在命令列中完成,這對於不習慣命令列操作的人來說是最難以跨越的一個坎。許多發行版之所以可以流行開來就是因為他們提供了友好的、流程化的安裝過程,這幫很多人解決了學習Linux
Linux
。 - 預備知識的不足與缺乏查詢並解決問題的能力:一些對於安裝系統比較重要的知識例如系統引導、配置檔案的編輯、簡單的命令列操作等沒有接觸過,所以操作時往往摸不著頭腦,一旦自己的操作結果與教程不符便不知道如何去解決遇到的問題。
- 缺乏合適的教程:安裝Arch最好的也是最完備的教程就是官方的Installation guide與Wiki,雖然部分內容有中文版,但是中文的翻譯有些時候會落後於英文版,不推薦完全依賴於中文Wiki。並且官方Wiki的寫作方式更偏向於文件,沒有我們所習慣的按步驟編排的安裝過程,給不熟悉這種寫作方式的同學造成了閱讀與使用上的困難。國內的可以找到的教程往往都是時間比較久遠,或是沒有提及或是忽略了一些新手容易犯錯誤的地方。
本篇教程致力於與現有的Wiki保持一致,並且適當地加入一些適合初學者學習的連結,希望可以讓閱讀了這篇教程的同學可以提高自己利用現有及以後可能出現的新的Wiki內容的能力。
ArchLinux
或者是Linux
的優點就不在這裡多說了,我相信開啟這篇教程的同學一定可以從這樣的過程中得到很多。
下面就正式開始我們的教程。
安裝教程
前期準備
安裝介質
在安裝之前我們先要準備一個安裝介質,在這裡只推薦U盤作為安裝介質。
磁碟準備
我們需要有一塊空閒的磁碟區域來進行安裝,這裡的空閒指的是沒有被分割槽的空間。下面來介紹如何準備這塊空間。
在
windows
下空出一塊分割槽來安裝:利用windows
空閒的磁碟(新磁碟):不需要進行任何操作。
U盤安裝
下面的過程實際上都在剛剛準備好的U盤啟動介質上的Linux
系統下進行,所以啟動時都應該選擇U盤。
設定啟動順序
這一步在不同品牌的電腦上都不一樣,所以需要大家自行搜尋自己電腦品牌+啟動順序這個關鍵詞來進行設定。
例如我的電腦搜尋神舟 啟動順序可以得到如下的結果:
一般來說現在的主機板都可以不用進入BIOS而快速地切換啟動順序,只要找到相應的快捷鍵就可以了。
進入U盤下的Linux系統
按上一步設定好啟動順序,啟動之後會看到如下介面(UEFI啟動方式的介面可能不同):
如果直接進入
windows
,請檢查啟動順序是否設定成功,U盤是否在製作啟動介質時成功寫入。如果沒有看到這個介面,請檢查U盤是否製作成功,如果多次遇到問題可以考慮換一個U盤。
選擇第一個選項。
這時
Arch
開始載入,你將會看到螢幕顯示如下內容:載入完成後你將會進入一個有命令提示符的介面:
如果出現
FAIL
或是其他錯誤資訊導致無法啟動請自行搜尋錯誤資訊來獲得解決方法。這就是
Linux
的終端介面了,接下來我們將通過在這個介面執行一系列命令來將Arch
安裝到我們的磁碟上。
下面進行的過程是按照官方Installation guide為依據進行的,出現的任何問題都可以到連結中的相應部分查詢原文找到解決方式。
檢查引導方式
目前的引導方式主要分為EFI引導+GPT分割槽表與BIOS(LEGACY)引導+MBR分割槽表兩種,幾乎比較新的機器都採用了EFI/GPT引導的方式。關於這部分的內容如果有興趣可以通過這個連結進行了解:
如果你不知道自己的引導方式,請在命令提示符下執行以下命令:
1 | ls /sys/firmware/efi/efivars |
這裡的ls
是命令,空格後面的一串為路徑,作為ls
命令的引數。ls
命令的作用是顯示路徑目錄下的所有的檔案(夾)。
如果你對命令列下的常用操作(TAB補全、取消命令等)不熟悉,請先學習瞭解下面部分實用的快捷鍵或命令:
Tab鍵 命令列自動補全。鍵入命令或檔名的前幾個字元,然後按 [Tab] 鍵,它會自動補全命令或顯示匹配你鍵入字元的所有命令
↑(Ctrl+p) 顯示上一條命令
↓(Ctrl+n) 顯示下一條命令
Ctrl-C: 終止當前正在執行的命令
輸入命令並回車執行後,如果提示
1 | ls: cannot access '/sys/firmware/efi/efivars': No such file or directory |
表明你是以BIOS方式引導,否則為以EFI方式引導。現在只需要記住這個資訊,之後會用到。
聯網
arch
並不能離線安裝,因為我們需要聯網來下載需要的元件,所以我們首先要連線網路。
如果你是有線網並且路由器支援DHCP的話插上網線後先執行以下命令獲取IP地址:
1
dhcpcd
然後執行以下命令來判斷網路連線是否正常:
1
ping www.baidu.com
如果可以看到類似下面的內容就說明連上了網路:
再次提示用快捷鍵Ctrl-C可以終止當前正在執行的命令
如果你是無線網,請執行以下命令:
1
wifi-menu
這是一個實用的命令列下聯網工具,有字元形式的圖形化介面,利用它可以方便地聯網,如果它沒能起作用,需要進入以下頁面查詢解決方式:
連線以後同樣可以通過上面的
ping
命令來進行測試。
更新系統時間
執行如下命令:
1 | timedatectl set-ntp true |
正常情況下這樣的命令並沒有輸出,所謂沒有訊息就是最好的訊息
分割槽與格式化
特別注意:涉及到分割槽與格式化的操作要格外注意,命令在回車之前請再三確認知道自己在做什麼,並且沒有輸錯命令,否則將會來帶來資料的丟失!如果有需要在操作之前請備份重要的資料。
但是我們也並不要過於懼怕分割槽與格式化過程,正確操作的情況下不會對你其他資料產生任何影響。
檢視目前的分割槽情況
執行命令:
1 | fdisk -l |
以我的電腦為例:
可以看到我的一塊238.5g的硬碟(/dev/sda
就代表這塊硬碟),下面列出了/dev/sda*
這三個分割槽,/dev/sda3
是我存活下來的家目錄,可以看到它的型別為Linux
分割槽。注意看Start
與End
的數值,這個數值代表扇區號,可以理解成硬碟被劃分成了一個個小單元,可以直觀地看出來在/dev/sda2
的End
與/dev/sda3
的Start
之間空出了一大塊未分配的空間,接下來我們將分配這塊區域。
- 如果你是BIOS/MBR方式引導,跳過下面建立一個引導分割槽的步驟。
- 如果你是EFI/GPT方式引導,並且同時安裝了其他系統,那麼你應該可以在分割槽列表中發現一個較小的並且型別為EFI的分割槽(注意檢視硬碟的大小,這個
EFI
分割槽有可能是你U盤中的,需要排除),這是你的引導分割槽,請記下它的路徑(/dev/sdxY)備用,跳過下面建立一個引導分割槽的步驟。 - 如果你是EFI/GPT方式引導,但是沒有這個較小的並且型別為EFI的引導分割槽(這種情況一般只會出現在新的硬碟),那麼你需要先建立一個引導分割槽。
建立一個引導分割槽(僅上面所列的第三種情況需要進行這步)
執行命令:
1 | fdisk /dev/sdx (請將sdx替換成你要操作的磁碟如sdb sdc等) |
下面你就進入了fdisk
的操作環境, 輸入m
並回車可以檢視各命令的作用。
如果你是一塊全新的硬碟,輸入
g
來建立一個全新的gpt分割槽表。輸入
n
建立一個新的分割槽,首先會讓你選擇起始扇區,一般直接回車使用預設數值即可,然後可以輸入結束扇區或是分割槽大小,這裡我們輸入+512M
來建立一個512M的引導分割槽。這時我們可以輸入
p
來檢視新建立的分割槽。輸入
t
並選擇新建立的分割槽序號來更改分割槽的型別,輸入l
可以檢視所有支援的型別,輸入ef
更改分割槽的型別為EFI
。輸入
w
來將之前所有的操作寫入磁碟生效,在這之前可以輸入p
來確認自己的分割槽表沒有錯誤。輸入以下命令來格式化剛剛建立的引導分割槽:
1
mkfs.fat -F32 /dev/sdxY (請將的sdxY替換為剛建立的分割槽)
現在引導分割槽就建立好了。
建立根分割槽
輸入命令:
1 | fdisk /dev/sdx (請將sdx替換成你要操作的磁碟如sdb sdc等) |
如果你是一塊全新的硬碟,輸入
o
來建立一個新的MBR分割槽表。輸入
n
建立一個新的分割槽,首先會讓你選擇起始扇區,一般直接回車使用預設數值即可,然後可以輸入結束扇區或是分割槽大小,如果我們想要使建立的分割槽完全佔滿空閒的空間,可以直接回車使用預設結束扇區。這時我們可以輸入
p
來檢視新建立的分割槽。輸入
w
來將之前所有的操作寫入磁碟生效,在這之前可以輸入p
來確認自己的分割槽表沒有錯誤。輸入以下命令來格式化剛剛建立的根分割槽:
1
mkfs.ext4 /dev/sdxY (請將的sdxY替換為剛建立的分割槽)
這是我的分割槽過程供參考:
掛載分割槽
執行以下命令將根分割槽掛載到/mnt
:
1 | mount /dev/sdxY /mnt (請將sdxY替換為之前建立的根分割槽) |
如果你是EFI/GPT引導方式,執行以下命令建立/boot資料夾並將引導分割槽掛載到上面。BIOS/MBR引導方式無需進行這步。
12 | mkdir /mnt/bootmount /dev/sdxY /mnt/boot (請將sdxY替換為之前建立或是已經存在的引導分割槽) |
選擇映象源
因為從這步開始,需要進行一些編輯配置檔案的操作,所以需要掌握一些命令列下非常著名的一款編輯器Vim
的基本操作,在這裡推薦學習下面這個連結中的存活部分,可以完成編輯、複製貼上與儲存工作即可。
映象源是我們下載的軟體包的來源,我們需要根據自己的地區選擇不同的源來加快下載的速度。
執行以下命令,用Vim
來編輯/etc/pacman.d/mirrorlist
這個檔案
1 | vim /etc/pacman.d/mirrorlist |
提示:輸入路徑時可以用
Tab
鍵補全
找到標有China
的映象源,normal
模式下按下dd
可以剪下游標下的行,按gg
回到檔案首,按p
將行貼上到檔案最前面的位置(優先順序最高)。
當然也可以直接手工輸入。
這裡推薦使用清華、浙大源:
12 | Server = http://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo</span><span class="regexp">/os/</span><span class="variable">$archServer = http://mirrors.zju.edu.cn/archlinux/$repo</span><span class="regexp">/os/</span><span class="variable">$arch |
最後記得用:wq
命令儲存檔案並退出。
安裝基本包
下面就要安裝最基本的ArchLinux
包到磁碟上了。這是一個聯網下載並安裝的過程。
執行以下命令:
1 | pacstrap /mnt base base-devel |
根據下載速度的不同在這裡需要等待一段時間,當命令提示符重新出現的時候就可以進行下一步操作了。
配置Fstab
生成自動掛載分割槽的fstab
檔案,執行以下命令:
1 | genfstab -L /mnt >> /mnt/etc/fstab |
由於這步比較重要,所以我們需要輸出生成的檔案來檢查是否正確,執行以下命令:
1 | cat /mnt/etc/fstab |
如圖,可以看到/dev/sda4
被掛載到了根分割槽。
/dev/sda3
是我之前存活下來的家目錄被掛載到了/home
目錄(你們沒有這條)。
如果是EFI/GPT
引導的還應該有引導分割槽被掛載到/boot
目錄。
Chroot
Chroot
意為Change root
,相當於把操縱權交給我們新安裝(或已經存在)的Linux
系統,執行了這步以後,我們的操作都相當於在磁碟上新裝的系統中進行。
執行如下命令:
1 | arch-chroot /mnt |
這裡順便說一下,如果以後我們的系統出現了問題,只要插入U盤並啟動, 將我們的系統根分割槽掛載到了/mnt
下,再通過這條命令就可以進入我們的系統進行修復操作。
設定時區
依次執行如下命令設定我們的時區為上海並生成相關檔案:
12 | ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtimehwclock --systohc |
提前安裝必須軟體包
因為我們現在已經Chroot
到了新的系統中,只有一些最基本的包(元件),這時候我們就需要自己安裝新的包了,下面就要介紹一下ArchLinux
下非常強大的包管理工具pacman
,大部分情況下,一行命令就可以搞定包與依賴的問題。
安裝包的命令格式為pacman -S 包名
,pacman
會自動檢查這個包所需要的其他包(即為依賴)並一起裝上。下面我們就通過pacman
來安裝一些包,這些包在之後會用上,在這裡先提前裝好。
執行如下命令:
1 | pacman -S vim dialog wpa_supplicant ntfs-3g |
一路確認之後包就被成功裝上了。
圖中只安裝了Vim
和它的依賴。
設定Locale
設定我們使用的語言選項,執行如下命令來編輯/etc/locale.gen
檔案:
1 | 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
這四行,去掉行首的#號,儲存並退出。如圖:
然後執行:
1 | locale-gen |
開啟(不存在時會建立)/etc/locale.conf
檔案:
1 | vim /etc/locale.conf |
在檔案的第一行加入以下內容:
1 | LANG=en_US.UTF-8 |
儲存並退出。
設定主機名
開啟(不存在時會建立)/etc/hostname
檔案:
1 | vim /etc/hostname |
在檔案的第一行輸入你自己設定的一個myhostname
儲存並退出。
編輯/etc/hosts
檔案:
1 | vim /etc/hosts |
作如下修改(將myhostname
替換成你自己設定的主機名)
123 | 127.0.0.1 localhost.localdomain localhost::1 localhost.localdomain localhost127.0.1.1 myhostname.localdomain myhostname |
這裡我設定的是viseator
。
儲存並退出。
設定Root密碼
Root
是Linux
中具有最高許可權帳戶,有些敏感的操作必須通過Root
使用者進行,比如使用pacman
,我們之前進行所有的操作也都是以Root
使用者進行的,也正是因為Root
的許可權過高,如果使用不當會造成安全問題,所以我們之後會新建一個普通使用者來進行日常的操作。在這裡我們需要為Root
帳戶設定一個密碼:
執行如下命令:
1 | passwd |
按提示設定並確認就可以了。
或許有的人已經發現官方Wiki和一些其他教程資料中的命令是以#
或$</code>開頭的,這兩個符號就對應著命令列中的命令提示符,<code>#</code>代表以<code>Root</code>使用者執行命令,<code>$
代表以普通使用者執行命令,平時使用教程中的命令時應該注意這一點。
安裝Intel-ucode
(非Intel
CPU可以跳過此步驟)
直接pacman
安裝:
1 | pacman -S intel-ucode |
安裝Bootloader
經常聽說很多人因為引導問題導致系統安裝失敗,多數是因為教程沒有統一或是過時的教程引起的,這裡只要按照步驟來其實是不難的。
這裡我們安裝最流行的Grub2
。
首先安裝
os-prober
這個包,它可以配合Grub
檢測已經存在的系統,自動設定啟動選項。1
pacman -S os-prober
如果為BIOS/MBR引導方式:
安裝
grub
包:1
pacman -S grub
部署
grub
:1
grub-install --target=i386-pc /dev/sdx (將sdx換成你安裝的硬碟)
注意這裡的
sdx
應該為硬碟(例如/dev/sda
),而不是形如/dev/sda1
這樣的分割槽。生成配置檔案:
1
grub-mkconfig -o /boot/grub/grub.cfg
如果你沒有看到如圖所示的提示資訊,請仔細檢查是否正確完成上面的過程。
如果報warning failed to connect to lvmetad,falling back to device scanning.
錯誤。參照這篇文章,簡單的方法是編輯/etc/lvm/lvm.conf
這個檔案,找到use_lvmetad = 1
將1
修改為0
,儲存,重新配置grub。
如果為EFI/GPT引導方式:
安裝
grub
與efibootmgr
兩個包:1
pacman -S grub efibootmgr
部署
grub
:1
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub
生成配置檔案:
1
grub-mkconfig -o /boot/grub/grub.cfg
提示資訊應與上面的圖類似,如果你發現錯誤,請仔細檢查是否正確完成上面的過程。
如果報warning failed to connect to lvmetad,falling back to device scanning.
錯誤。參照這篇文章,簡單的方法是編輯/etc/lvm/lvm.conf
這個檔案,找到use_lvmetad = 1
將1
修改為0
,儲存,重新配置grub。
安裝後檢查
如果你是多系統,請注意上面一節中對os-prober
這個包的安裝。
強烈建議使用如下命令檢查是否成功生成各系統的入口,如果沒有正常生成會出現開機沒有系統入口的情況:
1 | vim /boot/grub/grub.cfg |
檢查接近末尾的menuentry
部分是否有windows
或其他系統名入口。下圖例子中是Arch Linux
入口與檢測到的windows10
入口(安裝在/dev/sda1
),具體情況可能有不同:
如果你沒有看到Arch Linux
系統入口或者該檔案不存在,請先檢查/boot
目錄是否正確部署linux
核心:
12 | cd /bootls |
檢視是否有initramfs-linux-fallback.img initramfs-linux.img intel-ucode.img vmlinuz-linux
這幾個檔案,如果都沒有,說明linux
核心沒有被正確部署,很有可能是/boot
目錄沒有被正確掛載導致的,確認/boot
目錄無誤後,可以重新部署linux
核心:
1 | pacman -S linux |
再重新生成配置檔案,就可以找到系統入口。
如果你已經安裝os-prober
包並生成配置檔案後還是沒有生成其他系統的入口:
你目前處的U盤安裝環境下有可能無法檢測到其他系統的入口,請在下一步中重啟登陸之後重新執行:
1 | grub-mkconfig -o /boot/grub/grub.cfg |
如果還沒有生成其他系統的入口,請參照:
編輯配置檔案手動新增引導的分割槽入口。
重啟
接下來,你需要進行重啟來啟動已經安裝好的系統,執行如下命令:
12 | exitreboot |
注意這個時候你可能會卡在有兩行提示的地方無法正常關機,長按電源鍵強制關機即可,沒有影響。
關機後拔出U盤,啟動順序會自動以硬碟啟動,如果一切順利,那麼你將會看到下面的介面:
啟動時有可能會有輸出資訊顯示在這裡,直接回車就可以了。
輸入root
,再輸入之前設定的密碼,顯示出命令提示符,恭喜你,你已經成功安裝ArchLinux
!
安裝後配置
雖然系統安裝好了,但是還沒有進行基本配置和安裝圖形介面,所以接下來我們要進行一些必須的配置和圖形介面的安裝。
特別感謝
評論區中Senrey_Song
、YKun
、imzhwk
、haonan mao
、Lichen Zhang
對於本教程內容的指正。