虚拟机安装Arch-Linux记录

虚拟机安装Arch-Linux记录

前言

首先,按照arch非常奇怪。它是先在计算机上跑上Linux内核,然后进行文件系统的配置,挂载。制作一个新的root用户。使用命令行工具下载号arch-Linux的内核、vim、等等常用工具至新root用户的文件夹下。再转到这个root用户上。

虚拟机设置

在虚拟机(VMware)上安装arch,首先应该在虚拟机设置中将BIOS转换为UEFI

虚拟机注意默认的内存大小可能太小了,会导致无法进入系统。我们将其调高即可。

网络配置以及时间配置

  1. 禁用 reflector 服务

2020 年,archlinux 安装镜像中加入了 reflector 服务,它会自己更新 mirrorlist(软件包管理器 pacman 的软件源)。在特定情况下,它会误删某些有用的源信息。这里进入安装环境后的第一件事就是将其禁用。也许它是一个好用的工具,但是很明显,因为地理上造成的特殊网络环境,这项服务并不适合启用。

通过以下命令将该服务禁用:

1
systemctl stop reflector.service

通过以下命令查看该服务是否被禁用,按下 q 退出结果输出:

1
systemctl status reflector.service

如果输出下列内容在表示已经关闭了该服务。

  1. 再次确保是否为UEFI模式

使用:

1
ls /sys/firmware/efi/efivars

如果你没有在虚拟机中将BOIS改成UEFI则,在/sys/firmware/下是没有/efi/文件夹的。当系统输出一下内容时,则为UEFI模式。

  1. 连接网络

实际上,在虚拟机中安装Arch时,只要主机有网络,并且虚拟机配置正确则不需要执行此步

  • 如果使用无线连接

    1
    2
    3
    4
    5
    6
    iwctl # 进入交互式命令行
    device list # 列出无线网卡设备名,比如无线网卡看到叫 wlan0
    station wlan0 scan # 扫描网络
    station wlan0 get-networks # 列出所有 wifi 网络
    station wlan0 connect wifi-name # 进行连接,注意这里无法输入中文。回车后输入密码即可
    exit # 连接成功后退出
  • 如果使用有线连接

    1
    2
    3
    4
    5
    6
    7
    正常来说,只要插上一个已经联网的路由器分出的网线(DHCP),直接就能联网。

    可以等待几秒等网络建立连接后再进行下一步测试网络的操作。

    若笔记本没有网线接口请使用带网线接口的扩展坞。

    在打开系统之后则需要进行系统分区,
  1. 测试网络是否通畅
1
ping www.baidu.com
  1. 更新系统时间
1
2
timedatectl set-ntp true # 将系统时间与网络时间进行同步
timedatectl status # 检查服务状态

当系统出现一下情况时,完成操作。

  1. 更换国内软件仓库镜像源加快下载速度

打开文件:

1
vim /etc/pacman.d/mirrorlist

放在最上面的是会使用的软件仓库镜像源,推荐的镜像源如下:

1
2
3
4
Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch # 中国科学技术大学开源镜像站
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch # 清华大学开源软件镜像站
Server = https://repo.huaweicloud.com/archlinux/$repo/os/$arch # 华为开源镜像站
Server = http://mirror.lzu.edu.cn/archlinux/$repo/os/$arch # 兰州大学开源镜像站

系统分区

完成了上述操作后,进入了非常重要的系统分区阶段。

Arch要求我们将硬盘分为四个区域:

挂载点 分区 分区类型 建议大小
/mnt/efi efi_system_partition(/dev/sdax) Swap 至少 300 MiB。如果您打算安装多个内核,那就是至少 1 GiB。
/mnt /dev/root_partition(/dev/sdax) Linux x86-64 根目录 (/) 小于home空间的大小,具体的按照总硬盘大小分配
/mnt/home home_partition home 最大的区域
[SWAP] /dev/swap_partition Linux swap (交换空间) 大于 512 MiB。或者根据您的计算机的内存大小来决定。

我的分区示例:

下面通过命令行来完成上述操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 图形化分区示例
cfdisk /dev/sda
# 分区示例
Device Start End Sectors Size Type
/dev/sda1 2048 845823 843776 412M EFI System
/dev/sda2 845824 42788863 41943040 20G Linux root (x86-64)
/dev/sda3 42788864 63760383 20971520 10G Linux home
/dev/sda4 63760384 72148991 8388608 4G Linux swap
# 初始化swap分区
mkswap /dev/sda4
# 使用swap分区
swapon /dev/sda4
# 格式化efi分区
mkfs.fat -F 32 /dev/sda1
# 格式化其他分区,使用ext4格式
mkfs.ext4 -F /dev/sda2
mkfs.ext4 -F /dev/sda3
# 挂载分区
mount --mkdir /dev/sda2 /mnt
mount --mkdir /dev/sda1 /mnt/efi
mount --mkdir /dev/sda3 /mnt/home
# 上面这里,如果没有使用--mkdir选项的话。报错:
# mount point does not exist 说没有挂载点。
# 查看挂载情况,还可以使用命令lsblk
df

