ArchLinux安装与配置保姆级别教程
数个月前写的文章了,由于懒得单独维护一个文档站,也不想再存md到云盘,索性全部放博客
前言
自从暑假时间逐渐开始向linux感兴趣,于是便开始逐渐过度,虚拟机尝试了安装archlinux一次就成功了,后面直接开始实体机安装体验linux下的桌面环境,实体机安装踩了许多坑,很多次安装失败,就算我安装了无数此也不能完全记清楚所有的细节,于是写这篇文章记录一下
一下教程适用于uefi启动的x86-64计算机
我将会以自己的需求装一个最小化的系统,也就是尽可能安装最少的包
安装基本系统
下载iso镜像写入u盘就不必过多介绍了,随便找个写盘工具就能完成
首先,确保您已使用 Arch Linux 安装媒介引导到 live 环境。
更新系统时钟
timedatectl set-ntp true
分区
使用 cfdisk
或 fdisk
创建分区
我自己第一次尝试的就是cfdisk,很简单不会命令行也能上手
lsblk
观察自己的磁盘
cfdisk /dev/nvme0n1
这个/dev/nvme0n1
要根据你的电脑灵活调整也有可能是/dev/sda
(例如 /dev/nvme0n1
第一块nvme硬盘)
这里我创建了三个分区
第一个efi分区1G用于系统引导
第二个根分区20G
第三个Home分区
分区这一步就结束了
lsblk
lsblk查看分区情况是否成功
输出
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme0n1 259:0 0 476.9G 0 disk
├─nvme0n1p1 259:1 0 1G 0 part /boot/esp
├─nvme0n1p2 259:2 0 10G 0 part /
├─nvme0n1p3 259:3 0 100G 0 part /home
└─nvme0n1p4 259:4 0 80G 0 part
这是我的输出就成功了
格式化分区
格式化esp分区:
mkfs.fat -F32 /dev/nvme0n1p1
# 把第一个分区格式化为fat32
mount -p /dev/nvme0n1p1 /mnt/boot/esp
# -p选项代表创建文件夹,把第一个分区挂载到/mnt/boot/esp
我目前使用ext4作为文件系统,没有太多需求可以默认选择这个
mkfs.ext4 /dev/nvme0n1p2
mount /dev/nvme0n1p2 /mnt
mkfs.ext4 /dev/nvme0n1p3
mount /dev/nvme0n1p3 /mnt/home
安装基本包
pacstrap /mnt base linux linux-firmware
#基础系统、linux内核、linux固件
这个linux内核有多个版本可以选择,具体查阅archwiki
生成fstab
genfstab -U /mnt >> /mnt/etc/fstab
将当前系统的挂载信息写入到新系统的fstab文件中,以便能够正确挂载分区
进入新系统
使用arch-chroot进入这个初始化系统
arch-chroot /mnt
设置基本系统
设置时区
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
hwclock --systohc
不必多说
设置语言
编辑 /etc/locale.gen
并取消所需语言的注释,例如:
zh_CN.UTF-8 UTF-8
生成语言文件:
locale-gen
设置语言环境:
echo "LANG=zh_CN.UTF-8" > /etc/locale.conf
设置主机名
echo "zyyo" > /etc/hostname
编辑 /etc/hosts
:
127.0.0.1 localhost
::1 localhost
127.0.0.1 zyyyo.localdomain zyyo
设置用户
passwd
设置root密码
useradd -m -G wheel zyyo
#-m表示创建家目录 -G表示指定用户组
passwd zyyo
创建一个普通用户并设置密码
安装网络管理器
pacman -S networkmanager
systemctl enable NetworkManager
安装networkmanager,网络管理软件,而且不安装的话gnome设置里的网络不好使
安装引导
有两种我尝试过的方案,一种是grub引导,一种是uki引导
grub引导
pacman -S grub efibootmgr
grub为引导,efibootmgr用于向主板的引导条目上加上grub这一选项
如果你安装了windows和arch双系统,我建议你安装os-prober,这样grub可同时引导两个系统,自动为win添加引导菜单
pacman -S os-prober
启用os-prober
编辑/etc/default/grub
nano /etc/default/grub
添加
GRUB_DISABLE_OS_PROBER=false
之前已经挂载过efi分区了,所以直接
grub-install --target=x86_64-efi --efi-directory=/boot/esp --bootloader-id=GRUB
这里要根据您自己的挂载情况更改,我的是/boot/esp
grub-mkconfig -o /boot/esp/grub/grub.cfg
没啥可说的,最常用的引导方案,我最开始也是这个,但由于没有心思美化引导菜单,索性转而更加直接的引导方式方案
uki引导
UKI全称Unified Kernel Image,由于uefi引导只能加载pe格式的可执行文件,而linux内核是elf格式的,内核加载后还要加载initramfs从而引导整个系统
这就需要一个中间引导来完成这一步
UKI引导将内核和initramfs生成成一个完整的pe格式文件,从而能被主板uefi直接引导
UKI引导也有多种方案可选例如dracut等
这里我使用archlinux自带的mkinitcpio工具,这是arch用于生成initramfs的一个工具,也有生成uki的功能
它本身的配置文件在现在不用做出任何修改,后续会提到
archlinux每安装一个内核都会在/etc/mkinitcpio.d/生成一个linux.preset的配置文件
编辑他,调整成以下
# mkinitcpio preset file for the 'linux' package
ALL_config="/etc/mkinitcpio.conf"
ALL_kver="/boot/vmlinuz-linux"
PRESETS=('default')
#default_config="/etc/mkinitcpio.conf"
#default_image="/boot/initramfs-linux.img"
default_uki="/boot/esp/EFI/Arch/BOOTX64.EFI"
#default_options="--splash /usr/share/systemd/bootctl/splash-arch.bmp"
#fallback_config="/etc/mkinitcpio.conf"
#fallback_image="/boot/initramfs-linux-fallback.img"
#fallback_uki="/efi/EFI/Linux/arch-linux-fallback.efi"
#fallback_options="-S autodetect"
这个配置文件代表在/boot目录下的内核和镜像来生成efi后缀的uki镜像存放于/boot/esp/EFI/Arch/BOOTX64.EFI
BOOTX64.EFI这个文件名确保主板在没有引导菜单情况下的默认引导文件,因此后续可以不用使用efiboormgr添加引导菜单
需要在 UKI 中嵌入你想要使用的内核参数,创建 /etc/kernel/cmdline 并写入内核参数。下面是一个例子:
root=/dev/nvme0n1p2 rw splash loglevel=3
root表示告诉initramfs要挂载的根分区,这点尤为重要
madir /boot/esp/EFI/Arch
mkinitcpio -p linux
#指定配置文件生成镜像
如果你在上面的过程中不是使用BOOTX64.EFI作为文件名,或者你有其他的引导项,在这里以使用 efibootmgr 为例,向 UEFI 引导序列中添加一个引导选项:
efibootmgr --create \
-d /dev/sdX -p Y \
--label "Arch Linux" \
--loader "EFI/Linux/arch-linux.efi"
其中 sdX 为 EFI 系统分区所在的设备名称,Y 为 EFI 系统分区的分区编号,--loader 指定了要引导的 UKI 在分区中的位置。
efibootmgr --create \
> -d /dev/sdX -p Y \
> --label "Arch Linux" \
> --loader "EFI/Linux/arch-linux.efi" \
> -u "root=UUID=b9fb5b31-07f1-408c-9447-10a1b2476b4d rw splash loglevel=3"
如果需要在 UEFI 引导选项中指定内核参数,使用 -u parameters 来指定以 UTF-16 编码的额外参数:
到这个时候就可以尝试重启进入新系统了,在新系统中完成接下来的配置工作,但是我不会这样做,因为我又忘记了networkmanager怎么配置wifi了,我又对自己自信,直接继续
还有就是在上面的配置中是中文环境,但没有桌面环境的shell终端没办法显示中文
重要声明
本教程由于对我本人贴身打造,许多地方并未说明清楚
关于UKI引导方面有更详细的介绍可以观看 这位博主
Archlinux保姆级安装教程