Arch linux 安裝 === 以下簡單敘述自己安裝arch的過程,以及踩到的一些坑~ 希望對於新手安裝有幫助 #### 1.下載Arch iso檔案 1.首先可以到交大下載iso映像檔 [交大archlinux iso](http://linux.cs.nctu.edu.tw/archlinux/iso/) #### 進入booting之前 應該要先去確認主機板是用什麼開機的BIOS 還是UEFI 會關係到之後的pation [Partitioning#Example_layouts](https://wiki.archlinux.org/index.php/Partitioning#Example_layouts) #### 分割硬碟 2.先要透過 lsblk 或 blkid 先找到磁碟,再用 parted /dev/xxx print 來找出內部的分割表類型,之後才用 gdisk 或 fdisk 來操作系統先看disk事那一種分割,可以看到我的電腦事用gpt分割 ```clike= root@node:~# parted /dev/sda print 型號:ATA CT500MX500SSD1 (scsi) 磁碟 /dev/sda:500GB 磁區大小 (邏輯/物理):512B/4096B 分割區:gpt 磁碟旗標: 編號 起始點 結束點 大小 檔案系統 名稱 旗標 1 1049kB 99.6MB 98.6MB fat32 啟動, esp 4 99.6MB 200MB 101MB bios_grub 2 200MB 32.2GB 32.0GB linux-swap(v1) 3 32.2GB 500GB 468GB ext4 root@node:~# parted /dev/sdb print 型號:ATA TOSHIBA DT01ACA2 (scsi) 磁碟 /dev/sdb:2000GB 磁區大小 (邏輯/物理):512B/4096B 分割區:gpt 磁碟旗標: 編號 起始點 結束點 大小 檔案系統 名稱 旗標 1 1049kB 2000GB 2000GB ext4 ``` 或是直接用cfdisk /dev/sdX 圖形化來分割硬碟,按n來選partition的大小,type則可以選擇類型/home, /, swap, or EFI system ![](https://i.imgur.com/HyItHDN.png) [itsfoss.com swap-size](https://itsfoss.com/swap-size/) #### 格式化磁區 ```clike= $ mkfs.vfat /dev/sda1 <-EFI partion $ mkswap /dev/sda2 <-swap $ mkfs.ext4 /dev/sda3 <-root $ mkfs.ext4 /dev/sda4 <-home ``` #### 掛載磁區 要先將root partion掛載到/mnt 之後再創建/home /boot 並掛載其他磁區 ```clike= mount /dev/sda3 /mnt <-root mkdir /mnt/boot mount /dev/sda1 /mnt/boot mkdir /mnt/home mount /dev/sda4 /mnt/home ``` 透過blkid來看每個分割磁區的filesystem type ![](https://i.imgur.com/bMuD5nv.png) 可以用df來看有沒有掛載成功 ![](https://i.imgur.com/IyFK21G.png) ### 安裝 用vim /etc/pacman.conf編輯conf文件將,找到[core] [extra] [community]將交大的arch mirrorlist加入 ```clike= [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] Server = http://archlinux.cs.nctu.edu.tw/$repo/os/$arch Include = /etc/pacman.d/mirrorlist ``` #### 安裝 base 和 base-devel packages 使用pacstrap來運行安裝系統基本組件 ```clike= pacstrap /mnt base base-devel ``` 正常安裝畫面,如果有出先erro install pacakages to new root要重新mout or 重新格式化硬碟比較好, ![](https://i.imgur.com/5aziopO.png) pacman -Syy pacman -Su #### 建立Fstab 產生fstab file建立好後可以看一下檔案有沒有存在 ```clike= # genfstab -U /mnt >> /mnt/etc/fstab ``` #### chroot 至新系統 接下來我們要change root to new system ```clike= # arch-chroot /mnt ``` #### 設定時區Time zone ```clike= ln -sf /usr/share/zoneinfo/Asia/Taipei /etc/localtime ``` 用 hwclock 來產生 /etc/adjtime: ```clike= # hwclock --systohc ``` #### 設定語言 ```clike= 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不然進入桌面會沒有英文字,連打字都無法,會很冏 ```clike= $locale-gen ``` #### 設定電腦名稱hostname ```clike= echo "your-pc-name" > /etc/hostname ``` 先安裝vim ```clike= pacman -Sy vim vim /etc/hosts ``` 把以下加入/etc/hosts ```clike= 127.0.0.1 localhost.localdomain localhost ::1 localhost.localdomain localhost 127.0.1.1 myhostname.localdomain myhostname ``` #### 建立initial ramdisk mkinitcpio 是一個script可以幫忙建立Initial ramdisk ```clike= mkinitcpio -p linux ``` ![](https://i.imgur.com/UywK3Xt.png) #### 設定 root 密碼 ```clike= passwd ``` #### 設定Bootloader 先安裝grub ```clike= pacman -Sy grub os-prober efibootmgr ``` os-prober 可以用以偵測目前已安裝的其他系統,並在之後加入 grub 選單中 ```clike= os-prober ``` 因為之前把efi partion掛在/efi資料夾,所以要改成 --efi-direction=/efi BIOS: ```clike= grub-install /dev/sda ``` UEFI: ```clike= grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub grub-mkconfig -o /boot/grub/grub.cfg ``` 設定成功畫面 ![](https://i.imgur.com/zHVorTb.png) #### 安裝網路工具 ```clike= pacman -S net-tools; pacman -S dhclient; pacman -S dhcp pacman -S wpa_supplicant; pacman -S wireless_tools; ``` #### 安裝一些常用套件 ```clike= pacman -S 套件名 pacman -Sy 同步列表 pacman -Su 更新套件版本 pacman -Syu 同步更新 sudo pacman -Syy //類似sudo apt-get update ``` ```clike= pacman -S 套件 安裝套件: vim pkgfile //套件 & 軟體名字不match bash-completion //自動補齊 for pacman…等 sudo ``` #### 重新啟動 離開chroot以前記得把dhcp服務加入systemd 的起動選項中 如果出現dhcp.service does not exit記得先裝dhcp package or 先systemctl enable dhcpcd ```clike= systemctl enable dhcpcd.service exit umount -R /mnt reboot ``` 如果開機後進入GRUB 2 雖然正常啟動並載入了 normal.mod 模組 (以及放在 /boot/grub/[arch]/ 底下的其他模組),卻找不到你的 grub.cfg 檔案。如果你看到的是 grub rescue>,這表示它找不到 normal.mod,因此可能也找不到你所有的開機檔案 再次進入系統後 手動設定DNS ```clike= vim /etc/resolv.conf 將所有設定前方加上 # 作註解,添加以下 DNS (最少1種,看個人選擇) nameserver 168.95.192.1 #中華電信 nameserver 168.95.1.1 #中華電信 nameserver 8.8.8.8 #Google nameserver 8.8.4.4 #Google ``` #### 安裝桌面 gnome: ```clike= pacman -Sy gnome gnome-extra ``` KDE: ```clike= pacman -S xorg-server plasma kde-application ``` 裝plasma kde-applications-meta要 4G ```clike= pacman -S plasma kde-applications-meta ``` LXQT: ```clike= pacman -S xorg-server xorg-init lxqt sddm ``` cp /etc/X11/xinit/xinitrc ~/.xinitrc 把 exec startlxqt 加入到 ~/.xinitrc enable sddm service ```clike= systemctl enable sddm.service ``` 安裝顯卡driver Intel: ```clike= xf86-video-intel ``` #### 建立新的使用者 設定sudo 群組 打開sudoer file並將%wheel ALL=(ALL)前面註解拿掉 ```clike= vim /etc/sudoers # Uncomment to allow members # %wheel ALL=(ALL) ALL ``` 建立新使用者,並加入 sudo 群組 ```clike= useradd -m -u 1001"your-user-name" passwd "your-user-name" usermod "your-user-name" -G wheel ``` 重新開機 ``` reboot ``` #### 中文字體 除了設定中文 locale,還要安裝中文字體,才可正確顯示中文 不然你會看到環境界面以及瀏覽器都是會有奇怪的口口出現 這裡建議安裝noto-fonts-cjk 思源黑體,或是文泉驛正黑體(windows用的中文字體),文泉驛微米黑(Android) ```clike= sudo pacman -Su noto-fonts-cjk adobe-source-code-pro-font ``` 安裝完後記得要將字形改為Noto Sans CJK TC,不然字體會有鋸齒感~ Noto Sans CJK TC(Traditional Chinese) ![](https://i.imgur.com/Uh8BqJH.png) 後來發現chrome有些頁面的字體會有鋸齒感~ 尤其是看github的code都會發現糊糊的 找了很久發現是Font rasterization的問題 需要在子像素繪製改成RGB, 提示改為slight Sub-pixel rendering type" to "RGB" and "Hinting style" to "Slight" ![](https://i.imgur.com/p9SdyE7.png) 更新: 後來覺的DejaVu Sans 10的字體也不錯,感覺比Noto Sans CJK好看 ![](https://i.imgur.com/3RDocRn.png) #### 中文輸入法 再來就是中文輸入法了,沒有這個會很難過, 有遇過chrome裝好後無法切換使用新酷音,但在其他編輯器及瀏覽器都可以使用情形,這時候可以用fcitx-diagnose看一下是哪邊沒裝好~ fcitx-chewing:新酷音 fcitx-googlepinyin:google拼音 ```clike= sudo pacman -S fcitx-configtool fcitx-chewing fcitx-googlepinyin kcm-fcitx ``` 安裝好後記得在~/.xprofile 新增以下變數, 如果沒有此檔案請要自行建立, ```clike= export XIM=fcitx export XIM_PROGRAM=fcitx export GTK_IM_MODULE=fcitx export QT_IM_MODULE=fcitx export XMODIFIERS=@im=fcitx ``` 登入登出後應該就可以啟動,如果沒有 #### 安裝第三方軟體 透過以下的套件我們可以安裝第三方軟體, ex: google-chrome 1.AUR ```clike= git clone https://aur.archlinux.org/aurman.git cd aurman makepkg -si ``` 2.yay ```clike= git clone https://aur.archlinux.org/yay.git cd yay makepkg -si ``` Searching an application through Yay in AUR ```clike= yay -Ss <package-name> ``` Installing an application ```clike= yay -S <package-name> ``` #### libreoffice ```clike= sudo pacman -S libreoffice-fresh-zh-tw ``` ## 編譯自己kernel #### 編譯 Linux-5.3 kernel copy原有的arch linux的config ```clike= zcat /proc/config.gz > .config ``` 之後開始編譯 ```c sudo make -j12 sudo make -j12 modules_install ``` 這時候可以看到bzImage 把它copy到/boot/ 資料夾 ```clike= sudo cp -v arch/x86_64/boot/bzImage /boot/vmlinuz-linux-5.3 ``` #### 製作Initial ramdisk ```clike= sudo cp /etc/mkinitcpio.d/linux.preset /etc/mkinitcpio.d/linux-5.3.preset ``` 修改preset檔,以下幾個地方要改成對應的版號 ```clike= sudo vim /etc/mkinitcpio.d/linux-5.3.preset .. ALL_kver="/boot/vmlinuz-linux-5.3" ... default_image="/boot/initramfs-linux-5.3.img" ... fallback_image="/boot/initramfs-linux-fallback-5.3.img" .. ``` 產生initramfs image ```clike= $ sudo mkinitcpio -p linux-5.3 ==> Building image from preset: /etc/mkinitcpio.d/linux-5.3.preset: 'default' -> -k /boot/vmlinuz-linux-5.3 -c /etc/mkinitcpio.conf -g /boot/initramfs-linux-5.3.img ==> Starting build: 5.3.0-rc2 -> Running build hook: [base] -> Running build hook: [udev] -> Running build hook: [autodetect] -> Running build hook: [modconf] -> Running build hook: [block] -> Running build hook: [filesystems] -> Running build hook: [keyboard] -> Running build hook: [fsck] ==> Generating module dependencies ==> Creating gzip-compressed initcpio image: /boot/initramfs-linux-5.3.img ==> Image generation successful ==> Building image from preset: /etc/mkinitcpio.d/linux-5.3.preset: 'fallback' -> -k /boot/vmlinuz-linux-5.3 -c /etc/mkinitcpio.conf -g /boot/initramfs-linux-fallback-5.3img -S autodetect ==> Starting build: 5.3.0-rc2 -> Running build hook: [base] -> Running build hook: [udev] -> Running build hook: [modconf] -> Running build hook: [block] ==> WARNING: Possibly missing firmware for module: wd719x ==> WARNING: Possibly missing firmware for module: aic94xx -> Running build hook: [filesystems] -> Running build hook: [keyboard] -> Running build hook: [fsck] ==> Generating module dependencies ==> Creating gzip-compressed initcpio image: /boot/initramfs-linux-fallback-5.3.img ==> Image generation successful ``` #### copy System.map ```clike= sudo cp System.map /boot/System.map-linux-5.3 ``` 最後就可以看到我們做好的initramfs, vmlinuz-linux-5.3 ```clike= $ ls -l /boot/ 總計 103768 drwxr-xr-x 3 root root 4096 4月 29 07:38 EFI drwxr-xr-x 6 root root 4096 4月 29 07:39 grub -rwxr-xr-x 1 root root 9114131 8月 10 16:13 initramfs-linux-5.3.img -rwxr-xr-x 1 root root 30909505 8月 10 16:13 initramfs-linux-fallback-5.3.img -rwxr-xr-x 1 root root 30597644 5月 1 17:20 initramfs-linux-fallback.img -rwxr-xr-x 1 root root 9126281 5月 1 17:20 initramfs-linux.img -rwxr-xr-x 1 root root 4087676 8月 10 15:25 System.map -rwxr-xr-x 1 root root 4087676 8月 10 16:14 System.map-linux-5.3 -rwxr-xr-x 1 root root 6187392 8月 10 15:25 vmlinuz -rwxr-xr-x 1 root root 5932928 4月 28 04:05 vmlinuz-linux -rwxr-xr-x 1 root root 6187392 8月 10 15:45 vmlinuz-linux-5.3 ``` #### update grub 更新grub ,開機後就可以到grub選單去選自己的kernel ```clike= sudo grub-mkconfig -o /boot/grub/grub.cfg ``` ### 常見問題 更新或想要下載套件,如果出現`簽章信任等級不明`無法更新 ```clike= 錯誤:git:來自 Levente Polyak (anthraxx) <levente@leventepolyak.net> 的簽章信任等級不明 :: /var/cache/pacman/pkg/git-2.26.1-1-x86_64.pkg.tar.zst 檔案毀損(套件不正確或損毀(PGP 簽章))。 ``` 記得更新keyring ```clike= pacman -Sy archlinux-keyring && pacman -Syyu ``` ``` 1. Always set your timezone and time right. Make sure your hardware clock is synchronized *change zone based on your location sudo timedatectl set-timezone US/Alaska sudo timedatectl set-ntp true sudo timedatectl status 2. Refresh your keys sudo pacman-key --refresh-keys //if errors are encountered here, restart your system (check system time) and then run this command again. 3. Re-initialize & populate sudo pacman-key --init sudo pacman-key --populate 4. Now try sudo pacman -Syu ``` Ref: https://bbs.archlinux.org/viewtopic.php?id=278478 archlinux ip ```clike= tesheng@[arch-node]~ $ hostname -i 192.168.50.76 ``` 如果遇到下面問題安裝pacakage dependency的問題: 直接 sudo pacman -Sy 後面的package. e.g., `sudo pacman -Sy gst-plugins-base` ```clike= error: failed to prepare transaction (could not satisfy dependencies) :: installing gst-plugins-base-libs (1.20.1-1) breaks dependency 'gst-plugins-base-libs=1.20.0' required by gst-libav :: installing gst-plugins-base-libs (1.20.1-1) breaks dependency 'gst-plugins-base-libs=1.20.0' required by gst-plugins-base ``` disable automoate suspend ``` gnome-settings-daemon ``` **Ref:** [Arch linux 台灣社群](https://archlinux.tw/) [Arch Linux 安裝教學 電腦故我在](https://blog.allenchou.cc/arch-linux-tutorial/) [鳥哥 磁碟分割: gdisk/fdisk](http://linux.vbird.org/linux_basic/0230filesystem.php#part_type) [Arch linux wiki File_systems](https://wiki.archlinux.org/index.php/File_systems) [成大wiki archlinux](http://wiki.csie.ncku.edu.tw/archlinux) [partition_table MBR GPT](http://linux.vbird.org/linux_basic/0130designlinux.php#partition_table) [如何搶救 Linux 上不能開機的 GRUB 2](https://nosleep.pixnet.net/blog/post/217901718-%E5%A6%82%E4%BD%95%E6%90%B6%E6%95%91-linux-%E4%B8%8A%E4%B8%8D%E8%83%BD%E9%96%8B%E6%A9%9F%E7%9A%84-grub-2) [arch-linux-kde-plasma-install-and-config](https://rocka.me/article/arch-linux-kde-plasma-install-and-config) [開源的免費中文字型-文泉驛和思源黑體MagicLen](https://magiclen.org/open-fonts/) [Manjaro字型設定折騰記(上)](https://medium.com/@archerindigo/manjaro%E5%AD%97%E5%9E%8B%E8%A8%AD%E5%AE%9A%E6%8A%98%E9%A8%B0%E8%A8%98-%E4%B8%8A-b0483784b03e) [Linux 字體 [3] - 中文字型](http://pre.tir.tw/008/blog/output/linux-zi-ti-3-zhong-wen-zi-xing.html) [Arch Traditional_compilation](https://wiki.archlinux.org/index.php/Kernel/Traditional_compilation)