问题标签 [bootloader]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
196 浏览

bootloader - 在裸机操作系统上运行单个任务

我想从linux交叉编译一个ansi c程序,以获得一个可以读取单个文件并写入x86上的单个文件的最简单的操作系统。然后我想重新启动到那个裸操作系统,并运行那个程序。我的选择是什么?

0 投票
4 回答
1005 浏览

assembly - 为什么我的引导加载程序的堆栈段位于 0x3FF(实模式 IVT 结束)?

“地址 0x500 是 BIOS 使用的最后一个地址”是Wikipedia -

“00000000-000003FF 实模式 IVT(中断向量表)”是osdev.org关于 BIOS 内存映射的文章所说的。

那么你能告诉我为什么 NASM 将我的 .com 文件的堆栈指针放在 0x3FF 而我的指令指针从 0x7C00 开始吗​​?对我来说,SP 最直观的位置就在 0x7C00 下方。

0 投票
3 回答
312 浏览

windows - 强制机器从 live CD 启动

如果我想在可引导的 CD 上分发一些软件,有没有办法(从 Windows)强制机器重新启动到 CD 操作系统,即使 BIOS 没有设置为从 CD 引导?

0 投票
1 回答
151 浏览

x86 - CLI 对显存的影响

我决定编写自己的引导加载程序。

我已经能够将视频模式设置为 3(尽管 qemu 已经将其设置为 3),然后通过直接更改视频内存在屏幕第一行的第一个字符处打印“A”。

注意注释掉的 cli 指令。当我删除分号并且只删除分号时,不再打印“A”。我不明白清除 IF 标志会如何产生影响内存中内容的副作用。如果有人可以对此有所了解,那就太好了。

哦,对于它的价值,我用来运行引导加载程序的命令

我在其他地方被激怒了,并尽可能多地阅读。有人提到设置堆栈,但我不明白这与我的问题有关。

非常感谢您的帮助!

0 投票
2 回答
1051 浏览

operating-system - 允许从文件夹或磁盘启动的简单 VM

我想知道是否有一个非常简单且免费的虚拟机可以让您从不会损坏我的硬盘的文件夹或磁盘映像启动。我正在使用 MacBook,并且正在研究操作系统编程。我在互联网上找到了一个看起来很有希望的教程。我想尝试一下,但使用虚拟机而不是实际从磁盘启动。如果我制作了一个包含该boot.bin文件的文件夹或磁盘映像并想尝试我制作的操作系统(从文件夹或磁盘映像而不是磁盘启动时),是否有 VM 可以让我这样做?我以前没有使用虚拟机的经验。我还想确保我的硬盘不会损坏。

0 投票
2 回答
743 浏览

assembly - 基于堆栈的int 0x13函数0x42实现的问题

我正在尝试一种新方法来处理 int 0x13(只是为了了解有关系统工作方式的更多信息):使用堆栈创建 DAP ..

假设 DL 包含磁盘号,AX 包含 PT 中可引导条目的地址,DS 更新到正确的段并正确设置堆栈,这是代码:

如您所见:我将 dap 结构压入堆栈,更新 DS:SI 以指向它,DL 已设置,然后将 AX 设置为 0x42 并调用 int 0x13

结果是 AH 中的错误 0x01 和明显的 CF 设置。没有扇区被转移。我没完没了地检查堆栈跟踪,没关系,分区表也没问题..我不知道我错过了什么......

这是磁盘地址包的堆栈跟踪部分:

我正在使用 qemu 最新版本并尝试从硬盘驱动器(0x80)读取,还尝试对具有相同结果的结构进行 4 字节对齐(CF 1 AH 0x01),存在扩展。

0 投票
2 回答
12222 浏览

windows-7 - 如何编程引导加载程序..?想要一个带有 Windows 7、XP、Vista 和 98 SE 的 USB 闪存驱动器用于安装

你好,我的 StackOverflow 朋友们!

非常想做的是复制我的 Windows 7、Windows XP(Pro 和 Home SP3)、Windows Vista 的内容,并假设我有空间给它我最新的 98 SE 安装 CD 副本到闪存驱动器上这样我就可以将它用于我需要执行的任何操作系统安装。

显然,我需要一个引导加载程序,它允许我选择我们要引导到的操作系统安装;所以我很好奇这是否可能。

所以-A)我的小项目甚至可行吗?

B)我是否必须编写自己的自定义引导加载程序来执行此操作,或者是否可以修改 Windows CD 默认已使用的加载程序(或者甚至破解 LiLo 或 Grub 来执行此操作)

C) 你们中是否有人知道学习如何编写引导加载程序的好地方,或者这完全超出了我的范围?我在编程方面......体面......但绝不是专家。

我想要它在闪存驱动器上的原因仅仅是因为它们的读取速度往往比 DVD 或 CD-ROM 快得多 - 特别是如果计算机有点旧并且光驱很脆弱。

一如既往,感谢您的帮助!!

-苏塔

0 投票
1 回答
428 浏览

c - 如何从 ISO 将内核加载到内存中

在编译时,我将我的程序集引导程序与我的内核链接到一个 *.img 文件中,然后我使用 MagicISO 将其转换为 *.iso 映像。然后我从这个 *.iso 映像启动。但问题是我想将文件的第二个扇区(内核)读入内存 0x1000。但我只知道如何使用软盘映像,所以有人可以告诉我如何使用 *.iso 来做到这一点吗?如果您需要任何代码或任何内容,请告诉我,我会提供:)。

0 投票
1 回答
2207 浏览

assembly - MikeOS 引导加载程序中的堆栈段

我不明白这段代码:

  • mov ax, 07C0h - 这里 BIOS 加载我们的代码。但什么是“4K”?千字节?我没明白:)
  • 添加 ax, 544 - 为什么又是“8K”?为什么我们要添加 544?为什么不是512?
  • mov sp, 4096 - 这里我们设置堆栈指针。

在我们设置堆栈指针之前,我们做所有这些操作是为了什么?

0 投票
4 回答
7981 浏览

c++ - C++ 中的引导加载程序

我已经通过在软盘上制作一个小型程序集引导加载程序搞砸了几次,并且想知道是否可以在 C++ 中制作一个引导加载程序,如果可以,我可以从哪里开始?据我所知,我不确定它是否会使用int main().

谢谢你的帮助。