有很多类似标题的问题在stackoverflow上。我阅读了所有这些问题,但没有一个能解决我的问题。这就是为什么我提出这个问题的原因。
我正在用汇编和C语言创建操作系统。我发现我必须将C代码编译为二进制格式,提取文本部分并保存为文件,然后将其转换为ISO,然后将其挂载到虚拟软盘的光学驱动器中,最后在VirtualBox中加载我的操作系统。所以这是很多工作,我想避免。我不想每次都将我的二进制文件转换为ISO。
因此,我决定将我的操作系统的二进制机器代码放入虚拟硬盘(
我正在研究
然后,我基本上使用模式
我启动虚拟机,它显示:
“未找到可引导介质!系统已停止。”
有没有办法解决这个问题?为什么我的虚拟磁盘仍然无法引导?
编辑
这是实际的
我正在用汇编和C语言创建操作系统。我发现我必须将C代码编译为二进制格式,提取文本部分并保存为文件,然后将其转换为ISO,然后将其挂载到虚拟软盘的光学驱动器中,最后在VirtualBox中加载我的操作系统。所以这是很多工作,我想避免。我不想每次都将我的二进制文件转换为ISO。
因此,我决定将我的操作系统的二进制机器代码放入虚拟硬盘(
VDI
文件)中,然后将其设置为启动顺序的顶部,并加载它,而不是从虚拟光盘驱动器ISO
中加载。我正在研究
VDI
的工作原理,发现它通常是动态分配的,只存储数据的开头。因此,VDI
的开头表示标头,其余部分是存储在虚拟驱动器上的实际数据。所以,我发现数据从某个地址开始(在我的情况下,它是从VDI
文件的开头0x00200000
开始)。然后,我基本上使用模式
55 AA
填充从该地址到VDI
文件末尾。所以,我认为现在它意味着磁盘是可引导的(因为在第一个扇区的末尾仍然有签名55 AA
)。我启动虚拟机,它显示:
“未找到可引导介质!系统已停止。”
有没有办法解决这个问题?为什么我的虚拟磁盘仍然无法引导?
编辑
这是实际的
VDI
文件:1.vdi