目录
1.课程设计实习目的 (1)
2.准备知识 (1)
2.2开机载入程序——GRUB2 (1)
2.3 Linux根文件系统简介 (3)
2.4 BusyBox介绍 (4)
3. 实习内容 (4)
4. 实习指导 (4)
4.1实验设计思想 (5)
4.2配置新内核bzImage (5)
4.3制作启动盘(boot盘) (7)
4.4制作根文件系统盘(Root Filesystem 盘) (9)
4.5系统整合 (13)
4.6系统测试 (13)
5. 习题练习 (13)
6. 小组成员负责项目及参考文献 (13)
1.课程设计实习目的
一.了解一个操作系统的基本组成部件
二.掌握Linux 操作系统的基本操作
三.构造一个微型Linux 操作系统
2.准备知识
2.1 Linux操作系统的启动流程
一个Boot/Root 盘实际上是一个完整系统的缩影,基本上是放于一张U盘上的一个小型而自给自足的Linux 系统,它能够执行一个完整系统的大部分功能。故在制作Boot/Root 盘之前,你应该了解基本的Linux 启动流程。
开机后,系统执行存放在ROM 中的BIOS 程序,然后根据的设置BIOS 决定是从硬盘还是软盘启动。若是从硬盘启动,则读入0 柱面0 磁头1 扇区的MBR,引导系统的执行。一般在Linux OS 中启动盘的0 柱面0 磁头1 扇区中装的是启动装载器GRUB2,它定位内核并装载内核,最后执行内核。如果GRUB2装在MBR(Master Boot Record),则先由BIOS 把GRUB2代码调入内存,然后跳转执行GRUB2,再装载执行内核,即:BIOS -> GRUB2(在MBR中)-> KERNEL;一旦内核装载完毕后,开始初始化系统所有硬件设备,当硬件设备初始化完成后,启动过程会就此停止而等待根文件系统的装载。
接着,系统在Root Filesystem 上到init 程序并执行它,init 程序寻它的配置文/etc/inittab,并开始执行其中的脚本,这些脚本是一些SHELL 命令的组合,用来执行下面一些命令,如加载所需的模块、装载SWAP、初始化网络、装载fstab 中列出的所有驱动器等,
至此,系统启动流程完毕
2.2开机载入程序——GRUB2
GRUB2是一个在Linux 环境下编写的引导安装(Boot Loader)程序(故其安装和配置都要在Linux 下进行),其主要功能是引导Linux OS 的启动。GRUB 不仅可作为Linux 分区的引导扇区内的启动程序,而且可放入MBR 中完全控制Boot Loader 的全过程。
新布局
GRUB legacy版本将文件放置在/boot/grub/目录下,包括在启动过程中读取并显示内容给用户的menu.lst文件。GRUB2将文件主要放在三个地方:
(1)/boot/grub/grub.cfg --这是替代menu.lst的主要配置文件。不像menu.lst那样,grub.cfg不能手动更改!我强烈建议不要尝试干预这个文件,无论是使用chattr命令或者其他。由他去就行。
(2)/etc/grub.d/ --这个新文件夹包含GRUB脚本。这些文件是创建grub.cfg文件的基础。当相关的GRUB命令执行以后,这些脚本以某个特定的顺序被读取并且创建grub.cfg文件。
(3)/etc/default/grub --这个文件包含GRUB脚本读取并且写入grub.cfg文件的GRUB菜单。它是GRUB的定制部分,类似于老的menu.lst文件,实际启动项目除外。这意味着,如果您想改变GRUB菜单,您将必须编辑已经存在的脚本或者创建新的脚本,然后更新菜单。相比老的GRUB,这更类似于LILO,LILO允许在运行中编辑菜单。
Grub.cfg文件实例
文件位于:/boot/grub/:
/etc/grub.d/ 目录示例
我们来看一下这些脚本:
00_header是从/etc/default/grub中加载GRUB设置的脚本,包括超时、默认启动项和其他。我们会稍侯了解更多。
05_debian_theme定义背景、颜和主题。这个脚本的名字很明确将会改掉当别的版本采用GRUB的时候。
如何设置u盘启动10_linux 为已经安装的发行版加载菜单项。
20_memtest86+ 加载memtest(内存测试)功能
30_os-prober 这个脚本将会扫描硬盘上的其他操作系统并且添加到启动菜单。
40_custom 是一个您可以用来创建新加的条目到菜单的模板。
/etc/default/grub目录示例
文件位于:/etc/default/目录下
这个目录包含很多其他文件所以不要以为仅仅被GRUB使用。grub文件是一个被00_header脚本解析的文
本文件。
注:脚本语言(Script language)是为了缩短传统的编写-编译-链接-运行(edit-compile-link-run)过程而创建的计算机编程语言。早期的脚本语言经常被称为批量处理语言或工作控制语言。一个脚本通常是解释运行而非编译。脚本语言通常都有简单、易学、易用的特性,目的就是希望能让程序员快速完成程序的编写工作。而宏语言则可视为脚本语言的分支,两者也有实质上的相同之处。
脚本语言通常以文本(如ASCII)保存,只在被调用时进行解释。
许多脚本语言用来执行一次性任务,尤其是系统管理方面。它可以把服务组件粘合起来,因此被广泛用于GUI创建或者命令行,操作系统通常提供一些默认的脚本语言,即通常所谓shell脚本语言。
在许多方面,高级编程语言和脚本语言之间互相交叉,二者之间没有明确的界限。
脚本简单地说就是一条条的文字命令,这些文字命令是可以看到的(如可以用记事本打开查看、编辑),脚本程序在执行时,是由系统的一个解释器,将其一条条的翻译成机器可识别的指令,并按程序顺序执行。因为脚本在执行时多了一道翻译的过程,所以它比二进制程序执行效率要稍低一些。
2.3Linux根文件系统简介
Root Filesystem 必须包含支持完整Linux 系统运行所需要的每一个项目,为此它必须至少包
括能让Linux 系统运行的最起码需求(即基本的文件系统构架,其它需求可在系统运行时或系统
运行之后动态加载):
1.最起码的目录:/dev,/bin,/sbin,/etc,/usr;
2.最基本的命令文件:ash(或bash 等,shell 是必不可少的),cp,rm,ls,mkdir,cd;
3.最起码的配置文件:rc,inittab,etc.;
4.最起码的设备文件:/dev/fd0,/dev/tty*,/dev/hd*,console,/dev/ram0,etc.;
上述文件大小远远小于4M,所用U盘大小为1G。
当用U盘启动时,文件自己先解压到内存中,形成一个虚拟启动盘(Ramdisk),通过Ramdisk
来控制启动。因此,为了能够创建以上的根文件系统,必须有一个空闲的能放下约4M 文件的
Ramdisk。
2.4BusyBox介绍
busybox 是一个集成了一百多个最常用linux命令和工具的软件,他甚至还集成了一个http服务器和一个telnet服务器,而所有这一切功能却只有区区1M左右的大小.我们平时用的那些linux命令就好比是分立式的电子元件,而busybox就好比是一个集成电路,把常用的工具和命令集成压缩在一个可执行文件里,功能基本不变,而大小却小很多倍,在嵌入式linux应用中,busybox有非常广的应用,另外,大多数linux发行版的安装程序中都有 busybox的身影,安装linux的时候按ctrl+alt+F2就能得到一个控制台,而这个控制台中的所有命令都是指向busybox的链接。Busybox的小身材大作用的特性,给制作一张软盘的linux带来了及大方便。BusyBox 被称作“The Swiss Army Knife of Embedded Linux”,它仅仅用一个可执行文件就可以提供一个基本的 Linux 操作系统所需的常用命令。不但体积小,配置起来也方便,只需很少的配置文件即可以运行。一个由 BusyBox 构成的 Linux 操作系统加上内核完全可以做到只占用 2、3M 空间,甚至可以更小。
BusyBox 是 Linux 下的一个开放源代码软件,编译的时候需要 gcc 和 glibc 的支持,也可以用 uClibc 代替 glibc。
注:glibc是gnu发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依
赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。
3. 实习内容
一.通过实验平台提供的Linux 操作系统中的make 工具重新配置新内核,要求所配置的内核尽量小。
二.制作一张启动盘(Boot Disk)。要求将该启动盘放于一张U盘上,用GRUB2引导程序引导,其引导内核为上面新配置的内核,同时考虑将它所引导的根文件系统(Root Filesystem)放于同一U盘上。
三.制作一张根文件系统盘(Root Filesystem Disk)。要求该启动盘也能放于同一张U盘上,并能通过上面做成的启动盘成功引导并进入系统,从而得到一个微型的Linux 操作系统。
4. 实习指导
一.实验流程
操作系统的设计本身是一个非常复杂和困难的工作,本实验参考Linux 操作系统的启动流程和内核架构,按照如下流程实现了小型操作系统的设计:
1.Boot Loader 程序的选择
2.配置新内核
3.制作启动盘
4.制作根文件系统盘
5.系统测试
通过本实验,实验者一定会对“操作系统构成”有一个全新的了解和整体概念,进而加深对操作系统的理解。
二.开机引导程序的选择
一般来说,一个操作系统都有一个开机引导程序,当然Linux 操作系统也不例外。不过Linux
发布评论