您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 操作系统构成实验(使用U盘启动计算机)
目录1.课程设计实习目的.......................................................12.准备知识...............................................................12.1Linux操作系统的启动流程..........................................12.2开机载入程序——GRUB2.............................................12.3Linux根文件系统简介..............................................32.4BusyBox介绍......................................................43.实习内容..............................................................44.实习指导..............................................................44.1实验设计思想......................................................54.2配置新内核bzImage.................................................54.3制作启动盘(boot盘)..............................................74.4制作根文件系统盘(RootFilesystem盘)............................94.5系统整合.........................................................134.6系统测试.........................................................135.习题练习.............................................................136.小组成员负责项目及参考文献...........................................13操作系统构成实验报告11.课程设计实习目的一.了解一个操作系统的基本组成部件二.掌握Linux操作系统的基本操作三.构造一个微型Linux操作系统2.准备知识2.1Linux操作系统的启动流程一个Boot/Root盘实际上是一个完整系统的缩影,基本上是放于一张U盘上的一个小型而自给自足的Linux系统,它能够执行一个完整系统的大部分功能。故在制作Boot/Root盘之前,你应该了解基本的Linux启动流程。开机后,系统执行存放在ROM中的BIOS程序,然后根据的设置BIOS决定是从硬盘还是软盘启动。若是从硬盘启动,则读入0柱面0磁头1扇区的MBR,引导系统的执行。一般在LinuxOS中启动盘的0柱面0磁头1扇区中装的是启动装载器GRUB2,它定位内核并装载内核,最后执行内核。如果GRUB2装在MBR(MasterBootRecord),则先由BIOS把GRUB2代码调入内存,然后跳转执行GRUB2,再装载执行内核,即:BIOS-GRUB2(在MBR中)-KERNEL;一旦内核装载完毕后,开始初始化系统所有硬件设备,当硬件设备初始化完成后,启动过程会就此停止而等待根文件系统的装载。接着,系统在RootFilesystem上找到init程序并执行它,init程序寻找它的配置文/etc/inittab,并开始执行其中的脚本,这些脚本是一些SHELL命令的组合,用来执行下面一些命令,如加载所需的模块、装载SWAP、初始化网络、装载fstab中列出的所有驱动器等,至此,系统启动流程完毕2.2开机载入程序——GRUB2GRUB2是一个在Linux环境下编写的引导安装(BootLoader)程序(故其安装和配置都要在Linux下进行),其主要功能是引导LinuxOS的启动。GRUB不仅可作为Linux分区的引导扇区内的启动程序,而且可放入MBR中完全控制BootLoader的全过程。新布局GRUBlegacy版本将文件放置在/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/:操作系统构成实验报告2/etc/grub.d/目录示例我们来看一下这些脚本:00_header是从/etc/default/grub中加载GRUB设置的脚本,包括超时、默认启动项和其他。我们会稍侯了解更多。05_debian_theme定义背景、颜色和主题。这个脚本的名字很明确将会改掉当别的版本采用GRUB的时候。10_linux为已经安装的发行版加载菜单项。20_memtest86+加载memtest(内存测试)功能30_os-prober这个脚本将会扫描硬盘上的其他操作系统并且添加到启动菜单。40_custom是一个您可以用来创建新加的条目到菜单的模板。/etc/default/grub目录示例文件位于:/etc/default/目录下操作系统构成实验报告3这个目录包含很多其他文件所以不要以为仅仅被GRUB使用。grub文件是一个被00_header脚本解析的文本文件。注:脚本语言(Scriptlanguage)是为了缩短传统的编写-编译-链接-运行(edit-compile-link-run)过程而创建的计算机编程语言。早期的脚本语言经常被称为批量处理语言或工作控制语言。一个脚本通常是解释运行而非编译。脚本语言通常都有简单、易学、易用的特性,目的就是希望能让程序员快速完成程序的编写工作。而宏语言则可视为脚本语言的分支,两者也有实质上的相同之处。脚本语言通常以文本(如ASCII)保存,只在被调用时进行解释。许多脚本语言用来执行一次性任务,尤其是系统管理方面。它可以把服务组件粘合起来,因此被广泛用于GUI创建或者命令行,操作系统通常提供一些默认的脚本语言,即通常所谓shell脚本语言。在许多方面,高级编程语言和脚本语言之间互相交叉,二者之间没有明确的界限。脚本简单地说就是一条条的文字命令,这些文字命令是可以看到的(如可以用记事本打开查看、编辑),脚本程序在执行时,是由系统的一个解释器,将其一条条的翻译成机器可识别的指令,并按程序顺序执行。因为脚本在执行时多了一道翻译的过程,所以它比二进制程序执行效率要稍低一些。2.3Linux根文件系统简介RootFilesystem必须包含支持完整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文件的操作系统构成实验报告4Ramdisk。2.4BusyBox介绍busybox是一个集成了一百多个最常用linux命令和工具的软件,他甚至还集成了一个http服务器和一个telnet服务器,而所有这一切功能却只有区区1M左右的大小.我们平时用的那些linux命令就好比是分立式的电子元件,而busybox就好比是一个集成电路,把常用的工具和命令集成压缩在一个可执行文件里,功能基本不变,而大小却小很多倍,在嵌入式linux应用中,busybox有非常广的应用,另外,大多数linux发行版的安装程序中都有busybox的身影,安装linux的时候按ctrl+alt+F2就能得到一个控制台,而这个控制台中的所有命令都是指向busybox的链接。Busybox的小身材大作用的特性,给制作一张软盘的linux带来了及大方便。BusyBox被称作“TheSwissArmyKnifeofEmbeddedLinux”,它仅仅用一个可执行文件就可以提供一个基本的Linux操作系统所需的常用命令。不但体积小,配置起来也方便,只需很少的配置文件即可以运行。一个由BusyBox构成的Linux操作系统加上内核完全可以做到只占用2、3M空间,甚至可以更小。BusyBox是Linux下的一个开放源代码软件,编译的时候需要gcc和glibc的支持,也可以用uClibc代替glibc。注:glibc是gnu发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。3.实习内容一.通过实验平台提供的Linux操作系统中的make工具重新配置新内核,要求所配置的内核尽量小。二.制作一张启动盘(BootDisk)。要求将该启动盘放于一张U盘上,用GRUB2引导程序引导,其引导内核为上面新配置的内核,同时考虑将它所引导的根文件系统(RootFilesystem)放于同一U盘上。三.制作一张根文件系统盘(RootFilesystemDisk)。要求该启动盘也能放于同一张U盘上,并能通过上面做成的启动盘成功引导并进入系统,从而得到一个微型的Linux操作系统。4.实习指导一.实验流程操作系统的设计本身是一个非常复杂和困难的工作,本实验参考Linux操作系统的启动流程和内核架构,按照如下流程实现了小型操作系统的设计:1.BootLoader程序的选择2.配置新内核3.制作启动盘4.制作根文件系统盘5.系统测试通过本实验,实验者一定会对“操作系统构成”有一个全新的了解和整体概念,进而加深对操作系统的理解。二.开机引导程序的选择一般来说,一个操作系统都有一个开机引导程序,当然Linux操作系统也不例外。不过Linux操作系统构成实验报告5操作系统的引导工具很多,比如LOADLIN、SYSLINUX、LILO、GRUB等,我们为什么要选择GRUB呢?通过以下比较,就可以知道原因了。我们可以用LOADLIN从MS-DOS引导Linux。但不幸的是,它需要在MS-DOS分区中有一份Linux内核的拷贝(如果计算机有SCSI适配器,还需要一个初始的RAM盘)。若一定要用LOADLIN,可以从
本文标题:操作系统构成实验(使用U盘启动计算机)
链接地址:https://www.777doc.com/doc-3696112 .html