x01.os.8: 加载内核,x01.os.8加载内核


x01.os.7 中,借助 freedos,学习了保护模式。但操作系统必须完成引导:boot, 加载内核:loaderkernel,进而管理processmemoryfile等。

引导比较简单,开机启动时,CPU 采取硬的方式,直接把 BIOS 载入内存某处运行。这就是电脑启动时按 DEL 键可以看到的画面。此时,无硬盘可以,无内存则不可以。BIOS 是一个只读芯片,但我认为它仍有可写的部分,否则,启动盘设置的保存,就说不通。BIOS 退出时,它会检测启动盘 0 扇区的最后两个字节,是否为 0xAA55。如果是的,便把该扇区的 512 字节载入内存 0x7C00 处。以后的控制权,就交给了0x7C00 处。所谓的引导扇区,不过如此。这些设置,都是硬指标,没有讨价还价的余地。进入 0x7C00时,虽然只有512字节,但这并不妨碍构建 FAT12 格式的文件。方法如下:

       org 0x7C00

      jmp short l_start

      nop

%include"fat12.s"

包含文件“fat12.s”中,是一个引导参数块的定义。以此来完成 a.img 的 FAT12 格式化。将 loader, kernel 等文件复制到 a.img 中,即可使用。512字节实在太少,所以只能完成寻找加载 loader 的工作。进入 loader 后,虽可以多做一些事情,但没有必要,只需进行一些简单必要的设置,作为跳板,跳入 kernel 即可。必要设置,主要是对 kernel 内存地址 selentry_point 的一个整理。kernel elf 格式,可与 C 交互。

让我们跟着于渊的脚步,看看进入 C 的运行效果图吧。

          

 

 

 

 

 

 

 

 

 

 

 

 

 

 

按下键盘,会产生一个中断,最后一行即是。

完整代码,可到 x01.Lab.download 中下载。

 


linux怎加载内核

加载内核?linux系统下的grub里有配置文件menu.lst吧,里边就有启动grub时需要加载的内核。你是说开机后系统如何加载内核吗?.ko文件一般是硬件的驱动,make是针对makefile来用的,makefile配置好编译条件和相关信息,用make就可以执行makefile里的配置。一般是在用源代码安装软件的时候用的,源代码包里通过configure会生成makefile文件
 

linux内核加载问题

具体怎么编译的就不详说了,看样子你都生成出.ko文件了
menconfig里面。你把内核模块具体放在哪个目录下的,我也不知道
但是有一点,你添加的时候,应该要“M”键,也就是前面的'*'号得变成'M'

然后保存
最后放到板子上面去

首先1:加载内核模块,insmod ./xxx.ko(生成出来的模块)
2:给模块申请主次设备号,mknod /dev/(设备名,你自己定义的) c xxx(主设备号) 0
more /proc/devices 查看你当前加载的模块的主设备号

3.最后拿测试程序测试你的加载的驱动就可以了

如果你听不懂我说的,我可以举个详细的例子!
 

相关内容

    暂无相关文章