ObsiBlog即将为您展现精彩内容
2891 字
14 分钟
ArchLinux基础安装

本篇参考 Arch Linux 官方安装指南

禁用 reflector#

reflector 会为你选择速度合适的镜像源 但其结果并不准确 同时会清空配置文件中的内容 对于新人来讲并不适用 我们首先对其进行禁用

Terminal window
systemctl stop reflector.service

再次确保是否为 UEFI 模式#

在一系列的信息刷屏后 可以看到已经以 root 登陆安装系统了 此时可以执行的命令

Terminal window
ls /sys/firmware/efi/efivars

若输出了一堆东西,即 efi 变量 则说明已在 UEFI 模式 否则请确认你的启动方式是否为 UEFI

连接网络#

一般来说,你连接的网络几乎均可以通过 DHCP 的方式来进行 IP 地址DNS 的相关设置 在没有合适网络的情况下,使用 手机的移动热点 也是很方便的选择 如果你的网络环境需要配置静态 IPDNS 请自行参考 Arch Wiki

对于有线连接来说,直接插入网线即可

对于无线连接,则需进行如下操作进行网络连接

无线连接使用 iwctl 命令进行,按照如下步骤进行网络连接

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

可以等待几秒等网络建立链接后再进行下面测试网络的操作

Terminal window
ping www.gnu.org

如果你不能正常连接网络,首先确认系统已经启用网络接口

Terminal window
ip link #列出网络接口信息,如不能联网的设备叫wlan0
ip link set wlan0 up #比如无线网卡看到叫 wlan0

如果随后看到类似 Operation not possible due to RF-kill 的报错,继续尝试 rfkill 命令来解锁无线网卡

Terminal window
rfkill unblock wifi

更新系统时钟#

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

分区#

这里总共设置三个分区,是一个我们认为较为通用的方案 此步骤会清除磁盘中全部内容,请事先确认

  • EFI 分区 : /efi 800M
  • 根目录: / 100G
  • 用户主目录: /home 剩余全部

这里根目录的大小仅为参考 一般来说个人日常使用的 linux 分配 100G 已经够用了 根目录最小建议不小于 50G,根目录过小会造成无法更新系统软件包等问题

首先将磁盘转换为 gpt 类型 这里假设比如你想安装的磁盘名称为 sdx 如果你使用 NVME 的固态硬盘 你看到的磁盘名称可能为 nvme0n1

Terminal window
lsblk #显示分区情况 找到你想安装的磁盘名称
parted /dev/sdx #执行parted,进入交互式命令行,进行磁盘类型变更
(parted)mktable #输入mktable
New disk label type? gpt #输入gpt 将磁盘类型转换为gpt 如磁盘有数据会警告,输入yes即可
quit #最后quit退出parted命令行交互

