旧设备焕发新生 -ArchLinux-xfce4 安装指南

前言

Linux 相比于 Windows,对于普通消费者而言,体验不如 MacOS 和 Windows。

  • 优点是轻量,可自行定制,安全性高,Windows 如果安装一个软件,许多能够通用的文件会被反复安装,导致占用空间,Linux 软件安装能够检查现有软件包,安装缺失的依赖,有点类似全量与增量。
  • 缺点是 Linux 部分软件需要编译安装,编译安装更加耗时且容易出现网络问题,软件安装偶尔会存在依赖冲突的问题,软件资源不如 Windows 丰富。

经过多年发展,许多软件都推出了 Linux 版本,就算没有,也能够使用 wine 来运行 exe 文件,基本上日用是没有问题的,也能够安装 steam 进行游戏。由于没有无用的服务,所有软件都是自行安装,能够减少硬件资源的消耗,对老旧的设备十分友好。不需要像 Windows 系统一样担心系统垃圾,担心注册表等。

Linux 系统上一切皆文件,所有的安装配置,本质上都是对文件进行操作,CPU、硬盘、显卡、内存等硬件资源也被抽象为文件,可以通过编辑文件来更改配置,读取信息,命令行界面对于熟练的用户来说十分高效,安装图形化界面在如今也能得到很好的用户体验,美观度完全不输 MacOS 和 Windows。

Arch Linux 被设计为可以运行在配置为最低 512MB 内存的 x86_64 架构的计算机上,但如果是从安装介质启动系统并成功安装在计算机硬盘中,则可能需要更多的内存。[1]基本安装方式将占用小于 2GB 的硬盘存储空间。由于安装过程中需要从远程存储库获取软件包,计算机将需要一个有效的互联网连接。

官方推荐的是至少为根目录分配 30G 的存储空间,基本安装占用小于 2GB,内存至少 512MB,安装过程需要联网。

安装前的准备

下载镜像

烧录镜像

推荐使用 Rufus

警告

烧录镜像会格式化 U 盘,请使用闲置 U 盘或者提前备份好相关数据

USB 启动安装

启动前的配置

关闭 Windows 的 Bitlocker 和快速启动

由于预装 Windows 的电脑默认开启安全启动,但是 Arch Linux 安装镜像不支持安全启动,因此我们需要提前关闭该功能。关闭后,Bitlocker 功能将无法使用,请提前关闭该功能。

Windows 默认启动“快速启动”功能,该功能影响 Arch Linux 的使用,可能导致磁盘文件丢失,我们需要将其关闭。为了彻底关闭该功能,本教程将休眠功能也一起关闭。

右键“开始”菜单,点击“Windows Powershell(管理员)”,打开管理员权限的 Powershell 窗口。输入下列命令,按下 Enter​ 键即可。

powercfg -h off

关闭主板的安全启动

首先,我们进入 BIOS。您可以在启动电脑的过程中通过按相应快捷键进入 BIOS,具体的快捷键可以在搜索引擎中查找。如果您不知道快捷键,请使用如下方法。

在 Windows 系统中,点击“开始”菜单,点击“设置”按钮,进入设置页面。点击“更新和安全”,在左侧点击“恢复”选项卡,在右侧点击“高级启动”栏目下的“立即重新启动”按钮。重新启动后,点击“疑难解答”,再点击“高级选项”,最后点击“UEFI 固件设置”,点击“重启”即可。

然后,我们关闭安全启动。不同品牌的电脑的 BIOS 页面相差较大,进入之后,您可以在“设置”或“安全”选项卡下找到“安全启动(Secure Boot)”项目,将其设置为关闭(Disabled)。

最后,在 BIOS 中选择保存并重启,即可。

注意

Arch Linux 安装镜像不支持 UEFI 安全启动(Secure Boot)功能。如果要引导安装介质,需要禁用安全启动。如果需要,可在完成安装后重新配置

启动到 Live 环境

更改 BIOS 的启动顺序,将 U 盘放到最前面

进入 Live 环境。选择第一项 Arch Linux install medium (x86_64, UEFI) 开始加载安装程序,如果不是类似界面,请检查 BIOS 设置或者 U 盘烧录是否正确

启动到 live 环境后,会显示 linux 的命令行,通过这个界面,我们向硬盘中安装系统,这个界面就类似于 Windows 的 PE 系统,能够对硬盘中的系统进行维护

网络配置

禁用 reflector 服务

2020 年,archlinux 安装镜像中加入了 reflector​ 服务,它会自己更新 mirrorlist​(软件包管理器 pacman​ 的软件源)。在特定情况下,它会误删某些有用的源信息。这里进入安装环境后的第一件事就是将其禁用。也许它是一个好用的工具,但是很明显,因为地理上造成的特殊网络环境,这项服务并不适合启用。

  • 通过以下命令将该服务禁用:

    systemctl stop reflector.service
    
  • 通过以下命令查看该服务是否被禁用,按下 q​ 退出结果输出:

    systemctl status reflector.service
    

连接网络

防止网卡被禁用,使用以下命令解除网卡禁用:

rfkill unblock all

usb 直连:ArchLinux 安装需要下载一些软件,需要保证网络通畅,ArchLinux 不会默认连接网络,建议手机开 usb 热点电脑连接,不用额外配置。

wifi 连接:输入 iwctl 进入 wifi 连接界面:

#是否启用了网络接口
ip link 
#执行iwctl命令,进入交互式命令行
iwctl
-------------下面为iwctl界面,不同于终端-----------
[iwd] help   # 输入help回车可以查看使用说明
[iwd] device list # 回车后可以查看当前网卡设备,一般为 wlan0
[iwd] station <device> scan # <device>替换为上面的网卡设备,这条命令可以让网卡扫描wifi设备
[iwd] station <device> get-networks  # 回车后可以显示当前可连接网络,列出所有 wifi 网络
[iwd] station <device> connect <wifi name>  # 连接wifi, <wifi name> 为上面获取的wifi名称,注意这里无法输入中文。回车后输入密码即可
password: # 如果wifi为加密wifi,输入密码回车
[iwd] exit或者quit # 退出 wifi 连接界面

