操作系统实战45讲
彭东
网名 LMOS,Intel 傲腾项目关键开发者
新⼈⾸单¥59.9
7354 人已学习
课程目录
已更新 11 讲 / 共 45 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 为什么要学写一个操作系统?
免费
尝尝鲜:从一个Hello到另一个Hello (2讲)
01 | 程序的运行过程:从代码到机器运行
02 | 几行汇编几行C:实现一个最简单的内核
心有蓝图:设计 (2讲)
03 | 黑盒之中有什么:内核结构与设计
04 | 震撼的Linux全景图:业界成熟的内核架构长什么样?
程序的基石:硬件 (3讲)
05 | CPU工作模式:执行程序的三种模式
06 | 虚幻与真实:程序中的地址如何转换?
07 | Cache与内存:程序放在哪儿?
基本法:同步原语 (2讲)
08 | 锁:并发操作中,解决数据同步的四种方法
09 | 瞧一瞧Linux:Linux的自旋锁和信号量如何实现?
夺权:启动初始化 (1讲)
10 | 设置工作模式与环境(上):建立计算机
操作系统实战45讲
15
15
1.0x
00:00/00:00
登录|注册

10 | 设置工作模式与环境(上):建立计算机

LMOS 2021-05-31
你好,我是 LMOS。
经过前面那么多课程的准备,现在我们距离把我们自己操作系统跑起来,已经是一步之遥了。现在,你是不是很兴奋,很激动?有这些情绪说明你是喜欢这门课程的。
接下来的三节课,我们会一起完成一个壮举,从 GRUB 老大哥手中接过权柄,让计算机回归到我们的革命路线上来,为我们之后的开发自己的操作系统做好准备。
具体我是这样来安排的,今天这节课,我们先来搭好操作系统的测试环境。第二节课,我们一起实现一个初始化环境的组件——二级引导器,让它真正继承 GRUB 权力。第三节课,我们正式攻下初始化的第一个山头,对硬件抽象层进行初始化。
好,让我们正式开始今天的学习。首先我们来解决内核文件封装的问题,然后动手一步步建好虚拟机和生产虚拟硬盘。课程配套代码你可以在这里下载。

从内核映像格式说起

我们都知道,一个内核工程肯定有多个文件组成,为了不让 GRUB 老哥加载多个文件,因疲劳过度而产生问题,我们决定让 GRUB 只加载一个文件。
但是要把多个文件变成一个文件就需要封装,即把多个文件组装在一起形成一个文件。这个文件我们称为内核映像文件,其中包含二级引导器的模块,内核模块,图片和字库文件。为了这映像文件能被 GRUB 加载,并让它自身能够解析其中的内容,我们就要定义好具体的格式。如下图所示。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《操作系统实战45讲》,如需阅读全部文章,
请订阅文章所属专栏新⼈⾸单¥59.9
立即订阅
登录 后留言

精选留言(3)

  • pedro
    一大早起来第一件事就是看专栏!
    今天专栏实操性是很强的,容易上手,产生成就感。
    我昨天就clone代码跑起来了,对于virtualbox大家如果觉得命令行难用,可以直接打开界面点击按钮新建虚拟机,对于追求geek的人,命令行还是得来一次。
    思考题:
    通过dd产生的文件为什么要格式化为文件系统呢,文中已经提到了,我们需要向虚拟硬盘中挂载boot目录和grub,而这种mount操作是建立在文件系统的基础上的,而块设备是不支持的。
    2021-05-31
    4
  • springXu
    这节课是环境搭建的操作步骤,还没开始真正的动手写代码的要求。
    这些操作首先生成内核文件kernel.img文件,这个文件应该是启动的文件。猜测把这个改成HelloOS.eki文件放到grub配置的目录下,不会出现not found的提示。至于显示什么操作就知道了。
    二级引导器应该是initldrimh.bin文件的内容。 这部分内容估计是下节课要讲节的内容吧。 三个文件,一个汇编文件用于生成grub格式的头文件,两个.c的文件。 周三继续听下文播讲。
    为什么用ext4是为了grub读取的支持?又或者cosmos系统支持ext4的文件系统?
    2021-05-31
    3
  • Json
    同学们,宿主机是windows咋办?不想整套娃。。。
    2021-05-31
    1
收起评论
3
返回
顶部