# My Arch Linux Setup [TOC] ## 前言 macbook 送修了,我必須要有一個備用的開發環境,因此想嘗試一下極簡的 Arch Linux,這次會安裝的東西如下: - Arch Linux:此篇重點 - Termina:我希望可以用自己習慣的終端機 - Window manager:提高生產力,也方便使用 GUI 的軟體 - Text editor:編輯配置文件一定要有 - Web browser:方便查詢資料以及看 Netflix, Youtube - 中文輸入法 - 截圖軟體 - Steam:遊戲平台 ## 前置作業 - [下載 Arch Linux 安裝 iso](https://archlinux.cs.nctu.edu.tw/iso/2021.07.01/)(連結為交大的 mirror) - 格式化隨身碟:用系統的磁碟工具把隨身碟格式化成 FAT32 格式 - 把安裝程式寫入到隨身碟上:建議用 Etcher, Windows 用 rufus - 確保要安裝 Arch 的硬碟上的資料都已經備份 ## 安裝系統 重新開機進到 Bios 選擇剛才製作的安裝隨身碟開機就可以開始囉 ### 1.確保環境符合安裝系統的需求 確定現在的環境是可以安裝系統的: - 開機模式要是 UEFI - 要可以連上網路 - 系統時間要對 確保系統是以 UEFI 模式開機 ```bash ls /sys/firmware/efi/efivars ``` 如果這個指令噴出一堆有的沒的,那就是 UEFI 了,如果不是的話要去 BIOS 設定裡的 Boot section 設定一下。 確認連網, 查看網卡 ```bash ip link ``` 如果你是有線網路的話直接插線就可以, Wi-Fi 的話可以用 iwctl 設定。 確認有連上網。 ```bash ping 8.8.8.8 ``` 成功的話把系統時間跟網路同步一下 ```bash timedatectl set-ntp true ``` 進入下一步 ### 2.將硬碟做適當的分區, 並格式化 先執行 `lsblk` 判斷出目標磁碟的名稱 */dev/sdx* 用 cgdisk 來執行磁碟的分區 ``` bash cgdisk /dev/sdx ``` cgdisk 是一個很棒的圖形化界面工具,前面已經備份過的話,勇敢的把全部磁區 Delete, 再一一建立需要的磁區, 建立磁區時, 系統會要你依序輸入: - 起始的 sector:這部份建議用預設值 - 需要的容量大小:可以參考下表 - 磁區類型的 hex code:參考下表,或是輸入 L 查詢 下表是我的的設定,如果電腦上已經有存在 EFI 開機磁區的話,可以不用再新增,只要建立 swap 跟檔案系統就好。 | 用途 | 容量建議 | hex code | | --- | --- | --- | | EFI磁區 | 200M | ef00 | | swap | 4G | 8200 | | Linux 檔案系統 | 剩下的全部(default)| 8300 | 格式化磁區,假設我的硬碟是 sdb ```bash mkfs.fat /dev/sdb1 # efi mkfs.ext4 /dev/sdb3 # linux filesystem mkswap /dev/sdb2 # swap ``` 完成後可以再執行一次 `lsblk` 確認是否有照自己的意思格式化成功, 再來要掛載磁區 ```bash #把主要檔案系統掛載到 /mnt mount /dev/sdb3 /mnt # 把 efi 磁區 掛載到 /mnt/boot # 如果有現存的 efi 則改成 /mnt/efi mkdir /mnt/boot mount /dev/sdb1/ /mnt/boot # or mkdir /mnt/efi mount 現存的efi /mnt/efi # 設定 swap swapon /dev/sdb2 ``` 完成後進入下一個部份安裝系統 ### 3.安裝系統 把 arch linux 跟 linux kernel 以及 linux firemare 安裝到剛才掛載的磁區 ```bash pacstrap /mnt base linux linux-firmware ``` 把各磁區的資訊以及掛載點寫入新的系統 ```bash genfstab -U /mnt >> /mnt/etc/fstab ``` 正式進入新系統進行其他設定 ```bash chroot /mnt ``` 安裝一些設定系統時可能需要的東西: - base-devel:包含 sudo 等好用的工具 - nano vi vim:編輯設定檔必備 設定時區即時間 ```bash ls -sf /usr/share/zoneinfo/Asia/Taipei /etc/localtime hwclock --systohc ``` 編輯 `/etc/locale.conf` 把需要的 locale 取消註解 ``` bash locale-gen ``` 設定本地主機名稱 ```bash echo 主機名稱 >> /etc/hostname ``` 編輯 /etc/hosts 設定本地主機的域名 ```bash 127.0.0.1 localhost ::1 localhost 127.0.0.1 主機名稱.localdomain 主機名稱 ``` 幫 root 設定密碼 ```bash passwd ``` ### 4.安裝 Bootloader 我們需要安裝一個開機目錄,才能順利的啟動 Arch Linux,我選用 Grub 因為他支援所有開機格式 ```bash # 如果要 windows 雙系統的話要再裝一個 os-prober 以偵測到既有的 windows 開機資料 pacman -S grub efibootmgr (os-prober) # 安裝 cpu 微碼 pacman -S intel-ucode (amd-ucode) # 把 esp 改成前面設定的 efi 磁區掛載的位置 grub-install --target=x86_64-efi --efi-directory=esp --bootloader-id=GRUB ``` (optional) 雙系統的話, 需要編輯 `etc/default/grub` 檔案尾端加入下面這行, 才能讓 os-prober 順利執行 ```GRUB_DISABLE_OS_PROBER=false``` 生成 grub 設定 ```bash grub-mkconfig -o /boot/grub/grub.cfg ``` 檢查一下所有的 image 是不是都被偵測到了: ![](https://i.imgur.com/ypypgAW.png) 包含 linux, ucode, windows 都沒問題的話就可以重開機進入 arch linux 了 ```bash exit umount -R /mnt reboot ``` 開機成功可以以 root 登入的話,恭喜你完成 Arch Linux 的安裝了,但是離可以日常使用還有一段路要走。 # 先 review 到這就好 ## 新增使用者 ## 安裝系統程式 ## 必要工具 ### 網路工具 包含 ifconfig, ip, traceroute, dig 等好用的網路工具 `pacman -S net-tools dnsutils inetutils iproute2` ## 踩雷 ### 1. 連接 DP 關閉再開啟螢幕或是系統閒置過久會黑畫面 原因:關閉螢幕後即斷開視訊連線,重新打開後系統並無法偵測到螢幕的電源狀態,系統閒置後也會關閉和螢幕的連線,螢幕偵測到沒有連線就進入閒置模式,對系統來說也是斷開。 Workaround: - 改用 HDMI 連接,完全沒有問題。(推薦) - `sudo systemctl restart lightdm` 重啟 lightdm 或是你用的 DM 就可以恢復,缺點是幾乎等於重新登入,前面的工作狀態不會保留,建議還是以 HDMI 連線較為安全。 ### 2. Steam 無法開啟 錯誤訊息:Steam needs to be online to update. Please confirm your network 看來是 Steam 無法連上網,看看有什麼問題 `dig media.steampowered.com` 顯示連不到,原來是忘記重導 DNS 了 `sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf` 解決