Virtualbox下开启UEFI固件安装Arch Linux虚拟机

Arch Linux是我最喜爱的Linux发行版之一。它采用滚动发行(rolling release),这意味着你不必每6个月升级到一个新的版本,只要经常更新软件包就行了。Arch Linux的安装过程对于用户来说是有点难度的,但在安装完成后使用起来非常容易方便。这篇教程在Virtualbox下开启UEFI固件,介绍如何安装Arch Linux。

Virtualbox开启UEFI固件

首先,按照平常的步骤用Virtualbox创建一个虚拟机。不过在安装系统之前我们在设置窗口下点击左侧栏的系统标签,然后勾选启用UEFI,点击确认OK按钮以使更改生效。

UEFI固件安装Arch Linux

UEFI固件安装Arch Linux虚拟机

在启动虚拟机安装系统之前,我们需要在存储设置里添加Arch Linux的ISO镜像文件,不然启动虚拟机后会进入UEFI shell

Virtualbox下开启UEFI固件安装Arch Linux虚拟机

添加Arch Linux ISO镜像文件后,启动虚拟机。选择第一个选项以UEFI模式启动。

Virtualbox下开启UEFI固件安装Arch Linux虚拟机

你将自动登录为root用户。

检查虚拟机是否可以访问互联网。

ping -c6 linuxdashen.com

如果你在物理机上安装Arch Linux,可以用下面的命令连接到Wi-Fi无线网络。

wifi-menu

将键盘布局设置为美国键盘。

loadkeys us

UEFI固件与GPT硬盘分区

现在我们对Virtualbox虚拟硬盘进行分区。我使用一个虚拟硬盘,所以这个虚拟硬盘的设备名为/dev/sda。由于我是在UEFI固件上安装Arch Linux的,所以硬盘采用GPT分区,并且硬盘需要有一个EFI系统分区。

使用parted分区编辑器将虚拟硬盘的分区模式设置为GPT。

parted /dev/sda mklabel gpt

可以使用这个命令来查看硬盘的分区模式。

parted /dev/sda -l

Virtualbox下开启UEFI固件安装Arch Linux虚拟机

现在告诉parted我们将对/dev/sda进行分区。

parted /dev/sda

首先分一个EFI系统分区,大小为512MiB。分区类型为primary。

mkpart primary fat32 2048s 1050624s

注意,我采用扇区(sector)作为分区的单位大小,我的虚拟硬盘逻辑扇区和物理扇区大小都为512字节。上面的命令刚好可以划分一个512MiB的EFI系统分区。你的硬盘逻辑扇区和物理扇区的大小很可能不一致。

现在可以查看这个EFI系统分区。

unit MiB

print

Virtualbox下开启UEFI固件安装Arch Linux虚拟机

现在这个分区还不是EFI分区,为了让它变成EFI分区,我们将它的标识(flag)设置为boot。

set 1 boot on

再次查看这个分区就会看见它变成了EFI系统分区。

现在划分一个root分区,分区类型为primary。

mkpart primary ext4 1050625s 100%

100%的意思是使用从1050625扇区后的所有的空间。注意,我的EFI分区以1050624扇区结尾。我将剩下的所有空间都分配给root分区是因为我不划分swap交换分区和home分区。

然后,将/dev/sda1 EFI分区格式化成fat16文件系统,将/dev/sda2 root分区格式化成ext4文件系统。

mkfs -t fat /dev/sda1
mkfs -t ext4 /dev/sda2

将root分区挂载到/mnt目录下。

mount /dev/sda2 /mnt

在root分区下创建一个boot目录。

mkdir /mnt/boot

将EFI系统分区挂载到/mnt/boot/目录下。

mount /dev/sda1 /mnt/boot/

到了这里,分区就完成了。

选择一个Arch Linux镜像站点

编辑mirrorlist文件。

nano /etc/pacman.d/mirrorlist

要选择一个镜像站点,将镜像站点的地址复制到镜像列表的最前面就行了。比如,我将中科大(ustc)的Arch Linux镜像站复制到了最前面。

Virtualbox下开启UEFI固件安装Arch Linux虚拟机

保存文件。

安装基本系统(base system)

使用pacstrap来安装基本系统。注意我们将root分区挂载到了/mnt目录下,所以下面的命令将基本系统安装在root分区。

pacstrap -i /mnt base

然后,生成一个fstab分区表文件。

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

使用chroot。

arch-chroot /mnt

生成locale。

nano /etc/locale.gen

找到en_US.UTF-8 UTF-8 以及所有以zh_CN开头的locale,去年它们前面的#符号。这就表示启用en_US以及zh_CN的locale。

生成/etc/locale.conf文件并将en_US.UTF-8设置为默认的locale。

echo LANG=en_US.UTF-8 > /etc/locale.conf

export LANG=en_US.UTF-8

local-gen

然后将时区设置成中国上海。

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

安装无线网络的工具。

pacman -S wireless_tools wpa_supplicant wpa_actiond dialog

如果要连接到无线网络,使用下面的命令。

wifi-menu

启用无线网卡。

systemctl enable net-auto-wireless.service

安装网络管理器以及常用的网络管理器扩展组件。

pacman -S networkmanger networkmanger-vpnc network-manger-applet networkmanger-pptp networkmanager-openconnect

启用网络管理器。

systemctl enable NetworkManager

配置pacman软件包管理器。

nano /etc/pacman.conf

