操作系统实验(2)—— Linux启动初始化过程设计探析实验
来源:http://www.tudoupe.com时间:2022-05-22
探索作为操作系统实验的Linux启动启动程序
文章目录
- Linux开始了绘图实验的启动阶段
- 一、 实验目的
- 二、 实验内容
- 三、 内核源码研读
- 三.1 负责启动程序的启动目录概览
- 3.2 BIOS启动准则
- 三靴.s 应用程序
- 3.3.1 诱杀树枝理由概述
- 资料来源:三、三、二靴。
- 三、四份申请安排
- 三、四、一设置的原因
- 资料来源:三、四、二个设置。
- 3.5个头的申请人
- 三.五.一头头的原因
- 3-5. 2 来源解释
- 三个启动进程概览
- 四、实验过程
- 1. 四项环境实验
- 四.一.1 虚拟机器建造
- 4.1.2 正在下载的实验环境和linux 0.11源代码
- 4.1.3 建立Linux0. 11所必要的实验环境
- 四.2 在Linux编制和委托使用核心代码
- 4.2.1 Makefile档案分析
- 四、二.2
- 启用linux内核4.2.3
- 4.2.4 测试和验证
- 五、实验心得
- 六、参考
Linux开始了绘图实验的启动阶段
一、 实验目的
调查、分析和理解基本操作;为操作系统提供程序,以便偶尔指导和重新启动操作系统。
二、 实验内容
实验大多完成如下:
- 下载和阅读Linux的核代号(这次实验是在Linux 0 (Video 11)上进行的)。
- 调查、分析和了解操作系统导向和自启动的基本程序。
- 完成并激活相关的 Linux 核核代码
- 然后把它放在虚拟平台上
以下是启动Linux启动进程的基本条件:
(1) 下载和阅读(任何版本的)Linux内核;
(2) 领导并启动操作系统的启动程序。检查 Linux 中的源代码( 包括编译代码、 C 程序、 Makefiles 和相关配置文件 ) 。安排操作系统的基本流程和设计机制(包括处理器板板上的相关和未连接的部件),以指导和自启动初始化,前者可针对x86体系结构或MIPS体系结构或arm64体系结构); (3)完成并激活相关的 Linux 核核代码;
(4) 激活虚拟平台上匹配的Linux内核,并对照启动时提供的系统信息验证自己的内核源分析结果。
三、 内核源码研读
三.1 负责启动程序的启动目录概览
以下是Linux核动力源档案的结构:

三个已编译的语言文件可以在“ 启动目录” 中找到 :
- 我不确定你在说什么 小鸡尾酒 软件是一个磁盘指南程序0(列),0(列),0磁头第1个扇区)。在个人电脑通过ROM BIOS进行自我审查之后,BIOS将被放入OC7CO0的内存,以便执行。
- 我不知道你们在忙些什么,坐着。 程序主要是用来阅读机器硬件配置设置, 并将内核模块系统传送到适当的内存地址。
- 嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿,嘿
三个文档是第一个在内核源文档中构建的文档。 这三个程序的主要功能是告诉内核在机器启用时启动, 将内核代码装入内存, 在进入32种受保护的操作模式之前完成基本系统初始化工作 。
对不起,Stup.S是一个16位数的程序 以物理模式运行以汇编者语言 as86 写成。汇编汇编了二进制文件和目标文件。还必须使用GNU来建造。使用的是AT&T格式的汇编语言, 编译之后只会生成对应的目标文件。具体文件如下:

