個人記錄:超完整Windows + Arch(lvm on luks)雙系統安裝

七十七
·
·
IPFS
·

安裝環境

  • cpu:intel i5-10400
  • 主板:微星b460m mortar wifi
  • 硬盤: sata 英睿達500gb ssd + 西數藍盤1tb hdd
  • 顯卡:intel uhd 630 集顯

目標

  • Windows

c盤預留200gb,安裝在ssd,此外hdd預留30g放osu文件

  • Arch

ssd:/boot預留500mb,/root預留70gb,/home預留200gb,使用luks加密並扔到lvm裡

hdd:所剩的所有做成兩個系統可以共享的音樂/圖片/視頻盤

之所以是個人記錄而不是教程是因為網絡上關於arch的安裝教程太多了,我除了添加了加密,lvm,和ntfs-3g沒有對官網教程做出太大的改動。另外,這個記錄還包括了一些添加用戶,安裝圖形界面,解決時間混亂等更適合post installation的topic。


bios篇1

在啟動優先項裡把usb提前,並關掉fast boot和secure boot,確認bios模式是否是uefi。


windows篇

先安裝Windows會比較方便,安裝好以後進入系統先到disk manager裡把c盤壓縮到200gb,再為hdd建一個30g的simple volume。

之後進入控制面板,關掉電池選項裡的hibernation和fast startup。


arch篇1

進入arch後,首要的事是聯網。我使用的是wifi,所以這裡輸入

# iwctl

進入iwctl後,找到wifi設備

[iwd]# device list

掃描當下可連接的網絡

[iwd]# station wifi設備名稱scan

列舉網絡

[iwd]# station wifi設備名稱get-networks

連接後會要你的密碼,輸入再enter就可以了

[iwd]# station wifi設備名稱connect wifi的ssid

退出

[iwd]# exit

ping一下看看有沒有成功連上網,如果得到ping:name or service unknown的錯誤提示,可能是你的dns服務器沒配好。 “cat /etc/resolv.conf”檢查一下。

 # ping archlinux.org

檢查一下時鐘是否正確,正常的話是什麼都不會顯示的

# timedatectl set-ntp true

接下來我們可以愉快的syu了

# pacman -Syu

安裝一個等下馬上就會用到的包

# pacman -S ntfs-3g

現在可以開始分區了,首先先要給我的ssd分區(不清楚自己的設備名就輸入lsblk先看一下)

 # fdisk /dev/sda

進入fdisk後,輸入“n”新建分區;我因為有windows所以分區數字默認為5,默認enter;first sector直接默認enter,last sector寫“+500m”;這是我的boot分區。

輸入“n”新建第二個分區;這次的數字是6,默認enter;first sector和last sector都可以默認enter;這是我的lvm分區。然後輸入“t”來改變分區屬性,輸入“l”列出所有屬性,最後我們可以輸入Linux LVM前面的數字將它變為lvm。

確認沒錯了後輸入“w”保存並退出。這裡不需要efi分區因為我們可以直接把windows的拿過來用。

接著給hdd分區

# fdisk /dev/sdb

輸入“n”新建分區,然後全部默認,“w”保存並退出。

現在要開始加密我的lvm分區了,因為剛才配給lvm分區的數字是6,這裡輸入

# cryptsetup luksFormat /dev/sda6

輸入上面命令後luks會問你要一個密碼,成功後打開解密過後的容器。 cryptlvm是我給容器起的名字

# cryptsetup open /dev/sda1 cryptlvm

不放心的話可以再檢查一下有否加密成功

# ls /dev/mapper

加密好後就可以往上面疊lvm了,首先創建物理卷

# pvcreate /dev/mapper/cryptlvm

創建卷組。 vg0是我給卷組起的名字

# vgcreate vg0 /dev/mapper/cryptlvm

創建邏輯卷,這裡先給root分70g

 # lvcreate -L 70G vg0 -n root

然後把剩下的全部分給home

 # lvcreate -l 100%FREE vg0 -n home

分區建立完成後我們需要格式化分區。先把我的boot分區格式化為ext4

 # mkfs.ext4 /dev/sda5

然後是我的root

 # mkfs.ext4 /dev/vg0/root

還有我的home

 # mkfs.ext4 /dev/vg0/home

最後別忘了我的hdd分區。為了讓windows也能順利讀寫這個分區的內容,我們需要把它格式化為ntfs。 data_shared是我的disk label。

 # mkfs.ntfs -Q -L data_shared /dev/sdb3

格式化後需要一一掛載。請務必注意先掛載root,否則fstab會有錯誤

# mount /dev/vg0/root /mnt

創建boot文件夾

# mkdir /mnt/boot

掛載boot

 # mount /dev/sda5 /mnt/boot

創建home文件夾

# mkdir /mnt/home

掛載home

 # mount /dev/vg0/home /mnt/home

創建共享文件文件夾

# mkdir /data_shared

掛載我的ntfs分區

# ntfs-3g /dev/sdb3 /data_shared

掛載完畢後需要把你的分區信息全部寫入fstab

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

“cat /etc/fstab”來檢查有沒有檢測到所有的分區。 ntfs似乎是檢測不出來的,所以只好等之後添加了用戶再手動加入。

