操作环境
实体机: Ubuntu22.04
虚拟机: VMware
安装系统: 原生Arch
注意
本文按照主流的UEFI+GPT的方式讲解,不涉及BIOS+MBR
Arch参考Wiki
官方wiki: wiki.archlinux.org/title/Insta…
第三方wiki: arch.icekylin.online/
准备工作
VMware下载安装
很简单,不详细讲,直接放出官方地址, 自行下载安装:
www.vmware.com/content/vmw…
Arch镜像下载
进入官网:
archlinux.org/download/
下载种子包,然后可以用 transmission 等工具下载种子包里面的iso
创建虚拟机
这一步比较简单,需要注意的是,操作系统那边选择 Other linux6.x kernel 64-bit,因为我们需要安装的arch是linux的64为操作系统,为什么不直接选arch?因为没这选项 : )
同时还值得注意的一点是,内存必须大于等于 1024MB,默认分配的太小,系统将启动时会报错。
创建完虚拟机不要着急启动,因为我们是UEFI+MBR模式,而虚拟机默认是BIOS引导,所以这里需要调一下,打开虚拟机设置,在 "选项" -> "高级" 中的 Frimware type 里把 BIOS 改成 UEFI
OK,一切准备就绪,只差开机,开机后选择第一个即可:
回车,等待屏幕上跑完一大堆东西,屏幕上出现这个界面,则成功进入arch安装程序
安装前分析
大致流程
- 联网
- 分区
- 创建文件系统
- 挂载分区
- 安装系统
- 创建挂载文件
- 配置系统
- 安装引导
- 完成
分区规划
我们这里分4个分区,分别是
- efi (300MB -- /dev/sda1)
- 根目录 (7GB -- /dev/sda2)
- home目录 (10GB -- /dev/sda3)
- 交换分区 (2.7GB -- /dev/sda4)
其中 efi,根目录,交换分区是必须的,其他的按照你的喜好来
注:我分配的虚拟机配置是
- 磁盘: 20GB
- 内存: 2GB
安装过程
联网
因为我们是虚拟机,所以使用的是与实体机共享IP地址(NAT),那么这里我们就不需要配置网络
为确保网络正常连接,ping一下:
ping bing.com
如果ping不通,检查虚拟机设置中的网络部分,直到可以正常连接公网即可。
为什么要联网
用于后续在安装系统时,下载系统,如果没有连接互联网,则无法下载系统,这一步是必须的。
分区
这里我按照我的分区规划来分区,因为是 GPT 格式的分区表,所以我们使用 gdisk 来分区,大家可以按照自己的规划对磁盘进行分区
注意,在虚拟机里,磁盘的文件名称是 sda,请注意辨识
利用 gdisk /dev/sda 对硬盘进行分区,注意在分区前,确保分区表是 GPT,最好在分区前改一下格式
那么接下来开始分区,我会按照我的规划进行,大家也可以按照各自的需求进行分区
以下是我的,仅供参考:
注:不知道GUID的分区编码的,按照提示,可以输入字母 "l" (即小写的"L")查看所有支持的编码,以下给出常见的分区格式参考:
- efi: ef00
- swap: 8200
- linux文件系统: 8300
有人肯定会注意到,linux /home 应该是 8302,为什么我设置的是默认的 8200,其实他俩都差不多哈,都属于linux文件系统,只是分的更细而已,不影响。
这边我为了看起来好看,改个分区名字,大家随意:
分完区之后 w 保存退出
最后再检查一下分区是否符合自己的要求,以免出错:
完美 ^_^
创建文件系统
分完区之后肯定还不能直接使用,我们需要对分区创建对应的文件系统,这一步比较简单,直接放出代码,仅供参考:
大家根据自己的分区状况选择合适的文件系统
挂载分区
分区的工作都做完后,我们需要把分区挂载好才能对该文件系统操作,根据FHS规范,我们通常把分区挂载到 /mnt,我们需要先挂载根目录,然后把efi,home分区挂载到根目录下,以下是我的代码,仅供参考:
mount /dev/sda2 /mnt
mkdir -p /mnt/boot/efi
mkdir -p /mnt/home
mount /dev/sda1 /mnt/boot/efi
mount /dev/sda3 /mnt/home
注意:当挂载 efi 的时候,需要按照 linux 的目录规范来,即路径为 /boot/efi,否则系统将无法正常启动
同时,我们需要开启 swap 分区:
swapon /dev/sda
安装系统
至此,所有的分区操作全部完成,现在我们需要给我们挂载好的文件系统里安装系统,这里需要用到 arch live 里面的安装命令 pacstrap,基本语法如下:
pacstrap 需要安装系统的根目录 需要安装的组件
代码示例:
pacstrap /mnt base linux linux-firmware
其中:
- pacstrap: 命令名字
- /mnt: 需要安装到的根目录路径
- base linux linux-firmware: 安装的组件
这里需要说明一下 组件 相关东西:
- base:系统的运行环境,是安装 arch 的基础
- linux:提供了 linux 内核,是操作系统和硬件交互和核心
- linux-firmware:提供了与硬件兼容的固件文件
这三个是必须安装的,否则后续系统将可能无法正常启动和使用,另外还有其他的组件可选:
- base-devel:提供了一些开发相关依赖等
- microcode:用于增强 CPU 稳定性的软件包
注意:这一步需要联网下载包,请确保已连接上互联网。
创建挂载文件
现在,我们基本的系统已经安装完成,不过 arch 作为一个用户高度自定义的系统来说肯定没这么简单,为了让我们系统启动时不手动挂载文件系统,减少不必要的麻烦,我们需要配置 fstab 文件,使系统在启动时能够自动挂载我们的文件系统。
这时候我们需要使用 genfstab 命令来生成一个 fstab 文件,他通常配合重定向来使用,以下是基本语法:
genfstab 选项 需要需要扫描的目录 >> 目标路径
像这样:
genfstab -U /mnt >> /mnt/etc/fstab
其中:
- genfstab: 命令名字
- -U: 使用 UUID 来标识每个文件系统
- /mnt: 需要扫描的目录,换句话说,需要根据哪个系统生成 fstab,就写哪个
- /mnt/etc/fstab: 生成 fstab 文件的目标路径
我们可以看看文件是否正确写入:
配置系统
至此我们所有的系统基本的已经全部完成,但之前说过,arch 作为一个用户高度自定义的系统来说肯定没这么简单,因此,一部分配置文件需要我们自己创建和编写,我们需要 chroot 进入系统配置,需要注意的是,切换到新系统里面不是使用传统的 chroot,而是用 arch live 里的 arch-chroot 命令:
arch-chroot /mnt
这里必须要设置一下用户的密码,否则后续无法登陆,因为安装完系统默认是 root,所以我以 root 为例,如果大家有需要可以自己添加其他用户并设置密码:
passwd
其他的大家可以根据自己的需要配置系统,这里我就写个主机名:
echo "CancerAi" > /etc/hostname
当然,除此之外,我们还需要配置网络。
有人会好奇,我们第一步不是配置了网络吗,没错,不过那是 live环境的网络,现在我们需要在新系统里配置新系统的网络,以便后续重启进入系统后能访问到互联网。
配置网络不需要太复杂的命令,只需要通过 arch 自带的包管理器安装即可,如下:
pacman -S networkmanager
其中:
- pacman: arch 内置的包管理器
- -S: 安装软件
- networkmanager: 包名,用于管理网络
并且,为了让我们开机就能访问到网络,可以设置开机自启:
systemctl enable NetworkManager
安装引导
到这一步为止,我们的新系统已经完全安装好了,但这实际也只是把新系统下载好在拷贝到根目录 ( /mnt ) 里面,此时还无法使 UEFI 能引导启动系统,所以我们需要安装引导:
之前我们执行了 pacstrap /mnt base linux linux-firmware,里面并没有引导相关软件包,我们需要单独安装。
同样使用 arch 自带的 pacman 安装,像这样:
pacman -S grub efibootmgr
其中:
- pacman: arch包管理器命令
- -S: 安装软件
- grub efibootmgr: 需要安装的软件
grub是引导的安装包,里面包含了 grub-install,grub-mkconfig 等工具,用来安装引导。
efibootmgr是 efi 管理的软件包,他使 efi能够正常引导。
安装好包后,我们需要通过包里的工具来安装引导,首先,安装 grub 引导:
grub-install --target=x86_64-efi --efi-directory=/boot/efi
其中:
- grub-install: 命令名
- --target=x86_64-efi: 指定硬件平台架构,即x86_64位的 efi 引导方式
- --efi-directory: 指定 efi 的目录路径
命令输入完成后,如果最后显示 “Installation finished. No error reperted”,则表示安装成功,没有任何错误,否则安装失败,可能导致后续无法引导系统,请检查前面步骤是否正确。
接着,也是最后一步,生成一个 grub 引导的配置文件,这个文件用于配置引导菜单,使你的系统能够在引导菜单正确显示,我们将使用 grub-mkconf命令生成一个配置文件,如下:
grub-mkconfig -o /boot/grub/grub.cfg
其中:
- grub-mkconfig: 命令名
- -o: 指定输出文件的路径
- /boot/grub/grub.cfg: 配置文件的路径
注意:在 grub 引导的时候会识别特定目录的配置文件,如果放在其他目录或修改了文件名,会无法读取。
完成
现在我们可以退出 chroot 环境,然后再关机。
大家可以到 虚拟机设置 里面把 iso 移除,这样开机就能自动进入我们新安装好的系统啦。
再次开机如果看到 grub 引导界面 并且 有你的系统引导项,说明安装没有任何问题:
进入系统后,让我们来 ping 一下,检查网络:
可以看到网络正常连接。
至此,我们已经成功安装并配置了 arch ^_^ (手动烟花)