按照 Archlinux Wiki 安裝,并結(jié)合網(wǎng)上現(xiàn)有的文檔進(jìn)行了梳理。個人在進(jìn)行雙系統(tǒng)的 grub 部署時,windows系統(tǒng)啟動項一直無法生成,最后仔細(xì)查閱Wiki后解決。另外中文的Wiki有些地方翻譯不夠準(zhǔn)確,可對比英文食用。
一、安裝準(zhǔn)備
下載并引導(dǎo)安裝介質(zhì)。啟動完成后將會自動以 root 身份登錄虛擬控制臺并進(jìn)入 Zsh 命令提示符。
鍵盤布局 (使用默認(rèn)即可)
控制臺鍵盤布局默認(rèn)為 us(美式鍵盤映射)。列出所有可用的鍵盤布局,可以使用:
# ls /usr/share/kbd/keymaps/**/*.map.gz
如果您想要更改鍵盤布局,可以將一致的文件名添加進(jìn),但請省略路徑和擴(kuò)展名。比如,要添加 German鍵盤布局:
# loadkeys de-latin1
驗證啟動模式
如果以在 UEFI 主板上啟用 UEFI 模式,Archiso 將會使用 systemd-boot 來 啟動 Arch Linux。可以列出 efivars 目錄以驗證啟動模式:
# ls /sys/firmware/efi/efivars
如果目錄不存在,系統(tǒng)可能以 BIOS 或 CSM 模式啟動。如下圖

