Cover photo

Arch Linux 和 Windows 11 双系统

https://archlinux.org/download/

请自行前往Arch官网下载镜像,并使用 Rufus 制作启动盘。

注意分区类型为 GPT 而非默认的 MBR,写入方式为推荐的 ISO。

0.准备阶段

windows禁用快速启动和休眠

windows禁用快速启动和休眠
windows禁用快速启动和休眠

时间表示标准统一

Windows 默认使用的时间表示标准为 localtime,Arch Linux 默认为 UTC。在此修改 Windows 的为 UTC 以保持统一,Windows 11 中执行如下命令。

reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_DWORD /f

重新启动 Windows 11 生效。

BIOS 设置确认

启动盘插入电脑,重启电脑,同时不停按 DEL 进入 BIOS,确认以下几点:

  • 引导模式为 UEFI;

  • 禁用 Secure Boot;

  • 如果硬盘是 NVMe 的,硬盘的启动方式需为 AHCI。

从 U 盘启动

启动项选择界面,键盘上下键选择带“EFI”“USB”字样的,F10 保存退出 BIOS。

1.正式进入Arch Linux安装

设置引导镜像root密码

执行后输入两次密码就可以了 (输入密码不显示)

查看要安装archlinux电脑的IP

另一台电脑连接要安装archlinux的电脑

ssh root@ip

以上步骤可省略,直接在本机运行也可,只是要手动敲代码而已

验证引导模式

要验证引导模式,执行下列命令列出 efivars 目录。

ls /sys/firmware/efi/efivars

如果命令结果显示了目录且没有报告错误,则系统以 UEFI 模式引导。

连接无线网(可选)

rfkill unblock wifi                       	 #解锁无线网卡
iwctl                                    	 #执行iwctl命令,进入交互式命令行
device list                               	 #列出设备名,比如无线网卡看到叫 wlan0
station wlan0 scan                        	 #扫描网络
station wlan0 get-networks                	 #列出网络 比如想连接YOUR-WIRELESS-NAME这个无线
station wlan0 connect YOUR-WIRELESS-NAME   	 #进行连接 输入密码即可
exit                                      	 #成功后exit退出

更新系统时间

使用 timedatectl 确保系统时间是准确的:

timedatectl set-ntp true        		#将系统时间与网络时间进行同步
timedatectl status              		#检查服务状态

建立硬盘分区

查看分区情况:

我的硬盘名字为 nvme1n1,使用 cfdisk 进行管理:

cfdisk /dev/nvme1n1

找到安装arch的空闲空间,选择 New,首先是给根分区分配 32GB

自行分区
自行分区

接着选择 New,给交换分区分配空间(1~32G按需分配,我这里把多的8.9G分配给了swap),选择 Type,设定分区类型为 Linux swap

修改Type类型为Linux swap
修改Type类型为Linux swap

选择剩下的 220GB,选择 New,给家分区分配剩下的空间,选择 Type,设定分区类型为 Linux home。

修改Type类型为Linux home
修改Type类型为Linux home

选择 Write,输入 yes 回车:(write前请确保分区无误,该步骤会删除数据)

请确认无误后Write
请确认无误后Write

选择 Quit 退出。

格式化分区

fdisk -l                        #分区结束后, 复查磁盘情况,会发现多了3个新分区
mkfs.ext4 /dev/nvme1n1p5		#将根分区格式化为 ext4 格式
mkswap /dev/nvme1n1p6			#将交换分区格式化
mkfs.ext4 /dev/nvme1n1p7		#将家分区格式化为 ext4 格式

挂载分区

mount /dev/nvme1n1p5 /mnt		#将根分区所对应硬盘卷挂载到/mnt
swapon /dev/nvme1n1p6			#激活交换分区
mkdir /mnt/home					#建立目录 home
mount /dev/nvme1n1p7 /mnt/home	#将家分区所对应硬盘卷挂载到目录 home
fdisk -l						#查看硬盘,找到 EFI System 分区所对应硬盘卷为 nvme1n1p1
mkdir /mnt/boot					#建立目录 boot
mount /dev/nvme1n1p1 /mnt/boot	#将 EFI System 分区所对应硬盘卷挂载目录 boot

挂载是有顺序的,先挂载根分区,再挂载 EFI 分区

配置镜像

使用 reflector 来获取速度最快的 6 个镜像,并将地址保存至目录 mirrorlist。

reflector -c China -a 6 --sort rate --save /etc/pacman.d/mirrorlist

reflector 会为你选择速度合适的镜像源 ,但其结果并不准确,同时会清空配置文件中的内容。

