筆者出於學習(折騰)原因想要改換 Linux 發行版,於是將目光投向大名鼎鼎的 ArchLinux。 ArchLinux 的安裝過程漫長且複雜,遂彙總成小記,以備日後參考。 小記中筆者共使用兩塊硬碟,一塊已含有 Windows10 分區,另一塊作為雙系統數據共用盤。 LiveCD 本小記略過燒錄鏡像 ...
筆者出於學習(折騰)原因想要改換 Linux 發行版,於是將目光投向大名鼎鼎的 ArchLinux。
ArchLinux 的安裝過程漫長且複雜,遂彙總成小記,以備日後參考。
小記中筆者共使用兩塊硬碟,一塊已含有 Windows10 分區,另一塊作為雙系統數據共用盤。
LiveCD
本小記略過燒錄鏡像的過程,筆者使用了 Rufus 將鏡像燒率進 U 盤,一個更流行的方法是使用 Ventoy 鏡像管理工具。
本段簡單列出將內核和軟體包寫入磁碟的步驟。
網路
這裡只給出使用無線網路的情況,如果目標機使用乙太網則略去 iwd 的步驟。但無論哪種情況,都請配置 NTP 時間。
iwctl
device list
station ANY_DEVICE scan
station ANY_DEVICE get-networks
station ANY_DEVICE connect ANY_SSID
timedatectl set-ntp true
分區
Windows 更新將會覆寫 EFI 分區導致 Linux 無法啟動,筆者這裡額外創建一個。
然後,創建 swap 分區,以便正常使用睡眠和休眠功能。
以 EFI 分區為 FAT32 格式,Linux 主分區為 ext4 格式初始化 fstab。
fdisk /dev/nvme0n1
mkfs.ext4 /dev/nvme0n1p5
mkfs.fat -F32 /dev/nvme0n1p4
mkswap /dev/nvme0n1p6
mount /dev/nvme0n1p5 /mnt
mkdir /mnt/efi
mount /dev/nvme0n1p4 /mnt/efi
genfstab -L /mnt >> /mnt/etc/fstab
軟體包
這一步配置軟體倉庫。
LiveCD 在 /etc/pacman.d/mirrorlist 自動測速並選擇鏡像源,稍後 mirrorlist 將會自動拷貝到待裝系統中。
筆者希望手動覆蓋該文件從而採用南大的鏡像源,你也可以使用自己喜歡的鏡像源。
Server = https://mirrors.nju.edu.cn/archlinux/$repo/os/$arch
接下來向剛剛掛載的新文件系統中導入基礎軟體包與 fstab,ArchLinux 就安裝好了。
pacstrap /mnt base linux linux-firmware
ArchLinux
本段主要為新系統的配置。
arch-chroot /mnt
工具
網路支持 (如 NetworkManager) 是必須的,否則在稍後重啟系統時配置網路非常困難。
ntfs-3g 和 exfat-utils 提供掛載支持,便於我們創建雙系統共用盤。
pacman -S networkmanager
pacman -S ntfs-3g exfat-utils
pacman -S sudo vim
本地化
國內用戶一般使用上海時區。
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
筆者選擇自動生成語言配置:取消 /etc/locale.gen 中所有需要的語言的註釋,然後編輯新生成的語言配置 /etc/locale.conf,設置語言為你想要的語言,例子中為英語。
en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
locale-gen
LANG=en_US.UTF-8
主機名
host 的配置在 /etc/hostname 和 /etc/hosts。
myhostname
127.0.0.1 localhost
::1 localhost
127.0.1.1 myhostname.localdomain myhostname
引導
筆者採用 grub 進行引導。選擇 grub 的另一個目的是聯動另一個分區的 Windows Boot Manager,這樣便於我們在 grub 界面中自行選擇雙系統中的一個啟動。
如果你想要實現優雅的休眠/睡眠,需要對 grub 進行額外配置。具體的操作方法如下:
pacman -S grub efibootmgr
grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=ArchLinux
調整位於 /etc/grub.d/40_custom 的配置,將下麵的 FS_UUID 替換為 Windows10 主分區的 UUID。如果你不知道分區的 UUID,可以使用 blkid 查看。
if [ "${grub_platform}" == "efi" ]; then
menuentry "Windows Boot Manager" {
insmod part_gpt
insmod fat
insmod chain
search --no-floppy --fs-uuid --set=root ANY_FS_UUID
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
fi
編輯 /etc/default/grub,將下麵的 SWAP_UUID 替換為 swap 分區的 UUID。這一步指引 ArchLinux 將休眠鏡像保存至 swap 分區。
GRUB_CMDLINE_LINUX_DEFAULT - quiet
GRUB_CMDLINE_LINUX + acpi_backlight=vendor
GRUB_CMDLINE_LINUX + resume=UUID=ANY_SWAP_UUID
生成 grub.cfg。
grub-mkconfig -o /boot/grub/grub.cfg
在 /etc/fstab 中設置共用盤並開啟 swap 分區。
/dev/sda1 /home/goudunzii/data ntfs-3g defaults 0 0
/dev/nvme0n1p6 none swap defaults 0 0
swapon /dev/nvme0n1p6
啟動休眠功能的最後一步,我們需要編輯 /etc/mkinitcpio.conf,加入 resume 鉤子。這裡需要將 resume 欄位至少加在 udev 欄位之後。修改 root 密碼,然後重啟。
HOOK=(base udev ... resume)
mkinitcpio -P
passwd root
exit
umount -R /mnt
reboot
字體
重啟之後的一些工作需要在終端中進行,筆者希望替換一個對眼睛更加友好的 tty 字體。該配置位於 /etc/vconsole.conf。如果你的屏幕很大,也可以不進行這一步。
pacman -S terminus-font
FONT="ter-118b"
創建賬戶
下麵的指令為例創建自己的賬戶並添加 sudoers。
useradd -m -s /bin/bash goudunz1
pacman -S sudo
passwd goudunz1
goudunz1 ALL=(ALL) ALL
多媒體
新系統的網路配置可以轉用 NetworkManager。
為了聲音和藍牙的正常工作,這裡還需要其它幾個軟體包。
systemctl enable NetworkManager
systemctl start NetworkManager
device wifi connect ANY_SSID password ANY_PASSWD
pacman -S alsa-utils alsa-plugins
pacman -S bluez bluez-utils
systemctl enable bluetooth
桌面
筆者建議在安裝桌面之前先自查顯卡驅動。
- OPENGL
mesa
- vega6(AMD)
xf86-video-amdgpu
- Intel
xf86-video-intel
- Nvidia
xf86-video-nouveau
以基於 X Server 的 KDE 為例:
在安裝完需要的軟體包後,你可以通過 Desktop Manager (如 sddm),聯動 KDE 啟動,也可以採用如下操作手動配置 X Server 和 KDE。
pacman -S xorg xorg-xinit
pacman -S plasma-meta kde-utilities dolphin
goudunz1$ cp /etc/X11/xinit/xinitrc ~/.xinitrc
將 ~/.xinitrc 最後一大塊測試用的代碼去掉,換成下麵的代碼。然後編輯 ~/.bash_profile,這將使得 tty1 登陸時啟動 X Server,再由 X Server 聯動KDE。
export DESKTOP_SESSION=plasma
exec startplasma-x11
if [ -z "${DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then
exec startx
fi
當然筆者也嘗試過使用 sddm,只需一條指令。
systemctl enable sddm
在 KDE 上啟動藍牙還需以下兩個額外的軟體包。
pacman -S pulseaudio-bluetooth pulseaudio-alsa
電源管理
可以使用 tlp 優化 ArchLinux 對電源的管理。
pacman -S tlp tlp-rdw
systemctl enable tlp
systemctl start tlp
systemctl mask systemd-rfkill
systemctl mask systemd-rfkill.socket
輸入法
以 fcitx5-rime 為例:
安裝軟體包後,還需要配置 fcitx5 的自啟動和環境變數 (在 ~/.xprofile 中)。
pacman -S fcitx5-im fcitx5-rime wqy-microhei
export GTK_IM_MODULE=fcitx5
export QT_IM_MODULE=fcitx5
export XMODIFIERS=@im=fcitx5
goudunz1$ mkdir ~/.config/autostart
goudunz1$ cp /usr/share/applications/org.fcitx.Fcitx5.desktop ~/.config/autostart/
在 ~/.local/share/fcitx5/rime/default.custom.yaml 中對 rime 配置添加 patch 以實現首選明月拼音簡化字。
patch:
schema_list:
- schema: luna_pinyin_simp
- schema: luna_pinyin
參考
- https://wiki.archlinux.org/title/Installation_guide
- https://mirrors.nju.edu.cn/help/archlinux
- https://github.com/fcitx/fcitx-rime
24年9月 於清水灣