3.2 BIOS启动准则
加电的一瞬间,电脑的内存什么都没有软盘包含一个操作系统应用程序 。然而,CPU的逻辑电路 完全是为了运行存储在记忆中的程序无法直接从软磁盘上执行操作系统 。如果您想要使用软盘运行操作系统,磁盘上的操作系统程序必须装入记录和档案管理。
Intel 80x86系列CPU可能以16位物理模式和32位保护模式运作。为了兼容,这是我第一次访问一个我曾经生活过的国家, 我一直在努力想怎么解决启动问题。英特尔的80x86系列 CPUs将全部提供。CPU, 甚至是最先进的CPU, 都打算被赋予动力, 即输入16位数的物理模式状态 。CPU硬件逻辑设计的目的是通过将 CS 和 IP 值设定为 0xFF0 来增加功率。CS: IP 指地址 0x# 0 的位置 。下图描述了启动期间的BIOS系统(在本案中是BIOS 8 KB)。地址部分为 0xFE00-0F) 内存状态和第一个执行位置:

BIOS 软件然后在 1KB 内存区( 0x00-0x003FF) 构建断开矢量表 。BIOS 数据部分( 0x00400-0x004FF) 设计时,其旁边有256字节的内存。在大约57 KB(0x0E05B)之后,与断开矢量表相对应的若干中断服务程序装入了大约8 KB 位置的约8 KB 位置。 KB (0x0E05B) 之后,与断开矢量表相对应的若干中断服务程序装入了大约8 KB 位置。下图准确地描述了这些地方:

