[心得] 2021 07 ArchLinux 安裝紀錄

看板Linux作者 (廢文製造者)時間2年前 (2021/07/20 02:37), 編輯推噓14(14015)
留言29則, 13人參與, 2年前最新討論串1/1
大家好 前幾天又重裝了一次 ArchLinux 並且寫了一些安裝的心得 以下是 Hackmd 原文照搬的版本 因為是 markdown 所以傷眼的話還請見諒 圖文並茂版:https://hackmd.io/@Zeng/2021-07-ArchLinuxInstall 請各位不吝指教 # 2021 07 ArchLinux 安裝紀錄 > 基於種種因素,導致我大約 2~3 個月就會重灌一次 ArchLinux ,有陣子甚至一個月一 次,一直想找時間寫個安裝紀錄,現在終於要來寫了。 > 在此之前還是跟網路上的大家說得一樣,因為 Arch 的 iso 每個月都會更新,所以還 是以 [wiki](https://wiki.archlinux.org/title/installation_guide) 上的為準。 ## 事先準備 + 燒好 Arch iso 的 USB + 一台可以查資料的筆電 or 手機(想當初第一次灌的時候就只有一隻小手機在那邊查, 相當克難) ## 進入 iso ### 網路 以 iso 開機後直接選擇第一個進入。 第一個要做的就是手動掛上網路,有線或無線網路都可以: + 有線網路 ```sh root@archiso ~ # ip link ``` 此時會列出一些介面的名字,並且 state 都會是 DOWN ,找到自己捅網路線的那個 介面然後掛上它,例如我的叫做 enp3s0 。 ```sh root@archiso ~ # ip link set enp3s0 up ``` 這時候再下一次 `ip link` 應該會看到它的 state 變成 UP 。 + 無線網路 請參閱 [iwctl](https://wiki.archlinux.org/title/Iwd#iwctl) 因為基本上很少 用所以就先不寫了。 掛好網路之後可以測試一下是否可以正常連線 ```sh 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 ``` ### 系統時鐘 ```sh root@archiso ~ # timedatectl set-ntp true ``` ### 相關配置雜談 [Arch Linux - Wikipedia](https://zh.wikipedia.org/wiki/Arch_Linux) > Arch Linux 是由二進位軟體包組成的,這些軟體包會針對 x86-64 最佳化以配合目前 的硬體。類似 Ports/ebuild 也在 Arch Linux 上發展,即「Arch Build System」。 [Arch Build System](https://wiki.archlinux.org/title/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 #### makepkg 在 `/etc/makepkg.conf` 裡面可以調整編譯時的選項,包含了 make 時要加的參數,預 設是關閉的: ```sh 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 [pacman](https://wiki.archlinux.org/title/pacman) 在 6.0 以後正式支援平行下載 ,對於要下載很多小套件的時候相當有幫助,需要手動開啟。 pacman 相關的配置放在 `/etc/pacman.conf` ```sh=31 # Misc options #UseSyslog Color #NoProgressBar CheckSpace #VerbosePkgLists ParallelDownloads = 6 ILoveCandy ``` + Color: 有顏色看起來比較舒服對吧? + ParallelDownloads: 平行下載 + ILoveCandy: pacman 的彩蛋,開就對了。 ```sh=76 [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](https://wiki.archlinux.org/title/Reflector) 協助找出適合的鏡像站。 **multilib** 提供了 32 位元的套件,需要的話可以將其註解刪掉。 #### DNS Server 有鑑於之前被 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](https://wiki.archlinux.org/title/Fdisk#Create_a_partition_table_and_partitions) 可以得到電腦上硬碟的相關資訊,並且配置磁區,關於切法網路上也滿多了,甚至可以先 開個有 GUI 的 OS 先切好,這邊不贅述。 切好之後就分別將各磁區格式化 ```sh root@archiso ~ # mkfs.ext4 /dev/sda3 root@archiso ~ # mkfs.vfat -F32 /dev/sda2 root@archiso ~ # mkswap /dev/sda1 ``` 切好之後就掛上去 ```sh root@archiso ~ # mount /dev/sda3 /mnt root@archiso ~ # mkdir /mnt/boot root@archiso ~ # mount /dev/sda2 /mnt/boot root@archiso ~ # swapon /dev/sda1 ``` ### fstab 手動產生 [fstab](https://wiki.archlinux.org/title/Fstab_(正體中文)) > `/etc/fstab` 這個檔案提供了檔案系統的資訊。他定義了儲存設備和磁區如何初始化 和如何聯接至整個系統。 ```sh root@archiso ~ # genfstab -U /mnt >> /mnt/etc/fstab ``` 製作好之後可以確認一下裡面的內容(每個地方都這樣寫也沒跟你講要怎麼確認) ```sh # 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 跟你之前配置的一不一樣, 理論上不會出錯,這邊有兩點要特別注意: 1. 如果之前沒有 `swapon` 的話這邊不會出現 swap 分區 2. SSD 可以開啟 [Trim](https://wiki.archlinux.org/title/Solid_state_drive) 功 能 簡單來說就是確認硬碟及檔案系統都支援之後在 options 的最後面多加一個 `discard` ## 安裝基本系統 掛載好之後就可以開始裝 ArchLinux 了,把你需要的套件包進去。 ```sh archiso@root ~ # pacstrap /mnt base base-devel linux linux-firmware vim ``` 備註:wiki 上面只有寫 base linux linux-firmware 而已 ### Chroot 與基本配置 安裝好之後就可以切進去基本系統進行配置了 ```sh archiso@root ~ # arch-chroot /mnt [root@archiso /]# _ ``` 進來之後可以先再設定一次 [相關配置雜談](#相關配置雜談) 然後是時區 ```sh [root@archiso /]# ln -sf /usr/share/zoneinfo/Asia/Taipei /etc/localtime ``` 硬體時鐘 ```sh [root@archiso /]# hwclock --systohc ``` ### 地區語系 這邊建議先設定為英文就好,等之後有桌面環境再新增中文的,如果用中文的環境安裝桌 面環境的話 [XDG user direcotries](https://wiki.archlinux.org/title/XDG_user_directories) 會變成中文 的,在 terminal 切換的時候會非常不方便。 先到 `/etc/locale.gen` 將需要的語言和編碼取消註解 ``` en_US.UTF-8 UTF-8 ``` 建立一個檔案 `/etc/locale.conf` 並加入以下內容 ``` LANG=en_US.UTF-8 ``` 設定好之後下指令 ```sh [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 使用者密碼 ```sh [root@archiso /]# passwd ``` ### Bootloader 通常都用 [GRUB](https://wiki.archlinux.org/title/GRUB) ```sh [root@archiso /]# pacman -S os-prober grub efibootmgr [root@archiso /]# os-prober ``` [os-prober](https://archlinux.org/packages/?name=os-prober) 可以自己檢測硬碟內 其他的作業系統,如果不想要噁心的 Windows 出現在開機選單或是沒有其他系統的話可 以不用裝。之後如果想要開其他系統的話可以在 GRUB 的開機選單進去 SHELL 介面輸入 exit 就會自動去找下一個開機順序了。 安裝好相關套件之後先確認硬碟分割是 GPT/UEFI 還是 BIOS/MBR ,可以用 `fdisk -l /dev/sdX` 來確認。 #### GPT/UEFI 基於前面的磁碟切法所以指令這樣下 ```sh [root@archiso /]# grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub [root@archiso /]# grub-mkconfig -o /boot/grub/grub.cfg ``` #### BIOS/MBR ```sh [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 選單裡面更改的話只有該次開機有效果,這邊的設定是永久的。 基本上到這邊就完成了,但是要拿來做日常使用的話還會需要一般使用者與桌面環境。 ### 使用者與桌面環境 #### 建立使用者、 sudo 最新的 base-devel 已經把 sudo 包進來了,如果沒有的話可以手動用 pacman 安裝。 新增使用者 ```sh [root@archiso /]# useradd user ``` 設定使用者密碼 ```sh [root@archiso /]# passwd user ``` 給使用者 superuser 權限 ```sh [root@archiso /]# usermod user -G wheel ``` 然後到 `/etc/sudoers` 取消以下的註解 ```sh=81 ## Uncomment to allow members of group wheel to execute any command %wheel ALL=(ALL) ALL ``` #### 網路套件 建立完使用者之後重新開機便可以用剛剛建立的 user 登入了,但是在重新開機之前最好 先裝好網路相關套件,省得一些麻煩事。 ```sh [root@archiso /]# pacman -S net-tools wpa_supplicant wireless_tools networkmanager [root@archiso /]# systemctl enable NetworkManager ``` 其中最重要的就是 [NetworkManager](https://wiki.archlinux.org/title/NetworkManager) 了,堪稱網路 神器,從簡單到複雜都能設定,不裝對不起自己阿。 #### 開始前 在裝 DE 之前,一定要安裝 ArchLinux 的精髓, [AUR Helper](https://wiki.archlinux.org/title/AUR_helpers) , Wiki 上面有很多可以選 擇,個人習慣用 [yay](https://github.com/Jguer/yay) : ```sh $ sudo pacman -S git $ git clone https://aur.archlinux.org/yay.git $ cd yay $ makepkg -s ``` #### Gnome 自己用 Gnome 大概有 2~3 年左右,畢竟是 Ubuntu 的預設 DE ,到後來 Gnome40 我還 是覺得不錯用,不管是到 [Gnome-look](https://www.gnome-look.org/browse/) 上面找 喜歡的主題、圖示、游標,或是用 [Gnome Extensions](https://extensions.gnome.org/) 一鍵安裝喜歡的擴充功能,都非常棒, 但是後來因為記憶體太常吃滿以及手癢的關係換到 i3wm 去了,這邊提供 Gnome 的安裝 方法及個人偏好。 ``` $ sudo pacman -S xorg xorg-server $ sudo pamcan -S gnome gnome-extra gnome-tweaks $ sudo systemctl enable gdm ``` 之後會有一些選項,如果看不懂或是不知道怎麼選的話就都用預設,全部裝就對了,反正 硬碟很便宜。 裝好之後重開機就可以進入桌面環境了。 :::spoiler **Gnome Shell Extensions** 裝 Extensions 之前記得先在 gnome-tweaks 裡面開啟 `User themes` 選項。還有一些 繁瑣的設定請自行 [Google](https://bfy.tw/RIzi) 。 + [Arch Linux Updates Indicator](https://extensions.gnome.org/extension/1010/archlinux-updates-indicator/) ![](https://extensions.gnome.org/extension-data/screenshots/screenshot_1010_gUt2hpK.png) + [Coverflow Alt-Tab](https://extensions.gnome.org/extension/97/coverflow-alt-tab/) ![](https://extensions.gnome.org/extension-data/screenshots/screenshot_97_7.png) + [Vitals](https://extensions.gnome.org/extension/1460/vitals/) ![](https://extensions.gnome.org/extension-data/screenshots/screenshot_1460_TyM83Ic.png) + [Gnome 40 UI Improvements](https://extensions.gnome.org/extension/4158/gnome-40-ui-improvements/) ![](https://extensions.gnome.org/extension-data/screenshots/screenshot_4158_zScCHj7.png) + [Hide Top Bar](https://extensions.gnome.org/extension/545/hide-top-bar/) ![](https://extensions.gnome.org/extension-data/screenshots/screenshot_545_3pF5sZG.png) + [Night Light Slider](https://extensions.gnome.org/extension/1276/night-light-slider/) ![](https://extensions.gnome.org/extension-data/screenshots/screenshot_1276_gNya1IO.png) ::: #### i3wm + lightdm i3wm 的各種分支: + [i3-wm](https://archlinux.org/packages/community/x86_64/i3-wm/) 一般的i3 + [i3-gaps](https://archlinux.org/packages/community/x86_64/i3-gaps/) 視窗與視 窗之間有間隔的版本([有些人認為這樣比較炫泡 ](https://www.reddit.com/r/i3wm/comments/7xpviq/what_is_i3gaps/)) + [i3-gaps-rounded-git](https://aur.archlinux.org/packages/i3-gaps-rounded-git/) 不只多了間隔,還有圓角矩形的視窗 ```sh $ sudo pacman -S i3 xorg xorg-server lightdm lightdm-gtk-greeter picom alacritty rofi $ sudo systemctl enable lightdm ``` 簡單說明一下上面的配置: + i3 :不用多做說明了吧,就是我們想裝的 WM 。 + xorg : i3 是基於 [X 視窗系統](https://zh.wikipedia.org/zh-tw/X視窗系統) 的 。 + lightdm : 幫助我們有一個 GUI 的介面可以登入,如果你喜歡配置 xinitrc 之類的 東西也可以不裝。 + picom : Compositor ,負責動畫繪圖等效果,參見下面說明。 + alacritty : 使用 GPU 加速的終端模擬器,可以換成其他自己想要的。 + rofi : 程式的起動器,方便我們快速啟動某個程式。 X11 的運作模式: ![](https://www.secjuice.com/content/images/2018/06/x-architecture.png) [X Window 設定介紹](http://linux.vbird.org/linux_basic/0590xwindow.php) [Wayland vs Xorg](https://www.secjuice.com/wayland-vs-xorg/) 如果看完上面的比較喜歡 Wayland 的話可以選擇相容 i3 的 [Sway](https://wiki.archlinux.org/title/Sway) 。 安裝好之後你會發現自己的家目錄下面沒有 Desktop 之類的目錄,這時候只需要設定前 面提過的 [XDG user directories](https://wiki.archlinux.org/title/XDG_user_directories) ,就好,方 法也很簡單: ```sh $ sudo pacman -S xdg-user-dirs $ xdg-user-dirs-update ``` 執行完之後就會看到熟悉的桌面和下載等目錄了。 順便分享一下自己的 dotfiles: [asas1asas200/dotfiles](https://github.com/asas1asas200/dotfiles) 如果想試試看 i3 但又怕不習慣的話可以先裝好 Gnome ,然後再裝 i3 ,裝好重開機後 在 GDM 的登入頁面右下角可以選擇 i3 ,真的不習慣再換回來就可以了。 #### ibus-chewing 如果你是 Gnome 的使用者,基本上可以直接跳過這邊,因為 Gnome 都幫你處理好了。 我自己習慣用 ibus 的新酷音輸入法,先安裝相關套件: ```sh $ pacman -S ibus ibus-chewing libibus libchewing ``` 然後設定 ibus daemon 在每次進入桌面環境時啟動,在 `~/.config/i3/config` 加入這 行: ```sh exec --no-startup-id ibus-daemon -drxR ``` 最後編輯 `/etc/environment` : ```sh GTK_IM_MODULE=ibus QT_IM_MODULE=ibus XMODIFIERS=@im=ibus ``` ### 顯卡驅動 基本上 intel 和 AMD 的都沒什麼太大的問題,所以這邊不提,主要是當初搞 Nvidia 搞 到心力憔悴,所以在這邊分享一些相關的東西。 {%youtube _36yNWw_07g %} ArchLinux 裝 Nvidia 的驅動非常簡單: ```sh $ sudo pacman -S nvidia nvtop ``` **nvtop** 是一個像 htop 的套件,可以監控顯卡目前的運作狀態。 裝好之後你會發現系統開機時不會自己啟動 Nvidia 模式(如果有的話當然是最好,就不 用另外調整了),此時可以透過 [Bumblebee](https://wiki.archlinux.org/title/bumblebee) 之類的軟體去讓某些應用 程式以 Nvidia 的顯卡啟動,不過這個方法我後來就不用了,主要是因為有點麻煩,我希 望我的所有程式可以的話都用 Nvidia 的顯卡去加速運算,這時候就有一個更好用的套 件 [optimus-manager](https://github.com/Askannz/optimus-manager) ,多虧了 AUR 現在只要兩個指令就可以擁有它: ```sh $ yay -S optimus-manager $ sudo systemctl enable optimus-manager ``` 另外也有 qt 的版本可以安裝 `optimus-manager-qt` 、 `optimus-manager-qt-git` 然後在 `/etc/optimus-manager/optimus-manager.conf` 裡面編輯: ```sh startup_mode=nvidia ``` 這樣登入的時候就會用 Nvidia 模式執行了,可以在開機後執行 `nvtop` 來確認,應該 會有一些程式執行。 -- _ _ _ _ _ _ _ /\ | | (_) | | | | | | | | | | / \ _ __ ___| |__ _ ___ | |_| |__ ___ | |__ ___ ___| |_| | / /\ \ | '__/ __| '_ \ | / __| | __| '_ \ / _ \ | '_ \ / _ \/ __| __| | / ____ \| | | (__| | | | | \__ \ | |_| | | | __/ | | ) | __/\__ \ |_|_| /_/ \_\_| \___|_| |_| |_|___/ \__|_| |_|\___| |_.__/ \___||___/\__(_) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.129.243.149 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1626719840.A.60B.html

