linux0.11简单内核的启动过程(第一篇)

在这里运行环境我就不多说了,我自己是在bochs上面试调的,(文章主要用来记录学习过程,不提供源码,许多源码网上都有)

在这里我笔记一个定义  : GRUB的全称是GRand Unified Bootloader,是一个多重操作系统启动管理器,用来 引导不同的操作系统。

1.裸机上去运行一句hello kernel  需要的最简单文件

1111

   boot  文件夹下是一个boot.s文件           代码从这里开始,里面包含了start函数,告诉了ld连接器这个文件里面包含了入口函数

  include 文件夹下是一个types.h文件      这里面试头文件和一些类型的重定义

   init  文件夹下是一个entry.c文件             这里个文件时C语言实现的内核入口函数

  scripts文件夹下是一个kernel.ld 文件     这个文件是项目初步采用的连接器脚本定义,这个感觉是在make过程中用到了,就是说告诉ld程序如何构造我们所需要的内 核镜像文件,通过查资料它对连接器是这么解释的:

 

111

试调结果为

888

      自己感觉这里试通过start函数找到了init中的内核入口函数,显示的hello kernel, 而且types.h 文件在entry.c的头文件中

2.控制屏幕输出内容

                首先我们要知道显卡(显示内容存储和显示控制单元)和显示器,再就是字符的编码的种类,字符编码的种类有3种:输入码,   内码,字模码。

  字模码 :定义一个字符在屏幕上显示的坐标位置

  内码    : 定义字符在内存中的存储形式,大家都知道的ASCII码就是        输入码:顾名思义

 这部分比上面多了4个文件 ,

  分别是drivers文件夹下的console.c    libs下的common.c 和 include下的common.h和console.h

   1111

     common.c :文件是用来定义几个端口读写函数的以用来方便读写某个端口

     console.c :文件是定义显卡存储的起始位置和当前输出的屏幕位置的变量定义,我自己理解为分屏幕的函数把屏幕用坐标分成80*25个格子,每个格子有两部分组成(2个字节每个字节8位,前8位是存储内容,后8位的前4位是背景色后四位前景色)。

     common.hconsole.h都是函数声明的一些头文件

试调结果为

555

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值