x01.os.8: 加载内核
2024-08-30 09:58:12
在 x01.os.7 中,借助 freedos,学习了保护模式。但操作系统必须完成引导:boot, 加载内核:loader,kernel,进而管理process,memory,file等。
引导比较简单,开机启动时,CPU 采取硬的方式,直接把 BIOS 载入内存某处运行。这就是电脑启动时按 DEL 键可以看到的画面。此时,无硬盘可以,无内存则不可以。BIOS 是一个只读芯片,但我认为它仍有可写的部分,否则,启动盘设置的保存,就说不通。BIOS 退出时,它会检测启动盘 0 扇区的最后两个字节,是否为 0xAA55。如果是的,便把该扇区的 512 字节载入内存 0x7C00 处。以后的控制权,就交给了0x7C00 处。所谓的引导扇区,不过如此。这些设置,都是硬指标,没有讨价还价的余地。进入 0x7C00时,虽然只有512字节,但这并不妨碍构建 FAT12 格式的文件。方法如下:
org 0x7C00
jmp short l_start
nop
%include"fat12.s"
字节实在太少,所以只能完成寻找加载 loader 的工作。进入 loader 后,虽可以多做一些事情,但没有必要,只需进行一些简单必要的设置,作为跳板,跳入 kernel 即可。必要设置,主要是对 kernel 内存地址 sel:entry_point 的一个整理。kernel 是 elf 格式,可与 C 交互。
让我们跟着于渊的脚步,看看进入 C 的运行效果图吧。
按下键盘,会产生一个中断,最后一行即是。
完整代码,可到 x01.Lab.download 中下载。
最新文章
- COGS439. [网络流24题] 软件补丁
- Entity Framework Code First (七)空间数据类型 Spatial Data Types
- Visual Studio多版本进行切换的研究
- dp水题 序列问题 (9道)
- 【转载】LoadRunner11下载以及详细破解说明
- WP8.1 Study17:网络之后台下载/上传及HttpClient
- 关于phpmyadmin #1045无法登陆服务器的问题
- Linux 命令 - grep: 正则搜索文本
- zabbix oracle监控插件orabbix部署安装
- org.gradle.process.internal.ExecException:
- android select选择器 checkbox改外观,button按下状态
- JS中的内存泄漏
- 源码篇:SDWebImage
- java爬虫--jsoup简单的表单抓取案例
- Flutter数据库Sqflite之增删改查
- 【maven】maven命令 package、install、deploy 的区别
- Submine Text 快捷键
- 如何优雅的封装一个DOM事件库
- centos6,python3,通过pip安装pycurl出现报错提示
- 从刷票了解如何获得客户端IP
热门文章
- 网上图书商城2--Category模块
- 设置MySQL允许外网访问
- 过去几个月出炉的30款最喜欢的 jQuery 插件
- 【CSS3】 理解CSS3 transform中的Matrix(矩阵)
- Hybrid框架UI重构之路:四、分而治之
- jquery对象和DOM对象的互相转换
- 每日一博 | 用 Ionic2 创建 App 启动页滑动欢迎界面
- SharePoint 2013 报:网站在改进过程中处于只读状态,对此给您带来的不便,我们深表歉意
- 如何排查sharepoint2010用户配置文件同步服务启动问题
- MSCRM 2011/2013/2015 修改显示记录数