测试网络是否连接成功:

ping www.baidu.com -n

时钟同步

在互联网连接之后,systemd-timesyncd 服务将自动校准系统时间。设置时间的目的之一是便于安装软件包时验证签名,因为下载软件是服务器会验证系统时间,如果时间不正确,可能出现下载失败的情况。

请输入如下命令确定时间的准确性:

root@archiso ~ # timedatectl

时间默认以 UTC-0 时区显示,比北京时间慢 8 小时。这是正常现象,无需调整。

如果时间不准确,可以使用 date 命令手动设置时间。

root@archiso ~ # date MMDDhhmmYY  # 如 date 1231080023 可以将时间设定为 2023 年 12 月 31 日 08:00

当然你也可以启用 NTP 服务自动同步时间:

timedatectl set-ntp true # 将系统时间与网络时间进行同步
timedatectl status		 # 查看系统时间状态,检查是否成功 看到(system clock synchronized :yes)这一句就是成功了

更换软件源

ArchLinux 的包管理器是 pacman​,由于网络问题,我们需要更换软件源为国内的站点,以确保软件宝能够顺利下载安装:

提示

如果不会使用 vim​ 编辑器,请参阅 这里vim​ 编辑器在安装和配置系统的过程中还需要使用多次。

  • 更换软件源

    # 备份原来的配置文件
    cp -a /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak
    
    # 编辑配置文件
    vim /etc/pacman.d/mirrorlist
    
    # 添加下列条目到最开头的Server=...之前
    Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch # 中国科学技术大学开源镜像站
    Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch # 清华大学开源软件镜像站
    Server = https://repo.huaweicloud.com/archlinux/$repo/os/$arch # 华为开源镜像站
    Server = http://mirror.lzu.edu.cn/archlinux/$repo/os/$arch # 兰州大学开源镜像站
    Server = http://mirrors.aliyun.com/archlinux/$repo/os/$arch # 阿里云镜像站
    
  • 更新软件包

    pacman -Syyu
    

提示

这个文件接下来还会被 pacstrap​拷贝到新系统里,所以请您确保设置正确

硬盘分区

分区说明

挂载点 分区 分区类型 建议大小
/boot EFI System EFI 系统分区 300M
[swap] Linux swap 交换分区 动态调整,用于内存交换
/ Linux x86-64 root 根目录 分配设备所有剩余空间,至少 23-32GB
  • boot 分区是引导分区,如果是单系统,要划分 EFI 分区,如果是双系统,直接挂载现有的 EFI 分区即可,boot 分区是 UEFI 启动所必须的,如果是 Legacy 启动,可以不需要这个分区

  • swap 是内存交换分区,内存不足时,系统会将内存文件放入其中,以提高系统性能,通常建议设置

  • 根目录就是系统安装的目录,其他的所有目录都挂载在根目录下,相当于 Windows 系统的 C 盘,但是比它更加重要

  • 硬盘相关文件存放在 /dev​目录下,文件类型为 b

    1. /dev/XdY​ 代表普通的硬盘。X 取值 h​,s​,v​。Y 取值任意 26 个字母。s​(sata,scsi,sas)h​(ide)v​(虚拟化)。Y 的取值代表该类型硬盘的第几块,a​(第一块),b​(第二块)……aa(第 27 块),后面加 n​代表第 n​个分区,n 为 >=1 的整数
    2. /dev/nvmeXnY​ 代表 nvme 硬盘,X 表示控制器的编号,n​ 是固定字符,Y 表示该控制器下的命名空间编号,后面加 pn​代表第 n​个分区,n 为 >=1 的整数
    3. /dev/srn​ 代表光盘。n 代表第几块光盘
    4. /dev/dm-n​ n 取任意自然数,代表 lvm(逻辑卷管理器)分区

    常见的是 /dev/sda​和 /dev/nvme0n1​等硬盘编号

