# Arch Linux 和 Windows 11 双系统 **Published by:** [bgeer](https://paragraph.com/@bgeer/) **Published on:** 2023-04-24 **URL:** https://paragraph.com/@bgeer/arch-linux-windows-11 ## Content https://archlinux.org/download/ 请自行前往Arch官网下载镜像,并使用 Rufus 制作启动盘。 注意分区类型为 GPT 而非默认的 MBR,写入方式为推荐的 ISO。0.准备阶段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选择剩下的 220GB,选择 New,给家分区分配剩下的空间,选择 Type,设定分区类型为 Linux home。修改Type类型为Linux home选择 Write,输入 yes 回车:(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 生成 grub.cfg:第一次执行并不会找到Windows Boot,重启之后再次执行即可找到grub-mkconfig -o /boot/grub/grub.cfg 完成安装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前的注释(#)。 基本安装到处 ## Publication Information - [bgeer](https://paragraph.com/@bgeer/): Publication homepage - [All Posts](https://paragraph.com/@bgeer/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@bgeer): Subscribe to updates