banner
yshenn

yshenn

一日,三餐,免不了的

 -Archlinux-Installation

wallhaven_17


本文是以记录为目的,可以作为一个参考,网上有很多很详细的教程,还有官方的 ArchWiki。


安装前准备#

关于双系统
双系统的安装分两种:

  • 一种是将 win 和 linux 安装在同一张硬盘上,这时候,需要提前在 win 中分出一个空闲的区域,为 linux 留出空间
  • 另外一种是将 win 和 linux 安装在两张独立的硬盘上,此时和单系统安装一样,但安装后的系统引导设置不同

下载 iso
archlinux 官网 或者一些开源镜像站 (tsinghua),下载最新 iso 文件


下载安装盘刻录软件
我使用的是 ventoy,开源。它和一般的刻录软件不同,一般软件是将安装引导系统刻录进整个 U 盘,这样系统安装完之后,U 盘就不能直接使用了,需要进行格式化;而使用 ventoy 安装系统后,U 盘还是能够正常使用,也不需要备份 U 盘内的文件;并且操作起来也很简单,只需要把 ios 文件直接拷贝至 u 盘即可,无需其他操作。


主板 BIOS 设置
开始安装之前,需要对 bios 进行简单的设置

  • 关闭 Secure Boot,archwiki 指出Arch Linux installation images do not support Secure Boot
  • 设置安装盘(也就是 U 盘)优先启动

每台电脑进入 Bios 的方式都不一样,具体可以根据电脑型号,参考官方说明书


安装#

基本设置#

设置好 bios,插上 U 盘,就准备开始安装了。
当电脑屏幕跳出引导加载器菜单 (boot loader menu), 也就是一个可以选择的黑框框,选择第一个 Arch Linux install medium, 直接回车,就进入了 archlinux 安装环境


设置合适的字体和键盘布局 (optional)
安装环境下,这个 console 中的字体特别得小,看着很费劲,所以可以修改一下字体,选择一个更大的字体,系统所有可用字体都在/use/share/kbd/consolefonts/目录下,可以用setfont命令进行设置:

#以/usr/share/kbd/consolefonts/ 下的文件名(省略扩展名),作为命令参数
setfont LatGrkCyr-12x22 #这是一个比较大的字体

同时你也可以更改键盘布局,一般不需要更改,默认是 US 布局,所有支持的键盘布局都在/usr/share/kbd/keymaps/下的每一个目录中,使用loadkeys命令进行修改:

# 同样,下面的参数就是键盘布局的名字,不加扩展名
loadkeys keyboardlayout

确定电脑的启动模式 (optional)
电脑启动在加载硬件驱动方面的程序,主要有早期的 BIOS 和现在的 UEFI 两种,两种模式的启动方式不一样,按照 archwiki 介绍,可以通过以下命令确认电脑是 UEFI 模式:

cat /sys/firmware/efi/fw_platform_size
# 返回64 或者 32,分别代表64bit 和 32bit的UEFI,若文件不存在,则有可能是BIOS

连接网络

首先,检查网络设备是否打开:

# 该命令,列出无线网卡设备的名字(wlan0),以及其状态,如果其状态中<...,...,UP,...>有UP标志,标志网卡设备已经打开,否则为关闭
ip link

# 如果未打开,使用以下命令打开
ip link set wlan0 up # 这里网卡名为wlan0

# 如果以上命令出现了 Operation not possible due to RF-kill,则需要先将使用rfkill解锁网卡
# rfkill - tool for enabling and disabling wireless devices
rfkill # 列出无线设备及状态
rfkill unblock wlan  # unblock网卡

接着使用 iwctl 来设置无线网络,这是一个使用命令交互形式的网络设置程序

# 查看帮助信息
 help
# 查看当前网卡的连接状态
 station wlan0 show
# 扫描网络
 station wlan0 scan
# 查看可连接的网络
 station wlan0 get-networks
# 连接网络,名字为“P40 pro”
 station wlan0 connect "P40 pro"

此时可以检查网络是否连通:

ping baidu.com

如果无法 ping 通,极有可能是没有配置 dhcp,使用:

dhcpcd &

更新系统时钟

timedatectl set-ntp true # 将系统时间与网络时间进行同步

磁盘分区#

使用 fdisk 进行磁盘分区

命令:

  • m:查看帮助

  • p:打印当前分区表

  • g:创建一个新的空的分区表,清理原来的分区
    在使用 w 命令之前,新创建的分区不会被写入,原来的分区也不会被覆盖

  • n:创建一个新的分区

主要有三个分区:
boot 分区 + 主分区 + swap 分区

我这里创建四个分区
第一个是系统引导分区,挂载在/boot目录下
第二个是主分区,挂载在根目录/
第三个是用于存储用户文件数据分区,挂载在家目录/home
第四个是 swap 分区


格式化,创建文件系统

# /boot 分区应该为fat格式
mkfs.fat -F32  /dev/nvme0n1p1

# 根分区和家目录分区选择 ext4 文件系统
mkfs.ext4 /dev/nvme0n1p2
mkfs.ext4 /dev/nvme0n1p3

# swap分区
mkswap /dev/nvme0n1p4

挂载分区

# swap挂载
swapon /dev/nvme0n1p4

# 主分区
mount /dev/nvme0n1p2 /mnt 

# boot分区
mkdir /mnt/boot
mount /dev/nvme0n1p1 /mnt/boot

# home分区
mkdir /mnt/home
mount /dev/nvme0n1p3 /mnt/home

# or 
# omit mkdir
# mount --mkdir /dev/nvme0n1p2 /mnt/home

