# 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 是不是都被偵測到了:

包含 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`
解決