创建磁盘分区

  • 查看磁盘分区

    lsblk
    
  • 使用 fdisk​分区工具进行分区

    fdisk /dev/<the_disk_to_be_partitioned>
    
  • fdisk​命令

    指令 作用
    m 获取帮助列表
    p 查看当前分区情况
    d 删除分区
    t 修改分区标签(给分区打标签,指定分区的作用,当前版本只有提示意义)
    l 列出所有标签类型
    w 保存并退出
    q 不保存修改,直接退出
    n 表示创建一个分区
  • 创建步骤

    1. 指定分区编号:分区的编号自动分配,也可以手动指定
    2. 指定分区起始扇区号:指定分区从哪一个扇区开始,一般采用默认值
    3. 指定分区结束扇区号:指定分区到哪个扇区结束,用来指定分区大小。直接输入数字表示输入结束扇区的编号,+数字​代表指定分区内包含扇区的数量,+数字单位​代表指定分区大小
  • 示例

    root@archiso ~ # fdisk /dev/sda  # 请将 sda 更换为您的设备名,如 nvme0n1
    
    Welcome to fdisk (util-linux 2.x).
    Changes will remain in memory only, until you decide to write them.
    Be careful before using the write command.
    
    Command (m for help): p  # 输入 p 打印分区表,检查已有的分区。我们有 260 MiB 大小的 EFI 分区和 16 MiB 大小的 MSR 分区,以及 50 GiB 大小的 C 盘和 D 盘
    
    Disk /dev/sda: 150.6 GiB, 161705518592 bytes, 315831091 sectors
    Disk model: xxx
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    Disklabel type: gpt
    Disk identifier: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    
    Device        Start        End   Sectors   Size  Type
    /dev/sda1      2048     534527    532480   260M  EFI System
    /dev/sda2    534528     567295     32768    16M  Microsoft reserved
    /dev/sda3    567296  105424895 104857600    50G  Microsoft basic data
    /dev/sda4 105424896  210282495 104857600    50G  Microsoft basic data
    
    Command (m for help): n  # 输入 n 创建新的分区,这个分区将是根分区
    Partition number (5-128, default 5):  # 分区编号保持默认,直接按 Enter
    First sector (210282496-315831057, default 210282496):  # 第一个扇区,保持默认
    Last sector, +/-sectors or +/-size{K,M,G,T,P} (210282496-315831057, default 315831057): +50G  # 创建 50 GiB 大小的根分区,您可以根据自己的硬盘空间决定根分区的大小
    
    Created a new partition 5 of type 'Linux filesystem' and of size 50 GiB.
    
    Command (m for help): t  # 输入 t 改变分区类型,请勿遗忘此步
    Partition number (1-5, default 5):   # 保持默认
    Partition type or alias (type L to list all): 23  # 输入 23 代表 Linux root (x86-64) 类型
    Changed type of partition 'Linux filesystem' to 'Linux root (x86-64)'.
    
    Command (m for help): n  # 输入 n 创建新的分区,这个分区将是 home 分区
    Partition number (6-128, default 6):   # 保持默认
    First sector (252225536-315831057, default 252225536):   # 保持默认
    Last sector, +/-sectors or +/-size{K,M,G,T,P} (252225536-315831057, default 315831057):   # 保持默认,将剩余空间全部分给 home 分区
    
    Created a new partition 6 of type 'Linux filesystem' and of size 30.3 GiB.
    
    Command (m for help): t  # 输入 t 改变分区类型
    Partition number (1-6, default 6):   # 保持默认
    Partition type or alias (type L to list all): 42  # 输入 42 代表 Linux home 类型
    Changed type of partition 'Linux filesystem' to 'Linux home'.
    
    Command (m for help): p  # 输入 p 打印分区表,请检查分区是否有误,如果有误,请输入 q 直接退出
    
    Disk /dev/sda: 150.6 GiB, 161705518592 bytes, 315831091 sectors
    Disk model: xxx
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    Disklabel type: gpt
    Disk identifier: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    
    Device        Start        End   Sectors   Size  Type
    /dev/sda1      2048     534527    532480   260M  EFI System
    /dev/sda2    534528     567295     32768    16M  Microsoft reserved
    /dev/sda3    567296  105424895 104857600    50G  Microsoft basic data
    /dev/sda4 105424896  210282495 104857600    50G  Microsoft basic data
    /dev/sda5 210282496  252225535  41943040    50G  Linux root (x86-64)
    /dev/sda6 252225536  315830271  63604736  30.3G  Linux home
    
    Command (m for help): w  # 输入 w 写入分区表,该操作不可恢复
    The partition table has been altered.
    Calling ioctl() to re-read partition table.
    Syncing disks.
    

分区标记起到提醒的作用,通常没有实际用处,可以直接保持默认,也可以更改

编号 类型
23 Linux root (x86-64)
swap/19 Linux swap
lvm/44 Linux LVM
linux/20 Linux filesystem(默认)
uefi/1 EFI System

提示

请谨慎编辑与执行,只要不执行 w​,更改就不会被保存,使用 q​退出编辑

格式化分区

上面的操作只是分区,需要进行格式化,不同分区需要不同的格式。格式化分区会删除所有数据,千万小心操作!

  • 根目录格式使用 ext4

    # <disk> 为你刚才分区时指定的分区,如果忘记可以使用 fdisk -l 查看
    mkfs.ext4 /dev/<disk> 
    
    # 例如:
    # mkfs.ext4 /dev/nvme0n1p1
    # mkfs.ext4 /dev/nvme0n1p2
    
  • boot 分区格式使用 fat32,双系统不需要再格式化 EFI 分区,如不慎格式化,需要重建 Windows 的启动引导

    # <disk> 为你刚才分区时指定的分区,如果忘记可以使用 fdisk -l 查看
    
    mkfs.fat -F 32 /dev/<disk> 或者 mkfs.vfat /dev/sda1
    
    # 例如:
    # mkfs.fat -F 32 /dev/nvme0n1p3
    
  • swap 分区格式使用 swap 命令

    mkswap /dev/<device>
    
    # 例如:
    # mkswap /dev/nvme0n1p4
    

挂载分区

根据上面的分区方案,将不同分区挂载到不同目录:

  • 根分区挂载:

    mount /dev/<root_disk_part> /mnt
    
  • boot 分区挂载:

    mount --mkdir /dev/<boot_disk_part> /mnt/boot # --mkdir参数用于在文件夹不存在时自动创建
    
    # or
    
    mount --mkdir /dev/<boot_disk_part> /mnt/efi
    
  • swap 分区:

    swapon /dev/<swap_disk_part> #使用swapon命令激活swap
    swapon #使用swapon命令查看是否挂载成功
    

使用 df​ 命令复查挂载情况:

df -hT #不会显示swap分区

使用 LVM 逻辑卷安装系统

如果根目录使用 lvm,不更改设置无法正常引导启动,具体配置可参照 LVM - Arch Linux 中文维基 (archlinuxcn.org)

使用 lvm 能够动态管理硬盘空间大小,能够在线增大和减小磁盘空间,如果你的根目录空间不够,挂载只能增加更多磁盘,想要增加根目录空间只能重新格式化,使用 lvm 就能够避免这一问题

