Archlinux+Windows 双系统安装教程(UEFI)2023.7
前言
之前的随笔本人提到过等有时间后写一篇关于manjaro与windows双系统安装的教程,但由于“这样那样的原因”,本人已不再使用manjaro,本人已经切换到archlinux的环境下,故本次的教程将主角换成了archlinux。
你需要具备的一些素质
1.能够自主地阅读 官方文档.,按照本人的教程不代表你不需要阅读官方的wiki,这样可以保证在你安装出现问题时,能够自主的解决问题。
2.对于计算机的基本知识,至少有linux的相关知识(常用的相关命令?)
3.一定的英语基础,能够简单的理解一些常用的单词,遇到报错时能反应过来。
4.一颗热爱折腾的心(确信
当然本人的本篇随笔是基于自己的使用情况来发挥的,如果读者遇到相关问题,由于本人实力有限,可能需要读者另请高明。本教程基于UEFI,UEFI引导很大程度上优于bios,所以本人遂采用了UEFI,但考虑到可能会有bios启动的相关需求(例如虚拟机可能会用到),本人也会在随笔中适当介绍bios的方法(实质上是大同小异的)。如果您完全不懂archlinux的安装,按照本文的命令安装下去一般情况下也能成功。在跟着本教程安装的时候,新人(linux)读者,可以学习到一部分的相关知识,但由于作者本人水平有限,大部分问题可能需要读者自主探索(疯狂叠甲)。
然后贴一张作者目前使用的archlinux环境
没错,本人就是原批(run
正文
一.archlinux镜像下载与刻录
安装一个System首先就要获得它的镜像文件,这个没什么好说的,(个人觉得中科大的源下载会更快一点),以及是对个人电脑的安装,所以请选择X86 64的镜像下载,而不是arm。
接下来刻录镜像,本人使用的刻录软件是Rufus按照自己的需求下载相应的版本。
可以选择更新,但其实影响不是很大
插入U盘[记得下拉]
这个不解释了
[引导类型选择里选用分区]
「持久分区大小」默认即可。「分区类型」,UEFI 引导选择「GPT」,BIOS 引导保持「MBR」。
其余的默认
[写入方式]选择DD写入
等待刻录完成
二.Windows系统下的准备
1.为archLinux分配空闲空间
考虑到只是简单的分配空闲空间,我们可以不用很专业的工具类似于DiskGenius的软件来分区,我们可以直接利用Windows自带的磁盘管理工具来进行分区。
对于windows,可以右键[计算机]或者[此电脑]选择[管理]-[磁盘管理]进入。
接下来,选择一个空间较大的磁盘压缩出一块空间(40G以上,不过40G的话安装不了什么软件了,推荐可以的话100G以上)。记住一定要是空闲空间,不要建立分区!!!
2.解锁磁盘加密
对于现在很多出厂的电脑都会默认加密磁盘,导致安装完linux无法进入Windows,这里我贴出Windows 11的方法,其他版本请移步互联网。
3.关闭安全启动以及快速启动
这个根据个人电脑的不同也有不同,读者请在互联网上搜寻,不同主板会有不同的名字一般会有[Secure Boot]以及[安全启动]等,按照自己的电脑进行设置。
4.U盘启动
同上,依据个人的电脑视情况而定,进入后大致会有两种情况
Bios启动
uefi启动
但无论是那种启动方式,我们都可以看到第一个启动项的Install,进去就完事了。
进去以后读者们可以得到一个用户名为[root@archiso]的一tty(小黑框,命令行)界面。接下来,我们将在这个页面下完成我们所有的安装。
三。正式开始安装Arch Linux
链接网络以及时间同步
- 如果你的电脑是有线网络的话,直接连接网线即可,无需多余的配置
- 如果你的电脑是有着无线网卡(例如笔记本等),可以使用wifi链接
考虑到只有wifi链接需要一点点步骤,本人在这里就只叙述WiFi的链接
接下来用到的命令行工具是iwctl
在使用该工具前,我们首先要确认自己的网卡是否被禁用
输入以下命令
rfkill list
如果出现了blocked: yes 字样,说明无线连接被禁用,接下来使用下述命令解锁网卡
rfkill unblock all
接下来就按照以下的命令开始联网
iwctl #进入iwctl命令行工具
device list #该命令是扫描你的设备的网卡名称,一般情况下是[wlan0]但还是以实际情况为准
station device scan #这里的device是上一步你得到的网卡名称,一般情况下是wlan0,这一步的命令是扫描你当前环境的无线网络
station device get-networks #device 同上,这一步是列举上一步所扫描到的网络
这一步如果不出现问题的话,应该会列举出你当前网络的名称,如果是一片空白,请回头检查命令是否有问题,如缺少空格之类的,另外网卡不支持archLinux也会遇到这种情况,这边建议用手机的USB连接电脑进行供网
station device connect 你的wifi名称 #这一步是连接网络,如果有密码的话接下来的那一步就是输入密码
密码不会显示是否正确,请保证输入正确
输入
exit
退出iwctl环境,如果不幸输入错误,退出后重新执行iwctl命令,按上述步骤
检查网络是否连接成功使用以下命令
ping www.baidu.com
如果有数据返回,那么就是连上网络了
输入以下命令同步linux时间(设置为UTC以及NTP时间同步)
hwclock --systohc --utc
timedatectl set-ntp true
磁盘分区
- 对于双系统而言,最麻烦的就是分区了,一不小心就会导致Windows分区被搞炸(包括引导问题),但按照我接下来的步骤一般情况下是没有什么问题的,当然接下来的分区完全是看个人的情况,本人只给出一些建议,当然,你可以按照我的步骤来安装也是没有问题的。
输入fdisk -l查看电脑目前的分区情况
接下来会出现/dev/sdx
这里的x不是真的就是x,而是依赖于你自己电脑的情况
如果你的电脑只有一个硬盘,你的输出结果应该只有 /dev/sda和/dev/sdb。
其中,/dev/sda代表的是你电脑的硬盘,/dev/sdb 则是你的启动盘(U 盘)。
/dev/sda 后的数字,如/dev/sda1,则代表/dev/sda 这个磁盘下的第几个分区。
当然如果你看到类似于/dev/nvme0n1说明你电脑应该至少有一块 NVMe SSD,如果你只有一个硬盘,那么他就是你的硬盘
同理如果看到类似于/dev/mmcblk0 那么说明你的电脑至少有一块有 eMMC 存储
这时你可以按照/dev/sda的方式安装,但具体磁盘因个人而异。
本人的电脑是Nvme SSD,当然这并不影响非Nvme的安装。
接下来我们使用
cfdisk /dev/yourdisk #这里的yourdisk指的是你的硬盘,一般情况下是最大的哪一个(单硬盘的话)
我们接下来就会看到一个小黑框,底部会出现这样的选择
[ Delete ] [ New ] [ Quit ] [ Help ] [ Write ] [ Dump ]
分别的意思为
[ 删除 ] [ 新建 ] [ 退出 ] [ 帮助 ] [ 写入 ] [ 转储 ]
我们需要用到的也就[删除] [新建] [退出] [写入]
看到上面,如果一切没有问题的话,是可以看到上面有绿色字体所写的free的空间,那就是我们要安装arch Linux的地方了(记得一定要是空间大一点的那个,u盘也会显示free注意甄别)
一切的选择操作皆使用方向键与回车键完成,接下来将简单讲解一些分区的原则
- /boot分区,用来存储启动信息,该分区一般 512M 足够。BIOS 引导可以不单独分这个分区,但是 UEFI 引导必须有该分区作为 EFI 分区。
- /swap分区,交换分区,该分区功能很多,不等同于 Windows 的虚拟内存,建议每一个用户至少创建一个 2G 大小的交换分区。该分区大小视电脑内存大小而定。一般选取自身电脑内存的四分之一即可,及本人电脑为16G,那么我将选择创建4G的swap分区
- /home分区(可选),即用户分区,用于存储用户的数据。该分区是用户自己数据存储的地方。如果你不单独分出 home 分区,则你的所有数据将仅存储在/mnt 分区。对于新手,建议不创建单独的 /home 分区;。
- /mnt分区,即根目录,储存用户的数据,如果你创建单独的/home 分区,则建议该分区大小不小于 20G,根据你的需求和剩余空间大小而定;如果不创建单独的 /home 分区,就把磁盘所有剩余空间留给 /mnt。
接下来贴一下arch Linux官方wiki给的分区建议,上面为UEFI,下面为Bios
先选中free的磁盘空间,选择New新建分区,手动输入大小(cfdisk网上教程很多,本人在这里不多赘述,唯一提醒的一点是请注意Partition type不要搞错了)
按上面建议的分区大小,分别建立四个分区后,选择[ Write ]写入再选择[ Quit ]退出。退出时你需要输入yes确认。输入完整的yes。
挂载分区
同样的,在终端页面输入
fdisk -l查看分区的情况,检查是否按照你的分区要求进行了有效的分区,如果没有,请重新使用cfdisk分区,确认无误后,我们开始挂载分区
Linux有很多的文件系统可以采用,这里本人使用ext4文件系统,如果你对其他文件系统有所了解,欢迎读者自己尝试。
下面所有的分区符号如/dev/nvme0n1仅为示例,实际操作时应该结合自己实际情况进行格式化。 假设新建的/mnt分区符号为/dev/nvme0n1,则应该输入mkfs.ext4 /dev/nvme0n1以格式化
- 格式化/mnt分区
mkfs.ext4 /dev/nvme0n1
- 格式化/boot分区为FAT32格式
mkfs.vfat -F32 /dev/nvme0n2
- 初始化/swap分区
mkswap /dev/nvme0n3
- 格式化/home分区(倘若你创建了的话)
mkfs.ext4 /dev/nvme0n4
接下来我们可以正式的挂载分区了
- 挂载/mnt分区
mount /dev/nvme0n1 /mnt
- 挂载/boot分区 UEFI 引导必须有独立的 boot 分区作为 EFI 分区,将导致系统无引导无法启动。双系统安装可以直接挂载 Windows 的 EFI 分区,如果出现分区大小不足请自行创建一个 boot 分区。
mkdir -p /mnt/boot
mount /dev/nvme0n2 /mnt/boot
- /swap分区无需挂载,仅使用下列命令启用即可
swapon /dev/nvme0n3
mkdir /mnt/home
mount /dev/nvmeon4 /mnt/home
到目前为止,初步的工作已经完成,建议再次输入lsblk命令检查硬盘分区情况,一般情况下,每个相应的分区后面应该标注其挂载的目录。
对于出现了错误的读者,可以使用** unmount命令,卸载分区后,使用cfdisk**再次分区。
安装archLinux基本系统
因为arch Linux是较为定制化的,一般安装是不会自带很多垃圾软件,安装系统时需要的软件等,都需要联网下载,archlinux的默认源都是在国外,但国外的速度相当的感人,所以我们将镜像源切换到中国来,考虑到手打镜像源比较容易出错,所以我们利用 reflector 自动替换国内镜像源
reflector --country 'China' --age 12 --protocol https --sort rate --save /etc/pacman.d/mirrorlist
切忌少打空格,该命令有点长(从这一步开始有能力的读者可考虑用ssh远程连接安装系统,这样复制粘贴方便一点)
输入完成后使用下述命令更新镜像源
pacman -Syyu
既然大家都了解了archLinux了,相比大家都知道pacman包管理器,基本的语法是pacman -S 包的名字,接下来就不多赘述。
输入如下命令借助 pacstrap 脚本完成安装。pacstrap 是 ArchISO 中的一个脚本,可以自动完成基础但繁琐的系统配置如内核的配置。
pacstrap /mnt base base-devel linux linux-firmware vim e2fsprogs ntfs-3g
在上述命令中,base 是元软件包(必要的),base-devel 是基础软件包组,linux 是内核,linux-firmware 是固件包,vim 是我本人常用编辑器,当然你也可以使用nano,e2fsprogs 是 ext4 文件系统所需工具,如果你是按使用 ext4 文件系统则必须安装该软件包。ntfs-3g 是与 Windows 的 NTFS 有关的软件包,如果是单系统可以不安装。
到了这一步我们需要单独更新一下archlinux-keyring以免安装软件时候的签名错误
pacman -Sy archlinux-keyring
当安装成功后,输入如下命令以生成 fstab 文件。你可以不知道这是啥,但你一定要有。
genfstab -U -p /mnt >> /mnt/etc/fstab
到了这一步,archLinux基本就安装完成了,接下来我们将要对archlinux进行一些简单的配置
archLinux的环境配置
输入以下命令进入新的系统
arch-chroot /mnt /bin/bash
我们默认的是root用户,此时我们首先要做的就是优先将root用户设置一个密码
passwd
密码需要回车输入两次,输入时不会显示
当然,一般人是不会选择root账户用作自己的主要账户,因为它的权力实在太大了,就算是rm -rf 也会被执行,因此,我们需要创建一个普通用户,如果需要用到最高权限,我们也可以在命令行前面键入sudo来执行
输入以下的命令
useradd -m -G wheel -s /bin/bash 你的用户名
用户名使用小写的英文字母!!!
设置密码或修改密码
passwd 你的用户名
输入后同root设置密码的方式一样
为了使该用户能暂时获得root的权限,我们需要添加该用户到sudoers里
vim /etc/sudoers
找到下面两行(在靠下一点的位置)
## Uncomment to allow members of group wheel to execute any command
# %wheel ALL=(ALL) ALL
将#%wheel ALL=(ALL) ALL前的注释符号#删除即可,不要动其他的任何一个字符
保存并退出
如同用户有一个名字一样,Linux 下电脑也需要一个名字。 输入如下命令配置电脑的主机名:
echo 你电脑的主机名 > /etc/hostname
最好是英文,不要有空格和特殊字符
下面对系统 host 进行配置
vim /etc/hosts
在该文档中键入以下内容
127.0.0.1 localhost
::1 localhost
127.0.1.1 你电脑主机名.localdomain 你电脑主机名
安装微码并配置 Grub 引导
安装微码时,需要根据读者自己的处理器型号进行对应的安装
- AMD
pacman -S amd-ucode
- Intel
pacman -S intel-ucode
接下来我将以UEFI启动的方式来讲解grub的配置(bios的配置我以后有时间一定会更新的,将来吧,反正)
依次输入以下的命令
pacman -S grub efibootmgr os-prober
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub --recheck
Grub 2.06 更新后默认禁用 os-prober,因此我们需要手动去开启它
grub-mkconfig -o /boot/grub/grub.cfg
接下来创建配置文件
grub-mkconfig -o /boot/grub/grub.cfg
输出结果大体如下
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-linux
Found initrd image(s) in /boot: initramfs-linux.img
Found fallback initrd image(s) in /boot: initramfs-linux-fallback.img
done
如出现错误,请回头检查或重新安装!!!
配置语言环境
考虑到国人的使用环境,我们需要对语言环境进行一定的配置,我们需要在locale.gen文件里进行配置
vim /etc/locale.gen
找到如下几行
#en_US.UTF-8 UTF-8
#zh_CN.UTF-8 UTF-8
#zh_TW.UTF-8 UTF-8
去掉前面的注释符号#
保存退出
输入
locale-gen
输出结果为
en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
zh_TW.UTF-8 UTF-8
输入如下命令将区域信息写入 locale-conf 文件
echo LANG=en_US.UTF-8 > /etc/locale.conf
接下来输入以下命令把时区更改为上海
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
安装桌面环境
想必大家对桌面环境已经很熟悉了,我这里就不介绍了,我只列出你可能会用到的桌面环境的安装命令,如果需要安装窗口管理器(i3、dwm等)后面我也会出教程,但在这里就先以桌面环境结尾了。
先安装XOrg软件包组
pacman -S xorg
- KDE
pacman -S plasma sddm konsole dolphin ark gwenview
开机自启动
systemctl enable sddm
- Gnome
pacman -S gnome gdm
开机自启动
systemctl enable gdm
之后开机就不会再进入命令行界面
安装中文字体
pacman -S wqy-microhei
用以下命令设置中文环境
vim ~/.xprofile
输入以下内容
export LANG=zh_CN.UTF-8
export LANGUAGE=zh_CN:en_US
export LC_CTYPE=en_US.UTF-8
保存退出
接下来使用以下命令将配置文件拷贝到用户目录下
cp ~/.xprofile /home/你的用户名
接下来我们使用如下命令安装网络管理器,一定要安装!!!
pacman -S networkmanager
systemctl enable NetworkManager
接下来输入reboot重启即可进入archLinux界面,到这里,arch Linux双系统安装已然完成。后续的配置教程将同步更新到本随笔里,就暂时告一段落吧。