Arch Linux 與 Windows 雙系統安裝方法

Wu Yu Wei published on
11 min, 2087 words

Arch 其實我已經用好一陣子了,當時在安裝前就有想過裝好後就要寫個文章還願一下,畢竟在這過程中也受益於不少社群的幫助,但是安裝時忘了一一截圖所以後來就懶了。現在想起來覺得還是該寫一下算是有個交待。首先,如果你的電腦沒有啥特別的需求像是一定得玩遊戲之類的,我是覺得可以直接裝任一 Linux 發行版了,畢竟現在是個什麼都是 Web app 或 Electron 的時代,你常用的各式程式像是 Spotify 或 Discord 等在 Linux 上都絕對都能安裝,你會用到的 IDE 通常在 Linux 上的支援都會更完備,想省麻煩的話就直上 Linux 吧!不過說到底有時還是會有些不得不保留 Windows 的需求在,如果你想體驗看看輕量化且十分彈性的 Arch 並參與它熱絡的社群的話,希望這篇能幫助到大家。

事前準備

在開始之前,我誠心建議還是看一下 Arch 維基 Dual boot with Windows 的說明,下面等會會一一說明叫大家注意的,其實在這篇都有列舉出來。再來是兩個系統安裝的順序,我也是建議先安裝 Windows 在裝 Arch,而且在安裝 Windows 時最好將 boot partition 設為 512 MB 以上(預設好像會是 100 MB)。然後如果你是 Windows 8 以上應該都是用 UEFI,所以請記得關掉 Secure Boot,每家韌體的停用方法都會有點不一樣所以可能得自行搜尋一下。最後是到 Windows 控制台的的電源選項停用 Fast Startup 和 hibernation,這兩個預設應該都是開啟的。

製作 Arch Linux 安裝 USB

在這邊我預設大家是用 Windows 來製作,先到 Arch 官網下載,然後用 Rufus 製作安裝碟。如果你是 Linux 的話可以直接用 dd

如果你的電腦是 UEFI 在燒錄時就選擇「GPT Partition」(大多數 Windows 7 以上 應該都是這個),如果還是不是的話就選「MBR partition」。如果你完全不清楚的話可以按下「開始鍵 + R」,然後輸入 msinfo32,按下去之後應該會看到你的 BIOS 模式,如果顯示 UEFI 就選「UEFI-GPT mode」,如果是 Legacy 就選「BIOS-MBR mode」。

製作完後,就重開機然後開 BIOS 調整開機順序用讓 USB 先執行吧。一樣每個人開 BIOS 的按鍵通常也不一樣,就 del, F12, ESC 都按按看吧。

分割磁區

通常我們會開出三個 partition 給 Linux:/(root), [swap], /home/boot 在前面已經提過了而我建議是 512 MB 以上。這邊算是比較頭痛的地方,因為要開多少見仁見智。Arch 維基也有一篇在介紹該如何分割 Partitioning,不太確定該怎麽開的話可以參考看看。基本上來說會建議 root 開至少 20 GB 以上,swap 開跟你的 RAM 一樣的大小,剩下的全給 home。在開始分割之前先用 lsblk 確定你的硬碟:

