虚拟机安装Arch Linux

2023-05-16

准备工作

在开始安装 Arch Linux 之前,需要先下载安装映像文件并创建好虚拟机环境。

下载安装镜像

下面是 Arch Linux 官方的安装文件下载地址:

Arch Linux - DownloadsArch Linux 安装映像下载地址。

点击并打开这个页面后,可以看到目前 Arch Linux 最新的版本和下载包的文件信息。往下翻页,在页面下方有各个国家可用的下载加速镜像。

选择距离自己所在位置最近的加速镜像可以有效提升安装包的下载速度,我们找到 "China",然后选择其中一个任意可用的加速镜像地址,比如 163.com。

点击镜像链接后,就会打开一个类似文件列表的页面,我们选择 iso 后缀的那个文件,直接点击文件名称进行下载操作。

 创建虚拟机

VMWARE是一个开源免费的虚拟机软件。下载后安装,创建一个新的虚拟机,并把上面下载的 ISO 文件加载到启动光盘。

安装 Arch Linux

启动虚拟机,一切操作正常的话,开机后会看到如下画面:

 通过上下方向键可以自由选择相关的菜单。选择第一项“Arch Linux Install medium (x86_64, BIOS)“,按回车键确认,进入 Arch Linux 的安装环境。

磁盘分区

开始正式安装系统前,需要先对硬盘做分区操作。这需要指定可操作的硬盘,可以通过以下命令来确定当前系统有哪些可用的硬盘设备:

fdisk -l

命令会返回类似如下的输出结果:

 其中 /dev/sda 就是一个可用的硬盘设备。记下这个名称,等下分区时会用的上。在正式开始分区前,需要先确定好分区规划。

对于正式使用的场景,我会建议你多参考一些 Linux 分区方案,可以使日后在磁盘的利用方面更加妥当。不过对于本文仅做体验的场景,我自己的方案如下:

  • 一个交换分区,大小为 1 GiB。
  • 最后所有的空间都留给根分区。

如果不熟悉 Linux 分区的相关概念,可以通过查看这篇文章来了解,可以查看我另一篇文章

有了分区方案,输入以下命令开始分区操作:

fdisk /dev/sda

命令执行后,会进入如下界面:

 这就是 fdisk 提供的分区操作界面了,通过如下操作来创建一个 1 GiB 的交换分区:

  1. 输入 n 新建分区。
  2. 输入 p 新建主分区。
  3. 分区编号输入 1
  4. 开始扇区不用输入,直接回车键进入下一项。
  5. 结束扇区输入 +1G

然后用同样的流程完成主分区的创建。这一步的分区号为 2,后面的扇区输入都保持空,然后直接回车键就可以了,程序会自动分配剩余的所有空间。

以上操作完成后,输入 w 写入分区信息。然后再次输入 fdisk -l 命令,会发现输出信息中多了如下内容:

 这说明分区操作成功了。

格式化分区

硬盘分区后,还需要做格式化操作。Linux 针对不同的分区类型,提供了有不同的格式化命令。首先来格式化交换分区:

mkswap /dev/sda1

主分区使用 ext4 格式的分区:

mkfs.ext4 /dev/sda2

挂载分区

完成分区格式化后,接下来需要挂载分区。首先挂载根分区:

mount /dev/sda2 /mnt

然后启用交换分区:

swapon /dev/sda1

安装系统

完成了以上磁盘操作步骤,就可以正式开始安装 Arch Linux 系统了。不过开始之前,为了提升安装包的下载速度,可以通过以下命令自动更新并保存 5 个速度最快的软件包镜像加速地址:

reflector \
    --save /etc/pacman.d/mirrorlist \
    --country China \
    --protocol https \
    --latest 5

然后安装基础软件包,Linux 内核,常见硬件的固件和常用软件工具:

pacstrap /mnt base linux linux-firmware vim sudo

等待安装完成。

结束后,生成新的自动挂载文件,并写入到新安装的系统:

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

然后进入到新安装的系统:

arch-chroot /mnt

