按照 Archlinux Wiki 安装,并结合网上现有的文档进行了梳理。个人在进行双系统的 grub 部署时,windows系统启动项一直无法生成,最后仔细查阅Wiki后解决。另外中文的Wiki有些地方翻译不够准确,可对比英文食用。
一、安装准备
下载并引导安装介质。启动完成后将会自动以 root
身份登录虚拟控制台并进入 Zsh 命令提示符。
键盘布局 (使用默认即可)
控制台键盘布局默认为 us
(美式键盘映射)。列出所有可用的键盘布局,可以使用:
# ls /usr/share/kbd/keymaps/**/*.map.gz
如果您想要更改键盘布局,可以将一致的文件名添加进,但请省略路径和扩展名。比如,要添加 German键盘布局:
# loadkeys de-latin1
验证启动模式
如果以在 UEFI 主板上启用 UEFI 模式,Archiso 将会使用 systemd-boot 来 启动 Arch Linux。可以列出 efivars 目录以验证启动模式:
# ls /sys/firmware/efi/efivars
如果目录不存在,系统可能以 BIOS 或 CSM 模式启动。如下图
连接到因特网
守护进程 dhcpcd 已被默认启用来探测 有线网络设备,并会尝试连接。如果未启用,可手动启用:
# dhcpcd
可以使用 ping 验证连接是否正常:
# ping archlinux.org
如果没有可用网络连接,利用 systemctl stop dhcpcd@网络接口,TAB
停用dhcpcd 进程,网络接口
名可以通过 Tab补全。要加载驱动配置网络等,查看Wiki。
更新系统时间
可以先使用 timedatectl status
检查服务状态,查看时间是否准确。
如果时间有问题,使用 timedatectl 确保系统时间是准确的:
# timedatectl set-ntp true
建立硬盘分区
1、查看磁盘情况
磁盘若被系统识别到,就会被分配为一个 块设备,如 /dev/sda 或者 /dev/nvme0n1。可以使用 lsblk 或者 fdisk 查看存储设备情况:
# fdisk -l
结果中以 rom
,loop
或者airoot
结束的可以忽略。
2、分区方案
对于选择安装系统的磁盘,采用如下分配方案基本满足需求:
- 一个根分区(挂载在根目录,必须)/;
- 一个home分区 (建议进行分区);
- 交换分区,
Swap
可以在一个独立的分区上设置,也可以直接建立交换文件
; - 如果使用UEFI/GPT 模式引导,必须有一个 EFI 引导分区(如果安装了其他UEFI引导的系统,则记下其EFI分区路径。如果是全新的硬盘则需要新建一个EFI的引导分区)
3、建立分区
建立分区,可以使用 fdisk 或 parted。例如使用 fdisk进入分区状态
# fdisk /dev/sda
**注意: **如果需要需要创建多级存储例如 LVM、disk encryption 或 RAID,请在此时完成。
- 建立分区表:先执行
# fdisk /dev/sda
,之后按o
建立分区表 - 进行分区(一般建立
/ , /swap , /home
三个分区):执行n
,依次选择主分区、扩展分区,第几分区,起始扇区,结束扇区或者直接使用+30G
设置分区为30G大小。 - 如需修改分区类型:执行
t
,将swap分区类型改为Linux Swap
类型。 - 保存分区。保存之前可输入
p
查看分区结果,确认无误执行w
保存分区。
格式化分区
当分区建立好了,这些分区都需要使用适当的 文件系统
进行格式化。例如将 /dev/sda1 格式化成 ext4,可以运行:
# mkfs.ext4 /dev/sda1
如果您创建了交换分区(例如 /dev/sda3),使用 mkswap 将其初始化:
# mkswap /dev/sda3
# swapon /dev/sda3
分别根据分区类型进行格式化。
挂载分区
首先将根分区 挂载 到 /mnt,例如:
# mount /dev/sda1 /mnt
如果使用多个分区,还需要为其他分区创建目录并挂载它们(/mnt/boot、/mnt/home 等,swap不需要挂载)。
# mkdir /mnt/boot
# mount /dev/sda2 /mnt/boot
接下来 genfstab 将会自动检测挂载的文件系统和 swap 分区。
二、安装
选择镜像
文件 /etc/pacman.d/mirrorlist
定义了软件包会从哪个镜像源下载。在列表中越前的镜像在下载软件包时有越高的优先权。修改文件 /etc/pacman.d/mirrorlist
,并将地理位置最近的镜像源挪到文件的头部。这个文件接下来还会被 pacstrap 拷贝到新系统里,所以请确保设置正确。
找到标有China的镜像源,normal模式下按下dd
可以剪切光标下的行,按gg
回到文件首,按P
(注意是大写的)将行粘贴到文件最前面的位置(优先级最高)。其他源:
Server = http://mirrors.163.com/archlinux/$repo/os/$arch
Server = http://mirrors.cqu.edu.cn/archlinux/$repo/os/$arch
安装基本系统
使用pacstrap
脚本,安装 base
,base-devel
包组:
# pacstrap /mnt base base base-devel
base-devel
也可以在#Chroot
之后使用pacman
手动安装软件包或组:
# pacstrap -i /mnt base base-devel
三、 配置系统
Fstab
用以下命令生成 fstab
文件 (用 -U
或 -L
选项设置UUID 或卷标):
# genfstab -U /mnt >> /mnt/etc/fstab
强烈建议 在执行完以上命令后,后检查一下生成的 /mnt/etc/fstab
文件是否正确。
# nano /mnt/etc/fstab
Chroot
Change root到新安装的系统:
# arch-chroot /mnt
时区
设置时区
# ln -sf /usr/share/zoneinfo/Region/City /etc/localtime
例如:
# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
运行 hwclock
以生成 /etc/adjtime
:
# hwclock --systohc
这个命令假定硬件时间已经被设置为 UTC时间 。
本地化
本地化的程序与库若要本地化文本,都依赖 Locale,后者明确规定地域、货币、时区日期的格式、字符排列方式和其他本地化标准等等。在下面两个文件设置:locale.gen
与 locale.conf
。
/etc/locale.gen
是一个仅包含注释文档的文本文件。指定您需要的本地化类型,只需移除对应行前面的注释符号(#
)即可,建议选择带 UTF-8
的项:
# nano /etc/locale.gen
en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
zh_TW.UTF-8 UTF-8
接着执行 locale-gen
以生成 locale 讯息,/etc/locale.gen
会生成指定的本地化文件。:
# locale-gen
创建
locale.conf
并编辑 LANG
这一 变量,比如:
# nano /etc/locale.conf
LANG=en_US.UTF-8
Tip: 将系统 locale 设置为 en_US.UTF-8
,系统的 Log 就会用英文显示,这样更容易问题的判断和处理。不推荐在此设置任何中文 locale,会导致 TTY 乱码。
另外,如果你需要修改键盘布局,并想让这个设置持续生效,编辑vconsole.conf
,例如:
# nano /etc/vconsole.conf
KEYMAP=de-latin1
主机名
要设置 hostname
,将其 添加 到 /etc/hostname
,myhostname 是需要的主机名:
# nano /etc/hostname
myhostname
并且添加 对应的信息 到 hosts
:
# nano /etc/hosts
127.0.0.1 localhost
::1 localhost
127.0.1.1 myhostname.localdomain myhostname
如果机器有一个永久的 IP 地址,请使用这个 IP 而不是 127.0.1.1
。
网络配置
对新安装的系统,需要再次设置网络。具体请参考Wiki Network configuration。
对于 无线网络配置,安装 软件包 iw
、wpa_supplicant
、dialog
以及需要的 固件软件包 。
Initramfs
你通常不需要创建 initramfs,因为在你执行 pacstrap
时已经安装 linux
,这时 mkinitcpio
会被自动运行。
如果修改了 mkinitcpio.conf
,用以下命令创建一个 Initramfs:
# mkinitcpio -p linux
Root 密码
设置 Root 密码 :
# passwd
安装引导程序
你需要安装 Linux 引导程序以在安装后启动系统,你可以使用的的引导程序在 启动加载器 中,请选择一个并且安装并配置它,比如 GRUB 。
如果你使用 Intel 或者 AMD 的 CPU,那么需要 启用微码更新 。
- 安装
os-prober
包 (多系统引导需要安装)
# pacman -S os-prober
- 安装 grub 包:
# pacman -S grub
- 部署 grub (下面仅为BIOS方式):
# grub-install --target=i386-pc /dev/sdx
Note:
-
--target=i386-pc
指示grub-install
是为使用BIOS的系统安装. -
/dev/sdx
是已经完成 分区 的磁盘,grub 将安装到它上面。
- 生成配置文件:
# grub-mkconfig -o /boot/grub/grub.cfg
Note: 如果是安装多系统引导:
- 必须安装第1步
os-prober
包 - 并且
mount
其他系统所在的磁盘的引导分区(例如:/dev/sda1)
之后grub-mkconfig 才可以自动搜索已经安装的其它系统并添加到启动菜单。一般出现在其他已安装系统在别的磁盘的情况。个人卡在这一步,并且找了好多文档,都没有提到提到这一步。 -
如果还是没有生成其他系统的入口,可能是处于U盘安装环境下无法检测到其他系统的入口,请重启登陆之后重新运行第4步命令。如下图,请核对是否搜索到所有系统:
四、重启
输入 exit
或按 Ctrl+D
退出 chroot 环境。
可选用 umount -R /mnt
手动卸载被挂载的分区:这有助于发现任何「繁忙」的分区,并通过 fuser
查找原因。
最后,通过执行 reboot
重启系统,systemd 将自动卸载仍然挂载的任何分区。不要忘记移除安装介质,然后使用 root 帐户登录到新系统。