简介
Arch Linux(或Arch /ˈɑːrtʃ/))是一款基于x86-64架构的Linux发行版。系统主要由自由和开源软件组成,支持社区参与。系统设计以KISS原则(保持简单和愚蠢)为总体指导原则,注重代码正确、优雅和极简主义,期待用户能够愿意去理解系统的操作。Arch Linux系统安装、删除和更新软件的软件包管理器叫做pacman。
Arch Linux采用滚动发行模式来获取系统更新和软件的最新版本。系统安装映像只简单地包含系统主要组件。
Arch Linux以社区Wiki的形式提供文档,称为Arch Wiki。该Wiki经常编有特定主题的最新信息,受到了Linux社区的广泛认可,内容也应用在Arch Linux以外的领域。
创建虚拟机
放入安装ISO
设置引导方式UEFI
安装archlinux
启动虚拟机
启动虚拟机开始安装
验证启动模式
启动成功后就会进入命令行模式,可以在此处列出efivars目录以验证启动模式来判断主板是以何种方式引导系统的。如果目录不存在,系统可能以 BIOS 模式 (或 CSM 模式) 启动。
要验证启动模式,请用下列命令列出 efivars 目录:
ls /sys/firmware/efi/efivars
如果该目录不存在,系统就可能以BIOS模式启动。
连接到互联网
由于Arch Linux在启动后,守护进程dhcpcd已被默认启用以探测有线设备,因此确保使用的是有线网络。
Arch Linux的安装必须使用网络才能完成,使用下面命令以验证网络是否正常。
确保系统已经启用了 网络接口,用 ip-link(8) 检查
# ip link
对于无线网络,请确保无线网卡未被 rfkill 禁用。
要连接到网络:
有线以太网 —— 连接网线
WiFi —— 使用 iwctl 验证无线网络
配置网络连接:
DHCP: 动态 IP 地址和 DNS 服务器分配(由 systemd-networkd 和 systemd-resolved 提供机能)对于 有线 和 无线 网络接口来说应该能开箱即用。
静态 IP 地址: 按照 Network configuration#Static IP address 进行操作。
用 ping 检查网络连接
# ping -c 2 8.8.8.8
注意: 默认情况下,安装映像已预配置好并启用了 systemd-networkd、systemd-resolved 和 iwd。
systemd-networkd是管理网络配置的系统守护程序。它检测并配置出现的网络设备。它还可以创建虚拟网络设备。
systemd-resolved是一项systemd服务,它通过D-Bus接口,resolve
NSS服务(nss-resolve(8))和on上的本地DNS存根侦听器为本地应用程序提供网络名称解析127.0.0.53。 iwd
(iNet wireless daemon,iNet 无线守护程序) 是由英特尔(Intel)为 Linux 编写的一个无线网络守护程序。
更新系统时间
验证一下系统的时间是否正常
# timedatectl status
使用 timedatectl 确保系统时间是准确的:
# timedatectl set-ntp true
建立硬盘分区
磁盘若被系统识别到,就会被分配为一个块设备,如 /dev/sda, /dev/nvme0n1 或 /dev/mmcblk0。可以使用 lsblk 或者 fdisk 查看:
# fdisk -l
分区要求
对于一个选定的设备,以下的分区是必须要有的:
一个根分区(挂载在 根目录)/;
要在 UEFI 模式中启动,还需要一个 EFI 系统分区。
分区示例
(a)、BIOS /MBR示例
针对BIOS/MBR的分区示例。
(b)、UEFI /GPT示例1
针对UEFI/GPT的分区示例。
分区工具
-
fdisk/gdisk
fdisk — Linux 自带的命令行分区工具。
https://www.kernel.org/ || util-linux
cfdisk — 使用 ncurses 库编写的具有伪图形界面的命令行分区工具。
https://www.kernel.org/ || util-linux(https://archlinux.org/packages/?name=util-linux)
sfdisk — 支持脚本的 fdisk.
https://www.kernel.org/pub/linux/utils/util-linux/ || util-linux
gdisk — GPT 版的 fdisk。
http://www.rodsbooks.com/gdisk/ || gptfdisk
cgdisk — GPT 版的 cfdisk。
http://www.rodsbooks.com/gdisk/ || gptfdisk
sgdisk — 可编写脚本的gdisk版本。
http://www.rodsbooks.com/gdisk/sgdisk-walkthrough.html || gptfdisk -
GNU Parted
GNU Parted — 命令行分区工具。
https://www.gnu.org/software/parted/parted.html || parted
GParted — GTK 图形界面的分区工具。
http://gparted.sourceforge.net/ || gparted
GNOME Disks — GTK 写的图形分区工具.
https://wiki.gnome.org/Apps/Disks || gnome-disk-utility
Partitionmanager — QT 图形界面的分区工具。
https://sourceforge.net/projects/partitionman/ || partitionmanager
当前分区方案
当前硬盘为20G
对硬盘进行分区
现在对我们准备的20GB硬盘进行分区,我这里使用有GUI的cfdisk命令。
我们使用fdisk -l查看的硬盘为/dev/sda,所以我们对它进行分区,如果你有多块硬盘,根据自己的硬盘分区。
# cfdisk /dev/sda
选择gpt分区表,进入之后,分别建立我们方案中的3个必要分区,分别为EFI系统分区,Swap分区和根分区。
创建EFI分区
创建swap分区
写入分区表
输入yes
退出
查看分区
分区完成以后可以使用命令lsblk查看分区情况
# lsblk
格式化分区
在完成系统分区以后,需要对分区做格式化才能使用。
EFI分区:由于这里使用了EFI分区,因为EFI分区需要FAT32文件格式,所以需要将其格式化为FAT32格式。
交换分区Swap:使用 mkswap 将其初始化,使用swapon激活交换空间。
根分区:格式化为ext4格式。
mkfs.fat -s2 -F32
# mkfs.fat -F32 /dev/sda1
# mkswap /dev/sda2 -L Swap
# swapon /dev/sda2
# mkfs.ext4 /dev/sda3
挂载分区
分区格式化完成以后,需要将分区挂载到 /mnt ,先挂载根分区(这里是/dev/sda3);再挂载EFI分区(这里是/dev/sda1),挂载EFI分区时,需要先创建/mnt/boot/efi目录,然后将EFI分区挂载到/mnt/boot/efi上;交换分区Sawp分区不需要挂载。
# mount /dev/sda3 /mnt
# mkdir -p /mnt/boot/efi
# mount /dev/sda1 /mnt/boot/efi
注意事项
挂载分区的时候,如果boot单独分区,要首先挂载root 即 / 分区,然后挂载boot 分区,最后再挂载其它分区,不然后续安装会出现问题。
安装基本系统
选择软件镜像源
在安装基本系统之前,需要修改一下软件镜像源,不然安装基本系统时会安装不上。镜像源列表在 /etc/pacman.d/mirrorlist 文件中。
我们选择软件镜像源时,最好选择国内的镜像源,因为国内网络环境的关系,选择其他国家或地区的镜像源,安装时可能很慢或失败。
修改/etc/pacman.d/mirrorlist文件在最上面添加163和阿里镜像源。
vim /etc/pacman.d/mirrorlist
# cd /etc/pacman.d
# mv mirrorlist mirrorlist.back
# cat mirrorlist.back | grep -A1 China | grep -v '\-' > mirrorlist
开始安装系统和必要的软件包
执行如下命令开始安装, 使用-i选项会在实际安装前进行确认;然后一路回车就好了
# pacstrap -i /mnt base linux linux-firmware dhcpcd vim openssh xfsprogs man net-tools
生成fstab文件
用以下命令生成 fstab 文件 (用 -U 或 -L 选项设置UUID 或卷标):
# genfstab -U /mnt >> /mnt/etc/fstab
强烈建议:在执行完以上命令后,后检查一下生成的 /mnt/etc/fstab 文件是否正确。
检查一下生成的fstab文件是否正确:
# cat /mnt/etc/fstab
如果生成的fstab文件正确,会看到之前分的3个分区的信息,说明几个分区都已经写入fstab配置文件了。
更改根目录
切换到新安装的系统:
# arch-chroot /mnt /bin/bash
chroot之后,当前目录就变成为/。此步会自动进行创建初始的ramdisk环境,但是如果以后更改了内核配置了的话,最好使用一下命令再重新生成ramdisk环境:mkinitcpio -p linux 。
设置时区
更改时区为亚洲、上海。并同步时间到硬件时间
# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/locAltime
运行 hwclock以同步时间到硬件时间
# hwclock -w
或
# hwclock --systohc
配置Locale
本地化的程序与库若要本地化文本,都依赖 Locale,后者明确规定地域、货币、时区日期的格式、字符排列方式和其他本地化标准。
需在这两个文件设置:locale.gen 与 locale.conf。
编辑/etc/locale.gen 然后移除需要的 地区 前的注释符号 #。
接着执行 locale-gen 以生成 locale 信息:
# locale-gen
指定需要的本地化类型,使用下面命令打开locale.gen文件:
# vim /etc/locale.gen
提示:如果提示vim不存在,使用pacman -S vim安装。
然后找到下面3项,去掉每项前面的#即可:
en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
zh_TW.UTF-8 UTF-8
再使用locale-gen生成Locale信息,并使用locale -a
列出所有启用的Locale。
# locale-gen
# locale -a
最后创建locale.conf文件,创建 locale.conf文件,并 编辑设定 LANG 变量,比如:
# echo LANG=en_US.UTF-8 > /etc/locale.conf
可以使用locale命令显示当前正在使用的Locale和相关的环境变量:
# locale
/etc/locale.conf用来配置整个系统所使用的Loacle,而这也可以由用户通过用户自己的 ~/.config/locale.conf 来覆盖整个系统的Locale配置。
提示:建立 /etc/skel/.config/locale.conf 文件,可以在新用户的建立且同时创建用户主目录(useradd -m)时,自动应用其中的Locale(会将此文件复制到新建用户的 ~/.config/locale.conf 中)。
警告: 不推荐在此设置任何中文 locale,会导致 tty 乱码。
网络配置
若使用有线网络的话,启动dhcp服务。
# systemctl enable dhcpcd.service
若使用无线网络的话,则安装以下几个软件包。
# pacman -S iw wpa_supplicant dialog
设置Root用户密码
设置root密码:
# passwd
创建新用户
新建一个普通用户somken
# useradd -m -G wheel -s /bin/bash somken
Useradd部分参数说明:
-m 自动创建用户主目录,并把框架目录(默认为/etc/skel)下的文件复制到用户主目录下。
-M 不创建用户主目录。
-c comment 指定一段注释性描述。
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
-g 用户组 指定用户所属的用户组。
-G 用户组,用户组 指定用户所属的附加组。此处将用户加到wheel组中,之后可以给这个组执行sudo命令的权限。
-s Shell文件 指定用户的登录Shell。
-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
建立管理员组内一般用户(关于wheel组)
在 一般情况下,一般用户通过执行“su -”命令、输入正确的root密码,可以登录为root用户来对系统进行管理员级别的配置。但是,为了更进一步加强系统的安全性,有必要建立一个管理员的组,只允许这个组的用户来执行“su -”命令登录为root用户,而让其他组的用户即使执行“su -”、输入了正确的root密码,也无法登录为root用户。在UNIX下,这个组的名称通常为“wheel”。
设置用户密码
# passwd somken
由于此用户的操作权限有限,有时会对很多操作带来不便,因此需要允许该用户所在的wheel组有执行sudo命令的权限,此时需要修改 /etc/sudoers文件 ,但请不要直接修改此文件,而是用下面的命令修改。
# visudo
使用上面命令打开sudoers文件后,删除wheel组前面的注释(#)即可:
安装引导程序
需要安装 Linux 引导加载程序,才能在安装后启动系统,可以使用的的引导程序已在 启动加载器 中列出,请选择一个安装并配置它,GRUB是最常见的选择。
grub是一个启动引导器,同时支持EFI和BIOS方式的启动。若使用的UEFI方式引导系统,则还需要安装efibootmgr,如果是双系统的话,还需要安装os-prober,且如果使用Intel CPU的话,则需要安装 intel-ucode 并启用因特尔微码更新。
警告: 这是安装的最后但也至关重要的一步,请正确安装好引导加载程序后再重新启动,否则将无法正常进入系统。
安装grub
因为我们使用的是虚拟机和UEFI引导方式,因此只需要安装grub和efibootmgr:
# pacman -S grub efibootmgr
然后,还需要将其安装到EFI分区当中:
# grub-install --recheck /dev/sda
生成grub配置文件
最后还需要生成一个grub的配置文件。
# grub-mkconfig -o /boot/grub/grub.cfg
重启系统
现在ArchLinux的基本系统的安装就完成了,现在需要重启以进入新系统
输入 exit 或按 Ctrl+d 退出 chroot 环境。
可选用 umount -R /mnt 手动卸载被挂载的分区:这有助于发现任何「繁忙」的分区,并通过 fuser 查找原因。
最后,通过执行 reboot 重启系统,systemd 将自动卸载仍然挂载的任何分区。不要忘记移除安装介质,然后使用 root 帐户登录到新系统。
#exit
#reboot
到此为止安装完成。