找到repositories这一区域,其中[core] [extra] [community]这三个软件库是默认启用的。如果你需要在64位Arch Linux系统上安装和使用32位的软件包,那么必须启用[multilib]软件库。

在文件中找到下面两行,去年前面的#符号就启用了[multilib]软件库。

[multilib]
       Include = /etc/pacman.d/mirrorlist

保存文件后,更新软件库。

pacman -Sy

为root用户设置一个密码。

passwd root

创建一个普通用户,并将这个用户添加到wheel,storage,power用户组。

useradd -m -g users -G wheel,storage,power -s /bin/bash <username>

为这个用户设置一个密码。

passwd <username>

安装sudo工具。

pacman -S sudo

然后编辑/etc/sudoers文件。

EDITOR=nano visudo

找到这一行。

# %wheel ALL=(ALL) ALL

去年前面的#符号。保存文件。这表示允许wheel组的用户使用sudo来管理系统。

安装Grub启动管理器和EFI启动管理器。

pacman -S grub efibootmgr

将Grub boot loader安装在/dev/sda虚拟硬盘。

grub-install /dev/sda --target=x86_64-efi --efi-directory=/boot

生成Grub配置文件。

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

退出chroot环境。

exit

重启虚拟机。

reboot

重启虚拟机后的安装

现在你将看到Grub2启动管理器。

Virtualbox下开启UEFI固件安装Arch Linux虚拟机

以普通用户登录,然后安装alsa-utils。

sudo pacman -S alsa-utils

进入alsamixer声音配置工具。

alsamixer

MM代表静音。按M键取消静音。Master和PCM声道一定要取消静音。使用上下键调整音量

按ESC键退出alsamixer。使用下面的命令测试声卡是否正常工作。

speaker-test -c2

如果听见有声音,说明声卡在正常工作。按Ctrl+C键停止测试。

安装X窗口系统。

sudo pacman -S xorg-server xorg-xinit xorg-server-utils

安装mesa以启用3D支持。

sudo pacman -S mesa

查看系统的显卡。

lspci -k | grep -A 2 -i "VGA"

如果是Intel集成显卡,那么安装Intel的开源显卡驱动。

sudo pacman -S xf86-video-intel

如果是Nvidia显卡,那么安装Nvidia闭源显卡驱动。

sudo pacman -S nvidia lib32-nvidia-utils

ATI显卡驱动

sudo pacman -S nvidia lib32-nvidia-utils

Virtualbox虚拟显卡安装virtualbox-guest-utils。

sudo pacman -S virtualbox-guest-utils

其他显卡安装vesa显卡驱动。

sudo pacman -S xf86-video-vesa

安装X.org三个测试组件。

sudo pacman -S xorg-twm xorg-xclock xterm

使用这个命令测试X.org是否可以正常工作。

startx

如果看见了三个程序窗口,说明X.org在正常工作。

Virtualbox下开启UEFI固件安装Arch Linux虚拟机

安装字体。dejavu是Linux系统的常见西文字体,ubuntu-font-family是ubuntu家族字体,wqy-microhei是文泉驿微米黑字体。wqy-zenhei是文泉驿正黑字体。如果不安装中文字体,则会出现中文乱码的现象。

sudo pacman -S ttf-dejavu ttf-ubuntu-font-family wqy-microhei wqy-zenhei

安装XFCE4桌面环境

sudo pacman -S xfce4 xfce4-goodies gamin firefox

在启动xfce桌面环境之前,我们要复制xinitrc这个文件到home目录下,然后编辑。

cp /etc/X11/xinit/xinitrc ~/.xinitrc

nano ~/.xinitrc

注释掉最后5行命令,将下面一行命令添加到文件末尾。

exec startxfce4

Virtualbox下开启UEFI固件安装Arch Linux虚拟机

保存文件后启动X窗口系统。

startx

你应该可以看见xfce桌面环境。

Virtualbox下开启UEFI固件安装Arch Linux虚拟机

安装Slim登录管理器

如果你不想每次登录时都输入startx命令,那么可以安装一个登录管理器,如Slim。

sudo pacman -S slim slim-themes

启用Slim登录管理器。

sudo systemctl enable slim.service

编辑/etc/slim.conf文件来选择一个主题。

sudo nano /etc/slim.conf

找到这一行。

current_theme     default

将它更改成:

current_theme       archlinux-simplyblack

保存文件后重启虚拟机。你将看到Slim登录管理器。

Virtualbox下开启UEFI固件安装Arch Linux虚拟机

如果要更改计算机名称,使用这条命令。

sudo hostnamectl set-hostname <your-hostname>

启用NTP时间同步。

timedatectl set-ntp true

你可能需要安装的一些软件包:

sudo pacman -S  flashplugin vlc terminator gnome-tweak-tool ibus ibus-table ibus-pinyin htop parted gparted transmission-cli transmission-gtk wine wine-mono wine_gecko winetricks banshee

今天才发现Virtualbox的UEFI固件功能,对于学习UEFI固件和GPT硬盘分区非常有帮助。

为这篇文章评分
[Total: 3 Average: 2.3]

2 Responses to “Virtualbox下开启UEFI固件安装Arch Linux虚拟机

  • 一直看到过这个vbox里有uefi功能,但是一直没有试过。

  • 建议加一个快速回到页面顶部的部件。

Leave a Reply

Your email address will not be published.

The maximum upload file size: 2 MB. You can upload: image, audio, video, document, spreadsheet, interactive, text, archive, code, other. Links to YouTube, Facebook, Twitter and other services inserted in the comment text will be automatically embedded. Drop file here