連接到因特網(wǎng)
守護(hù)進(jìn)程 dhcpcd 已被默認(rèn)啟用來探測 有線網(wǎng)絡(luò)設(shè)備,并會嘗試連接。如果未啟用,可手動啟用:
# dhcpcd
可以使用 ping 驗證連接是否正常:
# ping archlinux.org
如果沒有可用網(wǎng)絡(luò)連接,利用 systemctl stop dhcpcd@網(wǎng)絡(luò)接口,TAB 停用dhcpcd 進(jìn)程,網(wǎng)絡(luò)接口 名可以通過 Tab補(bǔ)全。要加載驅(qū)動配置網(wǎng)絡(luò)等,查看Wiki。
更新系統(tǒng)時間
可以先使用 timedatectl status 檢查服務(wù)狀態(tài),查看時間是否準(zhǔn)確。
如果時間有問題,使用 timedatectl 確保系統(tǒng)時間是準(zhǔn)確的:
# timedatectl set-ntp true
建立硬盤分區(qū)
1、查看磁盤情況
磁盤若被系統(tǒng)識別到,就會被分配為一個 塊設(shè)備,如 /dev/sda 或者 /dev/nvme0n1??梢允褂?lsblk 或者 fdisk 查看存儲設(shè)備情況:
# fdisk -l
結(jié)果中以 rom,loop 或者airoot 結(jié)束的可以忽略。
2、分區(qū)方案
對于選擇安裝系統(tǒng)的磁盤,采用如下分配方案基本滿足需求:
- 一個根分區(qū)(掛載在根目錄,必須)/;
- 一個home分區(qū) (建議進(jìn)行分區(qū));
- 交換分區(qū),
Swap可以在一個獨立的分區(qū)上設(shè)置,也可以直接建立交換文件; - 如果使用UEFI/GPT 模式引導(dǎo),必須有一個 EFI 引導(dǎo)分區(qū)(如果安裝了其他UEFI引導(dǎo)的系統(tǒng),則記下其EFI分區(qū)路徑。如果是全新的硬盤則需要新建一個EFI的引導(dǎo)分區(qū))
3、建立分區(qū)
建立分區(qū),可以使用 fdisk 或 parted。例如使用 fdisk進(jìn)入分區(qū)狀態(tài)
# fdisk /dev/sda
**注意: **如果需要需要創(chuàng)建多級存儲例如 LVM、disk encryption 或 RAID,請在此時完成。
- 建立分區(qū)表:先執(zhí)行
# fdisk /dev/sda,之后按o建立分區(qū)表 - 進(jìn)行分區(qū)(一般建立
/ , /swap , /home三個分區(qū)):執(zhí)行n,依次選擇主分區(qū)、擴(kuò)展分區(qū),第幾分區(qū),起始扇區(qū),結(jié)束扇區(qū)或者直接使用+30G設(shè)置分區(qū)為30G大小。 - 如需修改分區(qū)類型:執(zhí)行
t,將swap分區(qū)類型改為Linux Swap類型。 - 保存分區(qū)。保存之前可輸入
p查看分區(qū)結(jié)果,確認(rèn)無誤執(zhí)行w保存分區(qū)。
image.png
格式化分區(qū)
當(dāng)分區(qū)建立好了,這些分區(qū)都需要使用適當(dāng)?shù)?文件系統(tǒng) 進(jìn)行格式化。例如將 /dev/sda1 格式化成 ext4,可以運行:
# mkfs.ext4 /dev/sda1
如果您創(chuàng)建了交換分區(qū)(例如 /dev/sda3),使用 mkswap 將其初始化:
# mkswap /dev/sda3
# swapon /dev/sda3
分別根據(jù)分區(qū)類型進(jìn)行格式化。
掛載分區(qū)
首先將根分區(qū) 掛載 到 /mnt,例如:
# mount /dev/sda1 /mnt
如果使用多個分區(qū),還需要為其他分區(qū)創(chuàng)建目錄并掛載它們(/mnt/boot、/mnt/home 等,swap不需要掛載)。
# mkdir /mnt/boot
# mount /dev/sda2 /mnt/boot
接下來 genfstab 將會自動檢測掛載的文件系統(tǒng)和 swap 分區(qū)。
二、安裝
選擇鏡像
文件 /etc/pacman.d/mirrorlist 定義了軟件包會從哪個鏡像源下載。在列表中越前的鏡像在下載軟件包時有越高的優(yōu)先權(quán)。修改文件 /etc/pacman.d/mirrorlist,并將地理位置最近的鏡像源挪到文件的頭部。這個文件接下來還會被 pacstrap 拷貝到新系統(tǒng)里,所以請確保設(shè)置正確。
找到標(biāo)有China的鏡像源,normal模式下按下dd可以剪切光標(biāo)下的行,按gg回到文件首,按P(注意是大寫的)將行粘貼到文件最前面的位置(優(yōu)先級最高)。其他源:
Server = http://mirrors.163.com/archlinux/$repo/os/$arch
Server = http://mirrors.cqu.edu.cn/archlinux/$repo/os/$arch
安裝基本系統(tǒng)
使用pacstrap腳本,安裝 base ,base-devel包組:
# pacstrap /mnt base base base-devel
base-devel也可以在#Chroot之后使用pacman 手動安裝軟件包或組:
# pacstrap -i /mnt base base-devel
三、 配置系統(tǒng)
Fstab
用以下命令生成 fstab文件 (用 -U 或 -L 選項設(shè)置UUID 或卷標(biāo)):
# genfstab -U /mnt >> /mnt/etc/fstab
強(qiáng)烈建議 在執(zhí)行完以上命令后,后檢查一下生成的 /mnt/etc/fstab 文件是否正確。
# nano /mnt/etc/fstab

