Arch Linux
安装双系统
准备一个u盘,用于装载arch安装程序
下载一个arch的镜像(最新版即可,滚动更新)
烧录进u盘中
安装arch
修改bios进入u盘搭载的安装辅助镜像
联网
使用iwctl进行连接WiFi, 或者直接连接有线网(推荐)
station <name> scan
station <name> get-networks
station <name> connect <essid>修改时区
timedatectl set-utp true
timedatectl status分盘
使用fdisk -l查看分区,找到想要挂在的盘,记录分区编号(一般都是/dev/nvme0n1px,其中x表示数字)
使用cfdisk /dev/nvme0n1进入tui界面, 进行分盘.
一般分盘swap需要16G, 主目录自由分盘. 不需要手动创建/home的分盘(后续可以使用Btrfs的subvolume进行区分)

找到对应的free space, 然后new(按下Enter键选择下方的菜单, 左右键切换下方的菜单, 上下键切换上方的partition)
然后对于new的partition可以选择type, swap分区需要选择Linux swap类型, 普通的目录保持Linux filesystem即可
格式化
对于swap分区(以上图为例, 注意硬盘和partition的序号):
# create swap partition
mkswap /dev/nvme0n1p<*>
# mount swap
swapon /dev/nvme0n1p<*>对于Linux filesystem分区, 这里使用Btrfs作为文件系统:
mkfs.btrfs -f /dev/nvme0n1p<*>Warning
这个操作会强制抹掉所有内容, 谨慎操作
挂载
使用Mount指令
# mount main filesystem
mount /dev/nvme0n1p<*> /mnt
# mount efi partition
mount /dev/nvme0n1p1 /mnt/efi --mkdir注意efi分区的挂载路径/mnt/efi是可以改的, 只要在/mnt里即可, 但是后面需要注意路径
安装基础软件
arch linux的安装是基于Pacman的, 包括pacstrap也是使用pacman进行安装. 因此所有对pacman的配置都会起作用.
换源(加速):
使用nano(因为启动盘中没有自带Vim)编辑/etc/pacman.d/mirrorlist, 添加两行(最上面):
Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch
修改pacman.conf配置:
编辑/etc/pacman.conf文件:
- 解除
Color一行的注释: 允许pacman安装指示界面有颜色 - 解除
ParallelDownloads = 5一行的注释: 允许并行下载. 在下载小文件的时候能够利用大宽带 - Optional: 添加一行
ILoveCandy: 变成进度条吃豆人的样式 - 取消掉
[multilib]和下一行Include = /etc/pacman.d/mirrorlost的注释: 允许multilib这个库的软件安装
# Misc options
#UseSyslog
Color
#NoProgressBar
CheckSpace
#VerbosePkgLists
ParallelDownloads = 5
DownloadUser = alpm
#DisableSandbox
ILoveCandy
...
[multilib]
Include = /etc/pacman.d/mirrorlist开始安装对应软件:
pacstrap -K /mnt base base-devel linux linux-headers linux-firmware nano vim sudo intel-ucode bluez bluez-utils grub efibootmgr os-prober networkmanager resolvconf iwd dhcpcd ntfs-3g btrfs-progsbase,base-devel: 基础安装包, 包含一些编译命令, 如makepkg,make等linux,linux-headers,linux-firmware: System本体和硬件管理. 还有别的版本如linux-zen+linux-zen-headers性能优化内核 /linux-lts+linux-lts-headers长期支持的内核 等等nano,vim: editorsudo: permission controlintel-ucode/amd-ucode: 对于不同CPU的架构, 安装对应的ucode. microcode为CPU提供安全性和bug的补丁bluez,bluez-utils: 蓝牙grub,efibootmgr,os-prober: grub相关, 配置开机BIOS相关内容networkmanager,resolvconf,iwd,dhcpcd: 网络配置ntfs-3g,btrfs-progs: 文件系统驱动
配置自动挂载
在启动的时候, 所有linux的文件(以及内核等)都存在与/dev/nvme0n1p<*>中. 想要运行linux, 需要进入这个盘, 所以在启动的时候需要挂载这个盘才能正常进入linux. 包括一些swap分区和efi分区, 都需要在启动的时候自动挂载. 因此使用genfstab命令配置自动挂载:
genfstab -U /mnt >> /mnt/etc/fstab注意此时还是在U盘的启动配置中, 没有进入Arch Linux本体
配置Arch Linux
安装完基础软件之后, 需要配置linux系统, 使其能够正常运行.
使用arch-chroot以root身份进入linux系统(/mnt是之前挂载系统的位置):
arch-chroot /mnt时区
由于是双系统, 因此windows和linux的时区设置可能有所不同, 详细问题解决方案参考时区问题
设置对应地区的时间(中国时区设置为Shanghai):
# setup time zone
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localetime
# sync hardware clock
hwclock --systohc上述命令需要root权限, 但是由于是arch-chroot进入的系统, 本是是root身份, 因此无需sudo
更改语言
编辑/etc/locale.gen文件, 取消需要生成文字的类型前的注释:
...
#zh_CN.GBK GBK
zh_CN.UTF-8 UTF-8
#zh_CN GB2312
...
(推荐使用en_US.UTF-8 UTF-8和zh_CN.UTF-8 UTF-8)
然后生成对应的locale信息:
locale-gen然后编辑/etc/locale.conf, 写入需要的语言, 如:
LANG=en_US.UTF-8
修改用户信息
首先修改hostname: 在文件/etc/hostname写入的内容就是hostname, 是这台计算机的名称
修改root用户的password:
# run this command with root user
passwduseradd -m -G wheel -s /bin/fish <username>表示创建一个wheel group的用户<username>, 默认的shell是/bin/fish. 如果没有设个shell, 可能会报一个警告, 但是无需理会
修改新用户的密码(这个新用户是日常使用的用户):
passwd <username>修改用户权限: 使用visudo, 是使用vim对/etc/sudoers文件的编辑, 但是配备了语法检查:
visudo
# or
vim /etc/sudoers将%wheel ALL=(ALL:ALL) ALL这一行的注释删除:
## Uncomment to allow members of group wheel to execute any command
%wheel ALL=(ALL:ALL) ALL
配置内核initramfs
initramfs: initial RAM filesystem
在启动过程中, 会将内核和initramfs的内容加载. 使用initramfs的原因是: 对于不同的文件系统和磁盘布局, 需要不同的内核模块, 因此使用initramfs进行内核模块的加载
编辑/etc/mkinitcpio.conf, 找到HOOKS部分, 添加brtfs:

