一、预备条件

  1. 一台已经安装过系统的电脑和U盘:用于制作启动盘
  2. 镜像源:制作启动盘需要将系统先写入U盘,为了加快下载速度,这里可以选择清华的系统镜像,我使用的是2021.4.1的版本
  3. 写入镜像:
  • Windows下可以双击iso文件将里面的所有文件复制进准备好的U盘中
  • Linux系统可以使用命令完成
sudo dd bs=4M if=/path/to/archlinux.iso of=/dev/sdx status=progress oflag=sync

# bs=4M 指定一个较为合理的文件输入输出块大小。  
# status=progress 用来输出刻录过程总的信息。  
# oflag=sync 用来控制写入数据时的行为特征。确保命令结束时数据及元数据真正写入磁盘,而不是刚写入缓存就返回。

二、安装

1. 进入BIOS

各个厂家的BIOS进入方式都不太相同,比较常见的有F12、F2、Del键等,这个大家根据各自的型号进入即可。进入后找到U盘作为启动项 boot即可。进入安装介质之后选择install,网上的教程一般都直接进入了,但是我在进入install前按下e键修改了最后的label信息,使其和U盘的分区名相一致,否则无法进入

2. 连接网络

# 连接网络(无线),有线网的话一般开机即可使用
iwctl                           #进入交互式命令行
device list                     #列出设备名,比如无线网卡看到叫 wlan0
station wlan0 scan              #扫描网络
station wlan0 get-networks      #列出网络 比如想连接CMCC-5AQ7这个无线
station wlan0 connect CMCC-5AQ7 #进行连接 输入密码即可
exit 

# 获取dhcp
dhcpcd

3. 分区

一般Linux至少会分为3个区域,启动分区(/boot)、交换分区(虚拟内存)、根分区(/),其实还有很常见的home分区(/home)。我在这边为了方便起见就分了前三个区域。根据RedHat文档,/boot分区一般200MB左右,虚拟内存根据物理内存大小浮动,详情见其表格

archlinux怎么换镜像源 archlinux 镜像_重启

# 分区 300m->efi 2G->交换 剩余->根目录
cfdisk /dev/sda 
# 查看分区情况
fdisk -l 

# 文件系统
mkfs.vfat /dev/sda1 # efi
mkswap -f /dev/sda2 # 交换分区
mkfs.ext4 /dev/sda3 # 根目录vm.bios.efi=0

4. 挂载并初始化

# 挂载
swapon /dev/sda2
mount /dev/sda3 /mnt
mkdir -p /mnt/boot/
mount /dev/sda1 /mnt/boot/

# 初始化基础软件包
pacstrap /mnt base base-devel linux linux-firmware dhcpcd iwd vim openssh avahi

# 生成分区表
genfstab -U /mnt >> /mnt/etc/fstab
# 查看分区表信息
cat /mnt/etc/fstab

5. 进入所安装的系统

# 进入挂载系统中
arch-chroot /mnt 
# 常用软件开机自启动
systemctl enable dhcpcd iwd sshd avahi-daemon
# 更改根用户密码
passwd root

6. 设置时间同步

# 时间同步
timedatectl set-ntp true
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
hwclock --systohc

7. 配置grub引导

# 配置引导
pacman -S grub efibootmgr intel-ucode
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub
grub-mkconfig > /boot/grub/grub.cfg

8. 完成安装

# 完成安装
exit                # 退回安装环境#
umount -R  /mnt     # 卸载新分区
reboot              # 重启

三、遇到的问题

1. 网卡不识别问题

我在安装环境中使用iwctl命令能够识别出无线网卡,但是重启进入arch后却无法找到之前的那个无线网卡,在此记录一下解决方案

(1) 查看网卡型号

lspci -vnn |grep 0280  

# 输出类似如下的信息
# 08:00.0 Network controller [0280]: Broadcom Inc. and subsidiaries BCM43142 802.11b/g/n [14e4:4365] (rev 01)

(2) 根据这个网卡型号,去Google可得出是博通网卡驱动问题,需要手动安装,前提是需要先加入ArchlinuxCN仓库(是由 Arch Linux 中文社区驱动的非官方软件仓库,包含许多官方仓库未提供的额外的软件包),这里为了提升下载速度我选用清华的镜像

cat << EOF >> /etc/pacman.conf
[archlinuxcn]
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch
EOF

sudo pacman -Syy && sudo pacman -S archlinuxcn-keyring

(3) 安装驱动

pacman -S linux-headers
pacman -S broadcom-wl-dkms

(4) 重启进入系统,并使用iwctl连接无线网

2. 盖上盒子休眠

# 修改文件里的HandleLidSwitch为ignore
vim /etc/systemd/logind.conf
# 重启
reboot

3. 使用root用户无法ssh

在使用root用户登录的时候即使密码正确也还一直提示“Permission denied, please try again.”

# 找到PermitRootLogin这一选项取消注释并修改为yes
vim /etc/ssh/sshd_config

# 重启ssh服务
systemctl restart sshd

4. 开机连接wifi

# 安装网络管理包
pacman -S wpa_supplicant dialog netctl
# 使用wifi-menu创建profile
wifi-menu
# 查看profile,会有类似于wlan0-XXX之类的文件
ls /etc/netctl/
# 设置开机启动,最后一个参数就是上一步看到的文件名
netctl enable wlan0-XXX

参考

https://archlinuxstudio.github.io/ArchLinuxTutorial/#/rookie/basic_install