惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

爱范儿
爱范儿
Simon Willison's Weblog
Simon Willison's Weblog
K
Kaspersky official blog
P
Palo Alto Networks Blog
Google DeepMind News
Google DeepMind News
www.infosecurity-magazine.com
www.infosecurity-magazine.com
AI
AI
G
GRAHAM CLULEY
O
OpenAI News
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Help Net Security
Help Net Security
L
LINUX DO - 热门话题
S
Schneier on Security
P
Privacy International News Feed
L
Lohrmann on Cybersecurity
SecWiki News
SecWiki News
C
Cybersecurity and Infrastructure Security Agency CISA
T
Threatpost
C
Cyber Attacks, Cyber Crime and Cyber Security
A
Arctic Wolf
C
Cisco Blogs
V2EX - 技术
V2EX - 技术
有赞技术团队
有赞技术团队
Apple Machine Learning Research
Apple Machine Learning Research
月光博客
月光博客
Latest news
Latest news
人人都是产品经理
人人都是产品经理
Schneier on Security
Schneier on Security
Last Week in AI
Last Week in AI
Webroot Blog
Webroot Blog
美团技术团队
N
News and Events Feed by Topic
大猫的无限游戏
大猫的无限游戏
Security Archives - TechRepublic
Security Archives - TechRepublic
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 三生石上(FineUI控件)
The Cloudflare Blog
Project Zero
Project Zero
博客园_首页
Cloudbric
Cloudbric
IT之家
IT之家
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
雷峰网
雷峰网
罗磊的独立博客
Hacker News: Ask HN
Hacker News: Ask HN
The Last Watchdog
The Last Watchdog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
T
Tenable Blog
Scott Helme
Scott Helme

方寸之間

修复 Arch Linux 的内核缺失问题 - 方寸之間 安装定制化 Vim - 方寸之間 树莓派配置旁路由过程记录 - 方寸之間 Cloudflare Tunnel 不完全上手指南 - 方寸之間 解除 New Bing 地区和浏览器限制的方法 - 方寸之間 FRP 上手教程 - 方寸之間 深入理解 Linux nohup 命令 - 方寸之間 C++智能指针是什么 - 方寸之間 PGP 工作原理详解 - 方寸之間 如何恢复 Windows EFI 分区 - 方寸之間 Scaleway IPV6 server 申请及使用攻略 - 方寸之間 Arch Linux 升级系统提示签名无效 - 方寸之間 Arch Linux 音响有杂音的解决办法 - 方寸之間 Arch Linux 如何切换内核 - 方寸之間 Django 项目时区更改错误的解决方案 - 方寸之間 超简单的 Arch Linux + Windows 双启动教程 - 方寸之間 使用 UFW 配置 Linux 防火墙 - 方寸之間 Git 中的一个特殊 hash - 方寸之間 深入理解数据库事务 - 方寸之間 CRLF 和 LF 之间的区别与联系 - 方寸之間 DNS 的更新是如何工作的? - 方寸之間 浅析 Linux 的 cron 命令 - 方寸之間 如何快速查看 github 代码库中早期 commits - 方寸之間 黑科技:使用 GitHub 搭建自己的短链接服务 - 方寸之間 Build site with Franklin.jl - 方寸之間 iwd 的使用教程 - 方寸之間 超好用的 UML 工具推荐 - 方寸之間 如何将 Julia 添加到 Jupyter Notebook - 方寸之間 费曼技巧:最好的学习方式 - 方寸之間 How to Create Linux Desktop Entry - 方寸之間 Make a TODO robot with Github Actions - 方寸之間 C++继承 多态 虚函数 - 方寸之間 C++ inline 关键字详解 - 方寸之間 C++ Static 关键字详解 - 方寸之間 C++ type conversion notes - 方寸之間 Solution for _CRT_SECURE_NO_WARNINGS error - 方寸之間 IR Homework - 方寸之間 Customize Ubuntu themes, icons and Shell - 方寸之間 恢复右键菜单的新建命令 - 方寸之間 Hugo+Github 搭建个人博客 - 方寸之間
ArchLinux 安装配置笔记 (Updated) - 方寸之間
Mercas · 2020-07-05 · via 方寸之間