后期配置nvidia的时候会再次修改这个文件
在每次修改配置之后, 需要手动生成一边initramfs:
mkinitcpio -P配置grub启动项
在启动的时候, 需要给内核传递参数. 比如说, nvidia显卡的modeset, 等等.
包括启动grub界面的美化, 也需要配置.
配置启动项:
编辑/etc/default/grub文件, 然后去掉最后一行的GRUB_DISABLE_OS_PROBER=false的注释(让disable os-prober=false, 即允许os-prober):

安装grub:
grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=grubTip
target对应的是电脑型号, 如果是32bit的电脑, 使用x86-efiefi-directory对应的是之前/dev/nvme0n1p1mount的位置, 即windows system盘挂载的位置.bootloader-id可以任意取, 但是不能是EFI等, 推荐使用grub,GRUB,Grub等等
应用grub配置:
在修改/etc/default/grub文件之后, 必须应用这个配置, 写入到bios中, 才能真正使用这个配置:
grub-mkconfig -o /boot/grub/grub.cfgTip
- 如果你是第一次运行这个命令, 那么
grub.cfg文件是不存在的, 但是/boot/grub文件夹一定存在, 可能和bootloader-id有关- 第一次可能找不到windows的boot manager, reboot之后重新运行上述命令即可找到(可能需要
sudo权限)
现在可以重新启动, 即可进入user用户使用linux
添加桌面环境
部分必要软件:
# update index database and upgrade softwares
sudo pacman -Syyu
# install softwares
sudo pacman -S git zsh fish openssh
# chinese font
sudo pacman -S adobe-source-han-sans-cn-fontsNvidia
“F**k you, Nvidia!”
对于N卡用户, linux的支持非常不友好, 需要巨多配置:
检查显卡
lspci -k | grep -A 2 -E "(VGA|3D)"如果这里出现了问题(点名amd显卡), 那么可能是没有安装对应驱动
安装nvidia驱动
sudo pacman -S nvidia-dkms nvidia-utils nvidia-settings配置nvidia驱动
修改/etc/default/grub: 在GRUB_CMDLINE_LINUX中写入nvidia_drm.modeset=1, 然后运行sudo grub-mkconfig -o /boot/grub/grub.cfg:
GRUB_CMDLINE_LINUX="nvidia_drm.modeset=1"
修改/etc/mkinitcpio.conf, 在MODULES中写入nvidia nvidia_modeset nvidia_uvm nvidia_drm, 然后在HOOKS中删除kms:
MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm)
...
HOOKS=(base udev autodetect microcode modconf keyboard keymap consolefont block filesystem btrfs fsck)然后重新生成initramfs:
sudo mkinitcpio -P现在linux的配置基本完成, 可以在tty中使用. 但是没有gui桌面环境. 下面开始配置window manager:
Hyprland
sudo pacman -S hyprland kitty sddm然后开启sddm:
sudo systemctl enable sddmTip
注意这里
sddm默认WM(左上角)的是Hyprland(...), 需要点击下拉框换成Hyprland才能正常进入
I3wm
使用lightdm作为启动界面:
# xorg server, using x11 environment
sudo pacman -S xorg xorg-server
# install startup page and i3
sudo pacman -S lightdm i3status i3
# install necessary softwares
sudo pacman -S alacritty rofi feh picom polybar然后开启lightdm:
sudo systemctl enable lightdmSwaywm
Warning
未经验证
使用sddm:
# using wayland, auto install dependencies
sudo pacman -S sway sddmBug
这里使用sddm会有问题(似乎是对于nvidia显卡), 需要使用—unsupported-gpu才能进入