LVM 逻辑卷管理器
  • PV——物理卷,指我们用来做 lvm 的硬盘资源,可以由空闲分区或者空硬盘制作而成
  • VG——卷组,将物理卷整合在一起统一管理,称之为卷组
  • PE——物理扩展单元,VG 的最小单位,在制作 VG 时会将 VG 中的 PV 划分为一个一个的 PE
  • LV——逻辑卷,从 VG 中以 PE 为单位划分出的新分区,使用方法与普通物理分区一致

安装 lvm 软件包

sudo pacman -S lvm2
配置 LVM 分区
  1. 制作 PV
pvcreate <partition_path/disk_path>		#制作pv
pvs										#查看系统中现有的pv
  1. 制作 VG
vgcreate [-s pe_size] <vg_name> <pv_path> [pv_path_other]
vgs										#查看当前系统中的vg

注意:PE 大小默认为 4M,在设置 PE 大小时,数字必须为 2 的指数幂

  1. 制作 LV
lvcreate -l <pe数量> -n <lv_name> <vg_name>
lvcreate -L <lv_size> -n <lv_name> <vg_name>
lvs										#查看系统中现有的LV

注意:

  1. lv 的使用方法与普通分区一样,需要制作文件系统以及挂载
  2. lv 路径写法:/dev/vg_name/lv_name/dev/mapper/vg_name-lv_name

两种路径效果等效

改变 LV 的大小

增大 LV

  • 查看 vg 剩余空间
vgs
  1. 如果 vg 剩余空间不足,需要先增大 vg
vgextentd <vg_name> <pv_path>
  1. 空间足够 lv 支持在线增大(可以直接增大在挂载中的硬盘)
lvresize -l <number> <lv_path>		#将lv增大至number个PE
lvresize -l <+number> <lv_path>		#在lv中增大n个PE
lvresize -L <size> <lv_path>		#将lv增大至某个大小
lvresize -L <+size> <lv_path>		#将lv增大某个大小
  1. 增大分区的文件系统

只有 ext4 和 xfs 的文件系统支持增大

ext4 文件系统增大:

resize2fs <lv_path>

xfs 文件系统增大:

xfs_growfs <lv_path>

减小 LV

  1. 卸载要减小的 lv
umount <lv_path>
  1. 减小文件系统大小

只有 ext4 的文件系统支持减小

e2fsck -f <lv_path>
resize2fs <lv_path> <size>
  1. 减小分区大小
lvresize -l <number> <lv_path>		#将lv减小至number个PE
lvresize -l <+number> <lv_path>		#在lv中减小n个PE
lvresize -L <size> <lv_path>		#将lv减小至某个大小
lvresize -L <-size> <lv_path>		#将lv减小某个大小
配置 mkinitcpio

如果你的根文件系统基于 LVM,你需要启用适当的 mkinitcpio 钩子,否则你的系统可能无法启动。

使用基于 systemd 的 initramfs,启用 systemd​和 sd-lvm2​。

udev​默认已经预设好,不必手动启用了。你只需要编辑 /etc/mkinitcpio.conf​文件,在 block​与 filesystem​这两项中间插入 lvm2​:

基于 systemd 的 initramfs:

/etc/mkinitcpio.conf
###
HOOKS=(base systemd ... block lvm2 filesystems) 	#在对于位置增加systemd和lvm2模块
###

之后你就可以继续下一步的创建和启用镜像操作了

mkinitcpio -P							#使用mkinitcpio重新生成内存镜像

提示

  • lvm2​和 sd-lvm2​钩子被 lvm2 安装,而不是 mkinitcpio。如果你在"arch-chroot"中新安装的 Arch Linux 中运行"mkinitcpio",必须在环境中安装 lvm2 以使 mkinitcpio 找到 lvm2​或 sd-lvm2​钩子。如果 lvm2 未安装, mkinitcpio 将报错:Error: Hook 'lvm2' cannot be found
  • 若根文件系统在 LVM + RAID 上,请参见#为 RAID 配置 mkinitcpio

开始安装系统

启动安装

  • 使用 pacstrap​命令

    pacstrap /mnt base base-devel linux linux-firmware # 四个必备的软件包
    

生成文件系统表

fstab​ 用来定义磁盘分区。它是 Linux 系统中重要的文件之一。使用 genfstab​ 自动根据当前挂载情况生成并写入 fstab​ 文件。文件系统表主要用于系统启动时自动挂载分区,不然系统无法正常启动!执行以下命令生成

# 生成 fstab文件
genfstab -U /mnt >> /mnt/etc/fstab

# 查看是否生成
cat /mnt/etc/fstab

切换到新系统

到这一步基本系统安装已经完成,但是还没有对系统进行配置,所以现在还没到关机重启的时候。执行以下命令进入到我们安装的系统,对系统进行配置:

arch-chroot /mnt

此时,原来安装盘下的 /mnt​ 目录就变成了新系统的 /​ 目录。同时,可以发现命令行的提示符颜色和样式也发生了改变。

开机前的配置

设置时区

  • 通过以下命令设置时区

    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    
  • 然后运行 hwclock(8) 以生成 /etc/adjtime

    # hwclock --systohc
    

区域和本地化设置

程序和库如果需要本地化文本,都依赖区域设置,后者明确规定了地域、货币、时区日期的格式、字符排列方式和其他本地化标准。

需要设置这两个文件:locale.gen​ 与 locale.conf​。

