# Arch Linux with KDE+Win10雙系統 & rEFInd安裝心得 ###### tags: `linux` `windows` `dual boot` :::spoiler 軟/硬體資訊 Laptop: ASUS Vivobook S510UNO CPU: Intel(R) Core(TM) i5-8250U CPU @1.60GHz 1.8GHz Memory: 4GB Storage: Intel(R) Optane(TM) Memory 16GB + 1TB HDD GPU: Intel UHD Graphic 620 + NVIDIA GeForce MX150 BIOS: UEFI OS: Windows 10 x64 Professional 1903 + Arch Linux x86_64 :::warning 文中的指令雖為安裝當下所輸入的,但仍**請先看過註解和上下程序**,請勿一味輸入而不了解其意義。 ::: ## Win10 安裝 ### 筆電安裝win10無法選擇版本 根據網路資料,問題出在筆電主板上的序號,安裝程式執行時便會依照主板序號直接選擇安裝win10家用版-->[解法](https://blog.downager.com/2017/07/30/Windows-%E8%A7%A3%E6%B1%BA-Win10-%E5%AE%89%E8%A3%9D%E6%99%82%E7%84%A1%E6%B3%95%E9%81%B8%E6%93%87%E7%89%88%E6%9C%AC%E7%9A%84%E5%95%8F%E9%A1%8C/) ### 關閉windows更新 在未連上網路情形下進入 1. 群組原則編輯器(gpedit.msc)-->Windows Update進行相關設定 2. 服務(services.msc)停用 * Windows Update * Windows Modules Installer * Background Intelligent Transfer Services ### 睡眠選項消失&無法調亮度 原因不明,但在安裝內顯驅動後便獲得解決(**鍵盤熱鍵無法調整亮度的問題一併解決**)。 ### 不小心把桌面路徑設定錯誤 進入登陸編輯程式(regedit)--> ``HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders``,直接修改Desktop路徑,重開機。 ### 開機後自動開啟關機前應用程式 進入設定--> 帳戶--> 登入選項--> 將``使用我的登入資訊...重新開啟我的應用程式``選項關閉 ### Optane Memory抓不到 進入BIOS--> Intel Rapid Storage Technology--> Reset to non-Optane,重開機後重裝Optane驅動--> 重設連結。 ### **關於Optane Memory&Linux磁區格式化**(<font color="red">重要!</font>) 初次安裝Linux時,發現在磁區初始化時一直出現``dev/sda? is apparently in use by the system; will not make a filesystem here!``或``mkswap cannot open /dev/sdb? device or resource busy``錯誤訊息,試過不少方法都沒用,結果重開機重做一次就成功了,但也發現Win10開機速度變得奇慢,折騰好一陣找原因,原來是Optane Memory和HDD失去連結,這時恍然大悟,因為預留給Linux的磁區和win10同屬一塊HDD,所以**Linux磁區第一次初始化時還是持續被Optane Memory調用,所以會跳錯誤訊息**。 因應這個狀況,我決定先完成Linux安裝,再來重新連結Optane Memory和HDD,結果又出現問題:cry:,在連結時Optane Memory Installer跳出``0xA005004E``錯誤碼,找到[intel官網的說明](https://www.intel.com.tw/content/www/tw/zh/support/articles/000056917/memory-and-storage/intel-optane-memory.html) :::success ![](https://i.imgur.com/5rI4Bps.png =600x) ::: 不過因為末端正是劃給Linux當swap space,所以我先到Linux刪除磁區後再回到Win10**壓縮出大於5M的空間重新連結Optane Memory**,結果就沒問題了,記得再回頭設定swap space,正式結束和Optane Memory的恩怨;不過也因此HDD末端多了一塊無用的小容量磁區,下次分割時必須多多注意才行。啊對了,**Optane Memory不支援Win以外的作業系統**:joy:。 ## Arch Linux 安裝 ### 事前在win10準備 #### 劃出Linux磁碟空間 在win+x``磁碟管理``中在要分割的區域中選擇``壓縮磁碟區``,選擇要分割出的磁區大小,``確定``後便出現``未配置空間``,分割完成(**使用Optane Memory會有其他配置需求和狀況**,詳見[此](#關於Optane-MemoryampLinux磁區格式化重要))。 #### Rufus 製作開機USB 因為BIOS為UEFI,因此資源分割配置選擇GPT,其他使用預設 :::info What is **[UEFI](https://techfeed.today/2016/09/30/%E5%8F%96%E4%BB%A3%E5%82%B3%E7%B5%B1bios%E7%9A%84efi%E5%92%8Cuefi%E7%A9%B6%E7%AB%9F%E6%98%AF%E4%BB%80%E9%BA%BC%EF%BC%9F/)**? ::: ### 分割磁區 進入linux安裝前,先在win10壓縮出一塊專門給linux的空間(**專門給linux filesystem and swap,efi則和win10共用**),我壓縮的空間為150G左右,分配如下 ``` Device | Type | Directory | Size /dev/sda2 | for efi system (Win10) | /mnt/boot | 100 MB /dev/sda6 | for linux filesystem | /mnt | 149 GB /dev/sda7 | for linux swap | | 1 GB ``` 特別注意,此處``/sda?``只是一個代稱,真實編號取決於安裝當下的情形,每一次安裝都會不一樣,可以先用``lsblk``或``cfdisk``查看目前的磁碟配置;可以用``cfdisk``或``gdisk``分割磁區,這邊都列出以供參考。 :::spoiler cfdisk 較推薦,有完整介面,使用起來比較順手 首先輸入 ``` cfdisk /dev/sda #如同前述,sda只是代稱,不一定是你要配的位置 ``` 進入介面後,應該會看到最下面的<font color="#00DB00">**free space**</font>,用方向鍵``↑↓``移動至要配置的磁區,再用``←→``執行動作,選擇``New``,輸入要配置的空間大小,``Enter``後便會出現新的磁區,編號會連著前面的磁區,而``Type``會預設為``linux filesystem``,可以``←→``至``Type``修改,結束前要記得``Write``寫入,才能``Quit``;若要重新配大小可以``Resize``,出錯要重劃可以``Delete``。 ::: :::spoiler gdisk 首先輸入 ``` gdisk /dev/sda #如同前述,sda只是代稱,不一定是你要配的位置 ``` 進入gdisk後,可以用以下指令執行動作 ``` Command (? for help):? #查詢指令 Command (? for help):p #查詢狀態 ``` 新增分割區的細節(範例) ``` Command (? for help):n #新增分割區 Partition number (6-128, default 6):6 #設定磁區編號 First sector (34-16777182, default = 2048) or {+-}size{KMGTP}: #磁區前端(若要連著前項磁區直接Enter就好) Last sector (2048-16777182, default = 16777182) or {+-}size{KMGTP}: +2G #磁區末端,可以指定位置or填入變量 Current type is 8300 (Linux filesystem) #預設Type為filesystem Hex code or GUID (L to show codes, Enter = 8300): #設定Type,可按L查看hec code Changed type of partition to 'Linux filesystem' #新增完成 ``` 新增出所要的磁區後 ``` Command (? for help):p #先查看新增磁區是否正常 Command (? for help):w #寫入 Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING PARTITIONS!! Do you want to proceed? (Y/N): Y OK; writing new GUID partition table (GPT) to vdc. The operation has completed successfully. ``` ::: 利用上述兩種方式完成swap space、filesystem的磁區劃分後(**efi system和Win10共用就不須另外劃分**),就可以進行磁區格式化。 ### 格式化、掛載磁區 #### 格式化 * filesystem格式 * efi system:vfat * Linux filesystem:ext4 * Win10 filesystem:NTFS * Swap Space:[No actual filesystem](https://superuser.com/questions/172724/what-file-system-is-swap-on-linux) ``` mkfs -t vfat /dev/sda2 #格式化efi,若和Win10共用則不須執行(共用執行可能造成崩潰) mkfs -t ext4 /dev/sda6 #格式化Linux filesystem磁區 mkswap /dev/sda7 #格式化swap磁區 swapon /dev/sda7 #掛載swap磁區 ``` #### 格式化問題 我所遇到的問題主要是**由Optane Memory所引起**,[詳情](#關於Optane-MemoryampLinux磁區格式化重要) 爬文過程中發現會遇到的問題大部分來自於**磁區已被掛載目錄**,導致無法初始化,可以先輸入``mount``確認磁區掛載情形,接著用``umount /%dir%``或是``swapoff /dev/sda?``解除掛載,接著重新格式化即可。 若有遇到其他問題再補充。 #### 掛載 根目錄``/mnt``已經在Live USB中,無須創建,<font color="red">**且必須優先掛載``/mnt``再掛其他目錄**</font> ``` mount /dev/sda6 /mnt #掛載根目錄 mkdir /mnt/boot #建立/boot目錄 mount /dev/sda2 /mnt/boot #掛載/boot #若有其他(如/mnt/home等)目錄一併掛載 lsblk #查看掛載無誤 ``` ### 確認網路環境&更新系統時間 #### 網路連接 這邊使用iwd方法,首先輸入 ``` iwctl #進入iwd模式 device list #查看網卡名稱 #假設我的網卡名稱為 wlan0 station wlan0 scan #掃描網路 station wlan0 get-networks #查看網路名稱 #假設欲連接網路名稱為'WIFI' station wlan0 connect WIFI #連接網路 #輸入網路密碼 exit ping 8.8.8.8 #確認網路環境正常 ``` #### 更新系統時間 後續在用pacman同步數據庫時需要``網路時間``和``系統時間``同步 ``` timedatectl set-ntp true #開啟時間同步 timedatectl status #檢查服務狀態 ``` **務必確認``NTP service``為``active``** ### 安裝基本系統 #### [Pacman](https://wiki.archlinux.org/title/Pacman_(%E6%AD%A3%E9%AB%94%E4%B8%AD%E6%96%87))介紹 * Pacman 軟體包管理員是 Arch Linux 的主要特色工具,結合了二進位軟體包格式和容易使用的組建系統。輕鬆管理軟體是 Pacman 的目標,無論這些軟體包是來自官方軟體庫還是由使用者自建。 * Pacman 會和主要伺服器同步軟體包清單,來保持系統處於最新狀態。在主從式架構之下,使用者只要用簡單的指令就可以下載並安裝軟體包,並補足所有相依的軟體包。 * Pacman指令: [ref1](https://ipcmen.com/pacman)、[ref2](https://home.gamer.com.tw/creationDetail.php?sn=5084476) #### 選擇鏡像站 鏡像站提供各Linux發行版本之映像檔和套件軟體,選擇臺灣本地鏡像站可以加快軟體下載速度,有兩種方式進行修改 :::spoiler reflector指令 [Reflector](https://wiki.archlinux.org/title/Reflector_(%E6%AD%A3%E9%AB%94%E4%B8%AD%E6%96%87))是一個腳本程式,它可以從MirrorStatus頁面獲得最新的鏡像列表,過濾最新的鏡像,按速度排序,並且覆蓋``/etc/pacman.d/mirrorlist``文件 ``` pacman -Sy reflector #更新並安裝reflector套件 reflector --verbose --latest 100 --sort rate --country 'Taiwan' --save /etc/pacman.d/mirrorlist ``` ::: :::spoiler 編輯文件 編輯``/etc/pacman.d/mirrorlist``,將臺灣鏡像站排在文件前面(列表中越前面的站優先級越高) [忘記vim怎麼用了ㄇ](http://www.vixual.net/blog/archives/234) ``` vim /etc/pacman.d/mirrorlist #vim編輯文件 #vim Normal模式下 :606 #移至文件中臺灣鏡像站位置(大約第600多行) V[,方向鍵] #進入選取模式,選取全部臺灣網址 y #複製選取內容 :5 #回到文件前端 p #貼上 :wq #儲存離開vim ``` ::: #### 安裝系統 這邊使用[``pacstrap``](https://man.archlinux.org/man/pacstrap.8)腳本安裝必要軟體包,包括 * [base](https://archlinux.org/packages/core/any/base/)軟體包 * [base-devel](https://archlinux.org/groups/x86_64/base-devel/):包括pacman、sudo、gcc等工具 * Linux核心 * 常規硬體韌體 ``` pacstrap /mnt base linux linux-firmware #安裝系統 ``` 可以順便用``pacstarp``在新系統中安裝未在firmware中的韌體、vim、檔案管理等套件(剛剛用的是Live USB中已經存在的),不過因為不知道哪一些是必要套件&現在不裝不影響後續,所以我到進入系統後(chroot)才進行。 ### 配置系統 #### fstab [fstab](https://wiki.archlinux.org/title/Fstab_(%E6%AD%A3%E9%AB%94%E4%B8%AD%E6%96%87))這個檔案提供了檔案系統的資訊。它定義了儲存設備和磁區如何初始化和如何聯接至整個系統。 ``` genfstab -U /mnt >> /mnt/etc/fstab #生成fstab文件 ``` 生成後 ``` vim /mnt/etc/fstab #查看fstab文件 ``` ![](https://i.imgur.com/wb9R2Yt.png) fstab table範例 應該會按照你掛載的目錄生成資料,<font color="red">若是已經配置過系統的請先刪除舊的``fstab``文件</font> ``` rm /mnt/etc/fstab #刪除舊的fstab genfstab -U /mnt >> /mnt/etc/fstab #重新生成fstab ``` :::danger * 後續可能產生[swap掛載錯誤](#Arch-Linux開機時間過久) ::: #### [Chroot](https://wiki.archlinux.org/title/Chroot_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)) 前述動作都是在Live USB中進行的,現在要進入筆電硬碟中的Arch Linux系統 :::danger 如果重裝系統或是需要重新插上 USB 做些設定(如磁區分割錯誤或目錄掛載錯誤或 Windows 系統更新後引導程序設定檔被砍),則需要先將所有的分區先掛載,再進入Chroot才會顯示你電腦裡的磁區,再次強調,先掛載``/mnt``。 ::: ``` arch-chroot /mnt #進入root ``` :::success 若是還沒安裝等等會用到的``vim``等套件,可以現在使用``pacman -S``進行安裝 ::: #### 設定時區 輸入 ``` ln -sf /usr/share/zoneinfo/%Region%/%City% /etc/localtime #設置時區 ``` ``%Region%``換為``Aisa``,``%City%``則換為``Taipei`` 執行[hwclock](https://man.archlinux.org/man/hwclock.8)生成/etc/adjtime ``` hwclock --systohc ``` 此指令假定硬體時間已被設定為UTC時間。 :::danger * 後續可能產生[雙系統時間問題](#雙系統時間不一致) ::: #### 添加語系 編輯``/etc/locale.gen``,將自己會用到的語言註解``#``消除,<font color="red">注意``en_US.UTF-8 UTF-8``一定要消除註解</font>;以下是我添加的語言,以供參考 ``` #英語 en_US.UTF-8 UTF-8 #簡體字 zh_CN.GB18030 GB18030 zh_CN.GBK GBK #繁體字(全,這邊無完整列出 zh_TW.EUC-TW EUC-TW zh_TW.UTF-8 UTF-8 ``` 接下來執行 ``` locale-gen #生成locale訊息 ``` 然後創建``/etc/locale.conf``文件 ``` vim /etc/locale.conf #建立文件 ``` 加上``LANG``語言環境,設為英語``en_US.UTF-8`` ``` LANG=en_US.UTF-8 #文件中加上此行 ``` #### 配置網路 創建``/etc/hostname``文件設置主機名稱 ``` vim /etc/hostname #建立文件 ``` 填入想要設定主機名稱 ``` %my_hostname% #文件中加上此行 ``` 接著添加對應項目到 ``` vim /etc/hosts #編輯/etc/hosts ``` 寫入以下內容,將``%my_hostname%``換成剛剛設定的主機名稱 :::info 如果是使用永久ip,請將以下的``127.0.0.1``換成永久ip位置 ::: ``` 127.0.0.1 localhost ::1 localhost 127.0.1.1 %my_hostname%.localdomain %my_hostname% ``` #### Initramfs 根據[鳥哥linux](http://linux.vbird.org/linux_basic/0510osloader.php#startup_loader)的說明,initramfs是linux在開機過程中不可或缺的**Initial RAM Filesystem**檔案系統,簡單介紹運作原理: 當bios藉由MBR(利用INT13中斷功能讀取MBR區塊)指向linux的boot sector,讀取boot loader後,boot loader會讀取``/boot``中的linux kernel,並解壓縮到主記憶體中,這時linux kernel開始接管bios後的開機工作,**它會自己再一次偵測周邊硬體,不一定會採用bios讀到的硬體資訊**,因此必須掛載根目錄``/``到SATA硬碟上來載入``/lib``中的核心模組(驅動程式),此時問題出現了,<font color="red">**linux kernal在沒有載入驅動的情形下根本不認識SATA硬碟,而驅動程式又在硬碟中**</font>,那該怎麼辦? 虛擬檔案系統(Initial RAM Disk/Initial RAM Filesystem)便是解藥,一般使用的檔名為``/boot/initramfs`` 或 ``/boot/initrd``,此檔案像kernel一樣,可以透過boot loader載入到記憶體中,並在記憶體模擬一個根目錄,**而且這一個檔案系統可以提供一支用來載入開機時必要核心模組(驅動)的程式**,通常這些模組就是 USB, RAID, LVM, SCSI 等檔案系統與磁碟介面的驅動程式,等載入完成後,它會幫助kernel重新呼叫systemd,完成開機流程,下圖為簡易圖解: ![](https://i.imgur.com/0XmzhHV.png) 回到安裝流程,官方wiki說在安裝kernel時,initramfs已經建立,可以先到``/boot/initramfs``查看,若需要手動安裝,輸入 ``` mkinitcpio -p linux #建立initramfs ``` #### 設定root密碼 輸入 ``` passwd #設定root密碼 ``` 來設定root帳戶密碼 #### 安裝開機引導程式 純粹因為覺得rEFInd介面好看又有[多種主題](https://github.com/topics/refind-theme)(grub好像也有自訂主題功能了)可供參考,所以就毫不猶豫地裝下去了:smile: ``` pacman -S refind-efi # 下載rEFInd套件 refind-install # 安裝rEFInd vim boot/refind_linux.conf # 編輯開機選單 ``` 將文件中前兩行註解掉 ``` #"Boot with standard options" "archisobasedir=arch archisolabel=ARCH_xxxxxx" #"Boot to single-user mode" "archisobasedir=arch archisolabel=ARCH_xxxxxx single" "Boot with minimal options" "root=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" ``` #### 連網 等等重開機前會先拔掉USB,就不能用iwd了,所以必須先安裝網路服務 ``` pacman -S networkmanager #安裝 networkmanager ``` :::danger 注意重開機前一定要先安裝好網路服務,不然等等拔掉USB後甚麼事情都沒辦法做,還要再重新用Live USB安裝網路服務(若走到這步要記得``arch-chroot /mnt``再裝) ::: ### 重開機 最後確認磁區掛載、網路服務等等都沒問題後,就可以重開機啦 :::danger :warning:若在開機或未完成關機狀態下拔出USB,可能會造成錯誤,建議**先完全關機後再拔出** ::: ``` exit #先退出chroot ``` ``` poweroff #關機,拔出USB再開機即可 reboot #重新開機,如果相信自己的手速可以試試 ``` ## Arch Linux 安裝後工作 ### 重建refind_linux.conf 輸入 ``` mkrlconf --force #強制重建boot/refind_linux.conf檔案 ``` 重建後的refind_linux.conf ``` "Boot with standard options" "ro root=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" "Boot to single-user mode" "ro root=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx single" "Boot with minimal options" "ro root=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" ``` :::info **[refind後續相關設定](#rEFIend相關設定)** ::: ### 確認網路環境 前面已經安裝過``networkmaneger``,若忘記安裝可以透過Live USB再安裝即可,但我還沒踩過這坑,有遇到再補充;先執行 ``` systemctl enable NetworkManager #設定開機自動啟用 systemctl start NetworkManager #啟用netmanager systemctl enable --now NetworkManager #start指令行不通可以試試這個 ``` 若是使用有線網路,應該已經可以連線,若是筆電使用wifi環境,執行 ``` nmtui #進入networkmanager TUI ``` 選擇wifi連線 若``ping``有回應,網路環境即搭建完成。 ### 新增使用者&授權 #### 新增使用者 日常操作應使用非root使用者進行,且我們**無法利用root進入圖形介面** 將下面的``%my_user%``和``%my_group%``改為自己的命名 ``` useradd -G wheel %my_user% #新增使用者 passwd %my_user% #設定使用者密碼 chfn %my_user% #添加使用者信息,可暫時不填 mkdir -m 700 /home/%my_user% #創建主目錄 chown %my_user%:%my_group% /home/%user% #修改使用者與使用者群組 ``` #### 授權使用者 為了能夠讓新的使用者``sudo``,我們要修改``/etc/sudoers``文件 ``` pacman -S sudo #若已安裝可跳過 vim /etc/sudoers #開啟sudoers文件 ``` 新增以下文字到``root ALL = (ALL) ALL``下方,``%my_user%``為使用者名稱 ``` %my_user% ALL = (ALL) ALL #新增使用者 ``` ### 安裝圖形介面 使用``Xorg``啟用桌面環境 ``` pacman -S xorg ``` #### 圖形介面選擇 這邊只列出KDE Plasma,另有Gnome可以選擇,不過因為聽說Gnome較吃效能,所以先選用KDE KDE有三種安裝包,這邊全部列出,我選用的是最簡易的``desktop``版本 ``` pacman -S plasma #基本包 pacman -S plasma-meta #完整包 pacman -S plasma-desktop #最簡安裝包 ``` #### 安裝啟動器 KDE Plasma使用``SDDM``登入啟動器 ``` pacman -S sddm ``` :::danger :warning:如果是雙顯卡,先別進入圖形介面,可能會造成顯卡衝突,建議先安裝下列驅動和切換器 ::: ### 安裝顯示驅動 因為我的筆電是Intel內顯+Nvidia獨顯,所以除了安裝兩廠的驅動外,還要安裝切換驅動方式的``Optimus-Manager`` #### 顯示驅動 ``` sudo pacman -S xf86-video-intel #intel內顯驅動 sudo pacman -S nvidia #nvidia驅動 nvidia-prime nvidia-settings nvidia-utils opencl-nvidia lib32-nvidia-utils lib32-opencl-nvidia ``` #### yay安裝 這邊要開一個小支線,因為網路上幾乎都是透過``pacman``來安裝``Optimus-Manager``,但這必須要連得上中國的CN鏡像源才可以,所以改由透過非官方的``yay``軟體包管理來安裝,首先因為``yay``要從``github.com``上下載安裝,所以先安裝``git`` ``` pacman -S git #安裝git套件 ``` 接下來到``/opt``目錄``clone``安裝包 ``` cd /opt #到/opt目錄 sudo git clone https://aur.archlinux.org/yay.git #clone安裝包 ``` ``clone``完後變更所有者名稱 ``` sudo chown -R %my_user%:%my_group% ./yay #變更所有者 ``` 結束後進入目錄,``makepkg -si``編譯 ``` cd /opt/yay #進入目錄 makepkg -si #開始編譯 ``` :::danger :warning:``root``帳號不能執行``makepkg``指令,請利用其他非``root``使用者帳號執行 :warning:如果安裝時跳出``build()``錯誤,可能是因為使用者帳號沒有對該資料夾(通常為``/usr/%my_user%``)執行``mkdir``的權限,請重新執行``sudo chown -R %my_user% /home/%my_user%`` ::: #### 安裝Optimus-Manager 利用``yay``進行安裝 ``` yay -S optimus-manager #安裝optimus-manager yay -S optimus-manager-qt #安裝圖形化工具 ``` :::danger 本部份遇到無解問題(無法正常執行),不過顯示方面並無出現問題。 ::: :::info 更新(**含雙螢幕設定**): 若需要切換顯示狀態,可以先輸入 ``` prime--offload ``` 再輸入 ``` optimus-manager --switch nvidia #切換至獨顯(雙螢幕) optimus-manager --switch intel #切換至內顯 optimus-manager --switch hybrid #切換至混合模式(有一定機率crash) ``` ::: #### SDDM登入啟動器 ``` pacman -S sddm konsole #安裝sddm和圖形界面終端機 systemctl strat sddm #啟用圖形界面 systemctl enable sddm #設定開機自動啟動(若未安裝konsole先不要設定) ``` :::success :smile:至此已經完成必要的系統&圖形界面安裝,其餘有關Arch linux的相關應用程式安裝會詳細說明於[Arch Linux常用應用程式+系統配置](/V5Wv9I96QAOfzrxospHOtA)。 ::: ## rEFIend相關設定 ### 主題設定 rEFIend界面的config設定會在``/boot/EFI/refind/refind.conf``中進行修改 ``` sudo vim /boot/EFI/refind/refind.conf #編輯refind.conf ``` ``refind.conf``中有許多可以修改的地方,詳情可以在[conf.option](https://www.rodsbooks.com/refind/configfile.html#adjusting)中了解,我只修改了``timeout``和``include``。 #### 主題分享 陸續在github上看了幾個主題,分享在此 [refind-theme-regular](https://github.com/bobafetthotmail/refind-theme-regular) [rEFInd-glassy](https://github.com/Pr0cella/rEFInd-glassy) [rEFInd-Theme](https://github.com/initramfs/rEFInd-Theme) :::danger :warning:在設定主題的過程中,發現在**Linux環境**中不管怎麼修改``refind.conf``都行不通,重裝rEFInd也不行,折騰一週後:cry:,在windows修改成功惹, ``cmd``中輸入 ``` mountvol Z: /s #掛載EFI分區 Z: #進入分區 ``` 發現windows中看到的EFI分區和Linux中的EFI不同(修改時間為第一次安裝rEFInd的時間,而非重新安裝的時間:question:),這時再輸入 ``` cd /EFI/refind/ #進入refind資料夾 notepad refind.conf #修改refind.conf ``` 發現修改後有效,但在後續``kernel panic``重裝後在Linux修改又恢復正常,WTF。 ::: ### 在windows中設定refind開機引導 **若想在windows環境中變更開機引導**,在``cmd``中輸入 ``` mountvol Z: /s #掛載EFI分區 bcdedit #查看windows開機資訊 ``` ![](https://i.imgur.com/vUF9rhZ.png) ``path``欄位即為開機引導的efi檔位置,接著確認``Z:/EFI/refind/refind_x64.efi``路徑位置,輸入 ``` Z: #進入EFI分區 bcdedit /set {bootmgr} path \<path>\<to>\refind_x64.efi ``` 再輸入``bcdedit``確認``path``欄位是否變更成功。 ## 後續問題 ### 雙系統時間不一致 這邊還沒有很懂,先上[官方wiki](https://wiki.archlinux.org/title/System_time_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)),提供不少知識,看完補上原理 根據wiki,不改linux系統時間,變更windows採用UTC時間,進入``regedit``創建``DWORD``值 ``` HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\RealTimeIsUniversal ``` 並設置十六位元值``1``,Linux維持預設,應該可以獲得解決。 ### Arch Linux開機時間過久 安裝後發現開機時會在畫面出現``a start job is running for dev-disk-by... (1min 30s)``,爬文後發現是swap space沒有啟用,解決方法如下 查看swap是否被掛載 ``` mount ``` 發現swap space沒有被掛載,所以出現錯誤訊息 查看各磁區UUID ``` sudo blkid #記下真實swap磁區UUID sudo vim /etc/fstab #查看swap磁區UUID ``` 發現兩個UUID不同,**把fstab中的swap UUID改成``blkid``中所得的swap UUID即可**;重開系統,錯誤訊息消失。 ### Kernel Panic錯誤 在一次系統更新的過程中導致Kernel Panic產生,開機時跳出錯誤訊息``Kernel Panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)``,是**因為缺少更新後的新版核心所對應的[initramfs](#Initramfs)**,爬文後觀察到的解決辦法為 1. 從開機引導中選擇另外一個kernel進入系統,但我只裝一個(不太對)。 2. 檢查[``fstab``](#fstab)是否正常。 3. 更新initramfs 利用Live USB開機,接著``mount``各磁區(記得先從``/mnt``開始,如果忘記編號可以用``cfdisk``確認),接下來 ``` arch-chroot /mnt #進入磁區 sudo update-initramfs -u -k %version% #更新版本(%version填入對應版本%) ``` 因為怕搞錯版本,我沒有使用更新指令,而是輸入安裝時的指令 ``` mkinitcpio -p linux #建立initramfs ``` 重開機後還是不行,我決定重裝kernel ``` cd /boot #進入/boot目錄 rm -f vmlinuz #須注意-f為強制刪除檔案 pacstrap /mnt linux linux-firmware #若沒有在系統內安裝pacstrap,則要先exit退出系統 ``` :::danger :warning: 重裝kernel雖然修正了kernel panic問題,但開機時會出現``Segmentation fault``,不影響使用,會持續觀察後續狀況。 ::: ## 參考資料 陸續參考許多資料,依照主題附錄在此。 ### Arch Linux + Windows 10雙系統安裝 [arch linux官方wiki安裝教學(**強烈建議先看過此篇**)](https://wiki.archlinux.org/title/Installation_guide) [Archlinux 安裝 Part 1 - Windows & Archlinux 雙系統](https://huangno1.github.io/archlinux_install_part1_basic/) --> <font color="red">**大推超詳細!!!**,[blog](https://huangno1.github.io/)中還有安裝後續的設定等等,非常值得一看!!!</font> [交大資工arch linux鏡像站](http://archlinux.cs.nctu.edu.tw/) [Dual boot Arch Linux and Windows the right way](https://medium.com/swlh/dual-boot-arch-linux-and-windows-the-right-way-7f59969f7525) [[分享] Arch Linux與Win10雙系統基本安裝流程](https://www.ptt.cc/bbs/Linux/M.1522870468.A.155.html) [Arch Linux + KDE安装教程](https://www.jianshu.com/p/7c2ab582e13d) [2021 Archlinux双系统安装教程(超详细)](https://zhuanlan.zhihu.com/p/138951848) [[筆記]Arch安裝過程筆記](https://snsd0805.github.io/jekyll/update/2019/07/01/%E7%AD%86%E8%A8%98-Arch%E5%AE%89%E8%A3%9D%E7%AD%86%E8%A8%98.html) [Arch Linux 安裝筆記](/6blSObqrSxqsodtptKtTGg) ### 顯示雜症 [ArchLinux KDE安装Nvidia显卡驱动](https://cloud.tencent.com/developer/article/1745686) [Archlinux上Nvidia和Intel双显卡切换方案记录](https://www.jianshu.com/p/e5ecc2e72553) ### rEFInd [The rEFInd Boot Manager by Roderick W. Smith](https://www.rodsbooks.com/refind/)--> **最完整教學,必看!!!** [Installing refind from Windows 10](https://schdck.github.io/Installing-refind-from-Windows-10) [rEFInd引导使用教程](https://zhuanlan.zhihu.com/p/67114559) [使用rEFInd来引导多个操作系统](https://www.codenong.com/cs106485785/) ### KDE Plasma設定 這邊的設定會在[Arch Linux常用應用程式+系統配置](/V5Wv9I96QAOfzrxospHOtA)介紹 [Plasma 5 on Arch Linux – Install and Configure](https://averagelinuxuser.com/plasma-5-on-arch-linux-install-and-configure/) [Arch Linux with KDE Plasma Installation Guide](https://github.com/XxAcielxX/arch-plasma-install) ### kde theme https://github.com/vinceliuice/Layan-kde