玩轉Arch Linux是一件非常有成就感的事情,尤其是自己動手一步步安裝它、配置它、折騰它,把它打造成自己理想的操作系統。剛開始看似很難,官方提供的鏡像就是一個沒有任何桌面環境的bare system。但這正是Arch Linux的閃光點——高定製性,所有的組件均可以通過官方鏡像,來給目標系統安裝上,想要什麼組件就裝什麼組件,系統歸你掌握。
近日,我成功給我的上古ThinkPad X200裝上了Arch Linux,並配置好了KDE,把經驗總結如下。
下載Arch Linux鏡像
Arch Linux的鏡像可從官方網站下載:https://www.archlinux.org/download/
頁面中提供了磁力鏈接、BT種子,而往下拉可以找到HTTP直鏈下載,其中包括中國大陸鏡像源,如163、中科大、清華TUNA。推薦寬帶用戶選擇163的源,教育網用戶選擇中科大的源。
下載完成後,用Rufus把鏡像刷寫到U盤中,然後用它啓動電腦,進入安裝環境。
連網
Arch Linux的安裝需要全程聯網,建議使用啓用了DHCP的有線網,插上網線就可用,無需額外配置,且相對穩定。當然也可採用WLAN,但配置會複雜一些,可以參考一下這個。
插上網線後,如果無法聯網,則可重啓一下DHCP客戶端dhcpcd:
systemctl restart dhcpcd
如果還不行,則重新啓用一下以太網接口:
# 查看網絡接口狀態,列表中以太網接口前綴是enp,如enp0s25
ip link
# 重新打開網絡接口
ip link set enp0s25 up
準備安裝分區
Arch Linux搭配KDE,建議至少20GB的磁盤空間(如果要安裝KDE全家桶)。
如果要與現在的系統共存,可在Windows的“磁盤管理”中,壓縮出一個分區。新硬盤建議用圖形化的cfdisk分區,同時支持GPT與MBR。老鳥可用命令行的fdisk與parted。我的老筆記本是給整個硬盤都裝上,所以直接給它重新分區。
筆者的分區方案
由於ThinkPad X200年代久遠,不支持UEFI,所以只能選擇MBR分區。110GB的固態硬盤,分區方案如下表。其中,系統、引導和用戶文件放在同一個分區中。
分區用途 | 大小 | 設備路徑 | 備註 |
---|---|---|---|
目標分區 | 104GB | /dev/sda1 |
主分區,活動分區 |
交換分區 | ≈6GB | /dev/sda5 |
邏輯分區 |
格式化並掛載
分區的文件系統選擇上,通常用EXT4和BtrFS較多,老電腦+SSD建議選擇BtrFS,BtrFS有專門的SSD優化選項,可在掛載時打開;而EXT4會因不明原因,時常導致筆記本死機。
格式化目標分區,然後掛載到/mnt
。/mnt
就是我們系統安裝的目標目錄:
# 格式化目標分區爲BtrFS
mkfs.btrfs /dev/sda1
# 掛載目標分區,並打開SSD優化
mount -t btrfs -o ssd /dev/sda1 /mnt
啓用Swap
# 初始化交換分區
mkswap /dev/sda5
# 啓用交換分區
swapon /dev/sda5
# 檢查交換分區使用情況
free
預安裝過程
分區準備並掛載完成後,就可以開始安裝了。安裝過程用到的核心工具有pacstrap
和arch-chroot
。
pacstrap
用於把指定的包安裝在指定目錄,是pacman
的離線版;而arch-chroot
則用於把當前系統環境切換到指定的目錄,通常是我們掛載目標分區的/mnt
,由此可允許我們以新裝系統的名義進行操作。
arch-chroot
後,我們就可以向管理真實系統一樣管理目標分區中的系統(目標系統),例如直接使用pacman
等常用工具。運行exit
可退回安裝環境。
注意:
- 安裝基礎組件後,
pacstrap
可在arch-chroot
切換後,被pacman
取代。其他一些操作也可以在目標系統中完成,只是要注意命令參數的變化。
提示:配置文件默認用vim打開。vim的基本操作方法:
- 方向鍵移動光標;
- 按<kbd>i</kbd>鍵進入編輯模式;
- 按<kbd>v</kbd>鍵進入可視模式。此模式下按方向鍵可控制選區,<kbd>y</kbd>鍵複製。
- 按<kbd>ESC</kbd>退出以上模式,返回一般模式;
- 一般模式下,按<kbd>p</kbd>鍵粘貼,<kbd>x</kbd>鍵退格,按兩下<kbd>d</kbd>鍵刪除整行;
- 一般模式下,輸入
:<命令>
後回車,可執行內部命令。常用命令有:w
(保存)、:x
(保存並退出)、:q
(直接退出)、:q!
(不保存文件退出)。- 一般模式下,鍵入
/
,後跟關鍵字,可快速定位。
使用中國大陸鏡像源
Arch Linux的默認服務器在國外,因此需要切換到中國大陸的服務器,以實現滿速下載,提高效率。
使用Vim打開鏡像源配置文件:
vim /etc/pacman.d/mirrorlist
然後在文件中定位到# China
開頭的項目(可輸入),例如163(推薦,可滿速)。可視模式下把它們所在的行復制,再粘貼到文件開頭。下次就可以使用該鏡像源進行下載。
安裝基礎組件
系統基礎組件由三個包組成:核心包(base)、Linux內核(linux)與固件(linux-firmware)。安裝後即可構成一個最基本的Arch Linux:
pacstrap /mnt base linux linux-firmware
添加用戶
包括Arch Linux在內,裸安裝的Linux發行版默認使用Root用戶,顯然不安全,因此要添加用戶。(這與VPS中安裝的Linux差不多。)
第一,安裝sudo。沒錯,sudo並不是系統預裝的組件,還是要用戶手動安裝的。順便把vi和vim裝上,用於編輯配置文件:
pacstrap /mnt sudo vim vi
第二,授予普通用戶sudo權限。先打開sudo配置文件:
# 切換到目標系統中才能進行操作
arch-chroot /mnt
# 打開配置文件。默認用vi打開
visudo
然後取消下面這行的註釋,即刪掉前面的#
符號。這行語句允許wheel組的用戶獲取root權限。
取消註釋以下指定行,並保存。
## Uncomment to allow members of group wheel to execute any command
# ↓ 就是下面這行 ↓
%wheel ALL=(ALL) ALL
第三,再新建一個新用戶:
# -G參數設置用戶組,-m開關建立用戶目錄,username爲你的用戶名
useradd -G wheel -m username
給新用戶設置密碼。密碼要輸入兩次,沒有回顯:
passwd anclark
然後檢查一下/home
目錄下有沒有自動新建的用戶主目錄,如果沒有,則手工創建。需要注意的是,主目錄權限不當會導致很多組件運行異常,因爲它們要讀寫主目錄中的配置文件。
# 創建用戶目錄,並設定權限
mkdir /home/username
chown -R username /home/username
# 設置用戶主目錄
usermod -d /home/username username
# 退回安裝環境
exit
OK,下次即可用我們的新用戶來登錄。
安裝啓動器
Arch Linux可選的啓動器有若干種,首選Grub。由於筆者的X200不支持UEFI,因此只能以MBR的形式安裝。首先安裝Grub軟件包:
# 安裝Grub
pacstrap /mnt grub
然後把Grub啓動器安裝到硬盤中。注意最後一個參數爲目標的磁盤設備,而不是分區。
# 配置Grub以實現硬盤啓動(MBR)
# 參數--target設置安裝模式,值i386-pc爲默認值,表示MBR安裝
# 參數--root-directory設置安裝目標磁盤的根目錄。省略則表示當前根目錄
grub-install --target=i386-pc --root-directory=/mnt /dev/sda
最後切換到目標系統,生成配置文件。實際上,前一步也可以在目標系統中進行,只需去掉--root-directory
參數即可。
# 生成配置文件
arch-chroot /mnt
grub-mkconfig -o /boot/grub/grub.cfg
exit
EFI用戶參照ArchWiki。
生成fstab
genfstab工具可把當前掛載磁盤的狀態保存到fstab中,方便系統自動掛載。磁盤的參數也會保存於其中。
genfstab /mnt > /mnt/etc/fstab
安裝圖形環境
接下來就是安裝Xorg圖形環境。xorg
包包含了所有可能用到的組件,在此基礎上再安裝顯卡驅動組件。
# 安裝Xorg
pacstrap /mnt xorg
# 安裝顯卡組件
pacstrap /mnt xf86-video
xf86-video
貌似已經失效,可參考Arch Linux安裝文檔來決定安裝哪個驅動。常見的選項如下:
# 英特爾
pacstrap /mnt xf86-video-intel
# AMD/ATI
pacstrap /mnt xf86-video-amdgpu
pacstrap /mnt xf86-video-ati
# NVIDIA開源驅動
pacstrap /mnt xf86-video-nouveau
# NVIDIA閉源驅動
pacstrap /mnt nvidia
pacstrap /mnt nvidia-390xx
安裝網絡組件
Arch Linux默認沒有預裝網絡組件,因此也需要手動安裝。一般安裝三個組件即可:
- dhcpcd:DHCP客戶端。
- wpa_supplicant:無線網服務端。
- networkmanager:網絡管理器前端,KDE等桌面環境依賴它來管理網絡,若不啓用則會使KDE的網絡管理器無法運作。
# 這三個包是網絡的核心組件
pacstrap /mnt dhcpcd wpa_supplicant networkmanager
# 啓用上述組件。重啓後一般可直接生效
arch-chroot /mnt
systemctl enable dhcpcd
systemctl enable wpa_supplicant
systemctl enable NetworkManager
exit
安裝聲音支持
KDE等桌面環境使用PulseAudio作爲音頻後端,配合ALSA模塊即可解決聲音問題。
pacstrap /mnt alsa-utils pulseaudio pulseaudio-alsa
安裝KDE Plasma
接下來就是安裝KDE Plasma桌面環境,Plasma本身就是一個軟件包。
首先安裝桌面環境本體,以及桌面管理器SDDM:
# Plasma桌面環境
pacstrap /mnt plasma-meta sddm
然後,啓用SDDM窗口管理器,以實現開機自動進入登錄界面。
# 切換到已安裝好的系統裏
arch-chroot /mnt
# 開啓SDDM的服務
systemctl enable sddm
進入系統後顯示的所謂登錄界面,實際上就是SDDM本身,通過登錄驗證後就由它來啓動Plasma桌面環境。相應地,退出登錄後就終止了Plasma,重新打開SDDM,以顯示登錄界面。在Linux發行版中切換用戶時,會退回字符界面,屏幕上會顯示一堆日誌,就是因爲這個過程。基於這個特性,SDDM還可以啓動其他的桌面環境,例如OpenSUSE預裝的OpenBox。
安裝Konsole
值得一提的是,Plasma只是一個桌面環境,沒有包含任何其他的KDE應用(如文件管理器等),這些應用獨立於Plasma,需要用戶手動安裝。我們見到的Kubuntu、Manjaro等包含的應用實際上是開發團隊爲我們事先裝好的。
也正因如此,一些常用的應用需要我們手動安裝,比如重啓系統後要經常用到的Konsole終端。
pacman -S konsole
如果不安裝終端,就只能在進入Plasma後,按<kbd>Ctrl+Alt+F2/F3/F4</kbd>切換到TTY中操作。
重啓後安裝其他組件
經過以上的設置,重啓電腦並由硬盤啓動後(建議拔掉啓動盤),就能看到登錄界面了,用我們新建的用戶即可直接登入系統。之後我們就可以在安裝好的系統中,進行後續的操作。
安裝KDE全家桶
KDE組織旗下開發了大量的軟件,涵蓋系統應用的方方面面。用戶可按自己的實際需要安裝,或者安裝下面這個包,迎來KDE全家桶:
sudo pacman -S kde-applications-meta
全家桶的體積非常大,包含各類應用,甚至涵蓋了不少遊戲和教育軟件。大部分軟件難以用上,因此虛擬機用戶不建議安裝,而以按需取用其中一個組件來代替。
虛擬機用戶應至少安裝一個終端、一個文件管理器和文本編輯器:
sudo pacman -S konsole dolphin kate
安裝中文字體
中文字體默認沒有安裝。若不安裝,會在中文顯示的地方顯示Unicode佔位符。
# 安裝思源黑體
sudo pacman -S noto-fonts-cjk
安裝Fcitx
Fcitx是最常用的輸入法框架之一。
第一,先安裝Fcitx所需的包。注意安裝過程可能會提示選擇安裝哪個fcitx核心組件,建議先選fcitx-qt5。fcitx-qt5、fcitx-gtk2、fcitx-gtk3這三個包是爲了能在對應環境開發的APP中正常使用輸入法。
sudo pacman -S fcitx fcitx-im kcm-fxitx fcitx-qt5 fcitx-gtk2 fcitx-gtk3 fcitx-configtool
第二,設置fcitx作爲我們默認的輸入法框架。創建並編輯/home/用戶名/.xprofile
,然後在裏面添加以下內容:
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
重新登錄生效。
啓用網絡支持
若網絡管理不起作用,KDE設置裏網絡管理部分顯示爲空白,且任務欄上沒有網絡圖標,則手工啓用網絡管理器。立即生效。
sudo systemctl start NetworkManager
sudo systemctl start wpa_supplicant
啓用藍牙組件
Plasma會裝上藍牙服務程序Bluez,但默認不會啓用,導致系統提示“找不到藍牙適配器”。
先啓用Bluez Daemon:
sudo systemctl enable bluetooth
sudo systemctl start bluetooth
安裝藍牙音頻支持:
sudo pacman -S pulseaudio-bluetooth
高級玩家還可以安裝高級藍牙管理器:
sudo pacman -S blueman
Blueman可激活電腦藍牙的隱藏功能,如把電腦當手機的藍牙音箱、串口通信。需內核支持。
安裝媒體組件
基本的媒體組件包括硬件加速庫libva,以及媒體播放器。libva同時支持英特爾和NVIDIA的顯卡(後者使用NVIDIA專有的VDPAU技術)。而在媒體播放上,Arch Linux首推VLC。
# 安裝硬件加速庫libva
sudo pacman -S libva libva-intel-driver libva-vdpau-driver libva-utils
# 檢查硬件加速庫狀態,會顯示libva庫的版本與顯卡信息
vainfo
# VLC和SMPlayer,按需取用。VLC已包含在KDE全家桶中
sudo pacman -S vlc smplayer
配置好休眠文件(可解決自動休眠時的卡死問題)
X200有一定機率會在關機時長時間掛起,在文字界面下可見,關機過程卡在以下地方:
[*** ]A stop job is running for device dev-disk-by/uuid-b072209d-279a-41cd-b4b3-16eab1a84d60.device. (1min 30s)
檢查了一下fstab,發現日誌中的UUID正是Swap分區的UUID,檢索資料後查明是與休眠相關的參數沒配置好。而此前偶有出現系統閒置時會莫名其妙卡死,疑爲與自動休眠相關,自動休眠可能正觸發了這個問題。
解決方法就是修改Grub默認配置文件。用Vim打開/etc/default/grub
:
sudo vim /etc/default/grub
把以下參數加進GRUB_CMDLINE_LINUX_DEFAULT
字段裏,注意包裹在原有的引號中:
resume=UUID=<Swap分區的UUID>
其中,要獲取Swap分區的UUID,可打開/etc/fstab。
最後重新生成配置文件,重啓後生效:
sudo grub-mkconfig -o /boot/grub/grub.cfg
禁用蜂鳴器
默認情況下,進行一些操作時,電腦的蜂鳴器會響起,發出很刺耳的嘟嘟聲,例如在TTY中光標的始末處按方向鍵或退格鍵。這時可以考慮禁用蜂鳴器。
蜂鳴器默認作爲內核模塊加載,因此只需把相應的模塊加入黑名單中禁用即可。
# 切換到Root用戶下
sudo -i
# 卸載蜂鳴器模塊
rmmod pcspkr
# 把蜂鳴器模塊添加到黑名單中,重啓即可徹底禁用之
echo "blacklist pcspkr" > /etc/modprobe.d/nobeep.conf