bootloader相关内容

正常工作的FAT16 Bootloader在实际硬件上生成读取错误?

在过去一周的时间里,我一直在开发一个简单的OS,用于学习目的和...“乐趣". VirtualBox和NASM相继推出,我实际上有了一个不错的开端.最终,我决定通过臭名昭著的断链教程,直到从文件系统加载为止. 有了一些HexFiend的恶作剧和一些空白的FAT16图像,我最终弄清了BPB.还有一些其他的Assembly hackery(基础是Brokenthorn的教程,第6部分),我也得到 ..
发布时间:2020-05-16 21:08:14 其他开发

NASM-从USB驱动器加载代码

任何汇编专家都知道表示第一个USB驱动器的参数(寄存器 dl )吗? 我正在完成一些NASM教程,并且想要进行物理引导(我可以使用qemu获得干净的引导). 这是从磁盘加载“内核"数据的代码部分: loadkernel: mov si, LMSG ;; 'Loading kernel',13,10,0 call prints ;; ex puts() ..
发布时间:2020-05-16 21:07:55 其他开发

(NASM)(80x86)Bootloader NEEDS xor ax,ax

我正在学习如何从osdev中制作一个引导程序.我正在使用NASM汇编我的代码,并使用一台x86机器来运行我的引导程序.这是一小段代码,它打印一个字符并进入无限循环: BITS 16 xor ax, ax mov ah, 0x0E mov al, 0x41 int 0x10 jmp $ times 510-($-$$) db 0x00 db 0x55 db 0xAA 我的问题是:为 ..
发布时间:2020-05-16 21:04:00 其他开发

int 13h 42h在Bochs中不加载任何内容

我将引导加载程序从CHS更改为LBA,因此我将int 13h 02h替换为int 13h 42h.它可以在QEMU中正常运行,但是,我在Bochs和笔记本电脑上运行时遇到麻烦. 我用dd if=main.bin of=/dev/sdb bs=512将引导加载程序写入USB闪存驱动器.笔记本电脑加载英特尔UNDI并给我以下错误:No bootable device - insert boot ..
发布时间:2020-05-16 21:02:56 其他开发

为什么我的根目录没有被加载? (FAT12)

我正在编写汇编中的Stage 1引导加载程序,以尝试将FAT12文件系统加载到内存中,以便可以加载我的Stage 2引导加载程序.我已经设法将FAT加载到内存中,但是我正在努力将根目录加载到内存中. 我目前正在使用此作为参考,并产生了以下内容: .load_root: ;es is 0x7c0 xor dx, dx ; blank dx for ..
发布时间:2020-05-16 21:02:23 其他开发

引导加载程序在视频内存0xb8000上打印

我在汇编编程中只有3-4天的时间.尝试在视频内存中打印字符串并通过qemu运行. 我希望这个程序能打印出你好世界.但是它什么也不打印. qemu窗口显示“从硬盘启动...",没有其他内容 引导加载程序只允许16位吗?在那种情况下,我将如何做MMIO?我遵循的是[bits 32] [org 0x7c00] loop: mov edx, 0xb8000 mov ah, 0x0f mov ebx, ..
发布时间:2020-05-08 19:54:00 其他开发

linux引导代码如何用C编写?

我是学习OS开发的新手.从我读过的书中可以看出,引导加载程序会将第一个MBR复制到0x7c00,然后以实模式从那里开始. 并且,示例以16位汇编代码开头. 但是,当我查看当今的Linux内核时, arch/x86/boot 具有"header.S"和"boot.h",但是实际代码在main.c中实现. 这似乎对“不编写汇编"有用. 但是,这是如何在Linux中专门完成的呢? 我可以粗略 ..
发布时间:2020-05-02 03:28:10 其他开发

C语言中的Bootloader无法编译

我是编写引导加载程序的新手.我已经在asm中编写了helloworld引导程序,并且 我现在正在尝试用C语言编写一个.我已经用C语言编写了一个helloworld引导加载程序,但是我无法对其进行编译. 这是我的代码.我究竟做错了什么?为什么不编译? void print_char(); int main(void){ char *MSG = "Hello World!"; int i; ..
发布时间:2020-05-01 10:40:27 服务器开发

链接器文件未选中

我正在使用链接器文件处理我的应用程序中的问题.发生了什么事是在资源管理器选项卡中似乎没有“选择"链接器文件 我必须指出我也有一个引导程序. 我在地址1FC02FF8h收到“(944)数据冲突"错误,并且我认为与此有关.有人可以帮我吗?非常感谢. 解决方案 ..
发布时间:2020-05-01 03:31:38 其他开发

将NASM和64位C代码一起编译并链接到引导加载程序中

我制作了一个非常简单的1级引导加载程序,它执行两个主要任务:它从16位实模式切换到64位长模式,并且从硬盘读取接下来的几个用于启动基本内核的扇区. /p> 对于基本内核,我试图用C而不是汇编语言编写代码,对此我有一些疑问: 我应该如何编译和链接nasm文件和C文件? 编译文件时,应该编译为16位还是64位?因为我从16位切换到64位. 我如何将C或程序集中的更多文件添加到项目中? ..
发布时间:2020-04-30 08:35:15 其他开发

操作系统中的加载程序如何工作?

我知道加载程序是将程序加载到主存储器的程序.那么,这实际上如何工作?到底会发生什么?实际上,当加载程序加载程序时,会在PCB中创建一个条目,并将该程序放入作业池中.程序的可执行代码如何复制到主存储器?简单地说,如何使用C或C ++将文件的代码加载到主存储器中? 解决方案 这在很大程度上取决于操作系统.我将在这里写的是特定于Linux的,但是类似的事情也会在其他操作系统上发生. 首先, ..
发布时间:2020-04-25 11:31:08 其他开发

如何使用Assembly(NASM)引导程序编译Rust内核

我有一个用NASM编写的简单的2阶段引导程序,我想使用Rust继续OS内核. 所以我用Cargo创建了一个每晚的Rust项目,并在src/main.rs文件中禁用了std.现在,我试图将Assembly文件与Cargo项目链接,但没有成功. 我应该如何编译和链接NASM引导程序与Rust内核? 解决方案 几个小时后,我编译了代码. 解决方案是(如Michael Petch ..
发布时间:2020-04-25 11:30:11 其他开发

将扇区加载到内存中时出现磁盘读取错误

我尝试使用此开发引导加载程序,但运行时显示: disk read error! 如果我忽略它,则在后面的部分中,它向我显示了错误的内存映射.我也跟踪了其他一些消息,但徒劳无功.感觉就像我只是在复制他们在做什么.如果我做的有些不同,每次都会产生一种新的错误. 我应该使用已经构建的引导加载程序还是该怎么做? 磁盘加载错误的代码如下: [org 0x7c00] KE ..
发布时间:2020-04-25 11:24:05 其他开发