操作系统开发系列—12.a.从Loader到内核 ●
2016-04-17 12:50
176 查看
Loader要做两项工作,我们先来做第一项,把内核加载到内存:
1.加载内核到内存。
2.跳入保护模式。
首先编译无内核时:
nasm boot.asm -o boot.bin
nasm loader.asm -o loader.bin
dd if=boot.bin of=a.img bs=512 count=1 conv=notrunc
sudo mount -o loop a.img /mnt/hgfs/
sudo cp loader.bin /mnt/hgfs/ -v
sudo umount /mnt/hgfs/
运行结果如下:
接下来编译内核并将其写入软盘映像:
nasm -f elf -o kernel.o kernel.asm
ld -m elf_i386 -s -o kernel.bin kernel.o
sudo mount -o loop a.img /mnt/hgfs/
sudo cp kernel.bin /mnt/hgfs/ -v
sudo umount /mnt/hgfs/
运行结果如下:
不再是“No KERNEL”了,我们看到,Loading后面出现一个圆点,说明Loader读了一个扇区。不过,由于目前我们除了把内核加载到内存之外没有做其他任何工作,所以除了能看到“Ready.”之外,并没有其他现象出现。
【源码】
1.加载内核到内存。
2.跳入保护模式。
首先编译无内核时:
nasm boot.asm -o boot.bin
nasm loader.asm -o loader.bin
dd if=boot.bin of=a.img bs=512 count=1 conv=notrunc
sudo mount -o loop a.img /mnt/hgfs/
sudo cp loader.bin /mnt/hgfs/ -v
sudo umount /mnt/hgfs/
运行结果如下:
接下来编译内核并将其写入软盘映像:
nasm -f elf -o kernel.o kernel.asm
ld -m elf_i386 -s -o kernel.bin kernel.o
sudo mount -o loop a.img /mnt/hgfs/
sudo cp kernel.bin /mnt/hgfs/ -v
sudo umount /mnt/hgfs/
运行结果如下:
不再是“No KERNEL”了,我们看到,Loading后面出现一个圆点,说明Loader读了一个扇区。不过,由于目前我们除了把内核加载到内存之外没有做其他任何工作,所以除了能看到“Ready.”之外,并没有其他现象出现。
【源码】
相关文章推荐
- Map容器——HashMap及常用API,及put,get方法解析,哈希码的产生和使用
- Android组件-下拉列表、时间选择器、日期选择器、单选框、复选框
- 在windows下运行Felzenszwalb的Deformable Part Model(DPM)源码voc-release3.1来训练自己的模型
- 如何选择合适的STL容器?
- 如何选择合适的STL容器?
- linux内核分析 第八周 理解进程调度时机跟踪分析进程调度与进程切换的过程
- 结构体里定义超过两个字符数
- 堆排序 | 数据结构与算法
- OpenCV中Mat类的图像如何设置ROI
- Kafka Broker常用配置详解
- 求指导。。。运行停止工作的原因。
- OpenCV2.4.4中调用SIFT特征检测器进行图像匹配
- python 单下划线/双下划线使用总结
- 数之和及平均值
- RobHess的SIFT源码分析:综述
- Unity.击球游戏
- 第4章 进程调度
- 文件读写函数 -- 字符串读写
- 第7周项目1-成员函数、友元函数和一般函数有区别(2)
- CSS选择器详解(总结)