$ lsblk
sda      8:0    0 465.8G  0 disk 
|-sda1   8:1    0   512M  0 part /boot
|-sda2   8:2    0    16M  0 part 
`-sda3   8:3    0   464G  0 part 

然後用 cfdisk 開始設置,以下是我設好後的樣子:

所以這些是我會用到的磁區,以下請依照你分割對應的磁區來輸入指令

  • /dev/sda4 : root
  • /dev/sda5 : swap
  • /dev/sda6 : home

格式化 Linux 磁區

分割好後再來就是格式化我們的 root 和 home 磁區,我這邊會繼續用 ext4,如果你想要的話也可以試試潮潮的 Btrfs:

$ mkfs.ext4 /dev/sda4
$ mkfs.ext4 /dev/sda6

建立 swap

$ mkswap /dev/sda5
$ swapon /dev/sda5

掛載磁區

所有磁區都設好後就可以掛仔他們了。

$ mount /dev/sda4 /mnt

$ mkdir /mnt/home
$ mount /dev/sda6 /mnt/home

$ mkdir /mnt/boot
$ mount /dev/sda1 /mnt/boot

開始安裝

萬事就緒!開始來安裝 Arch Linux 吧!

網路連線

如果你要用 wifi 的話,先用 wifi-menu 來選擇連線,不然直接 ping 即可測試:

$ wifi-menu
$ ping  -c 3 www.google.com

驗證與更新

這邊更新 gpg key 好讓 pacman (Arch 的套件管理工具) 可以驗證安裝套件:

$ pacman-key --refresh-keys

順便更新一下系統時間

$ timedatectl set-ntp true

開始安裝

接著就可以一路按 Enter 或 Y 直到安裝進行。你也可以再多裝 base-devel 不過我打算需要的工具再裝就好:

$ pacstrap /mnt base linux linux-firmware

產生掛載設定檔

Linux 需要除存掛載以便之後自動掛載:

$ genfstab -U /mnt >> /mnt/etc/fstab

Boot Loader 設定

接下來的步驟我們都可以切到我們的系統上進行了:

$ arch-chroot /mnt

我一開始是用 systemd-boot,但為了省掉一些麻煩我們還是用大家耳熟能詳的 GRUB 吧。我們會需要 grubefibootmgr

$ pacman -S grub efibootmgr

安裝 GRUB:

$ grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB

安裝 os-prober 讓 Windows 可以出現在 GRUB 的選單中:

$ pacman -S os-prober

掛載 Windows 的磁區,像我的是 /dev/sda3:

$ mkdir /mnt/windows10
$ mount /dev/sda2 /mnt/windows10

產生 grub 設定檔:

$ grub-mkconfig -o /boot/grub/grub.cfg

網路設定

我們希望開機後能夠自動連上網路:

$ pacman -S netctl wpa_supplicant dialog

如果你是用 wifi 的話,跟之前一樣:

$ wifi-menu

如果是用 LAN 的話:

$ systemctl enable dhcpcd@enp0s31f6.service

dhcpcd@ 後面要輸入的是你的 interface name,你可以用 ip linkls /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

系統設定

在設定其他東西之前,推薦裝一下自動補完,方便你輸入指令

$ pacman -S bash-completion

root 與使用者密碼

先設定 root 的密碼

$ passwd

到這邊為止你已經可以直接重開機了,不過想將設定一次到位的話,我們可以繼續下去

$ reboot

再來建立一個新的使用者並加入相對應的 group,這個會是你平時用來登入的使用者

$ useradd -m -g users -G wheel,storage,power -s /bin/bash yourusername
$ passwd yourusername

接著我們要讓 wheel group 的使用者可以用 sudo 執行管理員相關的任務,如果你不熟悉 vim 的話也可以用 nano 就好

$ EDITOR=vim visudo

找到這行並解除留言(去掉 # 符號)

%wheel ALL=(ALL) ALL

設定時間與語系

編輯語系檔案(一樣選你熟悉的編輯器)然後解除留言en_US.UTF-8 UTF-8,你也可以再選擇其他語系,以台灣來說的話就是找到 zh_TW.UTF-8 UTF-8 解除這行的留言:

$ vim /etc/locale.gen

接著用此檔案產生語系

$ locale-gen
$ echo LANG=en_US.UTF-8 > /etc/locale.conf
$ export LANG=en_US.UTF-8

時區

你可以用這個指令搜尋時區

$ ls /usr/share/zoneinfo/

當然你要是就在台北時區這樣設定就好了

$ ln -s /usr/share/zoneinfo/Asia/Taipei /etc/localtime

硬體時鐘

讓硬體時鐘在作業系統之間一致,以防它去複寫改變了顯示的時間

$ hwclock --systohc

Hostname

命名你的主機名稱,這邊我就只叫做 arch 就好:

$ echo arch > /etc/hostname

調整 mirror list

pacman-contrib 這個套件有個腳本 /usr/bin/rankmirrors 可以幫你排出最快的 mirror,不過要是嫌太麻煩的話就用 Pacman Mirrorlist Generator 吧!然後寫進這邊:

$ vim /etc/pacman.d/mirrorlist
Server = http://archlinux.cs.nctu.edu.tw/$repo/os/$arch

桌面環境

桌面環境想用那家一樣見仁見智,如果這些你打算自己摸索的話,那麽到這邊我們就算是告一段落了,已經可以開始你的 arch 探索之旅!不然這邊我們將還是先裝最大宗的 gnome,想找更多可以參考 Desktop environment,裡面也有台灣之光號稱最輕量的 LXDE/LXQT。

$ pacman -S gnome gnome-extra
$ systemctl enable gdm.service
$ systemctl start gdm.service

大功告成!恭喜!

References

  • https://wiki.archlinux.org/index.php/Dual_boot_with_Windows
  • https://gist.github.com/xtrymind/b895c640231adde21598d5188c75d4b5
  • http://lampjs.com/easy-installing-arch-linux-dual-boot-with-windows-uefi-for-beginners/