随笔分类 - OS开发笔记
改造和开发我自己的OS过程中写的笔记
摘要:前言 读完grub-install的代码发现grub安装的核心部分还是在于grub-bios-setup,grub-mkimage仅仅是用于生成core.img所以可以直接使用,而grub-bios-setup则是只能操作设备所以需要被“取缔” grub启动的流程 grub的启动有三个部分: 第一部
阅读全文
摘要:前言 由于安装grub到虚拟磁盘需要挂载,而挂载需要root权限,而且windows下也用不了(虽然我自己都不用Windows安装),所以我打算研究一下grub-install的代码,自己做一个简易的脚本来作为替代。 代码 读完之后再看,发现grub-install只是做了一些识别设备信息并匹配设置
阅读全文
摘要:GRUB如何突破实模式的限制 BIOS与MBR引导机制 BIOS会在启动时,检查逻辑0扇区(即硬盘的第一个扇区)的结尾是否存在标志 0x55, 0xaa,以此判断该扇区是否可引导。按照传统的MBR(Master Boot Record)引导流程,逻辑0扇区包含一个特殊的引导程序。这个程序的任务是检查
阅读全文
摘要:本文记录了我在设计通用引导程序过程中的思考与实践。从背景出发,分析了传统引导程序依赖软盘启动的局限性,并通过研究IBM BIOS文档发现了设备号保存在DL寄存器中的关键依据。基于此,我设计了一种兼容软盘和硬盘的引导程序,支持标准CHS寻址和扩展LBA读取模式。
引导程序的核心思路包括:
保存设备号以实现跨设备兼容。
分区表解析与FAT文件系统支持,确保灵活加载内核文件。
优化内核加载流程,使内核大小可动态调整,并适配文件管理系统的修改。
通过QEMU+GDB调试,我验证了BIOS中INT 19引导规范的实际表现,并在程序中避免了16位模式寻址范围的限制。然而,在进一步扩展时因误操作遗失部分代码,但整体设计框架得以保留,为后续优化提供了参考基础。
阅读全文