個人記錄:超完整Windows + Arch(lvm on luks)雙系統安裝
安裝環境
- 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
喜歡我的作品嗎?別忘了給予支持與讚賞,讓我知道在創作的路上有你陪伴,一起延續這份熱忱!