一篇详尽的 Arch Linux 安装指南以及安装过程的踩坑记录。

前言#

自从 3 月份从 Arch 换到 Fedora 系统之后,刚开始感觉还不错,因为大部分东西都已经帮你搞定了,自己只要会用就可以了,但是用的久了,感觉 Fedora 的软件包管理器真心不如 Arch 的 pacman 好用,有些中文软件在仓库中根本找不到,自己配置起来很麻烦,但是如果用 Arch 的话,构建起来就很简单了,所以最终还是决定重新拥抱 Arch。 刚一开始我还准备按照我之前总结的安装记录进行安装,毕竟当时记录的还是很详细的,但是没想到刚进入 Live 系统就碰到了一个难题:wifi-menu命令不存在! ! EXCUSE ME?? 我明明验证过镜像完整性的,没问题啊,这是怎么回事?还好,机智的我知道这里面有问题,查阅了一点资料之后就发现(这里不得不吹一波 Arch 的用户社区,真心给力,盲猜是最活跃的 Linux 发行版社区)原来是官方弃用了,改用iwd+systemd-networkd来管理网络了,莫得办法,那就换吧,查了查 iwd 的基本命令使用,发现还挺简单的,一次配置,永久使用,比wifi-menu用起来要流畅许多!


archlinux 的 iso 镜像文件自 2020.06.01 开始改了很多东西,大概就这几个方面:

  1. archiso 默认的 shell 是 zsh,不再是 bash 了。
  2. archlinux 摒弃了之前的wifi-menu,改为使用 iwd 来管理网络。
  3. 对于镜像源的管理,采用 reflector 进行管理,终于不用去手动更改镜像源的位置了,使用 reflector 一条命令就搞定了。

必需条件#

  1. 一台可以使用的电脑
  2. 一个 4G 以上内存的 USB 存储器
  3. 一个可以查看本文的电子设备:)

制作 USB 启动盘#

  1. 首先在这里找一个延迟低的官方镜像站下载 ArchLinux 的 iso 镜像,我下载的是最新版本,参数如下:
  • Current Release: 2020.07.01
  • Included Kernel: 5.7.6
  • ISO Size: 647.0 MB
  1. 在镜像站下载 PGP 签名,然后使用gpg验证签名确保镜像完整性以及安全性,命令如下: gpg --keyserver-options auto-key-retrieve --verify archlinux-version-x86_64.iso.sig

  2. 然后使用磁盘烧录工具将镜像写入你的 USB 存储器。 Linux 系统建议使用dd这个神器。 Windows 系统的话,建议使用开源软件rufus,最好不要使用那个 UltralISO,很容易出问题。

开始安装#

验证启动模式#

进入 Live 环境然后验证你的机器的启动模式是 UEFI 还是 BIOS 模式,以下方式二选一:

# 有输出说明是 UEFI 模式

ls /sys/firmware/efi/efivars

# 输出 64/32 说明是对应的 UEFI 模式,否则是 BIOS 模式

cat /sys/firmware/efi/fw_platform_size

连接网络#

前面已经说过了,Archiso 的默认的无线网络管理改为 iwd 了,所以这里就讲一下如何使用 iwd 连接 wifi,如果想深入了解一下iwd,可以参考我写的另一篇文章

  1. 在终端中输入iwctl进入 iwd 提示符:

[root@archiso~] iwctl