操作系统11,Linux0。该机器将分三批装载操作系统内核代码。第一批BIOS的中断状态为0x19,将第1区块的内装物装入内存;第二批和第三批由靴子制导,第二和第三批正在重新装载第1区段的内装物。接下来四个部门以及240个部门的内容被载入记忆。从3.3节开始,将分别讨论启动和装载过程。
三靴.s 应用程序
3.3.1 诱杀树枝理由概述
软盘设定为启动设备 。计算机硬件系统的结构旨在与BIOS协同工作。它将允许CPU接受0x19的中断。CPU收到了这一中断。断开矢量表快速发现 0x19 断开矢量 。折断矢量将处理器引导到地址 0x0E6F2。这是 0x19 中断程序的条目地址 。整数 0x19 停止矢量方向的服务中断 。这篇文章是全球之声在线特稿的一部分。将 0 磁力驱动器第 1 扇区的内容转移到0 磁盘 0 号, 转到存储地址 0x07C00 。指导程序(Boutsequent)的目的是将操作系统程序保留在存储软盘上。第一个部门被称为开办部门。以下是将软盘第二批和第三批代码装入内存的布托昆虫执行过程。
资料来源:三、三、二靴。
我不知道你在说什么,小虫子。 这是申请说明:
三、四份申请安排
三、四、一设置的原因
接下来,由于操作系统,计算机可能以32位位保护模式运作。首先,解开系统插头, 并返回到存储地址 0x00 。将 0x100 启动的内核软件复制到 内存地址 0x00 。0x00地址以前载于BIOS中断矢量表和BIOS数据空间。BIOS 干扰矢量表和 BIOS 数据区域被此复制程序完全覆盖。使它们不复存在。这将是该国历史上第一次,直到新的破门入室服务系统的建设完成为止。操作系统不再能够应对和处理中断。设置仍在准备保护模式。这次,设置方案提供的数据信息被用于启动分解描述器登记册和全球描述器登记册(GDTR)。打开A20,实现32位寻址。进入保护模式后,我们做32位数的搜索这意味着该网址的所在地点有32条地址线。第21次(A20)到第32次地址线的控制显示位置搜索模式有变化。在保护模式下,必须建立一个中断机制。可编程断开控制器 8259A 将在设置期间重新编程 。
资料来源:三、四、二个设置。
我不知道你在说什么,坐下。
3.5个头的申请人
三.五.一头头的原因
从 Bootset 装入头程序的方式和设置不同 。鸡尾酒和装配是独立装配和运行的。然而,头部是第一个被汇编成目标代码的。要将 C 内核程序转换为目标代码,然后与系统模块连接。除了一些电话主机准备之外,主机程序还有很多工作要做。它还利用程序自己的代码,在程序的记忆空间内安装了内核页面断开机制。这就是建立一个网页清单、一个缓冲区、一个GDT和一个地址为0x00的IDT。覆盖由主程序运行的代码的内存区域这意味着主要方案已经放弃了自己。大事件即将开始。
3-5. 2 来源解释
三个启动进程概览
指导和启动进程分为两部分:第一部分是操作系统的加载,第二部分是准备以32比特的保护、逐页方式执行主要功能。我们先通过BIOS把文件装进记忆中Bootset 软件然后加载设置和系统文件 。操作系统软件的装货工作现已完成。随后,将配置IDT、GDT、页表、页表和机器系统数据。准备以32个受保护的页逐页模式执行主功能。最后,直接跳转到主函数执行条目,主要功能已经开始。
四、实验过程
1. 四项环境实验
四.一.1 虚拟机器建造
第一步是在Vmware工作站04 (32个地点)创建虚拟 Ubuntu16。
https://releases.org.Oh、ubuntu、ubuntu、ubuntu、ubuntu、ubuntu、ubuntu、ubuntu、ubuntu、ubuntu、ubuntu、ubuntu、ubuntu、ubuntu、ubuntu、ubuntu、ubuntu、ubuntu、ubuntu、ubuntu
[外国连锁照片传送失败;发端站可能使用隐形链机制;照片(img-7RaylB9-1652109696007)应保存下来,用于直接上传(C:userspyAppDataRoamingTyporatopora-user-imageimage-2022005160753271)。 [Png, png, png, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng)
4.1.2 正在下载的实验环境和linux 0.11源代码
设置。 sh:
Labenv 本地文件夹( 包含脚本和其他已安装的文件, 如 Gcc3.4.1、 linux0. 11、 boch 和 hdc 图像)
要完成 Ubuntu16, 使用 ssh 在 04 和主机 Win10 之间传输文件, 然后安装 ssh- server, 命令如下:
然后用命令ifconfig检查 Ubuntu 的 IP 地址
[外链相光传输失败; 发端站可能使用隐形链机制; 保存图像以直接上传( img- HZSYPHQn- 165110969608) (C: UserspyPictures Mic- letter Intercrection_ 2022020202030184100)。 [Png, png, png, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng, peng)
然后由 Xftp 使用 ssh 链接, Ubuntu 的登录和密码以及 IP 地址 。
然后可以通过直接拖曳鼠标来完成上传 。
4.1.3 建立Linux0. 11所必要的实验环境
首先,导航到/Labenv/zyw-oslab并运行设置脚本。
如果直接执行./setup.sh因为没有足够的暗示,你必须逃离。chmod 777 ./setup.sh为了提高文件的权威,再次执行。ls程序将定位设置. sh。 文档将变成绿色, 显示它是一个可执行的文档。 然后脚本文件应该重新执行 。/os/hit-oslab目录下输入命令./setup.sh特别是设置的脚本得到了有效执行,如下图所示。
四.2 在Linux编制和委托使用核心代码
4.2.1 Makefile档案分析
cdMakefile 文件的主要工作是告诉 Make 程序最终连接并合并所有内核代码编译成可运行的内核图像文件, 使用独立版本的列表/ dir 中的构建执行器 。特别是,在Boot/Bootsect. No, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s,生成了单独的执行模块。GNU 构建器 gcc/gas 用于汇编源代码中所有其他程序。并连接到模块系统最后,利用建筑工具,将三个要素组装成内核图像文件图像。我敢肯定,这是获得工作的最佳方法, 但我不认为这是。 c 由源软件产生的一个单独的执行程序,它从未被编成内核代码以下图像描绘了一个基本的编译连接/组合结构。

以下是对具体文件编码的分析:
四、二.2
上述设置.Sh 脚本在源目录中创建 ZYWoslab 文件夹, 然后在 ZYWoslab 文件夹中输入 linux-0, 并在此目录下使用 。make命令进行编译:

如下图所示,经过一段时间后,汇编工作取得了成功:

启用linux内核4.2.3
返回上一个关卡目录的权限,修改运行的文件,然后导航到 bochs 文件夹,以修改 bochs- gdb 文件夹的权限。

运行运行文件后, 终端会显示以下信息 :

Bochs 接口也被弹出, " 加载系统 " 是Bootsectrect 在加载系统时生成的提示。 我们会证明存在一个系统, 空内存容量为 12582912 字节 。

输入ls如下图所示,汇编工作取得了成功。

4.2.4 测试和验证
改写bootsect.s完成以下任务:s can 打印屏幕上的提示信息Hello OS world,my name is ZYW
起初,我们将修改 靴子昆虫。 S 文件:
然后从终端进入~/ZYWoslab/linux-0.11/boot/然后用以下两个订单构建和连接内容。
如果这些订单都没有产生任何产出,则指示已经建立和连接。ls -l可列出下面的信息:

Beotect 的文件大小为 544 字节 。申请必须充分利用磁盘部门。这相当于512字节。添加32字节是因为 Id86 生成了 Minix 可执行文件格式, 这是“ Mineix 可执行文件” 的结果 。除文本段落外,可在互联网上获取可执行文件、数据段等。也包含一个 Minix 可执行的头条标题 。因此,Boottosk 文件的初始字节必须是01 03 10 04Ubuntu使用命令来核查。hexdump -C bootsect可以看到:

然后使用命令dd bs=1 if=bootsect of=Image skip=32我要放下这个32字节的文件头。 删除32字节的文件头, 并将创建的文件放到 Linux-0.11 的目录, 它必须命名为“ 图像 ” 。
在现阶段,各小区已经取得了成功。Hello OS world,my name is ZYW

五、实验心得
经过挖掘,我现在明白了Linux内核是如何发射的。在研究基于Linux的核动力源代码的过程中,计算机的基本结构和概念也得到充分理解。例如,教师在课程中讨论了真正的保护模式。当时这些概念很模糊。然而,通过调查Linux在启动阶段从真正的模型转变为受保护模型的情况,这两种模式之间的区别更为明显。有几种方式可以中断两种模式。在Bootect的研究过程中我尊重操作系统的设计师它们与记忆规划有许多关系,因为它们以一种非常完整和全面的方法来思考。记忆规划设计得当。我现在正在阅读设置。 S -程序。我认为将系统模块复制到 0x00 动作的概念非常巧妙。它取消了 BIOS 的矢量截止列表 。16点暂停制度已经取消。提供了为32位数操作系统建立中断机制的技术。初始化也通过配置中断的描述性保存者和全球描述性保存者(GDTR)来实现。它还提高了对教师课堂上提供的描述性表格的理解。
Linux0 的代码大小小于前面版本的代码大小 。易于入门学习,然而,在我的研究中,我遇到了一些难以理解的领域。进入紧急状态不仅仅是时间问题,而只是时间问题。得以一点点的理解,程序是烦琐的。但同时也收获颇丰。最后,通过改写一些脚本和例行程序,然后编译和启动,最终验证成功,我精通这个领域的技能改进对源代码的理解。
六、参考
【1】https://www.lanqiao.cn/courses/115
[2] Linux核心设计艺术:绘制Linux操作系统设计与实施框架图(第2版)
[3] 全部Linux内核评论。
上一篇:b150主板安装
下一篇:安装win10无法进入bios
相关新闻
- 2023-05-07 u盘启动盘制作向导(如何制作u盘启
- 2023-05-07 小白u盘启动盘软件下载(u盘启动盘
- 2023-05-07 u盘启动盘里的iso文件需要解压(is
- 2023-05-07 k555lu盘启动盘(u盘启动盘怎么进入
- 2023-05-07 u盘启动盘cmos(U盘启动盘装系统)
- 2023-05-07 电脑pe制作u盘启动盘(微pe制作u盘启
- 2023-05-07 u盘启动盘改ntfs格式化吗(u盘格式化
- 2023-05-07 深度装机大师恢复u盘启动盘(深度装
- 2023-05-07 win7系统制作到u盘启动盘(如何制作
- 2023-05-06 u盘启动盘制作工具efi(U盘启动盘制
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
