个人记录:超完整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