编辑 /etc/locale.gen​,然后取消掉 en_US.UTF-8 UTF-8​ 和 zh_CN.UTF-8 UTF-8​前的注释(#)。

接着执行 locale-gen​ 以生成 locale 信息:

# locale-gen

然后创建 locale.conf(5) 文件,并 编辑设定 LANG 变量,比如:

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

另外对于中文用户:

提示: 用户可以设置自己的 locale,详情请参阅 在用户会话中覆盖系统区域设置设置当前区域

  • 将系统 locale 设置为 en_US.UTF-8​ ,系统的 log 就会用英文显示,这样更容易判断和处理问题;

    • 也可以设置为 en_GB.UTF-8​ 或 en_SG.UTF-8​,附带以下优点:

      • 进入桌面环境后以 24 小时制显示时间;
      • LibreOffice 等办公软件的纸张尺寸会默认为 A4​ 而非 Letter(US)​;
      • 可尽量避免不必要且可能造成处理麻烦的英制单位。
    • 设置的 LANG 变量需与 locale 设置一致,否则会出现以下错误:

      • Cannot set LC_CTYPE to default locale: No such file or directory

警告: 并不推荐在此设置任何中文 locale,这可能会导致 tty 上中文显示为方块。如果您不经常使用 tty ,或是稍后需要安装桌面环境,则在不使用 tty 后可以设置为中文的 locale 。

如果需要修改#控制台键盘布局和字体,可编辑 vconsole.conf(5) 使其长期生效,例如:

/etc/vconsole.conf
KEYMAP=<fonts> #de-latin1

主机名与 hosts 配置

利用 vim​创建 hostname 文件:

vim /etc/hostname

<ArchLinux_hostname>

创建 hosts 文件:

vim /etc/hosts
127.0.0.1   localhost
::1         localhost
127.0.1.1   <ArchLinux_hostname>.localdomain	<ArchLinux_hostname>

设置 root 密码

虽然现在可以使用 root,但是新系统里面我们还不知道 root 的密码,使用下面的命令更改 root 密码

# 会提示输入两次密码,关乎系统安全请牢记
passwd root

安装引导程序

需要安装 Linux 引导加载程序,才能在安装后启动系统

安装 intel​或 amd​微码

# 查看cpu型号
cat /proc/cpuinfo
# amd 电脑安装
pacman -S amd-ucode
# intel 电脑安装
pacman -S intel-ucode

配置 grub:

# Arch使用grub2管理引导,安装相关程序
pacman -S grub efibootmgr os-prober

命令参数说明:

  • grub​ —— 启动引导器
  • efibootmgr​ —— efibootmgr​ 被 grub​ 脚本用来将启动项写入 NVRAM
  • os-prober​ —— 为了能够引导 win10,需要安装 os-prober​ 以检测到它

安装引导:

grub-install --target=x86_64-efi --efi-directory=/<boot_part> --bootloader-id=<name>
# 说明
grub-install 				# 安装grub

--target=x86_64-efi      	# 目标架构x86架构64位 efi启动方式  若不确定使用uname -a 可以查看

--efi-directory=/boot      	# 引导分区的位置/boot或/efi,根据之前引导分区的挂载点自行修改

--bootloader-id=<name>		# 这里的Arch名字可以自行更改 甚至这一段都可以不用写

接下来使用 vim​ 编辑 /etc/default/grub​ 文件:

vim /etc/default/grub

grub2 默认禁用了 os-prober ,如果你是选择的双系统或多系统安装,需要手动开启该选项,os-prober 可以检查其他硬盘上的其他系统引导,如果不开启,可能无法识别其他系统,如果你是全盘单系统安装,可以忽略这个选项

# 需要开启 os-prober 执行下面命令
echo "GRUB_DISABLE_OS_PROBER=false" >> /etc/default/grub

生成引导配置文件:

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

如果出现错误,请回头检查命令是否输入错误或者配置是否出错,安装时的一点错误都可能成为你无法开机的原因或者以后使用时的 bug。如果检查没有问题,那么我们就可以进行最后的一点设置了。

可选的额外配置:

  • 去掉 GRUB_CMDLINE_LINUX_DEFAULT​ 一行中最后的 quiet​ 参数
  • loglevel​ 的数值从 3​ 改成 5​。这样是为了后续如果出现系统错误,方便排错
  • 加入 nowatchdog​ 参数,这可以显著提高开关机速度

注意

  • 分区挂载点并不重要,os-prober 读取 mtab​信息来确认并搜索引导程序的位置。
  • 记得每次运行 grub-mkconfig 之前都把包含其他操作系统引导程序的分区挂载上,以免这些操作系统的启动项丢失。
  • os-prober 在 chroot 中可能无法正常运作。如果遇到这种情况,重启并引导进入系统后再次尝试。

安装软件包及配置开机启动项

ArchLinux 使用 systemd 管理后台服务,我们希望开机之后自动连接网络,所以需要下载联网程序并设置开机自启动:

# 下载wifi 管理
pacman -S dhcpcd iwd networkmanager
pacman -S vim sudo bash-completion  iproute2  neofetch yay zsh fish
# 设置开机自启动
systemctl enable dhcpcd
systemctl enable iwd
systemctl enable NetworkManager
  • vim​——编辑器
  • dhcpcd​——dhcp 服务
  • iwd​,networkmanager​——网络配置管理器

提醒

如果忘记安装部分软件包导致启动后无法联网配置,或是其他原因导致启动失败,按照之前步骤进入 U 盘的 Live 系统,挂载并进入系统继续配置即可

新建用户

开机之后会显示一个终端的登陆界面,由于我们刚才安装时没有新建用户,默认只有一个 root 用户,所以我们直接使用 root 和 root 密码登录。运行以下命令新建用户:

# <username> 为你自己的用户名,登录用,注意用户名必须全小写
# 不指定家目录的话,默认为/home/<username>
useradd -m -G wheel -s /bin/bash <username>

# 设置用户密码
passwd <username>

命令参数说明:

  • -m​ 创建用户的同时创建用户家目录

  • -G​选项后指定附加组

    • wheel​ —— wheel​ 附加组可 sudo​ 进行提权
  • -s​ 选项后指定 shell 程序

  • myusername​ —— 用户名(请自定义,但不要包含空格和特殊字符)

找到如下这样的一行,把前面的注释符号 #​ 去掉:

#%wheel ALL=(ALL) ALL

这里稍微解释一下:

  • %wheel​ —— 用户名或用户组,此处则代表是 wheel​ 组,%​ 是用户组的前缀
  • ALL=​ —— 主机名,此处则代表在所有主机上都生效(如果把同样的 sudoers​ 文件下发到了多个主机上)
  • (ALL)​ —— 用户名,此处则代表可以成为任意目标用户
  • 最后的 ALL​ —— 代表可以执行任意命令

重启

到了这里 ArchLinux 的安装也就到了尾声,接下来你只需要退出安装程序,然后取消挂载分区,重启选择 Arch 系统就可以进入 ArchLinux 了

# 退出arch root 安装环境
exit

# 取消挂载
umount -R /mnt

# 重启并拔出U盘
reboot

配置系统

桌面环境使用 xfce4,资源占用低,其他可选的桌面环境还有 KDE,GNOME,Deepin(深度),相对比较吃配置

安装 xfce4

安装窗口图形系统 Xorg

sudo pacman -S xorg

安装 xfce4

sudo pacman -S xfce4 xfce4-goodies
  • xfce4​——本体软件包
  • xfce4-goodies​——拓展包,提供额外的插件和工具

安装显示管理器 lightdm

pacman -S lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings

sudo systemctl enable lightdm #设置开机启动
  • lightdm​——本体软件包
  • lightdm-gtk-greeter​——lightdm 默认使用的 greeter
  • lightdm-gtk-greeter-settings​——图形化配置插件

设置网络管理器

sudo pacman -S networkmanager network-manager-applet 	#网络相关程序及管理界面
systemctl enable NetworkManager 						#设置networkmanager 开机启动
systemctl disable iwd 									#禁用iwd防止和networkmanager冲突
systemctl enable dhcpcd 								#开机启动dhcp服务

中文设置

编辑配置

sudo vim /etc/enviroment		#编辑全局环境变量
###
LANG=zh_CN.UTF-8				#添加该条配置
###

常用字体,选择性安装

sudo pacman -S <fonts>
###
adobe-source-han-serif-cn-fonts
wqy-zenhei					# 文泉驿
wqy-microhei				# 文泉驿
adobe-source-sans-font		# 思源黑体
harmonyos-sans-git			# 鸿蒙黑体
ttf-misans					# MiSans
noto-fonts-emoji			# emoji
noto-fonts
noto-fonts-cjk
noto-fonts-extra
wqy-microhei-lite
wqy-bitmapfont
wqy-zenhei
ttf-arphic-ukai
adobe-source-han-sans-cn-fonts
adobe-source-han-serif-cn-fonts

yay -S ttf-fira-code		# 开发人员最喜欢的字体没有之一
###

读取 U 盘及其他磁盘

sudo pacman -S ntfs-3g gvfs 	#xfce自带的文件管理器需要gvfs支持,ntfs-3g安装后才能支持ntfs格式磁盘的读取

蓝牙依赖

sudo pacman -S bluez bluez-utils blueman 	#蓝牙相关程序及管理界面
systemctl enable bluetooth					#开机启动蓝牙服务

声音设置

sudo pacman -S pulseaudio pavucontrol		#音频相关服务及控制插件

中文输入法

软件包下载

sudo pacman -S fcitx5 fcitx5-configtool fcitx5-rime		# 小企鹅输入法及GUI配置工具
sudo pacman -S fcitx5-chinese-addons 					# 官方中文输入引擎,推荐安装
sudo pacman -S fcitx5-material-color 					# 输入法主题,推荐安装
sudo pacman -S fcitx5-rime								# 中州韵输入法引擎

全局环境变量设置

sudo vim /etc/enviroment
###
XMODIFIERS=@im=fcitx
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
###

显示设置

显卡驱动与双显卡切换

首先,安装显卡驱动。mesa 是所有开源显卡驱动的基础,一般都要安装。

# 查看显卡型号
# 自带核显
lspci |grep VGA
# 查看其它独显
lspci |grep -i nvida

这里,我们尽量给安装完整,有几大功能:OpenGL, vulkan, vaapi, vdpau, opencl. 32 位的程序也要使用并安装相应的驱动 (请先更新 pacman 32 运行库)。系统是 archlinux,用的官方内核。

Intel 显卡驱动安装:

sudo pacman -S mesa xf86-video-intel vulkan-intel
sudo pacman -S libva-intel-driver libvdpau-va-gl intel-compute-runtime
sudo pacman -S lib32-vulkan-intel lib32-mesa intel-gpu-tools
# mesa    3D driver
# xf86-video-intel    2d driver
# libva-intel-driver    vaapi 视频硬解码库
# libvdpau-va-gl    vdpau 视频硬解码库,以vaapi为基础的翻译层
# intel-compute-runtime    opencl
# intel-gpu-tools    用sudo intel_gpu_top观察Intel显卡负载

nvidia 显卡驱动安装:(yay 软件在 archlinuxcn 里面,添加源就可安装)

# 闭源驱动:
sudo pacman -S nvidia nvidia-prime nvidia-settings nvidia-utils opencl-nvidia
sudo pacman -S lib32-nvidia-utils lib32-opencl-nvidia libva-vdpau-driver
# nvidia    内核所属,记得更新驱动也要更新linux内核:sudo pacman -Syu
# nvidia-utils    opengl, vulkan, vdpau
# opencl-nvidia    opencl, cuda driver
# nvidia-prime    用"prime-run $cmd"启动程序运行于nvidia上
# libva-vdpau-driver    vaapi 视频硬解码库,以vdpau为基础的翻译层
 
# 开源驱动:(2d性能和闭源驱动相当,3d性能可能是闭源的一半,不支持opencl)
yay -S nouveau-fw
sudo pacman -S mesa xf86-video-nouveau lib32-mesa libva-mesa-driver mesa-vdpau
# xf86-video-nouveau    2d driver
# nouveau-fw    nvidia官方firmware,视频硬解需要
# libva-mesa-driver    vaapi 视频硬解码库
# mesa-vdpau    vdpau 视频硬解码库

AMD 显卡驱动安装:

sudo pacman -S mesa xf86-video-amdgpu vulkan-radeon libva-mesa-driver mesa-vdpau
sudo pacman -S opencl-mesa lib32-vulkan-radeon lib32-mesa
# xf86-video-amdgpu    2d driver
# vulkan-radeon    vulkan
# opencl-mesa    opencl

# 开源驱动性能和闭源驱动差不了多少,就不考虑闭源。这方面AMD更好。

如果要在 Linux 下工作,那么不推荐买 nvidia 显卡;如果只是为了打游戏,那么推荐买 nvidia 显卡。轻度办公和游戏,核显足够了。看视频的话,整个多核心带核显 CPU 就行。

Virtualbox(显卡)驱动安装:

sudo pacman -S virtualbox-guest-utils mesa lib32-mesa
systemctl enable --now vboxservice

Vmware(显卡)驱动安装:

sudo pacman -S mesa xf86-video-vmware xf86-input-vmmouse open-vm-tools lib32-mesa
systemctl enable --now vmtoolsd
systemctl neable --now vmware-vmblock-fuse

硬件无关的 opencl 库:

sudo pacman -S pocl

驱动安装完了,但是不知道如何使用。建议先 sudo mkinitcpio -P 再重启后,才会启动驱动。

要检查驱动的功能,可以如下方法:

sudo pacman -S --needed vulkan-tools libva-utils vdpauinfo mesa-demos lib32-mesa-demos

# 64位的opengl信息
glxinfo -B
# 32位的opengl信息
glxinfo32 -B
# 使用glxinfo命令可以查看当前正在使用的显卡。
# Intel
glxinfo | grep "OpenGL renderer"
OpenGL renderer string: Mesa Intel(R) UHD Graphics 630 (CFL GT2)
# 切换NVIDIA显卡后
glxinfo | grep "OpenGL renderer"
OpenGL renderer string: NVIDIA GeForce GTX 1050 Ti/PCIe/SSE2

# vulkan信息汇总
vulkaninfo --summary
# vaapi信息
vainfo  # 注意:闭源nvidia驱动会导致该命令不可用
# vdpau信息
vdpauinfo

此外,可能还需要切换显卡,要用这项功能,安装 optimus-manager 软件包:

具体详情参照 Optimus-manager 的 GitHub 页面

yay -S optimus-manager

# 命令行切换显卡
optimus-manager --switch nvidia   # 切换到 Nvidia GPU
optimus-manager --switch integrated  # 切换到集成 GPU 并关闭 Nvidia GPU

UI 界面

yay -S optimus-manager-qt

Zsh

zsh 基本兼容 bash,但相比 bash,又有诸多优点:

  1. 更强大的 tab​ 补全
  2. 更智能的切换目录
  3. 大小写字母自动更正
  4. 更强大的 alias​ 命令
  5. 丰富多彩的主题
  6. 可以集成各种类型的插件

通过以下命令安装 zsh 相关的包

sudo pacman -S zsh zsh-autosuggestions zsh-syntax-highlighting zsh-completions

相关包说明:

安装 autojump 插件:

yay -S autojump

3.更改账户的默认 Shell:

chsh -l # 查看安装了哪些 Shell
chsh -s /usr/bin/zsh # 修改当前账户的默认 Shell

4.注销并重新登录 > 打开终端,此时会弹出界面,进行设置:

  • 按下 0​ 将创建一个只包含注释的 ~/.zshrc​ 文件,在下次启动时不会再次弹出设置选项。
  • 按下 1​ 即可进入设置:
Please pick one of the following options:

(1)  Configure settings for history, i.e. command lines remembered
     and saved by the shell.  (Recommended.)

(2)  Configure the new completion system.  (Recommended.)

(3)  Configure how keys behave when editing command lines.  (Recommended.)

(4)  Pick some of the more common shell options.  These are simple "on"
     or "off" switches controlling the shell's features.

(0)  Exit, creating a blank ~/.zshrc file.

(a)  Abort all settings and start from scratch.  Note this will overwrite
     any settings from zsh-newuser-install already in the startup file.
     It will not alter any of your other settings, however.

(q)  Quit and do nothing else.  The function will be run again next time.

根据提示完成设置即可。也可以创建一个只包含注释的 ~/.zshrc​ 文件以使用默认值。

ℹ️ 提示

root 账户需要手动创建 root/.zshrc​ 文件。

ℹ️ 提示

若希望重新设置,只需要把 ~/.zshrc​ 文件删掉即可。

5.为了让插件生效,需要修改 ~/.zshrc​。使用 vim​ 编辑 ~/.zshrc​ 文件:

vim ~/.zshrc

将以下内容分别添加到需要设置 zsh 账户的 ~/.zshrc​ 中:

source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
source /usr/share/autojump/autojump.zsh

6.关闭并重新打开终端,测试一下:

提示

可能需要:

oh_my_zsh

ohmyzsh 是一个 zsh 的美化包,可以直接使用它来强化 zsh

安装 zsh 后,可以精简模块配置

vim ~/.zshrc
###
ZSH_CUSTOM=/usr/share/zsh			# 取消相关注释并编辑即可
plugin=(							# 在对应位置添加相关插件
		git
		autojump
		zhs-autosuggestions
		zsh-syntax-highlighting
)
###

grub 主题推荐

vinceliuice/grub2-themes: Modern Design theme for Grub2 (github.com)

其他软件包

sudo pacman -S firefox		#火狐浏览器
sudo pacman -S chromium		#谷歌浏览器
sudo pacman -S git			#git

yay

使用 git 下载,会有网络问题,自行解决

pacman -S --needed git base-devel
git clone https://aur.archlinux.org/yay-bin.git
cd yay-bin
makepkg -si

yay 软件包

yay 使用方法同 pacman,无须 sudo 执行

# 菜单编辑器
yay -S MenuLibre

# 防火墙
yay -S firewalld
systemctl enable --now firewalld

# 常用 aur 软件
# ===> 编程软件
yay -S visual-studio-code-bin  #  Visual Studio Code 
yay -S intellij-idea-ultimate-edition intellij-idea-ultimate-edition-jre  # idea
yay -S pycharm-professional		# PyCharm Professional
yay -S intellij-idea-ultimate-edition		# IntelliJ IDEA Ultimate Edition

# ===> 浏览器
yay -S google-chrome  # google 浏览器
yay -S microsoft-edge-stable-bin # edge 浏览器
# ===> 办公软件

yay -S wps-office-cn wps-office-mui-zh-cn ttf-wps-fonts #  WPS Office

# ===> 社交软件
yay -S icalingua++ # Icalingua++(第三方Linux QQ)
yay -S deepin-wine-tim  # win tim
yay -S deepin-wine-wechat  # win 微信
yay -S com.tencent.weixin # 微信

# ===> 实用工具
yay -S siyuan					# 思源笔记
yay -S wemeet-bin				# 腾讯会议
yay -S utools               	# uTools搜索
yay -S flameshot            	# 火焰截图
yay -S motrix-bin           	# 下载工具
yay -S kdiskmark-git        	# 磁盘检测工具
yay -S gimp                 	# 图像处理
yay -S kdenlive					# 视频后期
yay -S baidunetdisk-electron	# 百度盘
yay -S xunlei-bin           	# 迅雷
yay -S netease-cloud-music  	# 网易云
yay -S yesplaymusic				# 网易云第三方客户端
yay -S obs-studio				# obs
yay -S p7zip                	# 压缩
yay -S unrar                	# 压缩

常见问题

  • 控制台打印 linux 配置信息,没安装它相当于没装系统 😜

    sudo pacman -S fastfetch screenfetch #二者任选其一
    
                       -`   
                      .o+`                 mingking@MingKing
                     `ooo/                 OS: Arch Linux 
                    `+oooo:                Kernel: x86_64 Linux 6.9.4-arch1-1
                   `+oooooo:               Uptime: 43m
                   -+oooooo+:              Packages: 802
                 `/:-:++oooo+:             Shell: bash
                `/++++/+++++++:            Resolution: 1920x1080
               `/++++++++++++++:           DE: Xfce4
              `/+++ooooooooooooo/`         WM: Xfwm4
             ./ooosssso++osssssso+`        WM Theme: Default
            .oossssso-‍‍‍‍‍‍‍‍‍````/ossssss+`       GTK Theme: Adwaita [GTK2]
           -osssssso.      :ssssssso.      Icon Theme: elementary
          :osssssss/        osssso+++.     Font: Sans 10
         /ossssssss/        +ssssooo/-     Disk: 21G / 37G (61%)
       `/ossssso+/:-        -:/+osssso+-   CPU: Intel Core m3-7Y30 @ 4x 2.6GHz [50.0°C]
      `+sso+:-`                 `.-/+oso:  GPU: Intel Corporation HD Graphics 615 (rev 02)
     `++:.                           `-/+/ RAM: 1601MiB / 3800MiB
     .`                                 `/
    
  • 普通用户无法登录

    • 家目录权限问题,修改家目录权限即可

      chown <username>:wheel /home/<username>
      
  • 蓝牙依赖

    sudo pacman -S bluez bluez-utils blueman #蓝牙相关程序及管理界面
    systemctl enable bluetooth
    
  • 网络管理器

    sudo pacman -S networkmanager network-manager-applet #网络相关程序及管理界面
    systemctl enable NetworkManager
    systemctl disable iwd
    systemctl enable dhcpcd
    
  • U 盘

    sudo pacman -S ntfs-3g gvfs #xfce自带的文件管理器需要gvfs支持,ntfs-3g安装后才能支持ntfs格式磁盘的读取
    
  • 权限

    • 不要使用 root 权限登录图形界面,使用 root 权限执行命令用 sudo​,提权用 su
    • 如果普通用户无法 sudo​,编辑 /etc/sudoers​文件
  • 无法格式化磁盘

    • 由于不小心将 fdisk 挂到后台导致后台占用

      fuser -km /dev/<disk> #杀死占用磁盘的进程
      
  • 图形化界面

    • 低配设备使用轻量化的图形化界面

      • 桌面环境使用 xfce4
      • 窗口登录管理器使用 lightdm
  • 修改主机名

    hostnamectl set-hostname <hostname>
    
    sudo vim /etc/hosts
    127.0.0.1 localhost
    ::1 localhost
    127.0.0.1 <hostname>.localdomain <hostname>
    
  • 修改默认 shell

    chsh -l #查看己安装的shell
    chsh -s /bin/zsh #修改默认shell
    
  • 更新系统

    sudo pacman -Syu
    
  • 中文设置

    sudo vim /etc/enviroment
    LANG=zh_CN.UTF-8
    
  • 声音设置

    sudo pacman -S pulseaudio pavucontrol
    
  • multilib

    multilib 仓库位于您最喜欢的仓库镜像的 .../multilib/os/​ 目录。

    multilib 包含着 32 位的软件和链接库,可以用于在 64 位系统上运行和构建 32 位软件,例如 winesteam 等。

    想使用 multilib 仓库,请在 /etc/pacman.conf​文件中取消 [multilib]​ 段落的注释:

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

参考资料

  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    920 引用 • 931 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...