虚拟机安装Arch-Linux记录
虚拟机安装Arch-Linux记录
前言
首先,按照arch
非常奇怪。它是先在计算机上跑上Linux内核,然后进行文件系统的配置,挂载。制作一个新的root用户。使用命令行工具下载号arch-Linux的内核、vim、等等常用工具至新root用户的文件夹下。再转到这个root用户上。
虚拟机设置
在虚拟机(VMware)上安装arch,首先应该在虚拟机设置中将BIOS
转换为UEFI
:
虚拟机注意默认的内存大小可能太小了,会导致无法进入系统。我们将其调高即可。
网络配置以及时间配置
- 禁用 reflector 服务
2020 年,archlinux 安装镜像中加入了 reflector 服务,它会自己更新 mirrorlist(软件包管理器 pacman 的软件源)。在特定情况下,它会误删某些有用的源信息。这里进入安装环境后的第一件事就是将其禁用。也许它是一个好用的工具,但是很明显,因为地理上造成的特殊网络环境,这项服务并不适合启用。
通过以下命令将该服务禁用:
1 |
|
通过以下命令查看该服务是否被禁用,按下 q 退出结果输出:
1 |
|
如果输出下列内容在表示已经关闭了该服务。
- 再次确保是否为
UEFI
模式
使用:
1 |
|
如果你没有在虚拟机中将BOIS
改成UEFI
则,在/sys/firmware/
下是没有/efi/
文件夹的。当系统输出一下内容时,则为UEFI
模式。
- 连接网络
实际上,在虚拟机中安装Arch
时,只要主机有网络,并且虚拟机配置正确则不需要执行此步。
如果使用无线连接
1
2
3
4
5
6iwctl # 进入交互式命令行
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 |
|
当系统出现一下情况时,完成操作。
- 更换国内软件仓库镜像源加快下载速度
打开文件:
1 |
|
放在最上面的是会使用的软件仓库镜像源,推荐的镜像源如下:
1 |
|
系统分区
完成了上述操作后,进入了非常重要的系统分区阶段。
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 |
|
{ % 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 |
|
生成 fstab 文件
fstab 用来定义磁盘分区。它是 Linux 系统中重要的文件之一。使用 genfstab 自动根据当前挂载情况生成并写入 fstab 文件:
1 |
|
复查一下 /mnt/etc/fstab 确保没有错误:
1 |
|
切换至新系统
使用命令arch-chroot
切换至新系统,**注意是arch-chroot
而不是chroot
。
此时,原来安装盘下的 /mnt 目录就变成了新系统的 / 目录。同时,可以发现命令行的提示符颜色和样式也发生了改变。
如果在原来的安装环境下直接使用pacman
安装大量软件包,则可能会报错:arch linux failed to commit transaction (invalid or corrupted package)
此时,我们切换至新系统再来安装即可。
配置新系统中的环境
- 设置好主机名
vim /etc/hostname
在里面加入自己的主机名,如ysc
。 - 在
/etc/hosts/
配置:1
2
3127.0.0.1 localhost
::1 localhost
127.0.1.1 myarch.localdomain myarch - 随后设置时区,在 /etc/localtime 下用 /usr 中合适的时区创建符号链接:
1
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
- 使用如下命令将系统时间同步到硬件时间:
1
hwclock --systohc
- 设置 Locale
编辑 /etc/locale.gen,去掉 en_US.UTF-8 UTF-8 以及 zh_CN.UTF-8 UTF-8 行前的注释符号(#):1
vim /etc/locale.gen
- 然后使用如下命令生成 locale:
1
locale-gen
- 向 /etc/locale.conf 输入内容:不推荐在此设置任何中文 locale,会导致 tty 乱码。
1
echo 'LANG=en_US.UTF-8' > /etc/locale.conf
- 为
root
用户设置好密码:1
passwd
- 添加一个非
root
用户1
useradd -m -G wheel -s /bin/bash ysc
参数注解:
-m:在home文件下加创建一个用户文件夹。
-G 添加 wheel组,此处将用户加到wheel组中,之后可以给这个组执行sudo命令的权限
-s 设置好默认登陆shell
使用上面命令打开sudoers文件后,删除wheel组前面的注释(#)即可:
1
2
3visudo,直接使用这个命令打开文件/etc/sudoers
或者是:
vim /etc/sudoers
将wheel前面的注释去掉:
- 重要的一点,在刚进入新系统的时候是没有网络的。ping不通,此时需要:
1
2sudo systemctl enable NetworkManager
sudo systemctl start NetworkManager
制作好Grub引导
如果没有制作引导的话,一切都是白费的。因为系统在下一次启动的时候还会进入安装环境,而不是新环境。
grub是一个启动引导器,同时支持EFI和BIOS方式的启动。若使用的UEFI方式引导系统,则还需要安装efibootmgr,如果是双系统的话,还需要安装os-prober,且如果使用Intel CPU的话,则需要安装 intel-ucode 并启用因特尔微码更新
1 |
|
安装微码
1 |
|
中文本地化
要正确显示中文,必需设置正确的 locale 并安装合适的中文字体。
locale 设置
安装中文 locale
Linux 中通过 locale 来设置程序运行的本地化环境。根据地区和字符编码的不同,常用的中文 locale 有:
1 |
|
推荐使用 UTF-8 的 locale 而非老旧的各地区编码。需要修改 /etc/locale.gen 文件来设定系统中可以使用的 locale(取消对应项前的注释符号“#”即可):
1 |
|
然后执行 locale-gen 命令,便可以在系统中使用这些 locale。可以通过 locale 命令来查看当前使用的 locale:亦可通过 locale -a 命令来查看目前可以使用的 locale。
配置中文 locale
首先设置一个英文的全局 locale。这并不是必须的,只是为了防止 TTY 中出现豆腐块(见下方注意):
1 |
|
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 |
|
重启系统
1 |
|
重启后可使用刚才添加的用户和密码进行登录。
安装完进入系统以后以后可能会出现网络无法访问的情况,即当ping百度出现下面错误
1 |
|
解决办法:
1 |
|
在里面添加nameserver 8.8.8.8
参考资料
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