VirtualBox/在虚拟机中安装 Arch Linux
本文介绍如何在 VirtualBox 中安装 Arch Linux。
通过虚拟机的一个虚拟驱动器启动 Arch 安装介质。然后,按照安装指南中的说明完成基本 Arch 系统的安装。
安装
EFI 模式安装 (可选)
为访客 Arch 启用 EFI 是可选的。如果要在 VirtualBox 中以 EFI 模式安装 Arch Linux,则必须更改虚拟机的固件模式。这必须在安装访客 Arch 之前完成,之后更改选项将导致机器无法启动,除非设置恢复。
要使用图形界面为虚拟机启用 EFI,请打开虚拟机的设置,从左侧面板选择系统项,从右侧面板选择主板选项卡,然后选中启用 EFI (仅限特殊操作系统)复选框。
或者,可以使用 VBoxManage 命令行完成相同的操作
$ VBoxManage modifyvm "Virtual machine name" --firmware efi
efi
会将虚拟机的固件设置为 EFI,其 位数 与虚拟机的 CPU 匹配。要获得特定的 EFI 位数,请将固件设置为 efi64
以用于 x86_64 EFI 或 efi32
以用于 IA32 EFI。
从 Arch Linux 安装介质的菜单中选择内核后,介质将挂起一两分钟,然后将继续正常启动内核。请耐心等待。
安装 Guest Additions
VirtualBox Guest Additions 提供了驱动程序和应用程序,可以优化访客操作系统,包括改进的图像分辨率和更好的鼠标控制。在已安装的访客系统中,安装
- virtualbox-guest-utils 以获得带有 X 支持的 VirtualBox Guest 工具
- virtualbox-guest-utils-nox 以获得不带 X 支持的 VirtualBox Guest 工具
- 您也可以使用 virtualbox-guest-iso 软件包中的 ISO 安装 Guest Additions,前提是您已在主机系统上安装了此软件包。为此,请转到设备菜单,单击“安装 Guest Additions CD 镜像”。
- 要重新编译 vbox 内核模块,请以 root 身份运行
rcvboxadd setup
。
访客系统上运行的 Guest Additions 和主机上运行的 VirtualBox 应用程序必须具有匹配的版本,否则 Guest Additions(如共享剪贴板)可能会停止工作。如果您升级了访客系统(例如 pacman -Syu
),请确保此主机上的 VirtualBox 应用程序也是最新版本。VirtualBox GUI 中的“检查更新”有时不足以完成此操作;请查看 VirtualBox.org 网站。
配置
加载 VirtualBox 内核模块
要自动加载模块,启用 vboxservice.service
,它会加载模块并将访客系统时间与主机同步。
要手动加载模块,请输入
# modprobe -a vboxguest vboxsf vboxvideo
设置最佳帧缓冲分辨率
通常,在安装 Guest Additions 后,运行 X 的全屏 Arch 访客将被设置为适合您显示器的最佳分辨率;但是,虚拟控制台的帧缓冲将被设置为从 VirtualBox 自定义 VESA 驱动程序检测到的标准分辨率(通常较小)。
要以最佳分辨率使用虚拟控制台,Arch 需要将该分辨率识别为有效分辨率,这反过来又需要 VirtualBox 将此信息传递给访客操作系统。
首先,通过运行以下命令检查您期望的分辨率是否已被识别(需要安装 hwinfo)
hwinfo --framebuffer
如果未显示最佳分辨率,则需要在主机上运行 VBoxManage
工具,并将“额外分辨率”添加到虚拟机(在 Windows 主机上,转到 VirtualBox 安装目录以找到 VBoxManage.exe
)。例如
$ VBoxManage setextradata "Arch Linux" "CustomVideoMode1" "1360x768x24"
上面示例中的参数“Arch Linux”和“1360x768x24”应替换为您的 VM 名称和所需的帧缓冲分辨率。顺便说一句,此命令允许定义最多 16 个额外分辨率(“CustomVideoMode1”到“CustomVideoMode16”)。
之后,重新启动虚拟机并再次运行 hwinfo --framebuffer
以验证访客系统是否已识别新分辨率(这不能保证它们都能正常工作,具体取决于您的硬件限制)。
hwinfo --framebuffer
可能不会显示任何输出,但您仍然应该能够按照此步骤设置自定义分辨率。最后,添加 video=resolution
内核参数 以将帧缓冲设置为新分辨率,例如
video=1360x768
此外,您可能希望配置您的 引导加载程序 以使用相同的分辨率。如果您使用 GRUB,请参阅 GRUB/技巧和提示#设置帧缓冲分辨率。
vga
和引导加载程序的分辨率设置(例如 GRUB 的 GRUB_GFXPAYLOAD_LINUX
)都无法修复帧缓冲,因为它们会被内核模式设置覆盖。帧缓冲分辨率必须由内核参数 video
设置,如上所述。启动 VirtualBox 访客服务
在处理 VirtualBox 内核模块的相当大的安装步骤之后,现在您需要启动访客服务。访客服务实际上只是一个名为 VBoxClient
的二进制可执行文件,它将与您的 X Window 系统交互。VBoxClient
管理以下功能
- 主机和访客之间的共享剪贴板和拖放;
- 无缝窗口模式;
- 访客显示器根据访客窗口的大小自动调整大小;
- 检查 VirtualBox 主机版本
所有这些功能都可以使用其专用标志独立启用
$ VBoxClient --clipboard $ VBoxClient --draganddrop $ VBoxClient --seamless $ VBoxClient --checkhostversion $ VBoxClient --vmsvga
请注意,VBoxClient
每次只能使用一个标志调用,每次调用都会生成一个专用服务进程。作为快捷方式,VBoxClient-all
bash 脚本启用所有这些功能。
virtualbox-guest-utils 安装 /etc/xdg/autostart/vboxclient.desktop
,它会在登录时启动 VBoxClient-all
。如果您的桌面环境或窗口管理器不支持XDG Autostart,您将需要自己设置自动启动,请参阅Autostarting#在桌面环境启动时和Autostarting#在窗口管理器启动时以了解更多详细信息。
VirtualBox 还可以同步主机和访客之间的时间,为此,启动/启用 vboxservice.service
。
现在,您应该有一个可以工作的 Arch Linux 访客系统。请注意,默认情况下,VirtualBox 中禁用了剪贴板共享等功能,如果您确实想使用它们,则需要在每个 VM 的设置中启用它们(例如,设置 > 常规 > 高级 > 共享剪贴板)。
自动调整访客显示尺寸
每当虚拟机窗口调整大小时,此选项将自动更改 Arch 访客的分辨率。此选项默认启用,在图形界面中位于视图 > 自动调整访客显示尺寸。当使用 KDE Plasma 时,在 GUI 登录屏幕(会话)上,选择 Plasma (X11) 而不是默认会话 Plasma (Wayland),后者不适用于自动调整大小。
硬件加速
可以在 VirtualBox 选项中激活硬件加速。GDM 显示管理器 3.16+ 已知会破坏硬件加速支持。[1] 因此,如果您遇到硬件加速问题,请尝试其他显示管理器(lightdm 似乎工作正常)。[2] [3]
如果硬件加速未按预期工作,请尝试更改设置 GUI 的显示选项中屏幕选项卡下的图形控制器选项。似乎根据主机 GPU 类型,并非所有模拟控制器都同样有效。
共享文件夹在主机上管理,在 VirtualBox GUI 可访问的虚拟机设置中,位于共享文件夹选项卡中。在那里,可以指定文件夹路径、由文件夹名称标识的挂载点名称以及只读、自动挂载和永久等选项。可以使用 VBoxManage
命令行实用程序定义这些参数。有关更多详细信息,请参见 此处。
无论您使用哪种方法挂载文件夹,所有方法都需要先执行一些步骤。
为避免出现此问题 /sbin/mount.vboxsf: mounting failed with the error: No such device
,请确保 vboxsf
内核模块已正确加载。它应该已加载,因为我们之前启用了所有访客内核模块。
为了使挂载点可以被 root 用户以外的用户访问,还需要执行两个额外的步骤
virtualbox-guest-utils
软件包创建了一个名为vboxsf
的用户组(此步骤已在之前的步骤中完成);- 您的用户必须属于
vboxsf
用户组。
手动挂载
使用以下命令在您的 Arch Linux 虚拟机中挂载您的文件夹
# mount -t vboxsf -o gid=vboxsf shared_folder_name mount_point_on_guest_system
其中 shared_folder_name
是虚拟机管理程序在创建共享时分配的文件夹名称。
如果用户不属于 vboxsf 组,为了让他们访问我们的挂载点,我们可以使用 mount(8) 选项 uid=
和 gid=
,并赋予用户相应的值。这些值可以通过对该用户运行 id
命令获得。例如
# mount -t vboxsf -o uid=1000,gid=1000 home /mnt
自动挂载
为了使自动挂载功能生效,您必须在 GUI 中选中自动挂载复选框,或者在使用 VBoxManage sharedfolder
命令时使用可选的 --automount
参数。
现在共享文件夹应该显示为 /media/sf_shared_folder_name
。如果用户无法访问共享文件夹,请检查 /media
是否具有 755
权限,或者在使用 750
权限时是否归 vboxsf
组所有。如果 /media
目录是由 vboxservice.service
创建的,则目前这不是默认设置。
如果您想要更方便的访问并避免在该目录中浏览,可以使用符号链接,例如:
$ ln -s /media/sf_shared_folder_name ~/my_documents
启动时挂载
您可以使用 fstab 挂载您的目录。但是,为了防止 systemd 启动问题,应将 noauto,x-systemd.automount
添加到 /etc/fstab
中。这样,共享文件夹仅在访问这些挂载点时挂载,而不是在启动期间挂载。这可以避免一些问题,特别是当 systemd 读取 fstab 并挂载分区时,访客增强功能尚未加载的情况下。
sharedFolderName /path/to/mntPtOnGuestMachine vboxsf uid=user,gid=group,rw,dmode=700,fmode=600,noauto,x-systemd.automount
sharedFolderName
: 来自虚拟机设置 > 共享文件夹 > 编辑 > 文件夹名称菜单的值。此值可能与主机上真实文件夹的名称不同。要查看虚拟机的设置,请转到主机操作系统的 VirtualBox 应用程序,选择相应的虚拟机,然后单击设置。/path/to/mntPtOnGuestMachine
: 如果不存在,则应手动创建此目录(例如使用 mkdir)。dmode
/fmode
是/path/to/mntPtOnGuestMachine
内目录/文件的目录/文件权限。
截至 2012-08-02,mount.vboxsf 不支持 nofail
选项
desktop /media/desktop vboxsf uid=user,gid=group,rw,dmode=700,fmode=600,nofail 0 0
故障排除
从虚拟机访问串口
请参阅 使用串口控制台#使用终端模拟器程序连接。
安装期间 TTY 文本太小
在主机上,VirtualBox 管理器中,将显示缩放比例设置为 2.00 或 3.00。
虚拟机在启动 Xorg 后冻结
驱动程序故障或缺失可能导致虚拟机在启动 Xorg 后冻结,例如请参阅 [4] 和 [5]。尝试在设置 > 显示中禁用 3D 加速,并检查是否安装了所有 Xorg 驱动程序。
全屏模式显示空白屏幕
在某些窗口管理器(i3, awesome)上,由于覆盖栏,VirtualBox 在全屏模式下存在问题。为了解决此问题,请在访客设置 > 用户界面 > 迷你工具栏中禁用在全屏/无缝模式下显示选项。有关更多信息,请参阅 上游错误报告。
如果虚拟机的屏幕在超过特定尺寸(例如,宽度超过 2048 像素)时变黑,则增加设置 > 显示 > 屏幕 > 显存可能会有所帮助。
Linux 虚拟机音频缓慢/失真
Linux 内核中的 AC97 音频驱动程序有时在 VirtualBox 内运行时会错误地猜测时钟设置,导致音频过慢或过快。要解决此问题,请在 /etc/modprobe.d/
中创建一个文件,其中包含以下行
options snd_intel8x0 ac97_clock=48000
Linux 虚拟机音频缓慢/卡顿
在某些情况下,音频可能会出现卡顿现象(例如,在线流式传输视频时音频滞后于视频)。一种可能的解决方法是在 VirtualBox 中使用 Intel HD Audio 控制器,并通过在访客操作系统 /etc/modprobe.d/
中的文件中添加以下行来禁用其节能功能
options snd_hda_intel power_save=0 power_save_controller=N
Arch: pacstrap 脚本失败
如果您在首次启动新虚拟机之前使用 pacstrap #安装访客增强功能,则需要以 root 身份执行 umount -l /mnt/dev
,然后才能再次使用 pacstrap;否则将使其无法使用。
Windows 主机:VERR_ACCESS_DENIED
要在 Windows 主机上访问原始 VMDK 映像,请以管理员身份运行 VirtualBox GUI。
Arch Linux 虚拟机中没有硬件 3D 加速
截至版本 5.2.16-2,virtualbox-guest-utils
软件包不包含文件 VBoxEGL.so
。这导致 Arch Linux 虚拟机无法获得适当的 3D 加速。请参阅 FS#49752。
要解决此问题,请应用 FS#49752#comment152254 处的补丁集。需要对补丁集进行一些修复才能使其适用于版本 5.2.16-2。
Plasma 将虚拟机的分辨率重置为 800×600
使用 Plasma-X11 最小化安装时出现黑屏
如果您使用 plasma-desktop 最小化安装而不是 plasma(其中包括 Wayland 支持),那么在启动 Plasma-X11 会话后,您可能会遇到带有光标的黑屏。
要解决此问题,请多次调整 VirtualBox 窗口的大小,然后在 VirtualBox 窗口本身中手动设置分辨率,方法是:视图 > 虚拟屏幕 1 > 调整大小为 1024x768(或您喜欢的其他分辨率)。
在 KDE 启动器中打开系统设置 > 启动和关机 > 后台服务,停止并取消选择 KScreen2 并保存设置。问题应该会永远消失。