基於種種因素,導致我大約 2~3 個月就會重灌一次 ArchLinux ,有陣子甚至一個月一次,一直想找時間寫個安裝紀錄,現在終於要來寫了。
在此之前還是跟網路上的大家說得一樣,因為 Arch 的 iso 每個月都會更新,所以還是以 wiki 上的為準。
以 iso 開機後直接選擇第一個進入。
第一個要做的就是手動掛上網路,有線或無線網路都可以:
root@archiso ~ # ip link
root@archiso ~ # ip link set enp3s0 up
ip link
應該會看到它的 state 變成 UP 。掛好網路之後可以測試一下是否可以正常連線
root@archiso ~ # ping archlinux.org
PING archlinux.org (95.217.163.246) 56(84) bytes of data.
64 bytes from archlinux.org (95.217.163.246): icmp_seq=1 ttl=49 time=238 ms
64 bytes from archlinux.org (95.217.163.246): icmp_seq=2 ttl=49 time=237 ms
64 bytes from archlinux.org (95.217.163.246): icmp_seq=3 ttl=49 time=237 ms
64 bytes from archlinux.org (95.217.163.246): icmp_seq=4 ttl=49 time=238 ms
root@archiso ~ # timedatectl set-ntp true
Arch Linux 是由二進位軟體包組成的,這些軟體包會針對 x86-64 最佳化以配合目前的硬體。類似 Ports/ebuild 也在 Arch Linux 上發展,即「Arch Build System」。
'ABS' may be used as an umbrella term since it includes and relies on several other components; therefore, though not technically accurate, 'ABS' can refer to the following tools as a complete toolkit:
- Repository tree
- PKGBUILD
- makepkg
- pacman
- AUR
在 /etc/makepkg.conf
裡面可以調整編譯時的選項,包含了 make 時要加的參數,預設是關閉的:
MAKEFLAGS="-j$(expr $(nproc) \+ 1)"
以上設定可以讓 make 時以 CPU 核心數 + 1 的執行緒去處理。
節錄自 man 1 make
:
-j [jobs], --jobs[=jobs]
Specifies the number of jobs (commands) to run simultaneously. If there
is more than one -j option, the last one is effective. If the -j option
is given without an argument, make will not limit the number of jobs that
can run simultaneously.
pacman 在 6.0 以後正式支援平行下載,對於要下載很多小套件的時候相當有幫助,需要手動開啟。
pacman 相關的配置放在 /etc/pacman.conf
# Misc options
#UseSyslog
Color
#NoProgressBar
CheckSpace
#VerbosePkgLists
ParallelDownloads = 6
ILoveCandy
[core]
Server = http://archlinux.cs.nctu.edu.tw/$repo/os/$arch
Include = /etc/pacman.d/mirrorlist
[extra]
Server = http://archlinux.cs.nctu.edu.tw/$repo/os/$arch
Include = /etc/pacman.d/mirrorlist
#[community-testing]
#Include = /etc/pacman.d/mirrorlist
[community]
Server = http://archlinux.cs.nctu.edu.tw/$repo/os/$arch
Include = /etc/pacman.d/mirrorlist
# If you want to run 32 bit applications on your x86_64 system,
# enable the multilib repositories as required here.
#[multilib-testing]
#Include = /etc/pacman.d/mirrorlist
#[multilib]
#Include = /etc/pacman.d/mirrorlist
如果覺得預設的鏡像站太慢的話可以用交大或其他自訂的鏡像站,或是用 Reflector 協助找出適合的鏡像站。
multilib 提供了 32 位元的套件,需要的話可以將其註解刪掉。
有鑑於之前被 NetworkManager 雷過的經驗,之後我只要網路有問題都會特別想過這邊。
之前遇到的問題是 Spotify 一直沒辦法登入,但是網頁版又正常,後來才發現是 DNS 的問題,反正先改掉再說,免除後患。
/etc/resolv.conf
nameserver 8.8.8.8
我的磁碟配法是 1TB 的 SSD 切三份,接下來會以這樣的配置為例子。
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 931.5G 0 disk
├─sda1 8:1 0 32G 0 part [SWAP]
├─sda2 8:2 0 512M 0 part /boot
└─sda3 8:3 0 899G 0 part /
使用 fdisk 可以得到電腦上硬碟的相關資訊,並且配置磁區,關於切法網路上也滿多了,甚至可以先開個有 GUI 的 OS 先切好,這邊不贅述。
切好之後就分別將各磁區格式化
root@archiso ~ # mkfs.ext4 /dev/sda3
root@archiso ~ # mkfs.vfat -F32 /dev/sda2
root@archiso ~ # mkswap /dev/sda1
切好之後就掛上去
root@archiso ~ # mount /dev/sda3 /mnt
root@archiso ~ # mkdir /mnt/boot
root@archiso ~ # mount /dev/sda2 /mnt/boot
root@archiso ~ # swapon /dev/sda1
手動產生 fstab
/etc/fstab
這個檔案提供了檔案系統的資訊。他定義了儲存設備和磁區如何初始化和如何聯接至整個系統。
root@archiso ~ # genfstab -U /mnt >> /mnt/etc/fstab
製作好之後可以確認一下裡面的內容(每個地方都這樣寫也沒跟你講要怎麼確認)
# Static information about the filesystems.
# See fstab(5) for details.
# <file system> <dir> <type> <options> <dump> <pass>
# /dev/sda3
UUID=fa37e6c0-2e6e-4982-9a5f-dbef1940a4f0 / ext4 rw,relatime,discard 0 1
# /dev/sda2
UUID=2353-4428 /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro 0 2
# /dev/sda1
UUID=e0790b4a-eb2e-42a2-a579-b4a1a6c84ed6 none swap defaults 0 0
最簡單的方式就是下 blkid
確認一下 fstab 裡面的 UUID 跟你之前配置的一不一樣,理論上不會出錯,這邊有兩點要特別注意:
swapon
的話這邊不會出現 swap 分區discard
掛載好之後就可以開始裝 ArchLinux 了,把你需要的套件包進去。
archiso@root ~ # pacstrap /mnt base base-devel linux linux-firmware vim
備註:wiki 上面只有寫 base linux linux-firmware 而已
安裝好之後就可以切進去基本系統進行配置了
archiso@root ~ # arch-chroot /mnt
[root@archiso /]# _
進來之後可以先再設定一次 相關配置雜談
然後是時區
[root@archiso /]# ln -sf /usr/share/zoneinfo/Asia/Taipei /etc/localtime
硬體時鐘
[root@archiso /]# hwclock --systohc
這邊建議先設定為英文就好,等之後有桌面環境再新增中文的,如果用中文的環境安裝桌面環境的話 XDG user direcotries 會變成中文的,在 terminal 切換的時候會非常不方便。
先到 /etc/locale.gen
將需要的語言和編碼取消註解
en_US.UTF-8 UTF-8
建立一個檔案 /etc/locale.conf
並加入以下內容
LANG=en_US.UTF-8
設定好之後下指令
[root@archiso /]# locale-gen
建立 /etc/hostname
myhostname
編輯 /etc/hosts
127.0.0.1 localhost
::1 localhost
127.0.0.1 myhostname.localdomain myhostname
如果是固定 IP 的網路的話記得把這邊的 127.0.0.1
換成固定 IP 的位址
設定 Root 使用者密碼
[root@archiso /]# passwd
通常都用 GRUB
[root@archiso /]# pacman -S os-prober grub efibootmgr
[root@archiso /]# os-prober
os-prober 可以自己檢測硬碟內其他的作業系統,如果不想要噁心的 Windows 出現在開機選單或是沒有其他系統的話可以不用裝。之後如果想要開其他系統的話可以在 GRUB 的開機選單進去 SHELL 介面輸入 exit 就會自動去找下一個開機順序了。
安裝好相關套件之後先確認硬碟分割是 GPT/UEFI 還是 BIOS/MBR ,可以用 fdisk -l /dev/sdX
來確認。
基於前面的磁碟切法所以指令這樣下
[root@archiso /]# grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub
[root@archiso /]# grub-mkconfig -o /boot/grub/grub.cfg
[root@archiso /]# grub-install --target=i386-pc /dev/sda
如果開機後 dmesg 裡面一直出現 [BADDLLP] 錯誤訊息的話可以去 GRUB 的 config 裡面 /boot/grub/grub.cfg
會發現有一行開機的參數:
linux /vmlinuz-linux root=UUID=fa37e6c0-2e6e-4982-9a5f-dbef1940a4f0 rw loglevel=3 quiet
在 queit
的後面加上 pci=nommconf
就可以了。
如果只在開機的 GRUB 選單裡面更改的話只有該次開機有效果,這邊的設定是永久的。
基本上到這邊就完成了,但是要拿來做日常使用的話還會需要一般使用者與桌面環境。
最新的 base-devel 已經把 sudo 包進來了,如果沒有的話可以手動用 pacman 安裝。
新增使用者
[root@archiso /]# useradd user
設定使用者密碼
[root@archiso /]# passwd user
給使用者 superuser 權限
[root@archiso /]# usermod user -G wheel
然後到 /etc/sudoers
取消以下的註解
## Uncomment to allow members of group wheel to execute any command
%wheel ALL=(ALL) ALL
建立完使用者之後重新開機便可以用剛剛建立的 user 登入了,但是在重新開機之前最好先裝好網路相關套件,省得一些麻煩事。
[root@archiso /]# pacman -S net-tools wpa_supplicant wireless_tools networkmanager
[root@archiso /]# systemctl enable NetworkManager
其中最重要的就是 NetworkManager 了,堪稱網路神器,從簡單到複雜都能設定,不裝對不起自己阿。
在裝 DE 之前,一定要安裝 ArchLinux 的精髓, AUR Helper , Wiki 上面有很多可以選擇,個人習慣用 yay :
$ sudo pacman -S git
$ git clone https://aur.archlinux.org/yay.git
$ cd yay
$ makepkg -s
自己用 Gnome 大概有 2~3 年左右,畢竟是 Ubuntu 的預設 DE ,到後來 Gnome40 我還是覺得不錯用,不管是到 Gnome-look 上面找喜歡的主題、圖示、游標,或是用 Gnome Extensions 一鍵安裝喜歡的擴充功能,都非常棒,但是後來因為記憶體太常吃滿以及手癢的關係換到 i3wm 去了,這邊提供 Gnome 的安裝方法及個人偏好。
$ sudo pacman -S xorg xorg-server
$ sudo pamcan -S gnome gnome-extra gnome-tweaks
$ sudo systemctl enable gdm
之後會有一些選項,如果看不懂或是不知道怎麼選的話就都用預設,全部裝就對了,反正硬碟很便宜。
裝好之後重開機就可以進入桌面環境了。
裝 Extensions 之前記得先在 gnome-tweaks 裡面開啟 User themes
選項。還有一些繁瑣的設定請自行 Google 。
i3wm 的各種分支:
$ sudo pacman -S i3 xorg xorg-server lightdm lightdm-gtk-greeter picom alacritty rofi
$ sudo systemctl enable lightdm
簡單說明一下上面的配置:
X11 的運作模式:
如果看完上面的比較喜歡 Wayland 的話可以選擇相容 i3 的 Sway 。
安裝好之後你會發現自己的家目錄下面沒有 Desktop 之類的目錄,這時候只需要設定前面提過的 XDG user directories ,就好,方法也很簡單:
$ sudo pacman -S xdg-user-dirs
$ xdg-user-dirs-update
執行完之後就會看到熟悉的桌面和下載等目錄了。
順便分享一下自己的 dotfiles:
asas1asas200/dotfiles
如果想試試看 i3 但又怕不習慣的話可以先裝好 Gnome ,然後再裝 i3 ,裝好重開機後在 GDM 的登入頁面右下角可以選擇 i3 ,真的不習慣再換回來就可以了。
如果你是 Gnome 的使用者,基本上可以直接跳過這邊,因為 Gnome 都幫你處理好了。
我自己習慣用 ibus 的新酷音輸入法,先安裝相關套件:
$ pacman -S ibus ibus-chewing libibus libchewing
然後設定 ibus daemon 在每次進入桌面環境時啟動,在 ~/.config/i3/config
加入這行:
exec --no-startup-id ibus-daemon -drxR
最後編輯 /etc/environment
:
GTK_IM_MODULE=ibus
QT_IM_MODULE=ibus
XMODIFIERS=@im=ibus
基本上 intel 和 AMD 的都沒什麼太大的問題,所以這邊不提,主要是當初搞 Nvidia 搞到心力憔悴,所以在這邊分享一些相關的東西。
Learn More →
ArchLinux 裝 Nvidia 的驅動非常簡單:
$ sudo pacman -S nvidia nvtop
nvtop 是一個像 htop 的套件,可以監控顯卡目前的運作狀態。
裝好之後你會發現系統開機時不會自己啟動 Nvidia 模式(如果有的話當然是最好,就不用另外調整了),此時可以透過 Bumblebee 之類的軟體去讓某些應用程式以 Nvidia 的顯卡啟動,不過這個方法我後來就不用了,主要是因為有點麻煩,我希望我的所有程式可以的話都用 Nvidia 的顯卡去加速運算,這時候就有一個更好用的套件 optimus-manager ,多虧了 AUR 現在只要兩個指令就可以擁有它:
$ yay -S optimus-manager
$ sudo systemctl enable optimus-manager
另外也有 qt 的版本可以安裝 optimus-manager-qt
、 optimus-manager-qt-git
然後在 /etc/optimus-manager/optimus-manager.conf
裡面編輯:
startup_mode=nvidia
這樣登入的時候就會用 Nvidia 模式執行了,可以在開機後執行 nvtop
來確認,應該會有一些程式執行。