原本一直没注意到BIOS默认的硬盘模式是IDE,于是把硬盘改成了AHCI模式,之后发现因为驱动的原因无法启动。想着与其改来改去,不如干脆重新安装一遍,顺便记录一下安装过程。
准备
- U盘一个;
- 电脑一台;
- 网络连接。
制作安装盘
在Arch Linux的官方下载页面可以下载到诸如archlinux-version-x86_64.iso形式的安装镜像,中间的version为安装镜像的版本号。如果官方的下载链接速度很慢或者无法下载的话可以在页面的下方找到镜像下载站点来下载。
如果使用Linux/macOS之类的系统可以使用dd命令来将镜像写入U盘:
dd if=archlinux-version-x86_64.iso of=dev/sdb
其中if=
后面为安装镜像的文件名,of=
后面为U盘的路径。
使用Windows安装的话可以使用balenaEtcher或者其他镜像制作工具来将镜像写入到U盘内。
启动到live环境
将制作好的安装盘插入到电脑并开机,在开机时选取使用U盘启动。选取启动顺序的方法一般可以在电脑或主板的说明书上找到,或者显示在开机界面中。如果找不到的话,可以搜索电脑或主板的品牌名+启动顺序来找到修改方法。
如果无法启动到U盘的话可能是启动顺序设定错误或者U盘写入失败。如果始终无法成功写入U盘的话可以换一个U盘来尝试。
在U盘启动后可以看到Arch菜单界面,选择Boot Arch Linux,并按Enter键进入安装环境。
验证启动方式
现在大多数主板都使用了UEFI来进行引导,可以使用如下命令来验证启动模式:
ls /sys/firmware/efi/efivars
如果存在该目录,则为UEFI启动方式,如果显示如下内容:
ls: cannot access '/sys/firmware/efi/efivars': No such file or directory
说明目录不存在,则系统可能为BIOS启动方式。
此外,可以使用fdisk -l
命令来查看硬盘分区,如果硬盘的Disklabel type
属性为gpt
,且硬盘当中有Type
类型为EFI System
的分区,说明引导方式为EFI模式。
不过,最靠谱的方法其实是查看主板或者电脑的说明书。
连接到网络
使用有线网络并且使用启用了DHCP的话,安装镜像会在启动时使用dhcpcd
来配置有线连接。如果没有自动连接的话可以使用一下命令获取IP地址:
dhcpcd
如果使用无线网络连接的话使用如下命令来进入Wi-Fi的设置:
wifi-menu
在设置界面中选择要连接的Wi-Fi并输入密码进行连接。
新版的安装镜像似乎换掉了netctl,所以以上命令应该改为用iwctl来代替。由于现在暂时不用Arch了,所以这个怎么用,可以去看官网的说明。
网络连接成功的话可以使用ping
命令来测试网络连接:
ping archlinux.org
更新系统时间
使用timedatectl
来确保系统时间是准确的:
timedatectl set-nap true
正常情况下执行该命令后不会有输出。
建立磁盘分区
[danger]进行分区可能会导致数据丢失,请确保分区之前对重要数据进行了备份![/danger]
被系统识别的磁盘会被分配为块设备,可以使用fdisk
来查看当前磁盘状况
fdisk -l
如果使用EFI方式来启动的话,需要建立EFI分区,或者直接利用硬盘中已有的EFI分区。如果使用BIOS方式引导,则不需要EFI分区。
创建EFI分区
使用fdisk
来进行分区:
fdisk /dev/sdX
其中X为要进行分区的磁盘,例如sda
,输入m
可以查看帮助列表。
如果是一块新硬盘的话,输入g
来创建一个新的分区表,否则跳过这一步。
输入n
创建分区,首先会输入编号和起始扇区,使用默认数值即可,然后输入结束扇区或分区大小。建议的分区大小为260-512MiB。输入+512M
即可创建512M大小的分区。
输入t
并选择之前创建的分区编号来改变分区类型,输入l
可以查看支持的分区类型以及序号,这里EFI分区对应的序号为1,所以在这里输入1
。
输入p
可以查看磁盘状态,确保之前的步骤没有做错。
输入w
将之前的设置写入磁盘,然后输入一下命令来格式化分区:
mkfs.fat -F32 /dev/sdXY
其中sdXY为之前创建的分区。
创建根分区
使用fdisk
进行分区:
fdisk /dev/sdX
其中sdX为要分区的磁盘。
如果是新硬盘并且使用BIOS引导的话,输入o
来创建新的MBR分区表;如果是是新硬盘并且EFI分区位于另一块硬盘时,输入g
创建新的gpt分区表;如果在上一步建立过分区表和EFI分区,则跳过这一步。
输入n
来创建新的分区,首先输入编号和起始扇区,一般使用默认值即可。之后输入结束扇区或分区大小。如果要占据所有剩余空间的话,可以直接使用默认值;如果要创建交换空间的话,可以输入-512M
来在最后空出512M的空间,其中512M可以替换为想要划留下来的空间大小。如果使用支持交换文件的文件系统,例如ext4,也可以不设置交换空间,而是设置交换文件来代替。
交换空间的分区方式可参照EFI分区的分区方法,其中交换分区的序号为82,并且交换分区无需格式化。
输入p
可以查看分区的状态,确认无误后输入w
写入操作。
分区完成之后使用以下命令来格式化根分区:
mkfs.ext4 /dev/sdXY
其中sdXY为之前创建的根分区。
如果创建了交换分区的话,使用mkswap来初始化交换分区。
mkswap /dev/sdXY
swapon /dev/sdXY
其中sdXY为交换分区。
挂载分区
使用mount
命令将根分区挂载到/mnt
中:
mount /dev/sdXY /mnt
其中sdXY为根分区。
如果使用EFI方式启动的话,还需要挂载EFI分区到/mnt/boot
或/mnt/efi
目录中:
mkdir /mnt/boot
mount /dev/sdXY /mnt/boot
这里的sdXY为EFI分区。
安装
选择镜像
设置地理位置最近的镜像源可以加快下载速度,默认的设置当中镜像源已经被启用通过改变文件当中镜像源的顺序,可以改变不同镜像源的优先级,越靠前的镜像源的优先级最高。编辑/etc/pacman.d/mirrorlist
文件来设置镜像源:
vim /etc/pacman.d/mirrorlist
找到其中标有China的源,将其剪切到文件的开头来将其优先级设为最高。也可以直接在文件开头直接输入,例如清华和浙大的镜像源:
Server = http://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch
Server = http://mirrors.zju.edu.cn/archlinux/$repo/os/$arch
该文件接下来会被pacstrap复制到安装的系统当中,安装之后不需要重新设置。
安装必须软件包
使用pacstrap脚本可以安装Linux内核,基本软件包和硬件的固件:
pacstrap /mnt base linux linux-firmware
如果需要安装其他软件包组,例如base-devel,应将其名称添加到命令的后面,并用空格将其隔开。或者在Chroot到新系统之后使用pacman来进行安装。
配置系统
配置Fstab
Fstab文件可以用来自动挂载分区,使用以下命令可以生成fstab文件:
genfstab -U /mnt >>mnt/etc/fstab
在执行完命令后,应检查生成的文件是否正确:
cat /mnt/etc/fstab
检查该文件当中分区的挂载设置是否正确,例如根分区和EFI分区是否挂载到了对应的目录。
Chroot
使用Chroot来改变当前进程和子进程的可见根路径,通常用于系统维护。执行该命令后,就进入到了新安装的系统当中。
arch-chroot /mnt
设置时区
使用以下命令可以设置时区:
ln -sf /usr/share/zoneinfo/Region/City /etc/localtime
其中Region和City分别为地区和城市,例如:
ln -sf /usr/share/zoneinfo/Asis/Shanghai /etc/localtime
之后使用hwclock
命令来生成/etc/adjtime
文件:
hwclock --systohc
安装常用软件
由于系统中只包括了一些基本的软件,很多常用的软件都没有包括在内,例如文本编辑器和联网所需程序等,所以要先进行安装。安装软件需要使用Arch Linux的包管理器Pacman。这里使用Pacman来安装文本编辑器vim;连接有线网络需要的dhcpcd;连接无线网络的wpa_supplicant;显示图形化Shell界面的dialog,:
pacman -S vim dhcpcd wpa_supplicant dialog
当询问是否继续安装时输入Y来继续安装。
本地化
本地化通过Locale来设置,通过编辑/etc/locale.gen文件来指定需要的本地化类型,通过去除对应行前面的注释符号#
即可:
vim /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
接下来创建locale.conf
并编辑LANG
变量:
vim /etc/locale.conf
然后输入:
LANG=en_US.UTF-8
要注意这里不要输入中文的locale,由于Linux内核不支持中文,设置中文会导致乱码。
网络设置
编辑/etc/hostname
文件:
vim /etc/hostname
在其中输入想要设置的名称例如myhostname
:
myhostname
接下来编辑/etc/hosts
文件:
vim /etc/hosts
在文件内添加对应的信息:
127.0.0.1 localhost
::1 localhost
127.0.1.1 myhostname.localdomain myhostname
如果在网络中使用固定IP,则使用固定的IP来替换127.0.0.1。
再次重新使用网络管理软件来重新进行网络连接。
设置Root密码
由于Root用户权限很高,所以要设置Root密码来避免安全问题。执行以下命令:
passwd
之后输入两次要设置的密码,输入的密码在屏幕中不会有任何显示。
安装引导程序
使用UEFI的主板可以使用EFISTUB直接引导或者使用引导程序,BIOS主板可以使用引导程序来引导。
UEFI直接引导
Linux内核原生支持使用EFISTUB来将内核作为EFI可执行文件加载,EFISTUB可以支持UEFI主板直接引导内核或者使用引导程序来间接引导内核。如果主板的UEFI引导菜单不便操作并且有多个系统或内核要引导,可以使用引导程序例如GRUB。
如果将EFI分区挂载到/boot
目录的话,在使用pacman进行更新时,也可以同时更新EFI固件所读取的内核。
首先安装efibootmgr:
pacman -S efibootmgr
接下来使用efibootmgr创建加载内核的引导项:
efibootmgr --disk /dev/sdX --part Y --create --label "Arch Linux" --loader /vmlinuz-linux --unicode 'root=PARTUUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX rw initrd=\initramfs-linux.img' --verbose
其中/dev/sdX
和Y
为EFI分区的驱动器和分区号,例如EFI分区为/dev/sda1
,则应分别替换为/dev/sda
和1
。root=参数后面为系统的根分区,XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
为分区的UUID,此外,也可以不使用UUID,而是使用分区的路径,例如可以将PARTUUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
替换为/dev/sda2
。
使用GRUB引导
GRUB可以引导BIOS启动或者是UEFI启动,在安装之前如果已经安装过其他系统,请确保之前安装的GRUB已经被卸载。
首先安装os-prober
和ntfs-3g
,它们可以与Grub
配合检测已安装的系统并自动设置:
pacman -S os-prober ntfs-3g
使用BIOS方式引导
首先安装grub
:
pacman -S grub
部署grub:
grub-install --target=i386-pc /dev/sdX
其中sdX
为系统所在硬盘。
生成配置文件:
rub-mkconfig -o /boot/grub/grub.cfg
使用EFI方式引导
安装grub
和efibootmgr
:
pacman -S grub efibootmgr
部署grub:
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub
生成配置文件:
grub-mkconfig -o /boot/grub/grub.cfg
检查配置
打开gurb
的生成的grub.cfg
文件:
vim /boot/grub/grub.cfg
查看文件的menuentry
部分是否有已安装的所有系统的入口,如果没看到刚安装的Arch Linux入口,可以先检查EFI目录中是否正确部署了Linux内核:
cd /boot
ls
查看是否有如下文件:
initramfs-linux-fallback.img initramfs-linux.img intel-ucode.img vmlinuz-linux
如果没有,则可能是内核没有被正确部署,在确认/boot
目录无误后,使用pacman
重新部署内核:
pacman -S linux
之后重新生成grub的配置文件。
如果os-prober
软件包安装争产,但是没有其他系统的入口则可能是安装环境下无法检查到其他系统。可以在重启到新系统之后执行以下命令:
grub-mkconfig -o /boot/grub/grub.cfg
如果仍然没有其他系统,可以参照Wiki手动编辑配置文件来添加。
重启
首先退出chroot状态。执行以下内容:
exit
卸除挂载:
umount /mnt/boot
umount /mnt
最后重启:
reboot
推荐配置
连接网络
重启到新系统之后,默认状态下并没有连接网络,所以需要重新联网。使用有线网络的话执行如下命令:
dhcpcd
使用无线网络的话执行以下命令:
wifi-menu
创建交换文件
如果之前没有建立交换分区的话,也可以在这一步建立交换文件来代替。首先为交换文件划分空间:
fallocate -l 512M /swapfile
其中512M
为分配的大小,单位为M或G。交换文件的权限如果过大会出现很严重的问题,所以要修改权限,执行:
chmod 600 /swapfile
设置交换文件:
mkswap /swapfile
启用交换文件:
swapon /swapfile
编辑/etc/fstab
文件来自动挂载:
vim /etc/fstab
在最下方新建一行输入以下内容:
/swapfile none swap defaults 0 0
建立新用户
root用户由于权限很高,容易出现安全风险,所以一般推荐建立新的用户来日常使用,使用以下命令建立一个新用户:
useradd -m -G wheel username
其中username
为新用户的用户名,之后为新用户设置一个密码:
passwd username
其中username
为新用户的用户名,在这里输入两次密码确认设置。
安装sudo
使用sudo可以避免在执行需要管理员权限的命令时切换到root用户,首先安装sudo:
pacman -S sudo
sudo提供了编辑配置文件的专门命令:
visudo
如果提示没有默认编辑器或者对默认不满意的的话可以使用以下命令指定使用的编辑器:
EDITOR=vim visudo
找到以下行,并去掉开头的注释符号#
:
# %wheel ALL=(ALL)ALL
配置完成之后重启系统:
reboot
安装AUR助手
Arch Linux本身并不能直接安装AUR中的软件,而是要下载后进行安装。使用AUR助手可以以包管理器的形式来安装AUR中的软件。AUR助手本身就是AUR软件,所以要将其下载后进行安装。首先安装git用来下载AUR助手:
pacman -S git
这里使用yay作为AUR助手,首先下载yay:
git clone https://aur.archlinux.org/yay.git
进入yay
的文件夹中:
cd yay
安装:
makepkg -si
yay的使用方式类似pacman,并且也可以调用pacman来更新和安装软件。
Comments NOTHING