SerenityOS 如何安装到 VirtualBox:转换 GRUB 磁盘镜像并配置 PAE/NX 等设置
【免费下载链接】serenityThe Serenity Operating System 🐞项目地址: https://gitcode.com/GitHub_Trending/se/serenity
本文解决一个具体问题:把 SerenityOS 装进 VirtualBox 虚拟机并成功引导。SerenityOS 目前没有提供预构建的安装镜像,必须先从源码构建出带 GRUB2 的磁盘镜像,再把它转换成 VirtualBox 可用的 VDI 格式,最后按文档要求调整虚拟机设置(包括开启 PAE/NX)。以下操作依据 VirtualBox 安装指南、裸机安装指南 和 构建说明 编写,虚拟机创建步骤基于 VirtualBox v6.1.12 编写,其他版本界面可能略有出入。
需要注意:文档在开头明确提示,当前 Serenity 在 VirtualBox 中运行仍存在已知问题,VirtualBox 指南 的 NOTICE 一节会随官方 issue 更新问题清单,文中不工作的部分会在下文逐处标出。
前置条件:构建 GRUB 磁盘镜像
VirtualBox 使用的磁盘镜像不能直接用为 QEMU 构建的那个镜像,用它启动会立即停止并显示FATAL: No bootable medium found! System halted.。必须先按 BareMetalInstallation.md 的说明构建 GRUB 镜像。
构建镜像前,先在构建机上装好 BuildInstructions.md 列出的依赖(Debian/Ubuntu 示例):
sudo apt install build-essential cmake curl libmpfr-dev libmpc-dev libgmp-dev e2fsprogs ninja-build qemu-system-gui qemu-system-x86 qemu-utils ccache rsync unzip texinfo libssl-dev zlib1g-dev编译工具链要求:支持 C++26 特性的 GCC 14 或 Clang 17+,CMake 3.25.0 或更新版本。
然后按构建说明完成构建,进行到并包含运行ninja install这一步为止,对应命令为:
Meta/serenity.sh image <arch>其中<arch>替换为要构建的目标架构,脚本支持 x86_64、aarch64 和 riscv64,缺省时使用宿主机架构。
系统构建完成后,运行以下命令生成带 GRUB2、可在真实 PC 上启动的磁盘镜像文件:
- legacy BIOS 系统:
ninja grub-image,生成grub_disk_image - UEFI 系统:
ninja grub-uefi-image,生成grub_uefi_disk_image
该命令要求已安装parted和grub2(Arch Linux 上是grub)。
跳过裸机安装指南的最后一步(用dd把镜像写入真实磁盘的命令)——那一步只适用于往实体硬盘写镜像,VirtualBox 场景不需要。
把磁盘镜像转换成 VirtualBox VDI
得到grub_disk_image(或grub_uefi_disk_image)后,有两种转换方式,任选其一:
有 QEMU 的情况下:
qemu-img convert -O vdi /path/to/grub_disk_image /path/to/output/serenityos.vdi只有 VirtualBox 的情况下:
VBoxManage convertfromraw --format VDI /path/to/grub_disk_image /path/to/output/serenityos.vdi两条命令中的/path/to/grub_disk_image替换为上一步实际生成的镜像文件路径,/path/to/output/serenityos.vdi是转换输出的 VDI 路径。
转换完成后,给磁盘镜像设置一个固定标识,否则之后更新磁盘镜像时标识会不再对应:
VBoxManage internalcommands sethduuid serenityos.vdi 19850209-0000-0000-0000-000000000000Windows 上的注意点:如果 QEMU 或 VirtualBox 不在 PATH 环境变量里,命令必须在该工具的安装目录下执行,并在命令前加./。
创建虚拟机
在 VirtualBox 中新建虚拟机,按以下步骤操作:
- 打开Create Virtual Machine对话框,切换到Expert Mode。
- 虚拟机名称和存放位置可任意。
- Type选Other,Version选Other/Unknown (64-bit)。
- Serenity 最少需要 512 MiB 内存,Memory size设置为 512 MiB 或以上,文档推荐 1 GiB。
- Hard disk选择Use an existing virtual hard disk file,点击下拉框旁的文件夹图标打开Hard Disk Selector。
- 点Add,浏览到上一步转换好的 VDI 文件所在位置,添加后点Choose。
- 点Create。
创建界面参考图(文档示例):
必须调整的启动设置
默认配置的虚拟机无法引导 Serenity。打开虚拟机的Settings,做以下调整:
必做设置:
- System→Processor选项卡:勾选Enable PAE/NX。
- Audio:将Audio Controller设为SoundBlaster 16。
必须核对的设置:
- Storage:点击Controller,控制器类型必须是AHCI (SATA)或NVMe。文档明确说明其他类型"guaranteed not to work",因为 Serenity 当前不支持它们。
- Network→Advanced:确认Adapter Type不是Intel PRO/1000 MT Desktop (82540EM)。虽然这是 Serenity 当前唯一支持的网卡类型,但它目前不工作于 VirtualBox,所以这里要换用其他型号。
当前状态下(以文档为准):VirtualBox 中的音频和网络均不工作,以上音频设置只是文档要求的必改项,不代表能出声。
启动验证与常见故障
按上述配置启动虚拟机后,应看到 GRUB 菜单;选择一项后系统继续引导。遇到以下现象时按对应项排查:
- GRUB 菜单选完后只剩闪烁的光标:这是 VirtualBox 指南 单列的故障,检查两点:
- Settings>System>Processor中是否已启用 PAE/NX;
- 若使用的是 64-bit 磁盘镜像,确认Settings>General中Version是Other/Unknown (64-bit)而不是Other/Unknown。
Your computer does not support PAE. Halting!:Troubleshooting.md 指出 VirtualBox 环境下即 PAE/NX 未启用,回到上一步勾选。Your computer does not support long mode (64-bit mode). Halting!:说明 VirtualBox 未使用 x64 虚拟化模式(对应条目见 Troubleshooting.md),同时检查虚拟机 Version 是否选对 64-bit。- 使用 BIOS 版镜像(grub_disk_image)时引导位置不对:可能需要在 GRUB 引导菜单中调整
root=启动参数使其指向正确分区,详见 boot_device_addressing 手册。 - NVMe 磁盘初始化失败:裸机指南提到可尝试
nvme_poll启动参数。
可选配置:串口调试与显存
以下两项不是启动必需,来自 VirtualBox 指南 的附加配置:
- 串口调试:Serial Ports中启用端口 1,Port Mode推荐设为Raw File,Path/Address指向输出文件位置(必须包含文件名)。
- 显存:默认 16 MB 显存足够使用默认分辨率,但不足以覆盖所有支持分辨率;若要使用 2560x1080,至少需要提供 22 MB 显存。
完成以上步骤后,虚拟机即可在 VirtualBox 中引导 SerenityOS。需要留意的边界:音频和网络在 VirtualBox 中暂不工作,整体仍受官方 issue 跟踪的已知问题清单约束,后续行为以 VirtualBox 指南 的更新为准。
【免费下载链接】serenityThe Serenity Operating System 🐞项目地址: https://gitcode.com/GitHub_Trending/se/serenity
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考