我有兴趣编写尽可能少引导的软件。我该怎么办? 这是一个程序集的问题吗?我需要对软件运行的磁盘做些特别的事吗?如何编写与系统启动非常接近的软件?
为了澄清,我正在寻找一个stdin和stdout可用的点,但没有其他的。
我有兴趣编写尽可能少引导的软件。我该怎么办? 这是一个程序集的问题吗?我需要对软件运行的磁盘做些特别的事吗?如何编写与系统启动非常接近的软件?
为了澄清,我正在寻找一个stdin和stdout可用的点,但没有其他的。
如果您想在POST后但在OS启动之前运行代码,您需要挂钩或更换引导加载程序。对于接下来要问的几个问题,没有简单的答案。
目前在互联网上编写自己的引导程序相当多的资源 - 你可能要开始与他们:
如果你发现自己寻找关于x86汇编的一本好书,请尝试:
这取决于操作系统。 您必须将程序添加到Windows下的RunOnce注册表项中,并在Linux下启动脚本(linux下有各种init方法,因此有各种方法)。
我有兴趣编写在windows或linux加载之前运行的软件。有没有办法做到这一点? – lowerkey 2010-06-19 17:52:32
才达到这种效果可能会重新使用像一些删节Linux的一些非常有限的OS或者甚至老的DOS,然后让他们在启动时自动运行你的代码的方法。但这取决于你为什么要这样做,如果这种解决方案适合你。
编辑:或者如果这还不够,我会建议看看Lilo或grub4dos或类似的东西,看看你是否可以用某种方式插入你的代码。 Boot Land网站上的论坛可能也很有用,因为他们似乎很想弄清楚如何定制启动过程。
DOS在嵌入式世界,气泵,收银机等中仍然非常活跃。DOS不是坏。你应该从头开始学习linux来理解linux的启动过程,你会发现你可以大幅缩短这个时间,并直接启动到嵌入式程序中。 – 2010-06-20 03:17:02
只要运行Linux而没有发行版提供的所有垃圾?我的内核需要1.8秒来加载。这是最简单的方法。请参阅Linux From Scratch。
stdin和stdout是OS具体的概念,他们不存在预引导(尽管也许在一些自定义的BIOS或引导程序他们这样做...)
下一个最低的地方将是引导装载程序,有些事情是在那个时候初始化的,但是你仍然会有很多工作要做。
你甚至可以加载更低的BIOS,加载你自己的BIOS,但是你必须照顾好你的BIOS需要处理的所有非标准化的东西。
引导加载程序刚刚完成。我只是想能够做基本的输入输出。 – lowerkey 2010-06-21 14:57:54
这是一个简单的启动加载程序,让你开始。 您将需要nasm,dd和一张软盘。
; boot1.asm stand alone program for floppy boot sector
; Compiled using nasm -f bin boot1.asm
; Written to floppy with dd if=boot1 of=/dev/fd0
; Boot record is loaded at 0000:7C00,
ORG 7C00h
; load message address into SI register:
LEA SI,[msg]
; screen function:
MOV AH,0Eh
print: MOV AL,[SI]
CMP AL,0
JZ done ; zero byte at end of string
INT 10h ; write character to screen.
INC SI
JMP print
; wait for 'any key':
done: MOV AH,0
INT 16h ; waits for key press
; AL is ASCII code or zero
; AH is keyboard code
; store magic value at 0040h:0072h to reboot:
; 0000h - cold boot.
; 1234h - warm boot.
MOV AX,0040h
MOV DS,AX
MOV word[0072h],0000h ; cold boot.
JMP 0FFFFh:0000h ; reboot!
msg DB 'Welcome, I have control of the computer.',13,10
DB 'Press any key to reboot.',13,10
DB '(after removing the floppy)',13,10,0
; end boot1
我们在这里谈论子操作系统级别的代码? – ChaosPandion 2010-06-19 17:49:02
是的。我想将一个简单的程序刻录到磁盘并让系统只执行该程序。 – lowerkey 2010-06-19 17:55:43