{ % note warning % }

  • 格式化home分区和root分区时,不可以将其格式化为fat文件系统。
  • 格式化Swap分区时,必须将其格式化为fat32的文件系统。
    { % endnote % }

{ % note info% }
lsblk是一个用于列出块设备信息的Linux命令。
常用选项:

-a或–all:显示所有的设备,包括未挂载的设备。
-f或–fs:同时显示文件系统的信息。
-m或–ascii:使用ASCII字符显示块大小。
-p或–pairs:以键值对的形式显示信息。
-o或–output:自定义输出列表。
-h或–help:显示帮助信息。
{ % endnote % }

{ % note info%}
挂载命令和卸载命令:
mount
-a:挂载 /etc/fstab 文件中列出的所有文件系统。
-fstype:指定文件系统的类型,例如 ext4, btrfs, ntfs 等。
-o:用于指定挂载选项,如 rw(读写模式),ro(只读模式),noexec(禁止执行二进制文件),nosuid(忽略所有SUID/SGID设置)等。可以多次使用 -o 来指定多个选项。
-L:通过标签名挂载文件系统。
-U:通过UUID挂载文件系统。
-l:显示文件系统的状态,而不是实际挂载它。
-n:以“无操作”模式运行,不实际挂载文件系统,但会显示将要执行的操作。

umonut
-l /home 强制卸载
-n:卸载网络文件系统。
-O:卸载指定类型的文件系统,例如 -O tmpfs。
-i:卸载时忽略非关键错误。

{ % endnote%}

如何更换文件系统

如果你想要更换一个新的文件系统,那么你需要先将该分区卸载下来umount,然后使用命令mkfs.ext4(fs_name)来格式化一个新的文件系统。

如果取消挂载时出现了:umount取消挂载时提示/home: device is busy问题。则

安装系统以及必须软件

1
2
3
4
5
6
7
8
pacstrap -K /mnt baseKKase-devel linux vim dhcpcd net-tools

这是为/mnt下安装一些环境用于待会创建用户所使用的,包括一些基本环境以及网络相关的dhcpcd和net-tools

pacstrap /mnt base base-devel linux linux-firmware btrfs-progs
# 如果使用btrfs文件系统,额外安装一个btrfs-progs包

pacstrap /mnt networkmanager vim sudo zsh zsh-completions

生成 fstab 文件

fstab 用来定义磁盘分区。它是 Linux 系统中重要的文件之一。使用 genfstab 自动根据当前挂载情况生成并写入 fstab 文件:

1
genfstab -U /mnt > /mnt/etc/fstab

复查一下 /mnt/etc/fstab 确保没有错误:

1
cat /mnt/etc/fstab

切换至新系统

使用命令arch-chroot切换至新系统,**注意是arch-chroot而不是chroot

此时,原来安装盘下的 /mnt 目录就变成了新系统的 / 目录。同时,可以发现命令行的提示符颜色和样式也发生了改变。

如果在原来的安装环境下直接使用pacman安装大量软件包,则可能会报错:arch linux failed to commit transaction (invalid or corrupted package)

此时,我们切换至新系统再来安装即可。

