<!--{%hackmd theme-dark %}--> ###### tags: `Linux` # Arch Linux 安裝與問題紀錄 **Windows10 + Arch Linux 雙系統** 資工系學生必備 Linux 系統,我是兩顆硬碟一個裝 Linux 另一個裝 Windows10,兩個系統裝在同一顆硬碟也行。 官方資料最正確 [Arch Linux Wiki](https://wiki.archlinux.org/title/Installation_guide_(%E6%AD%A3%E9%AB%94%E4%B8%AD%E6%96%87)) 詳細的中文安裝教學 https://hackmd.io/@PIFOPlfSS3W_CehLxS3hBQ/r1xrYth9V 雙系統 https://wusyong.github.io/posts/arch-dual-boot/ 裝這個還蠻複雜的,新手最好有個大佬代比較好 ## 目錄 [TOC] ## 流程統整 1. 灌系統到 USB 裡 2. 開機 BOIS 切換到 USB 的系統善 3. 硬碟分割 4. 格式化磁碟區 5. 掛載磁區 6. 連 wifi 7. 安裝 + 建立 fstab **作業系統安裝完畢** 8. 更換到新系統 9. 設定 Bootloader 10. 裝網路設定 11. 設定 root 密碼 **到這就完成了可以重開機** 12. 其他設定 13. 裝 GUI (我用KDE) 14. KDE 設定 ## 系統安裝 ### USB設置 上面三個連結都有教學 用 [Rufus](https://rufus.ie/en/) 裝映像檔,[交大Archlinux ios](http://linux.cs.nctu.edu.tw/archlinux/iso/) **燒入前將選項 MBR 換成 GPT** 重新開機,打開 BIOS 用 USB 開啟 ### 硬碟分割 `fdisk -l` 查看所有硬碟狀態 ```cmd= Disk /dev/nvme0n1: 476.94 GiB, 512110190592 bytes, 1000215216 sectors Disk model: KINGSTON OM8PCP3512F-AB Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 0C6319EF-F744-49A4-B73D-911286E7D53E Device Start End Sectors Size Type /dev/nvme0n1p1 2048 534527 532480 260M EFI System /dev/nvme0n1p2 534528 567295 32768 16M Microsoft reserved /dev/nvme0n1p3 567296 706179726 705612431 336.5G Microsoft basic data /dev/nvme0n1p4 706181120 962181119 256000000 122.1G Microsoft basic data /dev/nvme0n1p5 962183168 963514367 1331200 650M Windows recovery environment /dev/nvme0n1p6 963514368 1000214527 36700160 17.5G Microsoft basic data Disk /dev/sda: 476.94 GiB, 512110190592 bytes, 1000215216 sectors Disk model: SPCC Solid State Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 0344BB27-6BE2-4470-B6A1-740D0529DD45 Device Start End Sectors Size Type /dev/sda1 34 32767 32734 16M Microsoft reserved /dev/sda2 32768 1159167 1126400 550M EFI System /dev/sda3 1159168 34713599 33554432 16G Linux swap /dev/sda4 34713600 286371839 251658240 120G Linux root (x86-64) /dev/sda5 286371840 705802239 419430400 200G Linux home /dev/sda6 705802240 1000215182 294412943 140.4G Linux filesystem ``` > 這是我已經裝完 linux 的狀態,可以看到一個是 Windows 一個是 Linux > 還未裝的會看到另一個是空的 我有兩顆硬碟,一個是`nvme0p1`一個是`sda`,選擇要裝硬碟打`cfdisk /dev/(硬碟路徑)`,我選sda打`cfdisk /dev/sda` 把磁碟區清乾淨後,移到 free memory 按 New,打需要的記憶體大小 Enter 後按 Type 選擇磁碟區類形 需要 EFI、Swap、root、home **註1:如果是單顆硬碟不要格式化整個硬碟,Windows系統會不見** **註2:如果有 Windows 雙系統,記得 Windows 的 EFI 和 Linux 的 EFI 要分開,不要放同一個** ```terminal= Device Start End Sectors Size Type >> /dev/sda1 34 32767 32734 16M Microsoft reserved /dev/sda2 32768 1159167 1126400 550M EFI System /dev/sda3 1159168 34713599 33554432 16G Linux swap /dev/sda4 34713600 286371839 251658240 120G Linux root (x86-64) /dev/sda5 286371840 705802239 419430400 200G Linux home /dev/sda6 705802240 1000215182 294412943 140.4G Linux filesystem ``` root 和 home 給大一點,之後還要裝桌面,swap 是虛擬記憶體我的是 16G 或 8G 也可以,EFI 只要給 550M 就好 多出來的記憶體我用 Linux filrsystem 當備份,也可以就放著 free memory **磁碟分割好後要按 `Write` 然後打 yes,沒有 Write 的話就要重分了** ### 格式化磁碟區 ``` $ mkfs.vfat /dev/sda2 <-EFI partion $ mkswap /dev/sda3 <-swap $ mkfs.ext4 /dev/sda4 <-root $ mkfs.ext4 /dev/sda5 <-home $ mkfs.ext4 /dev/sda6 <-filesystem(沒有設的話就不用) ``` #### 掛載磁碟區 ``` $ mount /dev/sda4 /mnt ``` 可以用`df`來看有沒有掛載成功 ### Wifi連線 安裝前一定要有網路才能下載(廢話) 如果是有線網路的話插上 LAN 就有了,wifi 會比較麻煩 `ping www.google.com` 測試網路狀態 連上後ctrl+c退掉就行 #### 方法一: wifi-menu ``` $ wifi-menu ```` 會有一個圖形話的網路界面就可以連了 如果這個方法不能用就用方法二 #### 方法二: iwctl 1. 打`iwctl` 進入網路設置 2. `device list` 看網卡的名子,我的是wlan0 3. `station wlan0 scan` 掃描周圍wifi 4. `station wlan0 get-network` 找尋要連的wifi 5. `station wlan0 connet [wifi名]` 連上wifi,然後打密碼 6. `exit` 退出 最後`ping www.google.com` 看一下有沒有連上 ### 安裝 `pacstrap /mnt base` 安裝 base、base-devel、linux、linux-firmware、linux、linux-headers 可以一起裝 ``` $ pacstrap /mnt base base-devel linux linux-firmware linux linux-headers ``` ### 掛載磁碟區 把剩下的目錄掛載起來 ``` $ mount /dev/sda5 /mnt/home $ mkdir /mnt/boot/efi $ mount /dev/sda5 /mnt/boot/efi ``` 一樣用 `df` 檢查一下 **建立Fstab** Fstab 是什麼可以自己去 Google 一下 ``` $ genfstab -U /mnt >> /mnt/etc/fstab ``` 這樣系統就安裝完成了 ## 新系統 ### 更換到新系統 輸入`arch-choot /mnt`就可以到掛載的目錄安裝新系統 **但這時還不能關機,也不能拔 USB,不然會爆炸(並沒有)** 還沒有安裝網路設置和 Grab,我沒裝網路設置就 reboot 之後會連不上網路,就不能下載網路驅動,然後就只能重灌QQ ### 設定 Bootloader 安裝 Grub Grub 可以讓你在開機時選系統(可以不裝) ``` $ pacman -S grub efibootmgr os-prober ``` 安裝Grub ``` $ grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB ``` #### Windows 雙系統 沒有裝雙系統可以跳過 將 Windows 的 EFI `mount`到`/mnt`隨便一個地方 我的 Windows的EFI在nvme0n1p1裡 ``` $ mkdir /mnt/windows10 $ mount /dev/nvme0n1p1 /mnt/windows10 $ os-prober ``` 讓os-prober掃到Windows #### 產生 grub 設定檔 回來繼續裝Grub,如果雙系統一定要執行上方指令 ```cmd $ grub-mkconfig -o /boot/grub/grub.cfg ``` 這樣就好了 **grub 掃不到 Windows** 如果出現`Warning: os-prober will not be executed to detect other bootable partitions` 或之後重開沒有Windows的選項可以試試將`GRUB_DISABLE_OS_PROBER=false`加入 `/etc/default/grub` *註:記的先裝 vim ```cmd $ vim /etc/default/grub ``` 然後在重複一次 ``` $ os-prober $ grub-mkconfig -o /boot/grub/grub.cfg ``` #### 建立 initial ramdisk ``` $ mkinitcpio -p linux ``` ### 安裝 wifi 設置和網路設置 安裝網路工具 dialog 是 wifi-menu 一定要載 ```cmd $ pacman -S dialog $ pacman -S netctl $ pacman -S net-tools $ pacman -S dhclient $ pacman -S dhcpcd $ pacman -S dhcp $ pacman -S wpa_supplicant $ pacman -S wireless_tools $ pacman -S networkmanager $ systemctl enable dhcpcd ``` 連上網路wifi: ```cmd $ wifi-menu ``` 用 LAN: ```cmd $ systemctl enable dhcpcd@enp0s31f6.service ``` `dhcpcd@` 後面要輸入的是你的 interface name,你可以用 `ip link` 或 `ls /sys/class/net` 查到: ``` $ ip link 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group def link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: enp0s31f6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAult qlen 1000 link/ether 4c:cc:6a:ba:86:bb brd ff:ff:ff:ff:ff:ff ``` **LAN 開機時會自動連線,如果沒有差網路線開機會變慢可以用`systemctl disable dhcpcd@enp0s31f6.service` 關掉** ### 建立 root 密碼 ```cmd $ passwd ``` 這樣就可以重開機了 ```cm $ reboot //重新啟動 $ shutdown -h now //關機 ``` 可以拔掉 USB 了 ## 啟用Archlinux 用 root 登入後繼續設置 ``` archlinux login: root passwd: ``` 連上網路 有線網路會自動連上 ```cmd // wifi 連線 $ wifi-menu // 測試網路 $ ping www.google.com ``` ### 其他設定 #### 更改 mirror list 各個地區的 mirror list: https://archlinux.org/mirrorlist/all/ 把 mirror list 改到台灣這樣在下載東西時跑得比較快 打開`/etc/pacman.d/mirrorlist`在上方加入 `Server = http://free.nchc.org.tw/arch/$repo/os/$arch Server = http://mirror.archlinux.tw/ArchLinux/$repo/os/$arch ` ``` $ vim /etc/pacman.d/mirrorlist Server = http://free.nchc.org.tw/arch/$repo/os/$arch Server = http://mirror.archlinux.tw/ArchLinux/$repo/os/$arch ``` #### 設定時區 ```ccmd $ ln -s /usr/share/zoneinfo/Asia/Taipei /etc/localtime $ hwclock --systohc ``` #### 設定語言 ```cm $ echo "en_US.UTF-8 UTF-8" > /etc/locale.gen; $ echo "zh_TW.UTF-8 UTF-8" >> /etc/locale.gen; $ echo "LANG=en_US.UTF-8" > /etc/locale.conf; $ locale-gen ``` #### 設定主機名稱 ```cmd $ echo "your-pc-name" > /etc/hostname ``` #### 安裝常用套件 ```cmd $ pacman -S vim sudo git pkgfile bash-completion ``` #### 建立新使用者 ```cmd $ useradd -m -g users -G wheel,storage,power -s /bin/bash "yourusername" $ passwd "yourusername" ``` 設定 sudo 群組,打開 sudoer file 並將`%wheel ALL=(ALL)`前面註解(#)拿掉 ```cmd $ EDITOR=vim visudo ``` #### 安裝顯卡驅動 *注意: 這邊的顯卡驅動的安裝較舊,容易出錯,以官方文件為主* Intel:https://wiki.archlinux.org/title/intel_graphics NVIDIA: https://wiki.archlinux.org/title/NVIDIA Intel ``` $ pacman -S xf86-video-intel ``` NVIDIA: ``` $ pacman -S nvidia ``` `nvidia-smi`查看顯卡 ### 安裝桌面 我用的是 KDE ```cmd $ pacman -S xorg-server plasma konsole ``` 裝完後 ``` $ systemctl enable sddm.service ``` 如果顯示沒有sddm的話安裝sddm ``` $ pacman -S sddm ``` ## KDE設定 登入後按 Ctrl+tab+T,打開 Konsole,輸入`sudo wifi-menu`連線 konsole 忘記安裝的話使用 `F2` 登入後 `sudo pacman -S konsole` ### yay 有了 yay 載東西就很方便 ``` git clone https://aur.archlinux.org/yay.git cd yay makepkg -si ``` ### Shell (可裝可不裝) 預設會是 Bash,想改成用 zsh #### zsh [教學](https://ithelp.ithome.com.tw/articles/10192899) 安裝 ``` $ yay -S zsh ``` 將預設的 Shell 改成 zsh ``` $ sudo chsh -s $(which zsh) $(whoami) ``` 插件: [zplug](https://www.jkg.tw/p2965/) (大家都說oh-my-zsh太大 見仁見智) 主題: [powerlevel10k](https://github.com/romkatv/powerlevel10k.git) (記得載字體) ### 輸入法&字體 #### 輸入法 ``` $ yay -S fcitx5 $ yay -S fcitx5-configtool $ yay -S fcitx5-chewing ``` 設定(system setting) -> Regional Settings -> Input Method -> Add Input Method -> chewing #### 字體 Consolas 安裝 Consolas 有個 Aur https://aur.archlinux.org/packages/consolas-font/ 但我不會 aur 用所以我手動安裝 點下面下載 https://github.com/pensnarik/consolas-font/raw/master/consolas-fonts-tts.tar.bz2 把檔案放入`/usr/share/fonts` 然後解壓縮,然後安裝 ``` $ sudo mkdir /usr/share/fonts/consolas $ sudo cp consolas-fonts-tts.tar.bz2 /usr/share/fonts/consolas $ cd /usr/share/fonts/consolas $ sudo tar jxvf consolas-fonts-tts.tar.bz2 $ sudo mkfontscale $ sudo mkfontdir $ sudo fc-cache -fv ``` 這樣就行了 其他字體也是放入 `/usr/share/fonts` 後執行下方三行更新已有字體就行了 **註:** 如果顯示`mkfontscale command not found`要載 xorg, oxrg-app ``` $ sudo pacman -S xorg xorg-app ``` #### 中文字體 ``` $ yay noto-fonts-cjk ``` ### 其他應用程式 **註:** 除了 root 以外的 user pacman都要加 sudo **filemanager** 檔案管理員,有這個很方便 ``` $ yay dolphin ``` **Timeshift** 幫系統備份 Arch 常常更新到自己抽筋(程式不相容,導致有些東西不能用),Timeshit 可以在危機時拯救你 註: 有雙系統的,Restore 後 Grub 那邊的 mount window 要在用一次 ``` $ yay -S timeshift-bin ``` **Spectacle** 螢幕節圖 ``` $ sudo pacman -S spectacle ``` **Network manager GUI** 字面上的意思,網路管理 GUI ``` $ yay nm-connection-editor $ systemctl enable NetworkManager.service ``` **註:** `nmcli`可以測試 NetworkManager 有沒有啟動,如果沒有 ``` $ sudo /usr/bin/NetworkManager start 或是 $ sudo /etc/init.d/network-manager start ``` **文字編輯器** Atom (現在不支援了) ``` $ yay atom-editor-bin ``` 如果有裝在 gcc-make-run 設定裡Terminal start command那格改成`konsole -e /bin/bash -i -e` VSCode 選有bin的那個 ``` $ yay visual-studio-code ``` **風扇驅動** nvidia-dkms 我的風扇是 nvidia ``` $yay nvidia-dkms ``` **遠端桌面連線** 別的地方連到自己 https://blog.xzr.moe/archives/237/ KRDC 自己往外連(KDE) ``` sudo pacman -S krdc ``` 出現問題 Could not start "xfreerdp"; make sure xfreerdp is properly installed https://www.linuxquestions.org/questions/slackware-14/slackware-current-krdc-rdp-error-missing-xfreerdp-4175666569/#google_vignette ``` $ yay Freerdp ``` **工作管理員** system Monitor ``` $ yay plasma-systemmonitor ``` ### 其他設定 **yay colors** ``` $ sudo vim /etc/pacman.conf ``` 找到 `# Color` 把 `#` 刪掉 ``` #UseSyslog Color #TotalDownload CheckSpace #VerbosePkgLists ``` **指令大小寫忽視(大小寫敏感)** ``` $ vim ~/.inputrc ``` 輸入 ```vim set completion-ignore-case on ``` ## 問題處理 ### 使用Chrome經常當掉(畫面卡住) 常常用Chrome開太多分頁時直接當掉KDE整個不能用,也不能按Ctrl+Alt+F4,但 RAM 並沒有使用多少。 開啟動態配置 RAM ``` yay systemd-swap sudo vim /etc/systemd/swap.conf ``` 加入`swapfu_enabled=1`然後存檔退出,重開機就行了 ### 用到一半面當掉 我用了動態配置記憶體後依然沒用,到很久後才發現是沒裝風扇驅動所以才過熱當掉== ### 系統更新後 許多功能損壞 這時我們偉大的 TimeShift 就發揮他的效用了。 ### discord 不給更新又打不開 新版本剛出的話 aur 沒有跟上版本所以 yay 沒有新版本,打開 discord 會叫你更新但又更不了== 解決方法: https://youtu.be/0xVQ1bzqz5k 簡而言之: 到 `/opt/discord/resources` 更改 `build_info.json` (`sudo vim /opt/discord/resources/build_info.json`) 將 version 改成最新版 還是沒有用的話就更新系統 ``` $ sudo pacman -Syu ``` ### 更新系統時 key 出問題 ``` Import PGP key B8AC08600F108CDF, "Jan Alexander Steffens (heftig) <heftig@archlinux.org>"? [Y/n] :: Import PGP key F6D84143496F6680, "Campbell Jones <serebit@archlinux.org>"? [Y/n] (478/478) checking package integrity [###########################################] 100% error: zlib: signature from "Levente Polyak (anthraxx) <levente@leventepolyak.net>" is unknown trust :: File /var/cache/pacman/pkg/zlib-1:1.3-2-x86_64.pkg.tar.zst is corrupted (invalid or corrupted package (PGP signature)). Do you want to delete it? [Y/n] ``` 把 keyring 更新就好 `$ sudo pacman -S archlinux-keyring`