07/20 03:09, 2年前 , 1F
07/20 03:09, 1F

07/20 04:28, 2年前 , 2F
看起來好好玩 想裝一次XD
07/20 04:28, 2F

07/20 05:49, 2年前 , 3F
Cool!
07/20 05:49, 3F

07/20 05:51, 2年前 , 4F
好奇有沒有人真的去測試 ArchInstall 那工具
07/20 05:51, 4F

07/20 13:14, 2年前 , 5F
arch 真的好玩 試了其他發行版 還是喜歡arch~~
07/20 13:14, 5F

07/20 13:17, 2年前 , 6F
安裝arch 大概有兩個地方注意 grub 跟 網路
07/20 13:17, 6F

07/20 13:18, 2年前 , 7F
現在也在嘗試玩i3 還不習慣QQ
07/20 13:18, 7F

07/20 14:47, 2年前 , 8F
grub 真的要注意 裝到現在還是會忘掉 XDDDD
07/20 14:47, 8F

07/20 17:20, 2年前 , 9F
"pci=nommconf"這個參數應該要加在/etc/default/grub
07/20 17:20, 9F

07/20 17:20, 2年前 , 10F
裡才對 你直接修改/boot/grub/grub.cfg 下次一執行
07/20 17:20, 10F

07/20 17:21, 2年前 , 11F
grub-mkconfig 你的修改就又失效了
07/20 17:21, 11F