配置新系统中的环境

  1. 设置好主机名
    vim /etc/hostname在里面加入自己的主机名,如ysc
  2. /etc/hosts/配置:
    1
    2
    3
    127.0.0.1   localhost
    ::1 localhost
    127.0.1.1 myarch.localdomain myarch
  3. 随后设置时区,在 /etc/localtime 下用 /usr 中合适的时区创建符号链接:
    1
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  4. 使用如下命令将系统时间同步到硬件时间:
    1
    hwclock --systohc
  5. 设置 Locale
    编辑 /etc/locale.gen,去掉 en_US.UTF-8 UTF-8 以及 zh_CN.UTF-8 UTF-8 行前的注释符号(#):
    1
    vim /etc/locale.gen
  6. 然后使用如下命令生成 locale:
    1
    locale-gen
  7. 向 /etc/locale.conf 输入内容:
    1
    echo 'LANG=en_US.UTF-8'  > /etc/locale.conf
    不推荐在此设置任何中文 locale,会导致 tty 乱码。
  8. root用户设置好密码:
    1
    passwd 
  9. 添加一个非root用户
    1
    useradd -m -G wheel -s /bin/bash ysc

    参数注解:
    -m:在home文件下加创建一个用户文件夹。
    -G 添加 wheel组,此处将用户加到wheel组中,之后可以给这个组执行sudo命令的权限
    -s 设置好默认登陆shell

    为了让我们的普通用户也能使用sudo权限,需要给wheel中的用户赋予权限,

使用上面命令打开sudoers文件后,删除wheel组前面的注释(#)即可:

1
2
3
visudo,直接使用这个命令打开文件/etc/sudoers
或者是:
vim /etc/sudoers

将wheel前面的注释去掉:

  1. 重要的一点,在刚进入新系统的时候是没有网络的。ping不通,此时需要:
    1
    2
    sudo systemctl enable NetworkManager
    sudo systemctl start NetworkManager

制作好Grub引导

如果没有制作引导的话,一切都是白费的。因为系统在下一次启动的时候还会进入安装环境,而不是新环境。

grub是一个启动引导器,同时支持EFI和BIOS方式的启动。若使用的UEFI方式引导系统,则还需要安装efibootmgr,如果是双系统的话,还需要安装os-prober,且如果使用Intel CPU的话,则需要安装 intel-ucode 并启用因特尔微码更新

1
2
3
4
5
6
# 安装grub和efibootmgr
pacman -S grub efibootmgr
# 部署efi引导
grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=GRUB
# 生成grub配置文件
grub-mkconfig -o /boot/grub/grub.cfg

安装微码

1
2
pacman -S intel-ucode   #Intel
pacman -S amd-ucode #AMD

中文本地化

要正确显示中文,必需设置正确的 locale 并安装合适的中文字体。

locale 设置

安装中文 locale

Linux 中通过 locale 来设置程序运行的本地化环境。根据地区和字符编码的不同,常用的中文 locale 有:

1
2
3
4
5
6
zh_CN.GB18030
zh_CN.UTF-8
zh_HK.UTF-8
zh_SG.UTF-8
zh_TW.BIG-5
zh_TW.UTF-8

推荐使用 UTF-8 的 locale 而非老旧的各地区编码。需要修改 /etc/locale.gen 文件来设定系统中可以使用的 locale(取消对应项前的注释符号“#”即可):

1
2
3
en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
zh_SG.UTF-8 UTF-8

然后执行 locale-gen 命令,便可以在系统中使用这些 locale。可以通过 locale 命令来查看当前使用的 locale:亦可通过 locale -a 命令来查看目前可以使用的 locale。

配置中文 locale

首先设置一个英文的全局 locale。这并不是必须的,只是为了防止 TTY 中出现豆腐块(见下方注意):

1
2
$ cat /etc/locale.conf
LANG=en_US.UTF-8

LANG 这个环境变量代表默认的区域设置,具体的含义见 Locale#LANG:默认的区域设置

注意: 不推荐在 /etc/locale.conf 里把全局的 LANG locale 设置成中文 LANG=zh_CN.UTF-8,因为 TTY 下没有 CJK 字体,这样设置会导致 TTY 中显示豆腐块(除非你使用的内核打了 cjktty 补丁能绘制中文字体,比如linux-lilyCNRepo)。

每个用户单独的 locale 可以在 /.bashrc、/.xinitrc 或 ~/.xprofile 中设置:

.bashrc:每次使用终端时会应用此处的设置。
.xinitrc:每次使用 startx 或 SLiM 来启动 X 窗口系统时会应用此处的设置。
.xprofile:每次使用 GDM 等显示管理器时会应用此处的设置。
为图形界面配置中文 locale
不推荐 /etc/locale.conf 使用全局中文 locale,会导致 TTY 中显示出豆腐块。

如前所述,建议在 ~/.xinitrc~/.xprofile 里单独设置中文 locale,即添加下面两行到文件的最开头(如果不确定使用哪个文件,都添加):

1
2
export LANG=zh_CN.UTF-8
export LANGUAGE=zh_CN:en_US

重启系统

1
2
3
exit
umount -R /mnt
reboot

重启后可使用刚才添加的用户和密码进行登录。

安装完进入系统以后以后可能会出现网络无法访问的情况,即当ping百度出现下面错误

1
ping: www.baidu.com: Temporary failure in name resolution

解决办法:

1
vim /etc/resolv.conf 

在里面添加nameserver 8.8.8.8

参考资料

官方中文wiki

arch Linux安装教程

https://freeflyingsheep.github.io/posts/linux/arch/

https://arch.icekylin.online/guide/rookie/basic-install.html

https://zhuanlan.zhihu.com/p/611366782

https://blog.csdn.net/takashi77/article/details/118927109

lsblk

https://blog.csdn.net/m0_57459724/article/details/121706567

简体中文本地化


虚拟机安装Arch-Linux记录
https://ysc2.github.io/ysc2.github.io/2024/03/01/虚拟机安装Arch-Linux记录/
作者
Ysc
发布于
2024年3月1日
许可协议