Archlinux基本安装
Archlinux
基础系统安装
ArchLinux是一个流行的GNU/Linux滚动发行
基础配置
检查是否以UEFI启动
通过检查UEFI的位数来验证启动模式
1 | cat /sys/firmware/efi/fw_platform_size |
如果命令结果为64
,则系统是以UEFI
模式引导且使用64
位x64 UEFI
。如果命令结果为32
,则系统是以UEFI
模式引导且使用32
位IA32 UEFI
,虽然其受支持,但引导加载程序只能使用systemd-boot
和GRUB
。如果文件不存在,则系统可能是以BIOS
模式(或CSM
模式)引导。确保系统以UEFI模式启动。
禁用reflector服务
禁用reflector服务,避免将需要的镜像源删除
1 | systemctl stop reflector |
连接网络
无线连接
无线连接使用iwctl进行认证连接
1 | iwctl |
有线连接
一般只要接上网线即可直接联网
测试网络
1 | ping baidu.com |
稍等片刻,如果能看到数据返回,即说明已经联网,ctrl+c
终止当前命令。若无法连接,使用ip link set [device name] up
来激活对应网卡后再重新网络连接与测试。
更新系统时钟
1 | # timedatectl set-ntp true # 将系统时间与网络事件进行同步 |
在Live环境中
systemd-timesyncd
默认启用,系统连接网络后,系统时间会自动同步,不用使用set-ntp来开启
使用timedatectl
确认系统时间准确
配置pacman
1 | vim /etc/pacman.conf |
开启pacman输出颜色和多线程下载
1 | Color |
编辑/etc/pacman.d/mirrorlist
文件,选择China的https镜像源放到最上
分区
设置分区
注意:下面的nvmen1等分区修改为你对应的设备分区信息
使用fdisk
分区,p
输出分区表,n
创建新的分区,t
设置分区类型,w
保存并退出,q
不保存退出,h
输出帮助信息
1 | fdisk /dev/nvme0n1 |
分为两个区:
- /dev/nvme0n1p1: 300M
- /dev/nvme0n1p2: 剩余空间
格式化分区
1 | mkfs.fat -F32 /dev/nvme0n1p1 |
创建子卷
1 | mount /dev/nvme0n1p2 /mnt/Arch --mkdir |
挂载目录
1 | mount /dev/nvme0n1p2 -o compress=zstd,noatime,ssd,discard=async,space_cache=v2,subvol=@ /mnt/Arch --mkdir |
安装系统和必要工具
安装基础系统
1 | pacstrap -K /mnt/Arch base linux linux-firmware # -K选项在安装软件包时在目标中初始化一个空的pacman密钥 |
如果使用linux-zen内核,则使用以下命令
1 | pacstrap -K /mnt/Arch base linux-zen linux-zen-headers linux-firmware |
安装必要软件
1 | pacstrap /mnt/Arch networkmanager sudo neovim |
配置系统
分区信息导入
生成目录配置文件fstab:
1 | genfstab -U /mnt/Arch >> /mnt/Arch/etc/fstab |
检查fstab
文件
1 | cat /mnt/Arch/fstab |
Chroot
切换根系统
1 | arch-chroot /mnt/Arch |
配置系统时间
设置时区
1 | ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime |
设置硬件时间,生成/etc/adjtime
1 | hwclock --systohc |
开启时间同步
1 | timedatectl set-ntp true |
把硬件时钟(RCT)以本地时间来保存时间(Windows保存硬件时钟的方式,实现两者的时间同步,而不是相差8小时)
1 | timedatectl set-local-rtc true |
地区设置
设置系统语言,编辑/etc/locale.gen
和/etc/locale.conf
/etc/locale.gen
删除en_US.UTF-8 UTF-8
前面的#
1 | en_US.UTF-8 UTF-8 |
创建/etc/locale.conf
,设置语言变量
1 | LANG=en_US.UTF-8 |
生成区域设置
1 | locale-gen |
网络配置
设置主机名
创建/etc/hostname
,设置为你想为主机取的主机名
1 | yourhostname |
设置hosts
Hosts文件(也称为etc/ Hosts)是Windows(和其他操作系统)用于将IP地址映射到主机名或域名的文本文件。此文件充当本地计算机的本地DNS服务,它覆盖计算机通过网络连接到的DNS服务器的映射。^1
编辑/etc/hosts
,添加以下内容
1 | 127.0.0.1 localhost |
两个文件中的yourhostname
要保持一致
Initramfs
创建Initramfs
1 | mkinitcpio -P |
启动加载器
安装grub和efi管理器等
1 | sudo pacman -S grub efibootmgr os-prober |
有些电脑的UEFI系统需要在一个特定位置上有一个可启动的文件,才会显示你想要的启动选项。但是有时候,即使你用grub-install命令安装了GRUB引导程序,它在VisualBIOS启动顺序里也可能看不到。解决方法就是用以下命令,把GRUB安装在一个默认的启动路径上:
1 | grub-install --target=x86_64-efi --efi-directory /boot/efi --removable |
另一种方法是将已安装的GRUB EFI可执行文件移动到默认/回退路径:
1 | mv /boot/efi/grub /boot/efi/BOOT |
编辑/etc/default/grub
1 | GRUB_DEFAULT=0 # 默认启动项,默认为0,如果安装了Windows和Archlinux双系统,则0为Archlinux,2为Windows |
生成Grub配置文件
1 | grub-mkconfig /boot/grub/grub.cfg |
当输出类似以下信息,则生成成功
Found linux image: /boot/vmlinuz-linux-zen
Found initrd image: /boot/intel-ucode.img /boot/initramfs-linux-zen.img
Found fallback initrd image(s) in /boot: intel-ucode.img initramfs-linux-zen-fallback.img
Adding boot menu entry for UEFI Firmware Settings …
done
如果使用了--removable
参数,但是又想自定义Bootloader的ID,可以使用efibootmgr进行重命名
首先使用efibootmgr命令找到对应的启动项
1 | efibootmgr |
1 | BootCurrent: 0002 |
我这里的启动项是Boot0002
,记住后面的\EFI\BOOT\BOOTX64.EFI
,以及你的EFI分区(我的分区是/dev/nvme0n1p1)
然后执行以下命令:
1 | efibootmgr -c -d '/dev/nvme0n1p1' -L "Arch Linux" -l \\EFI\\BOOT\\BOOTX64.EFI |
这样就会把UEFI启动项命名为Arch Linux
设置密码
1 | passwd |
安装完成
通过exit
退出chroot环境,umount -R /mnt/Arch
取消硬盘挂载(如果显示busy,则先cd到其他目录再取消),输入reboot
重启电脑
常用系统配置
创建普通用户
创建一个普通用户jack并为他创建home目录
1 | useradd -m jack |
给jack赋予sudo提权的能力
1 | EDITOR=nvim visudo |
找到对应位置并添加一行
1 | ## Uncomment to allow members of group wheel to execute any command |
:wq
保存退出
随后第一次使用sudo
命令时,会显示以下内容,根据提示输入密码即可
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:#1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility.
For security reasons, the password you type will not be visible.
[sudo] password for jack:
Swap File配置
关闭交换文件存储目录的写时复制(CoW)功能
1 | chattr +C /swapfile |
创建交换文件
1 | btrfs filesystem mkswapfile --size 16g --uuid clear /swapfile/swapfile |
激活交换文件
1 | swapon /swapfile/swapfile |
编辑fstab文件,添加一个交换文件的条目
1 | /swapfile/swapfile none swap defaults 0 0 |
启用网络
启用NetworkManager.service
服务
1 | sudo systemctl start NetworkManager.service |
输入nmtui
打开网络管理器的TUI界面,使用方向键、回车键和ESC键进行网络连接配置
设置NetworkManager开机自启
1 | sudo systemctl enable NetworkManager.service |
启用ssh
安装启用
安装openssh
,这个软件包包含了服务端和客户端
1 | sudo pacman -S openssh |
启用sshd
服务
1 | sudo systemctl start sshd |
设置ssh免密登陆
在客户端生成ssh密钥
1 | ssh-keygen -t rsa |
在/home/jack/.ssh/
(Windows的目录在C:/Users/Username/.ssh)中可以看到两个文件id_rsa
、id_rsa.pub
,将id_rsa.pub文件的内容复制到远程服务器的/home/jack/.ssh/authorized_keys文件中
Linux使用以下命令自动复制
1 | ssh-copy-id jack@remote_host |
尝试SSH连接:
1 | ssh jack@remote_host |
若设置正确,即可免密登陆
笔记本合盖不睡眠
编辑/etc/systemd/logind.conf
,在Login
下方添加HandleLidSwitch=ignore
重启systemd-logind
服务使配置生效
常用工具配置
AUR依赖
安装AUR包需要两个重要工具
1 | sudo pacman -S git base-devel # 版本管理工具 基础编译包组 |
man手册分页显示工具
man命令指定语言
需要安装语言包
man-pages-zh_cn
1 | man -L zh_CN [文档] |
Reference
现代化的 Archlinux 安装,Btrfs、快照、休眠以及更多。