07/20 17:35, 2年前 , 12F
然後xorg這個package group本身就包含xorg-server了
07/20 17:35, 12F

07/20 17:38, 2年前 , 13F
所以安裝X只需要下pacman -s xorg
07/20 17:38, 13F

07/20 17:39, 2年前 , 14F
想省點空間的人可只裝xorg-server 套件有缺的話日後
07/20 17:39, 14F

07/20 17:40, 2年前 , 15F
再補就好
07/20 17:40, 15F

07/21 01:34, 2年前 , 16F
07/21 01:34, 16F

07/22 00:43, 2年前 , 17F
推用 package group 空間換取時間法
07/22 00:43, 17F

07/22 02:05, 2年前 , 18F
17F,h大,看不懂空間換取時間的意思?方便教我一
07/22 02:05, 18F

07/22 02:05, 2年前 , 19F
下嗎我謝謝
07/22 02:05, 19F

07/22 02:12, 2年前 , 20F
大概是直接套件群組安裝就省得記一些有的沒的XD
07/22 02:12, 20F

07/22 02:12, 2年前 , 21F
不過這樣比較吃硬碟空間就是
07/22 02:12, 21F

07/22 20:46, 2年前 , 22F
對就是這個意思XD
07/22 20:46, 22F

07/23 00:43, 2年前 , 23F
原來conf檔還可以開顏色以及同時下載多個檔案,還有abs可以
07/23 00:43, 23F

07/23 00:43, 2年前 , 24F
用-j nproc,用了好幾年arch 第一次知道
07/23 00:43, 24F

07/23 08:34, 2年前 , 25F
SSD trim那邊現在也可以用fstrim.service代替,不一定要
07/23 08:34, 25F

07/23 08:35, 2年前 , 26F
在fstab加discard,另外Nvidia那邊如果是混合顯卡的話,
07/23 08:35, 26F

07/23 08:36, 2年前 , 27F
07/23 08:36, 27F

07/24 08:58, 2年前 , 28F
推薦用archcraft 的iso 來安裝,查資料會方便不少
07/24 08:58, 28F

07/24 10:30, 2年前 , 29F
沒看這篇還不知道有nvtop,感謝樓主分享
07/24 10:30, 29F
文章代碼(AID): #1WzSPWOB (Linux)