然後可以開始安裝了。我沒有改鏡像源,因為默認的對我來說已經夠快了

# pacstrap /mnt base base-devel linux linux-firmware linux-headers 

chroot進去

# arch-chroot /mnt

繼續下載之後也許需要的包

# pacman -S openssh networkmanager wpa_supplicant wireless_tools netctl nano lvm2 dialog git 

允許networkmanager開機自啟動,這樣就不用每次都要重連wifi了。記得注意大小寫

# systemctl enable NetworkManager

設置時間,首先找到你的時區

# timedatectl list-timezones

設置時區,我選了紐約

# timedatectl set-timezone America/New_York

同步硬件時鐘

# hwclock --systohc

設置locale

 # nano /etc/locale.gen

把下面這行的#去掉,有需要再添加其他

en_US.UTF-8 UTF-8

生成locale

 # locale-gen

創建修改locale.conf

 # nano /etc/locale.conf

寫入以下,其他不要寫

LANG=en_US.UTF-8

創建修改hostname,進去後給你的arch隨便取個名字,我就寫了myarch

 # nano /etc/hostname

修改hosts

 # nano /etc/hosts

添加下面這幾行

127.0.0.1 localhost
::1 localhost
127.0.1.1 myarch.localdomain myarch

我們需要再改一些系統文件讓lvm和luks能夠正常運作,首先修改mkinitcpio.conf

 # nano /etc/mkinitcpio.conf

找到沒有打“#”的一行hooks,然後在block和filesystems之間添加“encrypt”和“lvm2”

 HOOKS=(base udev autodetect keyboard keymap consolefont modconf block encrypt lvm2 filesystems fsck)

輸入以下重新創建initramfs

 # mkinitcpio -P

為root用戶創建密碼

# passwd

添加一個非root用戶,我建了一個叫rein的用戶

# useradd -m -G wheel rein

為這個用戶創建密碼

# passwd rein

給這個用戶授權

# EDITOR=nano visudo

找到寫了“uncomment to allow members of group wheel to execute any command”的那行,把那行的#去掉,這樣普通用戶就能跑sudo了

% wheel ALL = (ALL) ALL

可以開始下載配置grub了。從這一步開始請提起十萬分的警惕,否則修起來很痛苦

# pacman -S grub efibootmgr os-prober dosfstools mtools

修改grub文件讓luks能正常運作

# nano /etc/default/grub

找到以下這一行,在loglevel=3和quiet之間添加這樣一句。 /dev/sda6是我加密的設備,vg0是我的捲組名

GRUB_CMDLINE_LINUX_DEFAULT = "loglevel=3 cryptdevice=/dev/sda6:vg0:allow-discards quiet"

建立efi文件夾

# mkdir /boot/efi

把windows創建的efi分區掛載上去。我的efi在/dev/sda1

 # mount /dev/sda1 /boot/efi

安裝grub

 # grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=arch_grub

生成grub.cfg,這時候你可以閉眼祈禱grub能順利找到windows boot manager

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

退出chroot環境

# exit

取消掛載

# umount -a

重啟然後祈禱。我重啟後跳出來的是windows界面,因為bios裡我的windows boot manager是提前的,然後可能也因為我忘記了關secure boot。先不用擔心,進windows關機後再進bios修改

# reboot

bios篇2

確認secure boot是關著的,然後把啟動項裡的arch_grub提前


arch篇2

退出bios後,應該能看見grub菜單了。如果你想進windows的話一定要眼疾手快,否則會自動跳轉到arch。這裡我們先進arch。

配置正確的話luks會問你要密碼,密碼正確的話就可以順利進入系統。屏幕上會顯示myarch(這是你的hostname) login,輸入用戶名然後輸入密碼就能進去了。這里為了方便用root操作。

先進nmtui設置wifi

 # nmtui

成功後ping一下看看有沒有連上,然後我們需要修改剛剛沒改的fstab。在改之前需要知道我的id,rein是我的用戶名

# id rein

修改fstab

 # nano /etc/fstab

在最後一行寫以下內容。 /dev/sdb3是我的ntfs分區,/data_shared是我的掛載點,uid和gid是剛剛那行命令裡的結果

/dev/sdb3 /data_shared ntfs-3g uid=userid,gid=groupid,dmask=022,fmask=133,big_writes,windows_names 0 0

保存退出,現在安裝mesa。這裡不需要xf86-video-intel

 # pacman -S mesa

安裝圖形界面。我個人比較喜歡kde,所以安裝以下包。除非想要電腦堆滿一你輩子也不會去用的軟件,否則不需要kde-applications,之後所有軟件全部自己安裝

# pacman -S xorg sddm plasma-meta packagekit-qt5

允許sddm自啟動,這樣不用每次進tty手動允許就能看到登錄界面了

# systemctl enable sddm

重啟,祈禱

# reboot

我後來在windows裡縮減了一下共享文件分區的大小,然後在arch裡建了個ext4分區放備份。用了兩三個星期的arch,感覺還行,至少暫時沒掛過。圖像,wifi,藍牙等全能正常使用。

到此為止,祝大家能擁抱自己的arch


CC BY-NC-ND 2.0 授權

喜歡我的作品嗎?別忘了給予支持與讚賞,讓我知道在創作的路上有你陪伴,一起延續這份熱忱!