详解archlinux安装
本文在 virtualbox 中安装了一个多版本 linux 内核的 archlinux 系统。
笔者使用 KDE 在此系统上使用 bochs 进行自制 64 位操作系统的开发。
参考连接:
笔者参考的安装流程
archlinux中文wiki
archlinux中文社区官网 如果安装遇到报错,官网公告通常会有最近问题的解答。
还有清华、中国科学技术大学的镜像站。下载 archlinux 最新 ISO 系统镜像、查询软件包使用信息。
首先准备好 virtualbox 虚拟机
在镜像网站下载 archlinux 的最新镜像
内存 4G
启动顺序只选择硬盘
两核 cpu
启用 efi
不启用 secure boot
显存拉满
网络选择桥接网卡
usb 3.0
开始安装
参考链接
首先,如何立马关机:
shutdown -h now
reboot # 立马重启
clear # 清屏 或者 ctrl+L
现在我们只能对着黑框框一个字母一个字母敲,不能 ctrlcv 很痛苦。
你还得自己学会 vim,起码知道按 i 进入编辑模式,esc 回到一般模式,一般模式下 x 删除光标当前字母,:wq 保存退出等等。遇到问题搜索去吧你。
用 systemctl 禁用 reflector
它会自动更新 pacman 的 mirrorlist(软件源)。在中国,适得其反。
这是安装镜像中预置的软件,安装完的系统后如果不装不会有。
systemctl stop reflector.service
systemctl status reflector.service
q 退出
确认 UEFI 安装模式
ls /sys/firmware/efi/efivars
在这个目录下有一堆 efi 变量,如果你写过或者熟悉一个支持 uefi 的 bootloader,那么你一定知道这个文件夹。
之后可以尝试 bois 安装? #todo
连接网络
虚拟机已经连好了,确认下 virtualbox 的状态栏就好。
ping www.cnblogs.com
安装过程需要全程联网。
更新系统时钟
timedatectl set-ntp true # 将系统时间与网络时间进行同步
timedatectl status # 检查服务状态
更换 pacman 国内软件仓库镜像源
vim /etc/pacman.d/mirrorlist
# 放在第一行
Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch # 中国科学技术大学开源镜像站
建立分区
这里只针对虚拟机,sata 协议的硬盘,实机看链接去 bro。
使用 cfdisk 分区。
使用 btrfs 文件系统,之后可以尝试 ext4 文件系统。 #todo
使用 lsblk、fdisk 查看分区情况
fdisk -l # 复查磁盘情况
lsblk # 复查磁盘情况
首先通过以下命令将磁盘转换为 gpt
类型
parted /dev/sdx # 执行 parted,进行磁盘类型变更
(parted) mktable # 输入 mktable
New disk label type? gpt # 输入 gpt,将磁盘类型转换为 GPT 类型。如磁盘有数据会警告,输入 Yes 即可
(parted) quit # 退出 parted 命令行交互
接下来使用 cfdisk,会进入 cfdisk 的界面。
cfdisk /dev/sdx # 对安装 archlinux 的磁盘分区,虚拟机一般是sda,以lsblk为准
注意分区大小,输入 512 MB 是按照硬盘厂商的那种 1000 进制的标准换算的,所以之后 lsblk 会显示小于 512 MB。512 M 才表示 1024 进制的 512 MB,这个cfdisk 界面下方也有提示,请注意仔细阅读提示。
建立 EFI 分区
- 选中
Free space
> 再选中操作[New]
> 然后按下回车Enter
以新建EFI
分区 - 输入
分区大小
(建议 >=256MB
、<=1024MB
;推荐512MB
)> 然后按下回车Enter
- 选中操作
[Type]
> 然后按下回车Enter
> 通过方向键↑
和↓
选中EFI System
> 最后按下回车Enter
创建 Swap 分区
Swap 分区建议为电脑内存大小的 60%,或者和内存大小相等。将类型更改为 Linux swap
。
创建主分区
(因为使用 Btrfs
文件系统,所以根目录和用户主目录在一个分区上)
剩下的所有空间,类型默认。
完成写入
【write】写入,退出 cfdisk。
格式化分区
格式化 EFI 分区
mkfs.vfat /dev/sdxn
# 或者
mkfs.fat -F32 /dev/sdxn
# 都是使用 mkfs 创建 FAT32 规范的文件系统,一个是显示指定,一个是方便的命令。
# 一般是sda1,这之后我们就用virtualbox情况下的具体值了。
格式化 Swap 分区
mkswap /dev/sda2
格式化 Btrfs 分区
mkfs.btrfs -L virtualarchlinux /dev/sda3
-L
选项后指定该分区的 LABLE
,这里以 myArch
为例,也可以自定义,但不能使用特殊字符以及空格,且最好有意义。
创建子卷
- 为了创建子卷,我们需要先将
Btrfs
分区挂载到/mnt
下:
mount -t btrfs -o compress=zstd /dev/sdxn /mnt
命令参数说明:
-t
选项后指定挂载分区文件系统类型
-o
选项后添加挂载参数: compress=zstd
—— 开启透明压缩
- 查看挂载情况
df -h
- 创建 Btrfs 子卷
- 通过以下命令创建两个
Btrfs
子卷,之后将分别挂载到/
根目录和/home
用户主目录:
btrfs subvolume create /mnt/@ # 创建 / 目录子卷
btrfs subvolume create /mnt/@home # 创建 /home 目录子卷
- 通过以下命令复查子卷情况:
btrfs subvolume list -p /mnt
- 子卷创建好后,将
/mnt
卸载掉,以挂载子卷:
umount /mnt
挂载分区
在挂载情况中多多使用 df 确认挂载情况,不对可以及时 umount
df -h
(df 的显示结果会比参考链接多一个 efivarfs 被挂载到 sys/firmware/efi/efivars)
挂载是有顺序的,需要从根目录开始挂载。使用如下命令挂载子卷:
mount -t btrfs -o subvol=/@,compress=zstd /dev/sda3 /mnt # 挂载 / 目录 主分区
mkdir /mnt/home # 创建 /home 目录
mount -t btrfs -o subvol=/@home,compress=zstd /dev/sda3 /mnt/home # 挂载 /home 目录
mkdir -p /mnt/boot # 创建 /boot 目录
mount /dev/sda1 /mnt/boot # 挂载 /boot 目录 efi分区
swapon /dev/sda2 # 挂载交换分区
df -h
free -h #查看swap分区
pacstrap 安装系统
包括内核和其他必要软件。
内核有四个版本
linux、linux-zen、linux-lts、linux-hardened。
这里我们先装个 linux-lts。
pacstrap /mnt base base-devel linux-lts linux-firmware linux-lts-headers btrfs-progs
pacstrap /mnt networkmanager vim sudo bash bash-completion
fstab 定义分区文件
fstab
用来定义磁盘分区。它是 Linux 系统中重要的文件之一。使用genfstab
自动根据当前挂载情况生成并写入fstab
文件:
genfstab -U /mnt > /mnt/etc/fstab
- 复查一下
/mnt/etc/fstab
确保没有错误:
cat /mnt/etc/fstab
chroot to your archlinux
使用以下命令把系统环境从 iso 内置的系统切换到我们正在安装的新系统下:
arch-chroot /mnt
设置主机名
在 /etc/hostname
设置主机名:
vim /etc/hostname
我就叫 varchlinux,或者 va,或者dchgva,或者myarch,whatever。主机名不要包含特殊字符以及空格。
写 hosts 文件
在 /etc/hosts
设置与主机名匹配的条目:
vim /etc/hosts
加入:
127.0.0.1 localhost
::1 localhost
127.0.1.1 varchlinux.localdomain varchlinux
设置时区
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#你可以看看 /usr/share/zoneinfo/ 里还有哪些时区文件
ln 命令通常用来创建软链接或者硬链接。
可以看到这里建立了一个软连接,可以ls -l
查看 /etc/localtime 的文件属性。
将系统时间同步到硬件时间
hwclock --systohc
设置 Locale 文件
Locale
决定了软件使用的语言、书写习惯和字符集。
- vim 编辑
/etc/locale.gen
,去掉en_US.UTF-8 UTF-8
以及zh_CN.UTF-8 UTF-8
行前的#
。 - 然后使用如下命令生成
locale
:
locale-gen
- 然后向
/etc/locale.conf
输入:
echo 'LANG=en_US.UTF-8' > /etc/locale.conf
设置密码
passwd root
安装 cpu 微码
pacman -S intel-ucode # Intel
pacman -S amd-ucode # AMD
安装引导程序
- 下载引导程序。
pacman -S grub efibootmgr
-Si 可以搜索安装包信息,-Qi 可以查询已安装包信息。
grub 是我们的引导程序。
efibootmgr 用来被 grub 调用,来写入 NVRAM,grub 设置 uefi 启动得靠它。
(与参考链接不同,我们虚拟机,不装双系统,不需要 os-prober)
你也可以尝试使用 rEFind 引导,但是我觉得丑。
- 安装 GRUB 到 EFI 分区:
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=ARCH
命令参数说明:
--efi-directory=/boot
将 grubx64.efi
安装到之前的指定位置(EFI 分区)
--bootloader-id=ARCH
取名为 ARCH
- 编辑 /etc/default/grub。
vim /etc/default/grub
GRUB_DEFAULT=saved
默认使用保存的内核- 可以适当改大 timeout
- 去掉
GRUB_CMDLINE_LINUX_DEFAULT
一行中最后的quiet
参数 - 把
loglevel
的数值从3
改成5
。这样是为了后续如果出现系统错误,方便排错 - 加入
nowatchdog
参数,这可以显著提高开关机速度 GRUB_SAVEDEFAULT=true
保存最后一个使用的内核条目GRUB_DISABLE_SUBMENU=y
禁用 GRUB 子菜单,让你的 grub 首页显得更丰富
如此设置为安装多内核做准备。
安装更多内核
sudo pacman -S linux linux-headers linux-zen linux-zen-headers linux-hardened linux-hardened-headers
zen 版本性能好,lts 版本稳定,hardened 版本更安全,arch 原版更纯。
查看当前内核版本:
uname -r
更新 grub 引导配置。
sudo grub-mkconfig -o /boot/grub/grub.cfg
安装完成
exit # 退回安装环境(iso的临时系统)
umount -R /mnt # 卸载新分区
reboot # 重启
此时你会看到一个 grub 页面,选一个你喜欢的内核吧。
登录到 root。
systemctl enable --now NetworkManager # 设置开机自启并立即启动 NetworkManager 服务
ping www.bilibili.com # 测试网络连接
neofetch 时间
pacman -S neofetch
neofetch
快照
使用 virtualbox 的快照功能,创建一个快照,尝试复制快照、恢复快照系统,确认快照可用。
在使用不稳定系统(你不熟悉的、随时可能滚挂的 archlinux)下进行开发,随时保证快照可用是必要的。
在有快照的情况下,你可以开心的 rm -rf /*
了。
安装桌面
pacman -Syu # 升级系统中全部包,谨慎使用,可能滚挂。
设置 root 的默认编辑器。
vim ~/.bash_profile
加入:
export EDITOR='vim'
准备非 root 用户
useradd -m -G wheel -s /bin/bash myusername
-m
创建用户的同时创建用户家目录-G
选项后指定附加组wheel
附加组可sudo
进行提权
-s
选项后指定 shell 程序myusername
用户名(请自定义,但不要包含空格和特殊字符)
passwd myusername
配置用户权限
通过 visudo
命令编辑 sudoers
文件:
EDITOR=vim visudo # 这里需要显式的指定编辑器,因为上面的环境变量还未生效
# 当然你可以 source 一下 bash 配置文件,然后 visudo
找到如下这样的一行,去掉注释符号 #
:
#%wheel ALL=(ALL:ALL) ALL
关于 /etc/sudoers.d 的自由配置和详细解释,请自行搜索。 #todo
开启 32 位支持库(软件源)并设置 Arch Linux 中文社区软件源仓库(archlinuxcn)
编辑 /etc/pacman.conf
文件:
vim /etc/pacman.conf
去掉 [multilib]
一节中两行的注释,来开启 32 位库支持。
在文档结尾处加入 [archlinuxcn]
源。
[multilib]
Include = /etc/pacman.d/mirrorlist
[archlinuxcn]
Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch # 中国科学技术大学开源镜像站
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch # 清华大学开源软件镜像站 推荐
Server = https://mirrors.hit.edu.cn/archlinuxcn/$arch # 哈尔滨工业大学开源镜像站
Server = https://repo.huaweicloud.com/archlinuxcn/$arch # 华为开源镜像站
更新本地 pacman 软件数据库
pacman -Syu
pacman -Syyu # 更新数据库并更新所有软件,慎用。
安装 KDE Plasma 桌面环境
新手推荐安装 KDE Plasma 桌面环境,此外有 GNOME、 Xfce 等桌面环境和一众窗口管理器可供选择。本教程仅列出 KDE 安装使用教程。
pacman -S plasma-meta konsole dolphin
# plasma-meta 元软件包、konsole 终端模拟器和 dolphin 文件管理器
kde 默认安装 xorg,之后我们可以试用下 wayland,请查询参考链接。 #todo
wayland 和 xorg 可以在 sddm 进行选择,也就是说可以共存。
配置并启动 greeter sddm
开启 sddm.service 守护进程(开机启动):
systemctl enable sddm
systemctl start sddm # sddm,启动!或者 reboot
安装虚拟机适配软件
ping www.bilibili.com # 测试网络连通性
sudo pacman -S virtualbox-guest-utils # 安装 VirtualBox 客体机插件
sudo systemctl enable vboxservice.service # 启动 vboxservice 服务
打开 virtualbox 菜单栏的设备 > 共享粘贴板、拖放,双向。
此时就可以快乐地使用 kconsole 终端模拟器进行顺畅地 ctrlcv 了,可喜可贺。
安装了适配软件后,home+c 一下就能实现自动调整桌面显示尺寸(KDE)。但是 ctrl+alt+Fn 切换到终端(有些笔记本带复合键地还得加 Fn)无法实现自动调整显示大小,也得按 home 键退出鼠标捕获。
安装一些桌面基础功能包
sudo pacman -S sof-firmware alsa-firmware alsa-ucm-conf # 声音固件
sudo pacman -S ntfs-3g # 使系统可以识别 NTFS 格式的硬盘 虚拟机没必要
sudo pacman -S adobe-source-han-serif-cn-fonts wqy-zenhei # 安装几个开源中文字体。一般装上文泉驿就能解决大多 wine 应用中文方块的问题
sudo pacman -S noto-fonts noto-fonts-cjk noto-fonts-emoji noto-fonts-extra # 安装谷歌开源字体及表情
sudo pacman -S firefox chromium # 安装常用的火狐、chromium 浏览器
sudo pacman -S ark # 压缩软件。在 dolphin 中可用右键解压压缩包
sudo pacman -S packagekit-qt5 packagekit appstream-qt appstream # 确保 Discover(软件中心)可用,需重启
sudo pacman -S gwenview # 图片查看器
sudo pacman -S steam # 游戏商店。看完显卡驱动章节再使用
安装 archlinuxcn
源还需认证:
先验证 archlinuxcn(软件包维护者) 的 gpg 密钥,然后安装 yay。
sudo pacman -S archlinuxcn-keyring # cn 源中的签名(archlinuxcn-keyring 在 archlinuxcn)
sudo pacman -S yay # yay 命令可以让用户安装 AUR 中的软件(yay 在 archlinuxcn)
- 最近(2023.12.20),安装 archlinuxcn-keyring 时报错,安装密钥失败。
error: archlinuxcn-keyring: Signature from "Jiachen YANG (Arch Linux Packager Signing Key) " is marginal trust
- 解决:
搜索 archlinuxcn-keyring(出问题的包名),点进清华镜像站的该包的使用帮助页面,找到 archlinuxcn 社区官方页面,找到其 github 页面,看 issue,发现最近(2023.12.20)的 issue 有提到,解决方法。
sudo pacman-key --lsign-key "farseerfc@archlinux.org"
- 之后继续安装 archlinuxcn-keyring :
sudo pacman -S archlinuxcn-keyring
究其原因是 archlinuxcn 的 gpg keyring 没有跟上 archlinux 官方的 gpg keyring 变动(删除了一个 master key),导致 gpg 推算 archlinuxcn 的 key 缺乏信任,从而不能自动信任上述包的签名。所以只要手动信任那个 “过时” 的 master key 就能继续安装 archlinuxcn-keyring 了。
(在密钥环这件事上 archlinuxcn 之前也有没跟上的情况,csdn 一堆解决上次问题的博客。)
配置非 root 账户的默认编辑器(没什么必要)
vim ~/.bashrc
# 添加 export EDITOR='vim'
设置系统为中文
打开 System Settings
> Language and Regional Settings
> 在 Language
中点击 Add languages...
> 选择中文加入 ADD
,再拖拽到第一位 > 点击 Apply
安装输入法
如有需要可以参阅 Fcitx5 官方文档。这里也可以尽情自定义。
sudo pacman -S fcitx5-im # 输入法基础包组
sudo pacman -S fcitx5-chinese-addons # 官方中文输入引擎
sudo pacman -S fcitx5-anthy # 日文输入引擎
sudo pacman -S fcitx5-pinyin-moegirl # 萌娘百科词库。二刺猿必备(archlinuxcn)
sudo pacman -S fcitx5-material-color # 输入法主题
设置环境变量(X11):
sudo vim /etc/environment
加入:
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
SDL_IM_MODULE=fcitx
GLFW_IM_MODULE=ibus
打开 系统设置
> 区域设置
> 输入法
。
点击提示信息中的 运行 Fcitx
。
按照你的习惯配置输入法相关选项。比如 shift 切换中英文。
如果你需要文件系统快照、显卡驱动、网络代理,可以查询参考链接。 #todo
日常使用
这里主要是自己的个人习惯。
以空会话启动
默认情况下,KDE 桌面环境中关机之后再开机会恢复先前保存的对话(如浏览器没有关掉,那么开机之后浏览器还在)。
如果你不喜欢这样,请按照以下步骤设置:
- 打开
系统设置
> 点击侧栏开机与关机
>桌面会话
- 将
登入时
的选项改为以空会话启动
:
ll 命令
在 .bashrc 加入
alias ll='ls -alh --color=auto'
好用的软件
安装 kate 文本编辑器,filelight 磁盘占用查看,unarchiver 可以用来接下 win 平台下的压缩包。
sudo pacman -S kate filelight unarchiver
避免锁屏
可以在右下角菜单栏找到电源选项,勾选不要锁屏。
美化桌面
桌面可以自由放置小工具,更换壁纸,更换 sddm 样式。(默认的 sddm 太丑了)
更多问题
可以参考参考链接的进阶话题。
btrfs 的特性、软件降级,进一步美化,文件系统备份,真机安装,适配 windows 软件,使用别的引导启动/安装,linux 开发环境的使用与维护等等,学无止境。
碎碎念
安装大体过程
安装一个操作系统肯定要经历:
连接网络、更新系统时钟、分区并格式化、挂载、安装系统、配置系统(时区、语言、用户)。
大部分 archlinux 提供的可配置项其他常见系统会自动完成。
除此之外还有更多自由,或是麻烦:
引导安装/启动方式,文件系统选择,分区文件生成,chroot,自定义软件源,自定义桌面。
安装竞速
参观一下别人的视频过程,精简下自己的框架。#todo
最后安装 bochs,开启我们的自制 OS 之路。
sudo -i
pacman -S bochs #当然最好按书编译安装
exit
cd
mkdir -p code/chapter3
cd code/chapter3/
bximage
...
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程