把多个文件组装在一起形成一个文件,这个文件称为内核映像文件。
可以通过lmoskrlimg 命令,将文件打包成一个映像:
lmoskrlimg -m -k plhf GRUB头文件 -o 映像文件 -f 输入文件列表
-m 表示模式:只能是k内核模式
-lhf 表示后面跟上GRUB头文件
-o 输出的映像文件名
-f 表示输入文件列表
dd命令用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
规则二级引导器
文件名 | 功能 |
---|---|
imginithead.asm | GRUB头的汇编部分 |
inithead.c | GRUB头的C语言部分,用于放置二级引导器到指定内存中 |
realintsve.asm | 实现调用bios中断的功能 |
ldrkrl32.asm | 二级引导器核心入口汇编部分 |
ldrkrlentry.c | 二级引导器核心入口 |
bstartparm.c | 实现收集机器信息建立页面数据 |
chkcpmm.c | 实现检查CPU工作模式和内存视图 |
fs.c | 实现解析映像文件的功能 |
graph.c | 实现切换显卡图形模式 |
vgastr.c | 实现字符串输出 |
使用命令将代码中的文件打包成映像:
lmoskrlimg -m k -lhf initldrimh.bin -o HelloOS.eki -f initldrkrl.bin initldrsve.bin
实现grub头
imginithead.asm 汇编文件可以让GRUB识别,又能设置C语言运行环境,用于调用C函数;
inithead.c文件主要功能是查找二级引导器的核心文件initldrkrl.bin,将其放置到特定的内存地址上。
imginithead.asm 主要工作是初始化CPU的寄存器,加载GDT,切换到CPU的保护模式。
要在C函数中调用BIOS中断是不可能的,因为C语言代码运行在32位保护模式下,BIOS中断工作是在16位的实模式。
网友评论