接下来使用 cfdisk 命令对磁盘分区。进入 cfdisk 后的操作很直观 用键盘的方向键Tab 键回车键 配合即可操作分配各个分区的大小与格式 一般建议将 EFI 分区 设置为磁盘的第一个分区 据说有些主板如果不将 EFI 设置为第一个分区, 可能不兼容 的问题 其中 EFI 分区 选择 EFI System 类型 其余两个分区选择Linux filesystem` 类型

Terminal window
cfdisk /dev/sdx #来执行分区操作,分配各个分区大小,类型
fdisk -l #分区结束后, 复查磁盘情况

格式化#

建立好分区后,需要对分区用合适的文件系统进行格式化 这里用mkfs.ext4命令格式化根分区与 home 分区 用mkfs.vfat命令格式化 EFI 分区 如下命令中的 sdax 中,x 代表分区的序号 格式化命令要与上一步分区中生成的分区名字对应才可以

磁盘若事先有数据 会提示你: ‘proceed any way?’ 按 y 回车继续即可

Terminal window
mkfs.ext4 /dev/sdax #格式化根目录和home目录的两个分区
mkfs.vfat /dev/sdax #格式化efi分区

挂载#

在挂载时,挂载是有顺序的,先挂载根分区,再挂载 EFI 分区 这里的 sdax 只是例子,具体根据你自身的实际分区情况来

Terminal window
mount /dev/sdax /mnt
mkdir /mnt/efi #创建efi目录
mount /dev/sdax /mnt/efi
mkdir /mnt/home #创建home目录
mount /dev/sdax /mnt/home

镜像源的选择#

使用如下命令编辑镜像列表

Terminal window
vim /etc/pacman.d/mirrorlist

其中的首行是将会使用的镜像源 添加中科大或者清华的放在最上面即可

Terminal window
Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch

如果其速度不佳,可以手动指定其他镜像源。完整的镜像源列表可参考镜像源生成器

这里使用中国境内的镜像源以提高访问速度

然而这存在问题,镜像源(如 ArchLinux 清华镜像源 )以及第三方源(如 ArchLinuxCN )可以知道你的 IP 是什么 什么时候更新了系统,什么时候检查了系统,什么时候更新了什么软件,你安装的软件列表是什么 在 威权国家镜像源维护者 完全有可能 根据威权当局 的要求 提供这些数据 很多维护者 在网络上几乎是 实名上网 的,他们 没有任何抵抗能力 进一步的, 威权国家 可以根据这些 元数据 与你产生的 其他元数据 进行 比对 从而对你进行 进一步定位与辨识 简单举一个 例子 ,要求维护者 提供监视 安装了 v2ray/qv2ray 等软件包的 使用者IP ,以及 安装时间 ,以及其 全部软件列表

如果你在安装 ArchLinux 时的网络已经处于 代理模式 下 可以选择一个 与你代理位置较近 的, 非威权国家 的镜像源来使用 如果你在安装 ArchLinux 时的网络环境 没有代理 那么在安装结束后,需要 尽快更换 一个 非威权国家 的镜像源来使用 如下列举一些较为优质的 国际源

Terminal window
Server = https://mirror.archlinux.tw/ArchLinux/$repo/os/$arch #东亚地区:台湾/中华民国
Server = https://mirror.0xem.ma/arch/$repo/os/$arch #北美洲地区:加拿大
Server = https://mirror.aktkn.sg/archlinux/$repo/os/$arch #东南亚地区:新加坡
Server = https://archlinux.uk.mirror.allworldit.com/archlinux/$repo/os/$arch #欧洲地区:英国
Server = https://mirrors.cat.net/archlinux/$repo/os/$arch #东亚地区:日本

安装系统#

必须的基础包

Terminal window
pacstrap /mnt base base-devel linux linux-headers linux-firmware #base-devel在AUR包的安装是必须的

注意 目前需要首先确保等待 pacman-init.service 服务启动后,才能执行 pacstrappacman 命令安装包 否则会 引发错误 使得安装过程无法进行 使用 systemctl status pacman-init.service 命令来检查当前服务状态 更多内容参考 bbs 中的 帖子

若安装时出现密钥环相关错误,参考此文章 GnuPG-2.1 and the pacman keyring 并执行其中的命令

必须的功能性软件

Terminal window
pacstrap /mnt dhcpcd iwd vim bash-completion #一个有线所需(iwd也需要dhcpcd) 一个无线所需 一个编辑器 一个补全工具

生成 fstab 文件#

fstab 用来定义磁盘分区

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

复查一下 /mnt/etc/fstab 确保没有错误

Terminal window
cat /mnt/etc/fstab

Change root#

把环境切换到 新系统/mnt

Terminal window
arch-chroot /mnt

时区设置#

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

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

随后进行硬件时间设置,将当前的正确 UTC 时间写入硬件时间

Terminal window
hwclock --systohc

设置 Locale 进行本地化#

Locale 决定了 地域货币时区日期的格式字符排列方式 和其他本地化标准

首先使用 vim 编辑 /etc/locale.gen ,去掉 en_US.UTF-8 所在行以及 zh_CN.UTF-8 所在行的注释符号 #

Terminal window
vim /etc/locale.gen

然后使用如下命令生成 locale

Terminal window
locale-gen

最后向 /etc/locale.conf 导入内容

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

设置主机名#

首先在 /etc/hostname 设置主机名

Terminal window
vim /etc/hostname

加入你想为主机取的主机名,这里比如叫 ArchZer0s 接下来在/etc/hosts设置与其匹配的条目

Terminal window
vim /etc/hosts

加入如下内容

Terminal window
127.0.0.1 localhost
::1 localhost
127.0.1.1 ArchZer0s

某些情况下如不设置主机名 在 KDE 下可能会存在网络情况变更时 无法启动 GUI 应用 的问题 在终端中出现形如 No protocol specified qt.qpa.xcb: could not connect to display 的错误 这种情况较为少见

为 root 用户设置密码#

Terminal window
passwd

安装微码#

Terminal window
pacman -S intel-ucode #Intel
pacman -S amd-ucode #AMD

安装引导程序#

Terminal window
pacman -S grub efibootmgr #grub是启动引导器,efibootmgr被 grub 脚本用来将启动项写入 NVRAM。
grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=GRUB

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

Terminal window
vim /etc/default/grub

使用 N 卡的用户需要注意 KDE6 默认使用 wayland session 为默认 如果你需要使用 wayland ,则需开启 DRM 同样编辑 /etc/default/grub 文件 在 GRUB_CMDLINE_LINUX_DEFAULT 一行中最后的加入参数 nvidia_drm.modeset=1

最后生成 GRUB 所需的配置文件

Terminal window
grub-mkconfig -o /boot/grub/grub.cfg

我们在之前的命令中指定了 bootloader-idGRUB 这一般不会出现问题 然而在某些主板安装完成后,你会发现 没有 nvme 启动条目 这是因为 某些主板UEFI 固件 在显示 UEFI NVRAM 引导条目 之前 需要在特定的位置存放可引导文件,不支持自定义 存放 efi 文件 解决方式是使用 --removable 参数解决一些主板 NVRAM 的兼容性问题

Terminal window
grub-install --target=x86_64-efi --efi-directory=/efi --removable
grub-mkconfig -o /boot/grub/grub.cfg

除此之外,如果你的主板是一些较老的型号 如 intel 9 系列以下或者 较老 AMD 的主板 它们很可能 不支持 从 nvme 启动系统 虽然可以通过 修改 BIOS 加入 NVME 支持模块来解决 但这不在本文讨论范围内

完成安装#

Terminal window
exit # 退回安装环境#
umount -R /mnt # 卸载新分区
reboot # 重启

注意,重启前要先拔掉优盘,否则你重启后还是进安装程序而不是安装好的系统 重启后,开启 dhcp 服务 ,即可连接网络

Terminal window
systemctl start dhcpcd #立即启动dhcp
ping www.gnu.org #测试网络连接

若为无线链接,则还需要启动 iwd 才可以使用 iwctl 连接网络

Terminal window
systemctl start iwd #立即启动iwd
iwctl #和之前的方式一样,连接无线网络

到此为止,一个基础的,无 UI 界面Arch Linux 已经安装完成了

ArchLinux 在 2021 年 4 月 在安装镜像中内置了一个安装脚本,提供一些选项,即可快速安装 其和所有一键安装脚本类似,提供自动化,且不灵活的安装过程 不建议 使用这种安装脚本,除了不灵活的原因,初学者也无法在这种安装过程中学到任何东西 如果你因为任何原因需要 快速启动一个基础的 ArchLinux 环境 ,那么可以 尝试 此脚本

ArchLinux基础安装
https://blog.hiyun.top/posts/archlinux基础安装/
作者
𝑶𝒃𝒔𝒊𝒅𝒊𝒂𝒏
发布于
2024-11-19
许可协议
CC BY-NC-SA 4.0

这篇文章是否对你有帮助?