接下来,将开始对新系统做配置操作。

配置 Arch Linux

配置网络

安装网络 DHCP 动态 IP 软件包和网络管理软件包:

pacman -S dhcpcd networkmanager

启用相关服务:

systemctl enable dhcpcd
systemctl enable NetworkManager

配置时区

Arch Linux 默认为 UTC 时区,调整为国内时区使用下面的命令:

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

配置本地字符编码

  • 编辑 /etc/locale.gen 文件,取消 en_US.UTF-8 UTF-8 这一行前的注释信息。
  • 执行 locale-gen 命令生成本地字符集信息。
  • 创建 /etc/locale.conf 文件,内容为:LANG=en_US.UTF-8

使用 en_US.UTF-8 而不使用中文字符编码的原因是为了避免系统输出无法显示的中文信息,以方便排查问题。

配置用户

设置 root 账号密码:

passwd

添加新的普通用户,并加入到 wheel 用户组,以方便使用 sudo 命令来执行一些需要超级用户权限的操作:

useradd -m -G wheel -s /bin/bash zzxworld

最后面的 zzxworld 是新用户名称,需要自己定义。

编辑 /etc/sudoers 文件,移除 # %wheel ALL=(ALL) ALL 这一行前的井号,使 wheel 用户组的用户都可以正常执行 sudo 命令。

给新用户设置密码:

passwd zzxworld

再次提示:最后面的 zzxworld 是上面创建的新用户名称,请替换成自己的。

配置系统引导程序

安装 GRUB 启动加载器:

pacman -S grub

安装 GRUB 引导信息至指定的硬盘:

grub-install --recheck /dev/sda

生成并写入 GRUB 配置信息:

grub-mkconfig -o /boot/grub/grub.cfg

登录新系统

完成以上步骤后,Arch Linux 的基础安装工作就完成了,可以尝试退出安装环境并进入新系统。

首先输入以下命令退出 chroot 环境:

exit

然后卸载之前挂载的分区:

umount -R /mnt

把挂载的安装镜像文件取消,然后重新启动系统。正常的话,应该会看到新的启动选项选择界面:

 直接按回车键,就可以进入新安装的 Arch Linux 系统了。

这里需要注意新安装的archlinux没有桌面环境以及窗口管理,这些需要自己安装

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

