随笔分类 -  make a os

记录制作OS的历程
内核引导的捷径(grub2安装到U盘,虚拟镜像等方法)
摘要:对于之前我们制作好的内核文件,我们还需要下面三个步骤一:制作镜像二.安装grub2三.启动这里不描述U盘如何安装了,如果你能掌握制作虚拟镜像的方法,自然U盘不在话下了,只需修改一下有些步骤即可完成了.这里所有的步骤都是在UBUNTU 下完成的,其他linux命令稍有不同,本人没有安装其他版本的linux 也就没有实验过,不过你可以参考我的思路,然后修改修改命令,你的制作文档就完成了.一 制作虚拟设备镜像,这里我们模拟一个U盘1 产生虚拟镜像方法一:DD工具创建镜像 dd if=/dev/zero bs=512 count=20480 of=a.img*方法二:(需要安装BOCHS,当然还有各种 阅读全文

posted @ 2014-04-11 11:37 敷衍。 阅读(2288) 评论(0) 推荐(0)

内核引导的捷径(代码)
摘要:上一篇讲完简述了利用grub内核引导的流程.下面就是代码时间了.首先来看boot.S,规范上提供了范例代码,这里用NASM语法改写global loader ; making entry point visible to linkerextern kmain ; 这是kernel的入口函数 global start,_start ;默认的链接入口地址 MODULEALIGN equ 1<<0 ; align loaded modules on page boundaries... 阅读全文

posted @ 2014-04-11 11:10 敷衍。 阅读(437) 评论(0) 推荐(0)

内核引导的捷径(准备工作)
摘要:在制作操作系统的过程中,首先的第一步就是要加载内核,但是加载内核又涉及到一个很长的话题. 曾经做过一个FAT32文件系统下加载内核的一整段汇编代码,感觉到这样写代码万分有压力,而且这方面的东西,太过底层,甚至上说和操作系统没有什么直接的关系. 所以,为了简化这步骤,我们利用上一个很强大的加载器,grub2. 如何用grub2等引导程序去引导我们制作的内核呢? 这里给出一个答案:我们必须受到一些约束才能完成这些工作,关于这个约束就是multiboot规范(当然还有别的解决办法) 接下来,我们开始用grub2+multiboot来引导我们的简易操作系统内核. 首先,还是介绍一下大致... 阅读全文

posted @ 2014-04-10 23:32 敷衍。 阅读(452) 评论(0) 推荐(0)

ubuntu 12.04 13.04 下安装BOCHS注意事项
摘要:这些是必须要用的环境。sudo apt-get install build-essentialsudo apt-get install g++sudo apt-get install libgtk2.0-dev安装命令$tar-vxzf bochs-2.6.2tar.gz$cd bochs-2.6.2$./configure --enable-debugger --enable-disasm$make$sudo make install错误:checking for default gui on this platform... x11 ERROR: X windows gui was sel 阅读全文

posted @ 2013-08-12 16:41 敷衍。 阅读(529) 评论(0) 推荐(0)

fat32 中加载LOADER
摘要:为了简洁起见,FAT32的内容 可以参考 数据重现 该书 介绍FAT32的内容,下面只说对FAT32的应用现在,跳入做U盘引导正题 ,就是讲分区格式化为FAT32文件系统先看看 大致 FAT32结构保留区中 第0号扇区是DBR扇区(FAT32的dbr不只只有1个扇区 )数据区的 数据按簇存放,不满一个簇就按簇存放,大于一个簇分多个簇存放。簇号从2簇开始(不是0簇) 而且从数据区开始才以簇描述数据块,之前的描述按扇区来讲。FAT表: FAT表 按每个簇号 32bit,4字节,存放的是改簇号的下一簇地址 第0,1号记录不用 从二号开始用。也和数据区从2号簇开始对应根目录:存放在数据区的第二簇中,如 阅读全文

posted @ 2013-08-04 16:51 敷衍。 阅读(278) 评论(0) 推荐(0)

用u盘 建立引导盘 想法。
摘要:用软盘引导操作系统貌似比较老,现在已经没有软盘了,作为实机实验操作系统,应该用U盘比较稳妥。话说软盘 格式为FAT12 ,而U盘的主流分区大多分为FAT32。所以二话不说就应该研究FAT32,正好可以结合FAT12一同学习。先回顾一下 详细的硬盘开机流程:1、 BIOS加电自检(POST)2、 将硬盘第一个扇区(0头0道1扇区,也就是Boot Sector)读入内存地址0000:7c00处;3、 检查0000:7dfe是否等于0xaa55.(即Boot Sector 的最后一个字节)若不等于则转去尝试其他介质; 如果没有其他启动介质,则显示 ”No ROM BASIC” ,然后死机;4、 跳. 阅读全文

posted @ 2013-08-04 16:01 敷衍。 阅读(377) 评论(0) 推荐(0)