挂载完成后,可以说系统的安装已经进行一大半了


正式安装#

选择国内的软件源
在安装前要禁用 reflector 服务,该服务会自动更新 pacman 的 mirrorlist,如果关闭晚了,也没关系,可以手动添加国内源

# /etc/pacman.d/mirrorlist
# 将其中China下的镜像源提到最前面即可

安装系统(Install essential packages)
安装 base 、linux 和 linux-firmware

pacstrap -K /mnt base linux linux-firmware

创建 fstab 文件
fstab 用来定义磁盘分区。它是 Linux 系统中重要的文件之一。使用 genfstab 自动根据当前挂载情况生成并写入 fstab 文件

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

安装后,新系统中的配置#

将当前安装环境切换到新系统环境下:

arch-chroot /mnt

设置时区,同步时间

# 在 /etc/localtime 下用 /usr 中合适的时区创建符号链接
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

# 同步时间
hwclock --systohc

本地化设置
编辑 /etc/locale.gen 并注释 en_US.UTF-8 UTF-8,然后使用local-gen`

locale-gen

/etc/locale.conf中设置 LANG 变量

# /etc/locale.conf
LANG=en_US.UTF-8

主机名和 host 配置
新建 /etc/hostname 文件,向其中添加主机名
并在 /etc/hosts 文件中,添加配置

# /etc/hostname
glede

# /etc/hosts
127.0.0.1 localhost
::1	  localhost
127.0.0.1 glede.localdomain glede

设置 root 密码

passwd
# SheN_2327

安装一些软件

# intel微码
# intel-ucode

# 引导程序
# grub efibootmgr os-prober
pacman -S grub efibootmgr intel-ucode os-prober


配置 boot loader (grub)

grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=ARCH

# --efi-directory=/boot —— 将 grubx64.efi 安装到之前的指定位置(EFI 分区)
# --bootloader-id=ARCH —— 取名为 Arch

# 接下来使用 vim 编辑 /etc/default/grub 文件
# GRUB boot loader configuration

GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="Arch"
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=5 nowatchdog"
GRUB_CMDLINE_LINUX=""
GRUB_DISABLE_OS_PROBER=false
...

# 生产grub所需配置文件
grub-mkconfig -o /boot/grub/grub.cfg

安装自需软件

# 这里可以安装一些必需的软件
pacman -S iwd dhcpcd zsh vim
# 网络配置: iwd dhcpcd
# shell:zsh
# 编辑器:vim

重启

exit  # 退回到安装引导系统中
reboot  # 重启,在重启的过程中,将U盘拔出

重启后的配置#

重启后,系统可以说已经安装完成,但要达到可用的程度,还差很远,需要做很多工作,下载许多软件

最重要的莫过于安装桌面环境,可以选择个人喜欢的任何桌面环境 (Desktop Environment) 或者 窗口管理器 (Window Manager)

我选择使用的是 Hyprland,但由于我的电脑使用的是 Nvidia 显卡,安装 hyprland 环境的流程极其繁琐,本文不多作记录,可以参考 hyprland 官方 wiki

下面记录一些安装后,所需的基本配置


再次设置 vconsole
上文已经讲述过设置 vconsole 字体和 keymap,但那是在安装环境下,便于我们安装而设置的,现在进入新系统中,需要重新进行设置。
vconsole 的配置在/etc/vconsole.conf 文件中

# 在该文件中添加要修改的字体,以及键盘设置
KEYMAP=us
FONT=LatGrkCyr-12x22

设置双系统引导
如果是双系统,并且分别安装在两个盘中,那么现在开机时,你是无法进入 win 系统的,需要对 boot loader (grub) 进行设置

# 先挂在windows的系统引导分区
mount /dev/nvme1n1p1 /mnt
ls /mnt 

# 使用os-prober 检测其他系统的引导
os-prober

# 重新配置grub文件
cp /boot/grub/grub.cfg /boot/grub/grub.cfg.bak
grub-mkconfig -o /boot/grub/grub.cfg

配置网络
启用 iwd

systemctl enable iwd.service
systemctl start iwd.service

# 这里网络的配置和上述一致,也有可能会遇到rfkill的问题,使用同样的方法即可
ip link
ip link set wlan0 up
rfkill
rfkill unblock wlan

# 然后就可以使用iwctl连接网络了

创建非 root 用户

useradd -m -G wheel -s /bin/bash username
passwd username # 设置密码

# 如果没用下载vi,可以直接将vim链接到vi
ln -s /usr/bin/vim /usr/bin/vi

# 使用visudo 编辑sudo file,提升wheel用户组权限
#注释以下行
%wheel ALL=(ALL:ALL) ALL

安装 man 和 sudo

pacman -S man-db sudo

添加 multilib && archlinuxcn 源

# 在pacman的配置文件中修改和添加
# /etc/pacman.conf 

# 开启multilib
[multilib]
Include = /etc/pacman.d/mirrorlist

# 开启 archlinuxcn
[archlinuxcn]
Server = https://mirrors.nju.edu.cn/archlinuxcn/$arch
# 这里可以参考官网,添加离你最近的镜像源

pacman -S archlinuxcn-keyring archlinuxcn-mirrorlist-git
# 将上面archlinuxcn下的Server一行改为
Include = /etc/pacman.d/archlinuxcn-mirrorlist

关闭令人抓狂的 pc 扬声器,蜂鸣声
将 pcspkr 模块加入黑名单的方法可以阻止 udev 在启动时加载它

# /etc/modprobe.d/nobeep.conf
blacklist pcspkr

1.archlinux installation
2.thecw
3.archlinux 简明指南

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。