注意:本人安装Archlinux的时间是2016-5-17,本文内容很有可能过时,请以ArchWiki上的Beginners’ guide为准。
对于Linux经验不是很充足的小白我来说,安装Archlinux还是一件比较有挑战性的事,其间遇到了很多问题,也在搜索引擎上找了很久,所以在这里主要会叙述我安装的过程和期间碰到过的问题,安装过程主要还是要参考ArchWiki。
本文假设你已经使用UEFI+GPT安装好了Win10系统,并准备开始安装Archlinux。如果你准备在一块新硬盘上安装双系统,那么应该先安装windows。
如果你安装的是Win10,那么它应该默认就是按UEFI+GPT方式安装的,可以按Win+X键打开磁盘管理,如果是UEFI安装的,那么应该有一个EFI分区,可能是100M。其它还有Windows的恢复分区和基本数据分区。不用管恢复分区,如果现在磁盘上没有剩余空间,可以右键点击基本数据分区,点击压缩卷,给Arch的安装腾出空间。用右键点击磁盘,查看属性,可以知道自己是否采用了GPT分区方式。
在安装之前,请在电源计划中关掉Windows的快速启动,并在BIOS中关掉Secure Boot,可以很容易搜到对应自己电脑的具体方法。
如果上面有哪一条没有满足,请只看一看我遇到的问题,具体安装请再参考其它教程。
在Download页面下载光盘镜像,使用自己喜欢的软件将光盘镜像写入到一个u盘中,比如rufus。
将u盘插入电脑,选择u盘启动。
启动成功后选择第一个选项,可以进入到命令行。这时不用担心,只要按照Wiki上的步骤来就好了。
测试网络连接
首先,使用ping命令测试一下网络连接,比如ping www.baidu.com
。如果网络不可用,试一下dhcpcd命令,不行再参考连接到因特网。
分区
连好网后,开始分区。用lsblk确定目前有哪些分区。没有显示出自己在windows上腾出的空闲空间,这是正常的,使用分区工具时就可以看到它了。对分区有特别要求,可以参考Wiki,否则可以采用最简单的单root分区方案,满足大部分需求,如果需要之后可以建立swapfile来充当swap分区。
分区工具有很多种,可以采用Wiki上说的parted进行分区,也可以使用简单的cgdisk,操作起来像图形界面一样,在free space上选择New或按N新建分区,输入大小(如15G),按下Enter接受默认的hex code(8300),再按下Enter保持分区名为空。如果要选择剩下的所有空间,可以不输入大小。
在这时不要分出/boot分区,因为要双系统启动的话应该把Win10的EFI分区挂载到/boot上。
比如,输入命令cgdisk /dev/sda
,就表示对/dev/sda进行分区。
格式化文件系统
如果有特殊要求,请参考Wiki上的文件系统条目,用mkfs.[文件系统名]进行格式化。通常情况下,直接使用mkfs.ext4将要用到的各种分区格式化,用mkfs.vfat -F32格式化UEFI分区,用mkswap格式化swap分区,并用swapon启动就好了。应该格式化的盘名形如/dev/sda5,可以使用lsblk列出盘名并通过盘的大小找到自己刚才分的区,按自己的需求格式化就好。
比如,输入mkfs.ext4 /dev/sda5
,表示格式化/dev/sda5为ext4文件系统。
挂载分区
首先,一定是挂载/分区,再挂载其它分区。因为要使用双系统启动,所以即使没有分/boot分区,还是应该把windows的EFI分区挂载到/上。
比如,我只分了一个/分区,盘名为/dev/sda5,windows的EFI分区为/dev/sda2,我输入的命令就是mount /dev/sda5 /mnt
,mkdir /mnt/boot
,mount /dev/sda2 /mnt/boot
,要复制的话注意把命令的盘名设置为自己的盘名。
安装基本软件包
用nano /etc/pacman.d/mirrorlist
编辑镜像服务器列表,把注释那行有China的都移到前面。然后用pacman -Syy
强制刷新。这样之后的下载会比较快。
然后,使用命令pacstrap -i /mnt base
下载所需要的基本软件包,并把他们装到/mnt目录下,即装到你刚挂载上去的硬盘中。
生成fstab
使用genfstab -U -p /mnt >> /mnt/etc/fstab
命令生成fstab。如果想要避免efi分区在开机时总是被检查,可以把/boot那一行下最后的数字改成0。
例如,我的efi分区为/dev/sda2,我修改后就是
# /dev/sda2
9 UUID=E0A6-B270 /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 0
进入新系统
使用arch-chroot /mnt /bin/bash
命令chroot到新系统,/bin/bash表示在其中使用bash这种shell进行交互。
这样,在安装盘中的操作就告一段落了。
设置Locale
使用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.gen文件。然后使用echo LANG=en_US.UTF-8 > /etc/locale.conf
生成locale.conf文件。之前没有这个文件,这是正常现象。不建议在locale.conf中设置中文locale,因为有出现tty乱码的可能。之后我们会在.xinitrc
或.xprofile
中设置中文。
设置时间
时区可以用tzselect
进行选择,把选择好的时区用ln -s /usr/share/zoneinfo/Zone/SubZone /etc/localtime
进行软链接,Zone和SubZone是刚才的tzselect
产生的,中国一般是Asia/Shanghai。要设置硬件时钟(BIOS中显示的时间)为utc时间(比上海慢8小时),使用命令hwclock --systohc --utc
。
设置root密码
使用passwd
命令,输入两次密码。
安装bootloader
按照上面的步骤,efi分区应该被挂载到了/boot目录下。这时,我们使用bootctl install
命令,安装bootloader,然后用cp /usr/share/systemd/bootctl/arch.conf /boot/loader/entries/
把示例文件复制过来,只要修改它的options部分就可以了。以我的/boot分区为例,用blkid -s PARTUUID -o value /dev/sda2
就可以生成所需要的PARTUUID,最后加上rw就行了。
格式大概为:
/boot/loader/entries/arch.conf
title Arch Linux
linux /vmlinuz-linux
initrd /initramfs-linux.img
options root=PARTUUID=14420948-2cea-4de7-b042-40f67c618660 rw
接下来修改/boot/loader/loader.conf,这个文件有默认的内容,改为
timeout 3
default arch
就行。
设置主机名
使用命令echo myhostname > /etc/hostname
,myhostname改为你自己喜欢的主机名就行。
同时,修改/etc/hosts为:(myhostname就是你自己起的名字)
#<ip-address> <hostname.domain.org> <hostname>
127.0.0.1 localhost.localdomain localhost myhostname
::1 localhost.localdomain localhost myhostname
新系统的网络
启动盘中默认配置好了有关网络的软件,但新的系统中却没有。
如果你只是使用单一且固定的有线网络,使用systemctl enable [email protected]
就可以了(interface是你的网络接口名,可以使用ip link查看,类似enp13s0)。
如果要使用无线网络,那么就要使用pacman -S iw wpa_supplicant dialog
命令安装这些软件包。如果失败,可能要安装固件。
至此,新系统的配置就完成了。
使用exit
命令退出chroot环境,umount -R /mnt
卸载挂载的分区,然后使用reboot
重启一下就好了。
但是,我在重启时遇到了Error loading /vmlinuz-linux: Not found的问题,这个问题主要是由于我一开始安装是挂载的分区不对造成的。也就是说,/boot目录下没有vmlinuz-linux和initramfs-linux.img等文件,所以通过u盘进入系统,把/和/boot挂载好后,用pacman -S linux
再安装一遍。使用ls命令检查一下这次/mnt/boot目录下是否有了这样的文件。
如果文件不是这个名字,可以修改/boot/loader/entries/arch.conf文件,把其中的内容改为你用ls命令看到的内容。