Zyyo

Just for fun

文章

21

标签

25

评论

415

文章目录

数据统计

成立

72天

文章

21篇

评论

415条

标签

25个

最近文章

Archlinux保姆级安装教程

ArchLinux安装与配置保姆级别教程

数个月前写的文章了,由于懒得单独维护一个文档站,也不想再存md到云盘,索性全部放博客

前言

自从暑假时间逐渐开始向linux感兴趣,于是便开始逐渐过度,虚拟机尝试了安装archlinux一次就成功了,后面直接开始实体机安装体验linux下的桌面环境,实体机安装踩了许多坑,很多次安装失败,就算我安装了无数此也不能完全记清楚所有的细节,于是写这篇文章记录一下

一下教程适用于uefi启动的x86-64计算机

我将会以自己的需求装一个最小化的系统,也就是尽可能安装最少的包

安装基本系统

下载iso镜像写入u盘就不必过多介绍了,随便找个写盘工具就能完成
首先,确保您已使用 Arch Linux 安装媒介引导到 live 环境。

更新系统时钟

timedatectl set-ntp true

分区

使用 cfdiskfdisk 创建分区
我自己第一次尝试的就是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保姆级安装教程

发布于

February 27, 2025

分类

实用分享

版权协议

MIT

评论
😀

感谢支持!

微信二维码

请使用微信扫描二维码打赏。

支付宝二维码

请使用支付宝扫描二维码打赏。