问题标签 [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.
arm - ARM的启动过程是什么?
众所周知,对于 X86 架构:按下电源按钮后,机器开始执行 0xFFFFFFF0 处的代码,然后开始执行 BIOS 中的代码以进行硬件初始化。BIOS 执行后,它使用引导加载程序将 OS 映像加载到内存中。最后,操作系统代码开始运行。对于ARM架构,使用后按电源键的开机流程是怎样的?谢谢!
unix - 从二进制文件创建可启动 USB 驱动器?
我有一个 bin 文件,我通过nasm -f bin -o helloworld.bin helloworld.asm
. 如何写入helloworld.bin
USB 闪存驱动器。我不想把它写到软盘上!我不介意使用 Unix 或 MS-DOS 或第三方软件来执行此操作,只要它写入USB 闪存驱动器而不是软盘即可。
c - 通过汇编程序在引导加载程序级别执行 C 程序
我在汇编程序中编写了一个自定义(非常基本的“Hello world!”)引导加载程序,我想在其中执行一个 C 程序。C 程序会工作,还是由于stdio.h
文件丢失而失败?以及如何将 C 程序与引导加载程序捆绑到单个 .bin 文件到dd
闪存驱动器/CD 中?
windows - 如何读/写(编程)闪存驱动器的 MBR/VBR?
我正在寻找一种读取/写入(实际编程)USB 大容量存储设备的主引导记录(或者可能是 VBR)的方法。实际上它是一个我想要对其 MBR 进行编程的闪存驱动器,因此每当我将其插入任何计算机时,都会执行一个程序(存储在我的闪存驱动器中的文件中)。
我知道相当多的组装,但我不知道如何去编程 MBR .. 请帮助
谢谢
kernel - syslinux 加载内核后是否切换到保护模式?
加载内核后 syslinux 是否切换到保护模式?syslinux 启动内核后的机器状态是什么。
kernel - 将内核加载到内存中——如何编写加载器本身?
我正在努力在 D 中制作自己的引导加载程序和内核,但遇到了一个绊脚石。
背景:
- 我从头开始写一切。所以引导扇区正在组装中。而且我没有使用 GRUB。
- 我正在使用 Qemu 进行测试。
- 引导扇区从“磁盘”(目前只是一个平面二进制文件,其第一个扇区是引导加载程序,其余部分是内核代码)中读取内核到虚拟地址 0xC0000000,并调用
kmain()
我的入口点核心。 - 我正在为我的内核使用PE 文件格式。(请不要告诉我使用 Elf——我的选择是 PE。)
问题
能够加载 PE 文件是内核工作的一部分。那么我如何首先将内核本身加载到内存中,以便它可以真正正确执行?
我不能从引导扇区执行此操作,因为 (1) 它不适合 512 字节,并且 (2)在汇编中这样做很痛苦。显然,我也不能在内核本身中做到这一点。那么我该怎么做呢?
linux-kernel - 获取通过引导加载程序 (grub) 传递的内核参数
如何在 的 init 脚本中访问内核参数(通过Grub
)initramfs
?我有想法引入一些参数并像使用它一样使用它if(myparam == 0) {} else {}
c - 没有stdio的C,有什么可能?
一段时间以来,我一直对编写操作系统感兴趣。通过几个不同的站点,我遇到了一个有趣的概念(解释一下):如果您开始使用#include 编写引导加载程序,那么您已经犯了一个致命的错误。
我已经阅读了 K&R,整本书在每节课中都包含了它。在学习 C 的过程中一直使用它,我不知道我学到了什么使用 stdio,什么没有。如果没有 stdio,你可以在 C 中做什么?
linux - 如何在 ARM Cortex M3 板上运行 linux?
我有一个 Luminary LM3s8962 ARM Cortex M3 开发板,虽然我已经能够使用 Keil RTOS 对其进行编程,但我更喜欢在 linux 和嵌入式 libc 之上进行开发。我想知道的是我如何才能在我的板上实际获得 linux 内核以及我的应用程序和依赖项?它有一个 SD 插槽,我可以创建某种文件系统映像并使用引导加载程序对电路板进行编程吗?我必须自己编写引导加载程序吗?我完全不知道从哪里开始。我研究了 yocto 项目,但我仍然不知道如何实际处理数兆字节的内核和文件系统映像文件并让我的板运行它们。
assembly - 简单的 NASM “引导程序”无法正确访问内存?
**请注意,当我说启动程序时,我并不是指启动操作系统的程序。我的意思是,当您启动计算机并执行某些操作时运行的简单程序。
好吧,所以我对汇编/NASM 不是非常精通,但我认为我对它有足够的了解,可以编写简单的引导程序。
好吧,我认为我掌握得足够好。显然不是。
我尝试了一个在网上找到的简单引导程序。它运行良好(打印字母“A”)。然后我修改它以打印存储在内存中的字母。它失败了;它不是打印一个“A”,而是打印一个笑脸。(我发誓,电脑现在在嘲笑我。)
这是源文件中的代码:
如果我将“ move al, [testChar] ”替换为“ move al, 65 ”,则字母“A”会正确打印。我尝试过移动内存声明,尝试了所有括号组合或 BITS 和 ORG 周围没有括号,并且尝试递增和递减 testChar(即 [testChar+1])。每次,它都会打印一个笑脸、一个反笑脸(当我增加 testChar 时),或者什么都不打印(当我将内存声明放在代码之前,可能是因为没有执行代码 =P)。我不能让这该死的东西工作。
现在,对于规范(因为它们可能是相关的):
我正在运行带有 Intel Pentium II 处理器的 Dell Latitude CPi,因为这就是我要测试的全部内容(我没有用我的普通计算机测试汇编程序。见鬼。)。我很确定说处理器是 x86,因为我在上面运行了 Windows XP、Ubuntu 和 Arch Linux。
我目前正在使用 NASM 在 Arch Linux 上编写和编译程序。
引导程序从软盘运行
我使用“ nasm -f bin FILENAME ”来编译代码。
然后,我使用 AL 的“mtools”包中的“mformat”命令通过“ mformat -f 1440 -B BOOTPROGRAM A: ”将编译后的引导程序传输到软盘。
那么,这次我搞砸了什么?还是我的处理器/BIOS 有问题?