[iwd#]

  1. [iwd#]中输入device list查询机器的网卡设备。
  2. 使用以下命令查询附近可用的 wifi 网络:

[iwd#] station <devicename> scan

[iwd#] station <devicename> get-networks # 显示扫描的结果

  1. 在提示符中输入station <devicename> connect <wifi-ssid>连接 wifi 网络,如果 wifi 加密,会提示你输入密码

更新系统时间#

使用timedatectl命令来确保时间是同步的:

timedatectl set-ntp true

timedatectl status # 确保设置成功

磁盘分区#

首先使用lsblk或者其他磁盘工具(例如fdisk)查看磁盘设备:

然后使用fdisk或者cfdisk创建磁盘分区,这里有一点要注意的是,在创建分区的时候, 必需要确保有一个 root 分区/ ,此外,对于 UEFI 模式的设备还需要一个额外的 EFI 系统分区,我的分区方式如下:

挂载点分区类型大小
/mnt/bootEFI system partition1G
/mntLinux x86-64 root32G
swapLinux swap16G
/homeLinux homeRemainder of the device

无论是fdisk还是cfdisk,用起来都很简单,所以这里不再具体介绍了,想要具体了解的可以查阅fdisk 官方文档cfdisk 官方文档。对于新人小白,个人推荐cfdisk,有一个伪图形界面,很容易上手。

格式化分区#

按照上面的步骤建立好分区之后,我们需要将每个分区用对应的文件系统进行格式化。

我的分区名称对应的挂载点

挂载点分区名称
/mnt/boot/dev/sda1
/mnt/dev/sda2
swap/dev/sda3
/home/dev/sda4

对于 root 分区、home 分区等直接使用ext4文件系统进行初始化:

mkfs.ext4 /dev/sda2

mkfs.ext4 /dev/sda4

如果你的机器是 UEFI 启动模式,使用以下命令初始化 EFI 系统分区:

对于交换分区,不能使用上述命令进行格式化,而需要使用mkswap将其初始化:

挂载分区#

首先挂载root分区:

对于其他分区(swap 分区除外,不需要),需要自己手动创建挂载点:

mount --mkdir /dev/sda1 /mnt/boot

mount --mkdir /dev/sda4 /mnt/home

挂载交换分区:

选择镜像源#

文件/etc/sudo pacman.d/mirrorlist定义了软件包会从哪个镜像源下载。在 Live 启动的系统上,所有的镜像都被启用。 在列表中越前的镜像在下载软件包时有越高的优先权。你可以相应的修改文件/etc/sudo pacman.d/mirrorlist,并将地理位置最近的镜像源挪到文件的头部来保证下载速度。而且这个文件接下来还会被 pacstrap 拷贝到新系统里,在这里设置好之后就可以一劳永逸了。

手动修改文件或者可以使用 reflector,执行下面的命令会自动修改 mirrorlist:

reflector -c cn -p https --ipv4 -l 5 --save /etc/sudo pacman.d/mirrorlist

感觉这一步其实现在可以省略了,因为现在在 live 环境中使用reflector进行镜像的管理,貌似你一连接网络,live 系统会自动执行 reflector 命令来帮你选择镜像源,默认的是根据下载速率进行排序,感兴趣的小伙伴可以自己确认一下(连接网络之前备份一下/etc/sudo pacman.d/mirrorlist文件,然后连接网络之后,使用diff对比前后两个文件的差异)。

安装必需软件包#

使用 archiso 内置的脚本pacstrap安装一些基本的软件包、内核及常规的硬件固件:

pacstrap /mnt base linux linux-firmware base-devel

这里要注意的是,上面的命令并不包括所有的基本程序,如网络管理程序、文本编辑器等,如果你想安装这些程序,可以将名字添加到pacstrap后,并用空格隔开。你也可以在 Chroot 进新系统后使用pacman手动安装软件包或组。

配置系统#

生成 fstab 文件#

用以下命令生成fstab文件,其中-U选项用来设置 UUID:

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

然后使用cat /mnt/etc/fstab命令检查以下文件是否正确(每个分区占一行,查看是否包含所有分区)

进入到安装的系统#

安装文本编辑器#

现在的新系统连默认的文本编辑器nano都没有了,所以需要自己手动安装一个,不然后面的一些配置无法实现,所以我选择最强的vim

时区#

使用下面的命令设置时区:

ln -sf /usr/share/zoneinfo/Region/City /etc/localtime

然后使用hwclock生成/etc/adjtime文件:

本地化设置#

本地化的程序与库若要本地化文本,都依赖Locale,后者明确规定地域、货币、时区日期的格式、字符排列方式和其他本地化标准等等。在下面两个文件设置:locale.genlocale.conf

  1. 首先编辑/etc/locale.gen文件,然后将需要的地区的注释移除,建议将en_US UTF-8zh_CN UTF-8都取消注释。
  2. 执行locale-gen命令生成 locale。
  3. 创建locale.conf文件并编辑LANG这一变量(将系统 locale 设置为en_US.UTF-8,系统的Log就会用英文显示,这样更容易问题的判断和处理。):

这里最好不要设置为中文 locale,会导致 TTY 乱码

网络设置#

  1. 创建/etc/hostname文件设置主机名
  2. 配置/etc/hosts文件,将以下内容添加进去:

127.0.0.1 localhost

::1 localhost

127.0.1.1 myhostname.localdomain myhostname

note: 如果系统有一个永久的 IP 地址,请使用这个永久的 IP 地址而不是 127.0.1.1。

设置 root 密码#

使用passwd命令设置 root 密码即可。

这里不得不说一句,使用 arch 是真的让人舒服的一批,不会出现一些令人无语的问题,我还记得第一次使用 linux 的时候,用的是 fedora,当时想要使用su进入 root,但是发现需要密码,但是我不记得安装的时候设置过 root 密码啊,后来查阅了一些资料才发现,fedora 并没有设置 root 密码,需要自己手动设置(使用sudo passwd root)。

安装及配置引导程序#

微码更新#

安装 GRUB之前建议安装对应 CPU 的 ucode,例如我的是 amd 的 CPU,所以安装的是:

pacman -S amd-ucode

# 如果是 Intel 的 CPU

pacman -S intel-ucode

这样在下面生成 GRUB 的配置文件的时候,会包含进去这部分。

GRUB 引导程序#

我用的引导程序是GRUB,首先安装必要的软件包:

pacman -S grub efibootmgr

这里详细介绍一下 UEFI 系统如何安装配置 GRUB:

  1. 首先使用以下命令安装到系统:

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

note: 因为我的 EFI 分区在/boot目录下,所以上述命令的--efi-directory参数就设置为/boot

  1. 使用grub-mkconfig生成 grub 配置文件:

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

安装 wifi 网络管理工具#

推荐使用iwd,命令简单方便又强大:

重启#

  1. 输入exit或按Ctrl+d退出chroot环境
  2. umount -R /mnt手动卸载被挂载的分区
  3. 执行reboot重启系统

再配置新系统#

因为还没有设置普通用户,所以重启后需要使用 root 来进入新系统

添加普通用户#

  1. 使用以下命令添加一个用户

useradd -m -G "附加组" -s "登陆 shell" "用户名"

其中:

  • -m/--create-home:创建用户主目录/home/[用户名]
  • -G/--groups:用户要加入的附加组列表;使用逗号分隔多个组,不要添加空格;如果不设置,用户仅仅加入初始同名组。
  • -s/--shell:用户默认登录 shell 的路径
  1. 赋予用户 root 权限
  • 安装 sudo 软件包: sudo pacman -S sudo
  • /etc/sudoers文件中的root ALL=(ALL) ALL行下添加yourname ALL=(ALL) ALL,如果是多用户,可以加入wheel组,赋予该组成员sudo权限:%wheel ALL=(ALL) ALL

配置网络#

如果你没有安装 wifi 网络管理工具,或者你安装的工具需要 gui 支持,那么恭喜你,你的系统还是无法联网,恭喜你可以重新体验一次完整的 archlinux 安装流程:),则需要重新 USB 进入安装系统,arch-chroot新系统然后安装一个 Wi-Fi 网络管理工具。

如果你按照我上面写的安装了 wifi 工具iwd,那么你还需要做一些额外的工作才能正常使用它:

  1. 启动 iwd 服务,为了以后的使用,建议直接设置为开机自启动,详细方法可以参考systemd

systemctl start iwd.service # 启动服务

systemctl enable iwd.service # 开机自启动服务

  1. 因为 iwd 默认使用的是系统的 DHCP 和 DNS 服务器,所以你还需要启动systemd-networkd.servicesystemd-resolved.service才行,因为新系统默认不会自启动这两个服务,需要你手动开启。当然,你也可以使用iwd内置的 DHCP 服务器,开启方法可以参考我之前写的一篇文章

到这里你才能正常使用iwd这个工具,具体使用方法可以参考前文网络设置部分

安装显示服务器#

因为个人比较喜欢 i3,所以我安装的是 xorg,你也可以选择新的显示协议wayland。 使用下面的命令安装开源的 xorg

# 安装所有 xorg 相关包

sudo pacman -S xorg

# 以下命令可以只安装必要的 xorg 包,可以避免不必要的包的安装,

sudo pacman -S xorg-server

# 但是有些可能其他功能需要的包会缺失,导致功能不完善

# 所以如果你不太理解这其中的关系,建议除了 xorg-server 之外,也安装 xorg-apps 包组

sudo pacman -S xorg-server xorg-apps

安装显卡驱动#

我的机器使用的是 ASUS 的 AMD 显卡6700XT-TUF

对于 AMD 显卡,安装开源的 amdgpu 驱动:

sudo pacman -S xf86-video-amdgpu

p.s. AMD 的显卡驱动有点问题,会导致系统不稳定黑屏/卡死/卡顿等问题,所以可能需要一些额外的配置,这部分我会单独写出来

对于 NVIDIA 显卡,安装开源驱动nouveau即可:

sudo pacman -S mesa xf86-video-nouveau

安装桌面环境#

前面说了,我比较喜欢 i3,所以我通常不会安装类似 gnome,kde 这种集成的桌面环境。

安装窗口管理器#

安装 i3-wm 包组:

sudo pacman -S i3-wm

# 推荐安装 i3lock,可以很方便的集成锁屏功能

sudo pacman -S i3lock

TODO:配置

安装显示管理器#

如果使用 wayland 协议的管理器,推荐安装sddm

由于只安装了一个窗口管理器 i3,并不包含显示管理器(DM),所以还需要自己选择一个 DM 进行安装,我选择的是lightdm

  1. 安装 lightdm 和 greeter:

sudo pacman -S lightdm

# 安装默认的 greeter

sudo pacman -S lightdm-gtk-greeter

  1. 设置为开机自启动:

systemctl enable lightdm.service

如果你安装的不是lightdm-gtk-greeter,还需要额外的配置,编辑/etc/lightdm/lightdm.conf设置默认的 greeter:

[Seat:*]

...

greeter-session=<lightdm-greeter-name>

...

个性化系统#

如果你使用的是 i3,第一次登录进入 gui 之后,会提示你初始化一个配置,选择 mod 键(一路回车 mod 是 win 键)。打开命令行的默认快捷键是$mod + return

快捷键/自启动的配置都是基于i3的配置。

安装 AUR 助手#

因为有一些软件包并没有收录进官方的仓库里,所以为了安装方便,最好安装一个 AUR 助手,推荐paru,rust 语言写的,用起来很方便,性能也很好。

#首先安装一些构建软件必需的包

sudo pacman -S --needed base-devel

git clone https://aur.archlinux.org/paru.git

cd paru

makepkg -si

之后,就可以使用paru来安装一些非官方的包了,命令行参数和官方的pacman基本一致。

安装中文输入法#

archlinux 中文输入法框架有fcitx/ibus/fcitx5,其中fcitx5貌似是刚刚出现的,之前没见过,所以我就试了试,安装配置起来还挺简单的:

  1. 安装fcitx5软件包
  2. 创建~/.pam_environment并配置环境变量:

GTK_IM_MODULE DEFAULT=fcitx

QT_IM_MODULE DEFAULT=fcitx

XMODIFIERS DEFAULT=@im=fcitx

SDL_IM_MODULE=fcitx

GLFW_IM_MODULE=ibus

安装中文输入法引擎fcitx5-rime

sudo pacman -S fcitx5-rime

安装雾凇拼音词库(optional),该词库并没有在官方仓库,需要在 AUR 仓库安装:

安装浏览器#

note: 安装 Firefox 浏览器的时候会让你选择一种字体以及 jack 音频连接套件,我选择的是ttf-dejavupipewire-jack(选这个是因为我的音频配置是基于pipewire的)。

安装 Terminal#

i3 默认的是xterm,功能简单,外观一般,推荐alacritty或者kitty,还有一个wezterm,和alacirtty一样都是 rust 的,性能方面没的说,配置用的 lua,不过我用习惯了alacritty懒得换了。

安装字体#

# 英文字体

sudo pacman -S ttf-dejavu ttf-ibm-plex ttf-roboto ttf-fira-code ttf-fira-sans

# 中文字体

sudo pacman -S noto-fonts-cjk

# 表情符号

sudo pacman -S noto-fonts-emoji ttf-joypixels

编程字体推荐: 手动安装,在这个网站里选择自己喜欢的nerdfonts下载下来,放入~/.local/share/fonts/目录下,个人比较喜欢FiraCodeHackJetbrains系列。

Vercel新开源的字体也很不错,推荐使用,在这里下载。

安装 zsh#

安装一个好看而且功能强大的 shell 很有必要,比如说 zsh。配置 zsh 的话,我推荐使用oh my zsh这个框架个性化 zsh,配置 zsh 起来简单方便。

  1. 安装 zsh
  2. 使用 curl 安装 ohmyzsh,这个脚本还可以帮你自动更改默认的 shell

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

p.s. 手动更换默认 shell 的方法:sudo chsh -s /usr/bin/zsh <username>

自定义配置 zsh,推荐使用Oh My Zsh框架,简单易上手,具体可以参考 ohmyzsh 的官方 wiki

安装文件管理器#

我个人比较喜欢thunar(XFCE 的内置文件管理器,很轻便,功能也很强大,支持分屏,F3是分屏快捷键)。

配置相关特性#

thunar 还有两个推荐安装的 feature 插件thunar-archive-pluginthunar-volman,分别用来处理压缩包和硬盘分区。

sudo pacman -S thunar-archive-plugin thunar-volman

安装压缩插件还需要一些压缩/解压缩工具:

sudo pacman -S zip p7zip unzip

推荐安装一个图形化压缩工具,用来文件管理器的右键菜单,推荐xarchiver,gnome 的file-roller,二选一即可:

sudo pacman -S xarchiver file-roller

自动检测及挂载设备功能:

缩略图功能:

程序启动器 rofi#

相比于i3默认的dmenu,更美观的程序启动器,高度自定义

修改i3配置文件,添加快捷键:

bindsym $mod+d exec rofi -show drun

状态栏 polybar#

窗口状态栏,比 i3 内置的功能更强大,自定义化程度超高。

加入 i3 自启动

exec_always --no-startup-id polybar barname

复制示例模板:

sudo cp /etc/polybar/config.ini ~/.config/polybar/config.ini

然后基于模板自定义,具体可以参考官方 wiki 页面。

安装截图工具#

推荐flameshot,操作简单且功能强大。

配置快捷键:

bindsym $mod+Shift+x exec flameshot gui

默认显示系统托盘图标(与 polybar 无痛衔接)

配置音频#

使用pipewire框架,安装相关包:

sudo pacman -S pipewire pipewire-audio pipewire-pulse pipewire-alsa pipewire-jack

其中蓝牙相关的功能在pipewire-audio中。

会话管理器和 GUI 工具:

sudo pacman -S wireplumer helvum

pulse 音频管理器:

sudo pacman -S pavucontrol

系统主题#

WhiteSur系列主题,包含鼠标/图标/GTK 主题。

可以在 GitHub 下载/freedesktop.org 下载

手动下载并放入对应路径下:

主题路径
鼠标~/.icons
GTK~/.themes
图标~/.icons