ArchLinux使用日志
ArchLinux使用日志
目录
前言
近来无事,准备将ArchLinux安装至自己的机子上作为备用系统使用,
也是用于更好地学习Linux系统
正文
ArchLinux的安装
由于个人精力有限,因此其安装过程针对一定的安装环境,实际操作请对照官方文档进行安装
其他相关链接:
什么是UEFI,BIOS
BIOS(基本输入输出系统,Basic I/O System),是固化在计算机ROM上的一组程序,这组程序如其名字一样,作为操作系统启动前的步骤为操作系统的正式启动提供:
- 加电自检,检测CPU,计时芯片等各种计算机必需设备
- 枚举设备,初始化各设备和设备资源
- 从CMOS(可读写的RAM芯片,存储一些硬件配置和用户设定参数)中读取数据并进行有关系统设置
等功能
UEFI(Unified Extensible Firmware Interface,统一可拓展固件接口),其作为一个硬件接口,可用于系统启动,维护的硬件支持。
UEFI的前身是EFI,作为BIOS方案的竞争者,由于早期没有如UEFI一样的接口标准,导致各个厂家的EFI千差万别。
使用了UEFI固件支持的BIOS提供更多的功能如:
- 支持2TB以上的硬盘
- 支持GPT分区(传统的MBR格式最多支持四个主分区,若要更多的分区需要逻辑分区)等
同时UEFI并没有传统BIOS的自检流程(传统启动方式称为Legacy),因此可以提供更为快速的启动速度。
什么是文件系统(filesystem)
文件系统的概念针对我们日常生活中所使用的各种存储设备如硬盘,USB,光盘等。
无论是我们日常所编写的文本文档,还是计算机程序,抑或是操作系统本身,都是一个文件,存储在我们使用的存储设备当中。
但是存储设备本身并没有特定的结构,整体就是存储单元的集合。而文件的调用,操作系统的引导都需要一种特定的结构去找到存储设备中对应的文件进行执行,例如索引结构等。
因此我们需要各种不同组织文件的方式,这就是文件系统。
文件系统提供了各种文件在硬盘上的组织、存放方式,规定了文件本身的属性如文件名最大长度等。同时将数据结构的记录存储至存储设备上,使存储设备逻辑上具有所谓的文件系统
什么是分区表(MBR,GPT)
现今存储设备的容量已经大大提高,1TB的硬盘已经变得司空见惯。
而我们实际生活使用的过程中,由于各种需要,常对硬盘进行分区。
比如重要文件存放至分区1,其余文件存放至分区2。又或者系统1(作为一个文件)存放至分区3,系统2存放至分区4。
因此分区表就是为了对硬盘进行分区(逻辑意义上),并提供分区索引,分区信息存储等功能。
分区表存放于每一个分区的开始部分,提供了该分区的起始扇区,终止扇区,文件系统,下一个分区的索引等。
mbr格式的分区表由于其所占存储空间有限,最多只能支持2TB的存储空间,且每一个设备最多划分出4个主分区。
超出4个需要使用逻辑分区支持。
而gpt格式的分区表存储空间更大,因此可以提供更多的信息,支持9.2ZB的存储空间,且可以存储更多的分区信息而无需划分出逻辑分区。
什么是grub,syslinux(BootLoader)
Grub和Syslinux(只能启动Linux系统)等都是一种系统引导程序(Bootloader),本身也作为一个文件存储于设备之中。
UEFI或者BIOS会识别对应的分区并加载对应的程序,当BootLoader加载之后可以根据已有的配置加载已有的系统
类似Grub和Elilo等的BootLoader有针对UEFI和BIOS有相应的版本,安装时根据自己主板的型号进行选择。
需要注意的是,BIOS版本的BootLoader存放于boot分区(fdisk),UEFI版本的BootLoader存放于EFI分区(EFI文件系统,EFI System)
现在来安装一个ArchLinux
安装时间:2021.09.26
本机安装环境:
- 系统存储于外置硬盘
- 通过U盘启动盘安装
- x86_64芯片架构
下载ArchLinux镜像
制作启动盘
Windows下:
可以使用DiskGenius或者Windows自带的设备管理器进行分区
分区完毕后可以使用UltralISO进行启动盘的制作
Linux下:
dd if=(source file name) of=(target file name) (Options)
使用dd命令将镜像文件拷贝至对应U盘设备
根据主板型号进入BIOS/UEFI并选择U盘启动
通常使用F2,Esc进入,不同型号的主板可能有所差异,请以主板制造商说明为准。
存储设备分区
*注:若无特殊说明,/dev/xxx统一为与挂载,分区等操作对应的设备分区
使用fdisk -l查看各个存储设备和编号
若为UEFI启动:使用gdisk /dev/xxx(设备编号)命令进行gpt格式的分区
同时需要注意预留500MB以上的EFI分区,swap分区建议为内存大小或者两倍内存大小
若为BIOS启动:使用fdisk /dev/xxx(设备编号)命令进行mbr格式的分区
需要启动一个boot分区
初始化文件系统
mkfs.vfat /dev/xxx或者mkfs.fat -F32 /dev/xxx设置EFI分区(若需要的话)mkfs.ext4 /dev/xxx对需挂载根目录等的分区进行ext4文件系统的格式化mkswap /dev/xxx设置交换分区swapon /dev/xxx开启交换分区
挂载分区
由于我们需要从U盘进入我们安装的系统进行操作,因此需要先进行分区的挂载
我们挂载至/mnt分区下,此分区适用于挂载其他系统并对其进行操作。
由于我们刚格式化分区,因此系统以及相关组件并未被安装,并没有类似/home等目录
因此我们手动建立文件夹并进行相应的挂载
mount /dev/xxx /mnt挂载根分区mkdir /mnt/boot建立boot目录,若为BIOS/MBR启动,此时可以进行mount /dev/xxx /mnt/bootmkdir /mnt/boot/EFI建立EFI目录,若为UEFI/GPT启动,此时可以进行mount /dev/xxx /mnt/boot/EFImkdir ...mount ...- 直到全部分区正确挂载完毕
下载基本Linux系统和必要组件
格式化的分区并没有基本的Linux系统和组件,因此需要下载
如果下载过程中遇到下载速度慢或者中断等问题,请查看源设置:
打开 /etc/pacman.d/mirrorlist 并添加
- 兰大镜像源
Server = https://mirror.lzu.edu.cn/archlinux/$repo/os/$arch - 清华镜像源
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch
或者其他国内镜像源
然后刷新源
pacman -Syy
下载基本系统和组件
pacstrap /mnt base linux linux-firmware
pacstrap 是Arch提供的脚本,用于安装一些基础软件
实际使用时可以再安装vim nano等文本编辑器软件方便之后的配置文件的更改
生成fstab
fstab用于在加载linux系统时提供分区挂载的信息,缺少此文件或者配置出错将会导致系统无法进入甚至崩溃。
ArchLinux下提供了自动生成目录表的工具genfstab
具体使用:
genfstab -U /mnt >> /mnt/etc/fstab
-U 参数表示使用设备的UUID进行挂载
UUID是一个设备的绝对地址(理论上会产生冲突,但实际情况下发生冲突的可能性可以忽略不记)
>> 表示将前部分的输出写入后部分对应的文件
从U盘进入系统
arch-chroot /mnt
设置时间
设置时区
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
同步时间
hwclock --systohc
可以使用ntp进行时间的同步。
修改主机名
建立 /etc/hostname 文件写入主机名
更改语言
修改 /etc/locale.gen 文件将需要的字符集前的注释 # 删去
建立 /etc/locale.conf 文件写入
LANG=en_US.UTF-8
运行 locale-gen 使语言设置生效
修改网络设置
修改 /etc/hosts 文件写入
127.0.0.1 localhost
::1 localhost
127.0.0.1 主机名.localdomain 主机名
安装网络相关的包
由于ArchLinux秉持轻量化,因此基本系统中并未包括我们常用的网络资源管理相关的软件,需要自行下载。
pacman -S iw wpa_supplicant dialog
安装引导程序(bootloader)
BIOS/MBR
grub-install --target=i386-pc /dev/xxx (这里为boot分区挂载的设备)
grub-mkconfig -o /boot/grub/grub.cfg 根据grub配置更改grub相应参数(可自定义)
UEFI/GPT
pacman -S grub efibootmgr
grub-install --target=x86_64-efi --efi-directory=/boot/EFI --bootloader-id=grub
grub-mkconfig -o /boot/grub/grub.cfg
initramfs生成
由于Linux系统的启动需要同时启动必要的组件,而某些组件之间又相互依赖,或者存在兼容性问题。
为了解决这些问题,Linux在真正的系统启动前需要启动initramfs,即initram file system,用于提供一个用户态的环境以完成内核不易完成的操作,比如加载必要的模块等
使用mkinitcpio -P打包initramfs
关于/usr分区独立进行挂载的问题
在目前的ArchLinux中,/sbin 链接至 /usr/sbin 当我们将/usr分区独立挂载后,会导致initramfs无法找到相应的文件导致启动失败
解决方法:
- 修改
/etc/fstab文件找到/usr分区一行,将pass参数设置为0 - 修改
/etc/mkinitcpio.conf文件,在HOOK中添加shutdown和usr
然后重新打包initramfs
mkinitcpio -P
修改root密码
passwd
退出当前系统
exit
解除挂载
umount -R /mnt (从根目录递归解除挂载)
重启进入系统
reboot
ArchLinux系统的配置
网络配置
使用wpa_supplicant连接无线网络
建立 /etc/wpa_supplicant/wpa_supplicant.conf 文件,写入
ctrl_interface=/run/wpa_supplicant
update_config=1
查看网络设备ifconfig
*本人的网络设备是wlan0
根据配置设置wpa_supplicant
wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
网络设置
*一下为需要执行的命令,具体参数请根据自己的网络状态配置
wpa_cli
scan
scan_results
add_network
set_network 0 ssid "MYSSID"
set_network 0 psk "passphrase"
enable_network 0
save_config
由此配置完毕,之后可以于/etc/wpa_supplicant/wpa_supplicant.conf自行进行修改
GRUB引导多系统
UEFI/GPT下引导Windows
查看Win10启动分区(EFI分区)UUID,首先使用fdisk -l查看是哪个分区,比如是/dev/sda1
使用blkid /dev/sda1查看分区的UUID
修改 /boot/grub/grub/cfg 文件
找到 ### BEGIN /etc/grub.d/30_os-prober
添加Windows启动项
menuentry 'Microsoft Windows 10' {
insmod part_gpt
insmod fat
insmod chain ## 链式加载
search --fs-uuid --no-floopy --set=root XXXX-XXXX ## EFI分区的UUID
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}
重启进入Grub引导界面查看效果
*如果没有发现Windows启动项,请试着修改 /etc/default/grub 文件
在文件中添加
GRUB_DISABLE_OS_PROBER=false
之后重新配置grub
- 在Arch下是
grub-mkconfig -o /boot/grub/grub.cfg - 在一些系统下是
update-grub
请以安装的系统提供的grub文档为准
ArchLinux系统的美化
grub theme
grub作为引导程序,支持定制化,因此可以制作个性化的启动页面主题。
grub主题资源:
自定义安装:
- 首先将主题文件放置到系统grub主题文件夹中
- Arch下可以是
/boot/grub/themes/,也可以是/usr/share/grub/themes/ - 修改
/etc/default/grub文件,修改GRUB_THEME=对应主题目录/themes.txt - 重启系统查看效果
资料引用
- 什么是UEFI和BIOS
- 简单分析UEFI
- 文件系统
- 鸟哥的Linux私房菜
- ArchLinux安装(UEFI)
- ArchLinux Wiki上的mkinitcpio解释
- Linux Grub引导程序的主题美化
- ArchLinux Wiki上的wpa_supplicant解释
- Grub双系统配置
- os-prober错误配置导致多系统引导出错
欢迎关注个人博客首页
浙公网安备 33010602011771号