Chroot
Change root到新安裝的系統(tǒng):
# arch-chroot /mnt
時區(qū)
設(shè)置時區(qū)
# ln -sf /usr/share/zoneinfo/Region/City /etc/localtime
例如:
# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
運行 hwclock以生成 /etc/adjtime:
# hwclock --systohc
這個命令假定硬件時間已經(jīng)被設(shè)置為 UTC時間 。
本地化
本地化的程序與庫若要本地化文本,都依賴 Locale,后者明確規(guī)定地域、貨幣、時區(qū)日期的格式、字符排列方式和其他本地化標(biāo)準(zhǔn)等等。在下面兩個文件設(shè)置:locale.gen 與 locale.conf。
/etc/locale.gen 是一個僅包含注釋文檔的文本文件。指定您需要的本地化類型,只需移除對應(yīng)行前面的注釋符號(#)即可,建議選擇帶 UTF-8 的項:
# nano /etc/locale.gen
en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
zh_TW.UTF-8 UTF-8
接著執(zhí)行 locale-gen 以生成 locale 訊息,/etc/locale.gen 會生成指定的本地化文件。:
# locale-gen

創(chuàng)建
locale.conf 并編輯 LANG 這一 變量,比如:
# nano /etc/locale.conf
LANG=en_US.UTF-8
Tip: 將系統(tǒng) locale 設(shè)置為 en_US.UTF-8,系統(tǒng)的 Log 就會用英文顯示,這樣更容易問題的判斷和處理。不推薦在此設(shè)置任何中文 locale,會導(dǎo)致 TTY 亂碼。
另外,如果你需要修改鍵盤布局,并想讓這個設(shè)置持續(xù)生效,編輯vconsole.conf,例如:
# nano /etc/vconsole.conf
KEYMAP=de-latin1
主機(jī)名
要設(shè)置 hostname,將其 添加 到 /etc/hostname,myhostname 是需要的主機(jī)名:
# nano /etc/hostname
myhostname
并且添加 對應(yīng)的信息 到 hosts:
# nano /etc/hosts
127.0.0.1 localhost
::1 localhost
127.0.1.1 myhostname.localdomain myhostname
如果機(jī)器有一個永久的 IP 地址,請使用這個 IP 而不是 127.0.1.1。
網(wǎng)絡(luò)配置
對新安裝的系統(tǒng),需要再次設(shè)置網(wǎng)絡(luò)。具體請參考Wiki Network configuration。
對于 無線網(wǎng)絡(luò)配置,安裝 軟件包 iw、wpa_supplicant、dialog 以及需要的 固件軟件包 。
Initramfs
你通常不需要創(chuàng)建 initramfs,因為在你執(zhí)行 pacstrap 時已經(jīng)安裝 linux,這時 mkinitcpio會被自動運行。
如果修改了 mkinitcpio.conf ,用以下命令創(chuàng)建一個 Initramfs:
# mkinitcpio -p linux
Root 密碼
設(shè)置 Root 密碼 :
# passwd
安裝引導(dǎo)程序
你需要安裝 Linux 引導(dǎo)程序以在安裝后啟動系統(tǒng),你可以使用的的引導(dǎo)程序在 啟動加載器 中,請選擇一個并且安裝并配置它,比如 GRUB 。
如果你使用 Intel 或者 AMD 的 CPU,那么需要 啟用微碼更新 。
- 安裝
os-prober包 (多系統(tǒng)引導(dǎo)需要安裝)
# pacman -S os-prober
- 安裝 grub 包:
# pacman -S grub
- 部署 grub (下面僅為BIOS方式):
# grub-install --target=i386-pc /dev/sdx
Note:
-
--target=i386-pc指示grub-install是為使用BIOS的系統(tǒng)安裝. -
/dev/sdx是已經(jīng)完成 分區(qū) 的磁盤,grub 將安裝到它上面。
- 生成配置文件:
# grub-mkconfig -o /boot/grub/grub.cfg
Note: 如果是安裝多系統(tǒng)引導(dǎo):
- 必須安裝第1步
os-prober包 -
并且
mount其他系統(tǒng)所在的磁盤的引導(dǎo)分區(qū)(例如:/dev/sda1)
之后grub-mkconfig 才可以自動搜索已經(jīng)安裝的其它系統(tǒng)并添加到啟動菜單。一般出現(xiàn)在其他已安裝系統(tǒng)在別的磁盤的情況。個人卡在這一步,并且找了好多文檔,都沒有提到提到這一步。 -
如果還是沒有生成其他系統(tǒng)的入口,可能是處于U盤安裝環(huán)境下無法檢測到其他系統(tǒng)的入口,請重啟登陸之后重新運行第4步命令。如下圖,請核對是否搜索到所有系統(tǒng):
生成配置文件
四、重啟
輸入 exit 或按 Ctrl+D 退出 chroot 環(huán)境。
可選用 umount -R /mnt 手動卸載被掛載的分區(qū):這有助于發(fā)現(xiàn)任何「繁忙」的分區(qū),并通過 fuser 查找原因。
最后,通過執(zhí)行 reboot 重啟系統(tǒng),systemd 將自動卸載仍然掛載的任何分區(qū)。不要忘記移除安裝介質(zhì),然后使用 root 帳戶登錄到新系統(tǒng)。