虚拟机安装Arch Linux 的相关文章

  • 无法连接到 Azure Ubuntu VM - 公钥被拒绝

    我们在 Azure 上使用 Ubuntu VM 一段时间了 很少遇到任何问题 然而 其中一台虚拟机最近出现了问题 出乎意料的是 Ubuntu VM 开始拒绝公钥 ssh i azure key email protected cdn cgi
  • 如何使用 nohup 获取正在运行的程序列表

    我正在通过 SSH 连接访问运行 CentOS linux 发行版 的服务器 由于我无法始终保持登录状态 因此我使用 nohup command 来运行我的程序 我找不到如何获取我开始使用 nohup 的所有程序的列表 工作 只有在我注销之
  • GCC 详细模式输出解释

    我是 Linux 新手 谁能向我解释一下我的 hello world 程序的以下详细模式输出 另外 这些文件是做什么用的crt1 o crti o crtend o crtbegin o and crtn o and lc and lgcc
  • 打印 STDOUT/STDERR 并将它们写入 Bash 中的文件?

    有没有办法让 Bash 将 STDOUT STDERR 重定向到文件 但仍然将它们打印到终端 这会将 STDOUT 和 STDERR 重定向到同一个文件 some command 2 gt 1 tee file log Example to
  • 在 Linux 服务器上创建和编辑 MS-Word 文档?

    希望开发处理文档的服务器端应用程序 源文档大多是MS Word 2003 2007 即MS版本的Docx 希望服务器应用程序能够在linux或windows上运行 想知道在linux下读写MS Word文件最好的工具或库是什么 兼容性是最重
  • 在 Windows / Linux 中创建 Mac 包

    我自己努力制作一个 r 包 我按照 stackoverflow 中上一个问题的说明进行操作如何为外行开发软件包 http cran r project org bin windows Rtools 以下是我根据上一个问题采取的步骤 在新的
  • 进程如何知道它已收到信号

    如果我错了 请纠正我 以下是我对信号的理解 据我所知 信号生成 和信号传递有2个不同 事物 为了产生信号 操作系统只是在位数组中设置一个位 在过程控制中维护 工艺块 PCB 每一位 对应于特定信号 当设置一个位时 这意味着 该位对应的信号为
  • 使用 Vala 和 GLib 的正则表达式

    有没有一个函数 比如http php net manual en function preg match all php http php net manual en function preg match all php 使用 GLibh
  • 删除 Python 中某些操作的 root 权限

    在我的 Python 脚本中 我执行了一些需要 root 权限的操作 我还创建并写入文件 我不想由 root 独占所有 而是由运行我的脚本的用户独占所有 通常 我使用以下命令运行脚本sudo 有办法做到上述吗 您可以使用以下方式在 uid
  • php56 - CentOS - Remi 仓库

    我刚刚在测试盒上安装了 php 5 6 正常的 cli php 解释器似乎不存在 gt php v bash php command not found gt php56 v PHP 5 6 13 cli built Sep 3 2015
  • 路由是否会影响具有绑定源地址的套接字?

    假设我有两个网络接口 eth0有地址10 0 0 1 eth1有地址192 168 0 1 Using route or ip route add我已将其设置为路由 所有地址至eth0 1 2 3 4只为了eth1 所以数据包到1 2 3
  • 如何从 Linux 命令行确定 LCD 显示器是否打开

    如何通过 Linux 命令行判断计算机的显示器是否打开 关闭 我传统上认为显示器是仅输出的设备 但我注意到 Gnome 显示器首选项对话框具有 检测显示器 功能 这可以推广到确定显示器是否物理关闭吗 VESA DDC 连接是I2C http
  • Linux Shellcode“你好,世界!”

    我有以下可用的 NASM 代码 global start section text start mov eax 0x4 mov ebx 0x1 mov ecx message mov edx 0xF int 0x80 mov eax 0x1
  • python 可以检测它运行在哪个操作系统下吗?

    python 可以检测操作系统 然后为文件系统构建 if else 语句吗 我需要将 Fn 字符串中的 C CobaltRCX 替换为 FileSys 字符串 import os path csv from time import strf
  • 如何获取 bash 中从 Ping 接收到的数据包的百分比?

    当 ping 主机时 我希望输出仅显示收到的数据包 已发送 5 个 的百分比 我想我需要使用grep不知怎的 但我不知道如何 我是 bash 编程的新手 这是我所在的地方 ping c 5 q host grep grep 中应该包含什么
  • 将 bash 脚本作为守护进程运行

    我有一个脚本 它每 X 次运行我的 PHP 脚本 bin bash while true do usr bin php f my script php echo Waiting sleep 3 done 我怎样才能将它作为守护进程启动 要从
  • 为什么 proc/ID/maps 有多个共享库条目

    我正在查看嵌入式Linux下的proc ID maps 我注意到一些共享库在进程的内存映射中出现了几次 为什么会这样呢 40094000 400d9000 r xp 00000000 b3 09 723 system lib libc so
  • Laravel 内存问题?

    各位 我在 DO 服务器上遇到这样的问题 我已经尝试了一切 整个网站在使用 Homestead 的 Linux 服务器上 100 正常工作 但上传后 它只能工作一次 在重新加载或刷新页面后会多次下降 我尝试增加 apache 服务器的内存
  • 动态加载库和共享全局符号

    由于我在动态加载的库中观察到全局变量的一些奇怪行为 因此我编写了以下测试 首先我们需要一个静态链接库 头文件test hpp ifndef BASE HPP define BASE HPP include
  • 如何从python导入路径中删除当前目录

    我想使用 Mercurial 存储库hg本身 也就是说 我克隆了 Mercurialhttps www mercurial scm org repo hg https www mercurial scm org repo hg并想运行一些h

随机推荐