可手动配置,编辑镜像源,选择ustc等国内源提到最前面。

vim /etc/pacman.d/mirrorlist

更新应用软件库(源),检查下载速度

pacman -Syy

安装系统及必需软件包

base/base-devel 软件包(base-devel在AUR包的安装是必须的)、 Linux 内核(可选linux 和 linux-headers)、常规硬件的固件、intel CPU 驱动

vim编辑器、bash补全工具、fish替代bash、networkmanager网络管理、wqy-zenhei中文字体,避免安装界面后乱码、ssh工具

pacstrap /mnt base base-devel linux-zen linux-zen-headers linux-firmware intel-ucode				
pacstrap /mnt vim bash-completion fish networkmanager wqy-zenhei openssh

出现如下报错是,之前安装过arch 去/mnt/boot下删除intel-ucode.img即可

error: failed to commit transaction (conflicting files)
intel-ucode: /mnt/boot/intel-ucode.img exists in filesystem
Errors occurred, no packages were upgraded.
==> ERROR: Failed to install packages to new root

2.配置系统

fstab

用以下命令生成文件 fstab(用-U设置 UUID):

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

检查生成的文件 fstab:

cat /mnt/etc/fstab

切换到装好的系统:

arch-chroot /mnt

时区

设置时区,在 /etc/localtime 下用/usr 中合适的时区创建符号连接。如下设置上海时区。

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

同步硬件时钟:

hwclock --systohc

本地化

编辑文件 locale.gen:

vim /etc/locale.gen

取消掉 en_US.UTF-8 UTF-8 和 zh_CN.UTF-8 UTF-8 前的注释(# 光标移动到当前行“#”符号上 按x删除)。

生成 locale 信息:

locale-gen

创建 locale.conf(5) 文件,设定 LANG 变量

echo 'LANG=en_US.UTF-8' > /etc/locale.conf

网络

创建文件 hostname,自定义设定主机名

vim /etc/hostname

ArchOS					#加入你想为主机取的主机名

修改文件 hosts:

vim /etc/hosts

增加行如下(中间的空白用 tab 而非空格,ArchOS 替换为你自己的主机名)。

# Static table lookup for hostnames.
# See hosts(5) for details.

127.0.0.1       localhost
::1             localhost
127.0.0.1       ArchOS.localdomain            ArchOS
vim /etc/resolv.conf

删除已有条目,并将如下内容加入其中 (待测试)

nameserver 8.8.8.8
nameserver 2001:4860:4860::8888
nameserver 8.8.4.4
nameserver 2001:4860:4860::8844

固化文件

chattr +i /etc/resolv.conf

Root 密码

输入并确认密码(密码没有回显,输完直接回车即可)。

安装基本软件包

安装基本软件包,使用 GRUB 为启动器:grub是启动引导器,efibootmgr被 grub 脚本用来将启动项写入 NVRAM,os-prober用来识别其他操作系统

pacman -S grub efibootmgr os-prober mtools dosfstools ntfs-3g reflector git sudo

编辑文件 grub:

vim /etc/default/grub

修改GRUB_DEFAULT=2,默认windows开机

修改GRUB_TIMEOUT=10,默认等待10秒开机

修改GRUB_DISTRIBUTOR="ArchOS",默认名称改为ArchOS

去掉GRUB_CMDLINE_LINUX_DEFAULT一行中最后的 quiet 参数,同时把 log level 的数值从 3 改成 5。这样是为了后续如果出现系统错误,方便排错。同时在同一行加入 nowatchdog 参数,这可以显著提高开关机速度。

最后一行,取消掉 GRUB_DISABLE_OS_PROBER=false 前的注释(#)。

再执行以下命令:出现Installation finished. No error reported.即可

grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=Arch
post image

生成 grub.cfg:第一次执行并不会找到Windows Boot,重启之后再次执行即可找到

grub-mkconfig -o /boot/grub/grub.cfg
post image

完成安装

exit                           #退回安装环境
umount -R /mnt                 #取消挂载
reboot                         #重启

3.登入新系统

连接无线网

启动网络服务:有线直接连接

systemctl enable --now NetworkManager

设置 WiFi:

创建个人用户并授权

创建用户xxx,创建家目录,加入 wheel 组, wheel附加组可sudo,以root用户执行命令 -m同时创建用户家目录 ,指定 shell:

useradd -m -G wheel -s /bin/fish xxx

为用户 ql 设定密码:

编辑文件 sudoers:

EDITOR=vim visudo

取消掉%wheel ALL=(ALL:ALL) NOPASSWD: ALL前的注释(#)。

基本安装到处