Arch Linux是一个优秀的linux操作系统。其优点是滚动发行、软件包比较新,并且可以深度可定制。缺点是由于深度可定制,所以开始安装的时候只有命令行可用,对于linux新手来说会有一些难度。我也是练习安装了好多次,才逐渐从安装过程中学习到linux的组成部分并体会到Arch的优美之处的。
另外,Arch Linux一大特色就是拥有完善的wiki,因此如果想要了解更多信息的话,还是仔细的研究Arch Wiki最好了。我在这里的安装方案是UEFI+GPT Win、Deepin、Arch三系统方案。
安装准备
- 2G以上的空闲U盘
- 最新的ArchLinux安装镜像
- 启动盘制作工具,推荐rufus
- 关闭BIOS中安全启动选项
- 有网并且网络质量很好
然后制作一个Arch启动盘。我这里使用rufus制作的是UEFI+GPT方案。如果需要在MBR磁盘上安装的话,最好在Arch Wiki上查找对应的方法。
制作好启动盘之后,将其插入电脑之中,重启进入BIOS并设置U盘为第一启动顺序,然后然后再次重启,就可以进入到Arch安装环境了。记着关闭BIOS中安全启动的选项,否则无法安装。另外Arch Linux在安装过程中需要全程联网下载最新的包。因此必须在有网环境下才能安装。
安装过程
确定UEFI启动
我选择的是UEFI的启动方案。所以首先需要确定当前安装介质是否以UEFI方式启动的。如果是UEFI启动的,那么就是下图这样的。
如果没注意这个地方就进入了命令行界面,也不用着急。这个命令可以确定当前是否以UEFI模式启动。如果是的话,会列出一堆UEFI变量来;如果什么都没有,则说明是BIOS方式启动的。
# ls /sys/firmware/efi/efivars
或者这样也可以查看当前的efi变量:
# efivar -l
测试是否有网络
如果是使用网线的话,直接测试就可以了:
# ping -c 4 www.baidu.com
如果使用的是无线网卡的话,需要先连接到网络。利用wifi-menu命令即可连接到无线网络。连接成功之后再次输入上面的命令来测试网络是否连通。
# wifi-menu
分区和格式化
分区
首先需要查看一下存储设备的状态,使用lsblk命令即可。这样会列出当前所有的存储设备。sdx(x是字母)代表不同的物理磁盘,而sdxi(i是数字)则是每个物理磁盘下的分区。
下图显示的是我的分区方案:
- sda是我的SSD,分区是安装Windows的时候由Windows分配的:sda1是恢复分区;sda2是EFI分区;sda3是保留分区,忽略即可;sda4是Windows系统下的C盘。
- sdb是我的普通硬盘。sdb1准备安装Arch Linux,sdb2准备安装Deepin,sdb4准备作为交换分区使用,剩下的分区作为Windows下的普通分区使用。剩下的sdc是我的移动硬盘,和安装过程没有关系。
我在这里使用的是UEFI+GPT的方案,需要GPT格式的磁盘。如果不熟悉的话,可以在windows下事先分好区。我这硬盘就是在windows下将MBR转成GPT并重新分的区。
如果要在Arch的环境下分区也很容易。cfdisk是一个简单好用的终端模拟图形化的分区工具。如果有多个磁盘的话,需要添加命令行参数指定要操作的磁盘:
# cfdisk /dev/sdb
第一次使用cfdisk对未格式化的磁盘进行操作时会首先询问你是用什么分区表类型,推荐使用GPT。如果因为误操作点成DOS的话也没有关系,可以使用parted命令重新修改回GPT分区表。但是需要注意,分区表的修改会清楚磁盘上的所有数据,所以最好在一开始就想好要分配什么类型并提前将有用数据移出。
# parted /dev/sdb
(parted) mklabel gpt
(parted) quit
格式化
前面已经说了我的分区方案。在开始安装之前还需要将其格式化。首先格式化/dev/sdb1为ext4分区:
# mkfs.ext4 /dev/sdb1
然后格式化交换分区并启用:
# mkswap /dev/sdb4
# swapon /dev/sdb4
由于已经安装了Windows系统,所以EFI分区不需要再次格式化。
挂载
首先需要挂载根分区,如果需要挂载其他分区,也要在挂载根分区之后。
# mount /dev/sdb1 /mnt
然后挂载EFI分区,这需要先在根分区之下创建一个对应的文件夹:
# mkdir -p /mnt/boot/EFI
# mount /dev/sda2 /mnt/boot/EFI
交换分区不需要挂载。挂载完成之后,就变成这样的了:
安装基本系统
修改安装源
默认的镜像是美国的,在中国速度比较慢。这样的话就需要将软件安装位置修改成中国的镜像。软件源的配置文件在/etc/pacman.d/mirrorlist
中。
用nano编辑器打开该文件,找到中国的源,使用Ctrl+K剪切行,然后Ctrl+U粘贴到文件最前面即可,不需要全部粘贴,只需要粘贴几个离你最近的源即可。别忘了去掉源前面的#号。
nano /etc/pacman.d/mirrorlist
修改之后的文件应该类似这样。
## China
Server = http://mirrors.163.com/archlinux/$repo/os/$arch
Server = http://mirrors.cqu.edu.cn/archlinux/$repo/os/$arch
......
开始安装
修改完软件源之后,刷新一下软件仓库列表,就可以开始安装了。
# pacman -Syy
# pacstrap -i /mnt base base-devel
配置fstab
fstab是一个关于文件系统的配置文件,在开机时候会由mount命令读取并挂载其中的分区。在安装完基本系统之后,就可以将fstab信息写入新安装的系统中了。生成之后最好查看一下fstab是否生成成功。
# genfstab -U -p /mnt >> /mnt/etc/fstab
# nano /mnt/etc/fstab
新系统的配置
下面的配置都需要进入新系统进行配置。
进入新系统:
# arch-chroot /mnt /bin/bash
创建初始ramdisk环境,安装的时候这一步会自动进行,所以不需要手动执行。但是如果以后更改了内核配置的话,可能就需要重新生成一下ramdisk环境了。
# mkinitcpio -p linux
使用不带参数的passwd命令设置root密码:
# passwd
配置主机名:
# echo myhostname > /etc/hostname
然后将主机名添加到/etc/hosts
文件中localhost和::1两行的末尾:
#<ip-address> <hostname.domain.org> <hostname>
127.0.0.1 localhost.localdomain localhost myhostname
::1 localhost.localdomain localhost myhostname
安装grub
grub是一个启动引导器,同时支持EFI和BIOS方式的启动。安装和配置起来也比较简单。首先要安装grub。如果使用UEFI方式启动,还需要安装efibootmgr。如果同时还装有其他操作系统,还要安装os-prober:
# pacman -S grub os-prober efibootmgr
安装好之后,还需要将其安装到EFI分区之中,这里不需要指明具体是哪个分区,因此不用数字:
# grub-install --recheck /dev/sda
如果提示error:cannot find EFI directory
,说明找不到EFI文件夹的位置,还需要加上--efi-directory参数指明安装位置:
# grub-install --recheck /dev/sda --efi-directory=/boot
没有错误则说明安装成功。安装完毕之后还需要生成一个grub配置文件。这一步会探测系统上已经安装的系统并写入到配置文件中。但是由于在安装介质环境中,此时Windows系统可能会探测不到。等到一会重启真正进入Arch环境之后,还需要重新执行一下这个命令,这样就会正常地探测到所有系统了。
# grub-mkconfig -o /boot/grub/grub.cfg
配置网络
如果使用有线网的话,令dhcp服务开机启动:
# systemctl enable dhcpcd.service
如果使用无线网络的话,要安装这几个包,否则重启之后无法连接无线网络:
# pacman -S iw wpa_supplicant dialog
退出并重启系统
前面的所有都配置完了之后,就可以退出chroot环境并重新启动了,当然不要忘了拔掉启动盘或者重新修改BIOS的启动顺序。
# exit
# reboot
正常情况下,应该就会进入到新安装的Arch环境了。使用root用户和前面设置的root密码登录进tty之后,重新执行一下grub-mkconfig命令即可搜索到所有的操作系统。
# grub-mkconfig -o /boot/grub/grub.cfg
这样,一个最基本的Arch Linux就安装完成了。
总结
安装完成之后梳理一下可以发现,安装Arch Linux和安装其他Linux系统并没有什么大的区别,只不过Arch的安装过程完全要考命令行来操作,初次安装可能会有一些问题。但是具体的安装步骤都是差不多的:
- 制作启动盘
- 重启进入安装环境
- 选择分区并进行挂载
- 安装系统
- 配置用户等设置
关于时区、时间、具体用户等配置我在这里并没有提及,准备放到以后的美化部分一起说。