凡事总须研究,才会明白。网友总劝我放弃,我也还记得,可是不甚清楚。我翻开教程一查,这教程没有年代,歪歪斜斜的每页上都写着“XX速成”几个字。我横竖睡不着,仔细看了半夜,才从字缝里看出字来,满本都写着两个字是“劝退”!
基本步骤
- 准备环境(Arch Linux的ISO文件,良好的网络等)
- 制作安装介质并启动到live环境
- 准备分区
- 安装系统并生成 fstab文件
- 启动到船新的ArchLinux
- 基本配置
1. 准备安装环境
1.1 ISO
要安装ArchLinux,我们必须下载一个ISO(安装镜像)来启动到Live环境,这个ISO文件可以从 官方下载页面获取,
1.2 联网
为什么需要联网
想要正常安装一个Arch Linux,没有网络是万万不行的,因为不同于Manjaro、openSUSE、Ubuntu,Cent OS、Debian等其他发行版,那些发行版的核心软件包放在了安装镜像里,所以它们的ISO文件常常是巨大的,动辄两三个G。而Arch Linux没有在ISO中内置那些包,所有的软件包都在软件源上,这种方式极大地压缩了 Arch ISO 的大小,并能保证系统安装完就是最新的。缺点是安装时必须联网。笔者写下这篇文章时最新的镜像的大小只有609MB,是不是很小呢。
2. 制作安装介质
推荐使用Rufus制作安装介质(请确保U盘内没有重要文件,此操作会清除所有的数据!)。制作完成后,你需要先关闭Win10的快速启动,然后去 EFI 固件设置里关掉安全启动(Secure Boot),才能启动到你的Live系统
如果你想装到虚拟机中,在新建虚拟机时,安装程序光盘文件选择你下载的ISO文件即可
3. 启动到Live环境
为了方便截图,此处我是用VMware的UEFI模式做的演示,与真机下操作并无区别
VMware开启UEFI:虚拟机>设置>选项>高级>固件类型
3.1 检查你的网络
有线网络
如果你的电脑是通过网线连接到路由器的话(这种情况下一般都能自动分配IP地址),在进入到Live系统后,使用 dhcpcd
指令来联网,然后使用 ping www.baidu.com
检测,如果你能得到回应,说明网络是正常联通的。相关链接:静态IP,动态IP,dhcpcd
无线网络
如果你想连接无线网络,可以使用 wifi-menu
这个工具连接无线网络。如果此工具无法帮助你成功连接无线网络,请寻找一个较合适的网络环境。或百度你的问题,然后使用 ping www.baidu.com
来检查你的网络连接。有关无线网络的更多配置请去官方Wiki查看
3.2 更新系统时间
使用 timedatectl 确保系统时间是准确的: 执行以下命令:
timedatectl set-ntp true
然后可以使用 timedatectl status
检查服务状态。注意,UTC 时间通常和你的本地时间不相同。
我截下这张图时,本地时间是2019-5-8 18:01
4. 分区
本文针对单硬盘结构,即只有一块常规硬盘
4.1 分区前的准备工作
4.1.1检查硬盘结构
执行fdisk -l
检查你的硬盘结构
如果你的硬盘是普通硬盘,它的名字应该是形似
/dev/sdx
,如果你的硬盘是固态硬盘,它的名字应该是形似
/dev/nvmeXnY
,X
和Y
都是数字,通常X
是0
,Y
是1
;一定要注意硬盘名后面的大小,其中有一个很有可能是你的 U 盘,此处我给这个虚拟机分配了8GiB的虚拟磁盘
4.1.2 分区规划
我准备建立以下分区:
/mnt/boot /dev/sda1 512MiB
swap /dev/sda2 1GiB
/mnt /dev/sda3 剩余
swap分区根据实际情况,可建可不建,其大小一般与RAM大小相同
4.2 开始分区
我使用的是cfdisk — 使用 ncurses 库编写的具有伪图形界面的命令行分区工具
执行以下命令打开分区程序
cfdisk /dev/sda
如果出现以下界面,请选择gpt
,因为我们使用的是UEFI
然后进入分区界面
使用左右方向键更改当前选项,
使用上下方向键更改当前分区/硬盘,
- 选择
Free space
并在New
处回车新建一个Partition, - 把
Partition size:
后面的字符改为512M
(M
、G
等字符必须大写) - 移动光标到
Type
回车,选择EFI System
完成上述操作后,我们将看到:
第一个建立的分区是sda1,第二个是sda2,依此类推
继续执行上面三个步骤,swap分区选择Linux swap
,mnt分区选择Linux filesystem
(最后一个分区不用更改大小,直接默认即可)
最后是这样
还没完,此时我们只是把规划好的分区告诉cfdisk,还差最后一步才完成分区建立,
注意!下面是危险操作!!
把光标移到Write
并确认
此时会提醒你输入yes
or no
![确认修改][11]
输入yes
,然后选定Quit
再执行fdisk -l
检查一下你的分区
![检查分区][12]
确认无误后,执行以下命令分别为每个分区建立文件系统
mkfs.fat -F32 /dev/sda1
mkswap /dev/sda2
mkfs.ext4 -L root /dev/sda3
在上面的指令第一句中,我们为 /dev/sda1 分区,也就是 sda 磁盘的第一块分区,建立了 fat 文件系统;-F32
表明我们建立的是 fat32 而非 fat16 或其它不是我们想要的 fat。
而在第二句中,我们为 /dev/sda2 创建了专用于 swap 的存储系统;这是一个特殊的分区类型,它很难被当作 filesystem,所以建立它的指令是 mkswap
而非 mkfs.sth
。
在最后一条指令中,我们为 /dev/sda3 建立了一个 ext4 文件系统;-L root
选项表示设置这个新分区的标签为 root
,以便于后续引用它。不设定标签也是可以的,但以后我们将只能通过分区的 UUID (很长一串)来引用它,可读性不高,也很容易抄错。
4.3 挂载分区
Linux 系统目录结构
和Windows不同,Linux整个目录结构只有一个根,也就是 /
,其他目录,比如 /usr
,/boot
,/home
之类都存放于根目录之下,其关系如下图所示
关于挂载
图片截取自官方Wiki
图片中最下面那两行英文的意思是
这会将/dev/sda1上的文件系统附加到目录/mnt,从而使文件系统的内容可见。在卸载设备之前,在此操作之前存在于/mnt的任何数据都将不可见。
我对这句话的理解:
把/dev/sda1挂载到目录/mnt后, /mnt这个目录就会指向/dev/sda1上的文件系统, 此时访问/mnt就等同于访问/dev/sda1, 并且原本/mnt这个目录下存在的文件对系统来说是不可见的, 直到你从/mnt卸载/dev/sda1
开始挂载分区
- 启用交换分区
swapon /dev/sda2
可以使用 swapon --show
来检查交换分区有没有被正确启用
- 挂载根到live系统的/mnt
mount /dev/sda3 /mnt
- 创建/boot并挂载
mkdir /mnt/boot
mount /dev/sda1 /mnt/boot
mount
指令不会产生输出
5. 安装 Arch Linux
5.1 修改软件源
使用vim或nano等编辑器编辑 /etc/pacman.d/mirrorlist
,
执行 vi /etc/pacman.d/mirrorlist
或nano /etc/pacman.d/mirrorlist
然后把## China
及其下面的字符挪到文件最前面
可以把清华和科大的镜像源也加上
5.2 使用 pacstrap 安装系统
pacstrap /mnt base base-devel dialog ntfs-3g wpa_supplicant
命令解释:
pacstrap
:Arch Linux 中用来安装系统的脚本工具
pacstrap <安装目录> [要安装的软件包(组),多个软件包(组)之间用空格隔开]
base
:必选。Arch Linux基本系统,
base-devel
:可选。但最好装上,它里面包含很多重要的工具
dialog
:可选。图形化的shell,wifi-menu
就在这个软件包组里
ntfs-3g
:可选。 提供NTFS文件系统支持
wpa_supplicant
:可选。提供 WPA 认证支持(与wifi-menu搭配使用)
敲回车确认后,稍等一会
5.3 生成fstab文件
找到有一段关于fstab文件的介绍
fstab - static information about the filesystems
意思是:有关文件系统的静态信息 它告诉系统启动时该如何挂载各分区的表
使用以下命令生成 fstab 文件
genfstab /mnt > /mnt/etc/fstab
5.4 chroot
上面在5.2中我们已完成了系统的安装,但此时还无法启动新系统
我们还需要以下操作:
Change root 到新安装的系统: 执行以下命令
arch-chroot /mnt
6. 基本配置
6.1 配置时区
中国大陆地区执行如下命令配置
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
6.2本地化
使用vim或nano等编辑器编辑编辑/etc/locale.gen
找到以下几行,去掉前面的#
#en_US.UTF-8 UTF-8
#zh_CN.UTF-8 UTF-8
#zh.HK_UTF-8 UTF-8
#zh_TW.UTF-8 UTF-8
接着执行 locale-gen
以生成 locale 讯息:
locale-gen
这个命令会在/etc/locale.gen
生成指定的本地化文件。
执行以下命令创建 locale.conf
localectl set-locale LANG=zh_CN.UTF-8
还需要安装中文字体,否则会导致显示错误
pacman -S noto-fonts-cjk
6.3 网络相关设置
6.3 配置引导程序
- 安装
grub
和efibootmgr
软件包
pacman -S grub efibootmgr
- 安装
grub
到/boot
grub-install --efi-directory=/boot
- 自动生成配置文件
grub-mkconfig -o /boot/grub/grub.cfg
6.4 设置 root 密码
输入passwd
后敲回车键,然后设置你的root密码,
需要注意的是linux中大部分需要输入密码的场合中,输入密码不会被显示,在此处还请放心大胆的输,如果你觉得自己输错了,那就狂敲退格键直到你觉得已经删完了之前输入的内容再重输就可以了@_@
7. 重启到你的Arch Linux
7.1 手动卸载被挂载的分区
执行以下命令手动卸载被挂载的分区
umount -R /mnt
7.2 重启
执行以下命令重启系统
reboot
至此就安装完了^_^