linux考试复习.docx
- 文档编号:2248943
- 上传时间:2022-10-28
- 格式:DOCX
- 页数:13
- 大小:769.54KB
linux考试复习.docx
《linux考试复习.docx》由会员分享,可在线阅读,更多相关《linux考试复习.docx(13页珍藏版)》请在冰豆网上搜索。
linux考试复习
一、关于Bochs软件:
1、Bochs软件的特点
Bochs是kevinLawton于1994年用C++语言开发的软件系统,无论运行Bochs的主机采用何种硬件平台,Bochs都能完全仿真模拟Intelx86CPU的微机硬件平台,这种完全仿真的方法使得我们能在Bochs下不加修改地运行大量的软件系统。
Bochs开源,易移植,适合开发一些低层系统软件。
2、在Bochs中运行一个OS,需要哪些资源
Bochs执行文件、BIOS映像文件、VGABIOS映像文件、至少一个引导启动磁盘映像文件(软盘、硬盘或者CDROM的映像文件)。
3、Bochs配置文件常用参数及其设置
1)megs:
被模拟系统所含内存容量(默认值时32MB),例如:
megs:
128。
2)floppya(floppyb):
软驱号(floppya表示第一个软驱,floppyb表示第二个软驱),如果需要从一个软盘上来引导系统,那么floppya就需要指向一个可引导的磁盘;如果想使用磁盘映像文件,那么就在该选项后面写上磁盘映像文件名,例如:
floppya:
1_44=a:
status=inserted。
3)ata0/ata1/ata2/ata3:
启动模拟系统中最多4个ATA通道,对于每个启用的通道必须指明两个IO基地址和一个中断请求号。
4)ata0-master(ata0-slave):
ata0-master指明模拟系统中第一个ATA通道(0通道)上连接的第1个ATA设备(硬盘或者CDROM);ata0-slave指明模拟系统中第一个ATA通道(1通道)上连接的第2个ATA设备,例如:
ata0-master:
type=disk,path=hd.img,mod=flat,Cylinders=306,heads=4,spt=17,traslation=none。
5)boot:
定义模拟机器中用于引导启动的驱动器,可以知道软盘,硬盘或者CDROM和驱动器号“c”,“a”。
6)cpu:
定义模拟系统中仿真CPU的参数。
7)log:
Bochs记录执行的日志信息。
4、Bochs配置文件源代码分析
megs:
16*被模拟系统的内存大小是16MB*
romimage:
file=$BXSHARE/BIOS-bochs-latest*所模拟PC的ROMBIOS程序*
vgaromimage:
file=$BXSHARE/VGABIOS-lgpl-latest*所模拟PC的VGA程序*
floppya:
1_44="bootimage-0.12-fd",status=inserted
*参数floppya指定模拟pc的软盘驱动器A:
,使用1.44MB类型,并且设置成使用bootimage-0.12-fd软盘映像文件,状态为插入*
floppyb:
1_44=diska.img,status=inserted
boot:
a
*指定启动的驱动器,这里是从A盘启动*
log:
bochsout.txt
*Bochs记录执行的一些日志信息写在bochsout.txt中,如果Bochs中运行的系统不能正常运行就可以参考其中的信息找出基本原由*
vga_update_interval:
300000
panic:
action=ask
二、Make程序与Makefile文件
1、make工具的作用
自动编译所有内核代码文件,自动地决定一个含有很多源程序文件的大型程序中哪个文件需要被重新编译。
2、Makefile文件中的规则
1)规则含有下列形式:
target(目标)…:
prerequisites(先决条件)…command(命令)…
‘目标’通常是程序生成的一个文件的名称;‘先决条件’是一个或多个文件名,是用作产生目标的输入条件。
通常一个目标依赖几个文件。
‘命令’是make需要执行的操作。
注意:
每个命令之前键入一个制表符(Tab键)
2)根据目标文件的命名形式使用”cc-c”命令根据相应的.c文件更新对应的.o文件。
3、Linux/Makefile文件源代码分析
ROOT_DEV=/dev/hd6第二个硬盘的第一个分区
ARCHIVES=kernel/kernel.omm/mm.ofs/fs.o为方便引用进行归档
MATH=kernel/math/math.a数学运算库文件
LIBS=lib/lib.a由lib/目录中的文件所编译生成的通用库文件
diskImageddbs=8192if=Imageof=/dev/PS0表示disk这个目标要由Image产生,dd为复制一个文件,根据选项进行转换和格式化。
bs=表示一次读/写的字节数。
if表示输入的文件,of表示输出的文件。
/dev/PS0表示第一个软盘驱动器(设备文件)。
三、Linux0.12内核体系结构
1、内核源代码目录结构
2、内核编译链接结构
3、内核的编译
1)bochsrc-0.12-hd.bxrc进入以硬盘Image文件作为根文件系统的linux0.12系统。
2)在/usr/src/linux目录下键入“make”命令编译linux0.12内核代码。
3)生成引导启动映像文件Image
4)存入硬盘映像:
ddbs=8192if=Imageof=/dev/fdp
5)存入软盘映像:
mcopyImageb
mcopySystem.mapb
4、常用shell命令及其参数,如
dd:
用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换
make:
编译所有内核代码文件
mkfs:
建立一个文件系统
mkdir:
创建一个目录
mount:
挂载文件系统
umount:
卸除文件系统
ll:
显示文件/目录详细信息
四、集成盘原理与制作
1、集成盘的结构
内核引导启动盘和一个基本的根文件系统盘的内容合成制作在一张盘中。
该盘内核代码需要开启内存虚拟盘RAMDISK的功能,从而使得系统上的两个软盘驱动器能腾出用于加载其他文件系统盘。
2、制作过程
1)重要参数的设置
在/usr/src/linux/Makefile中修改:
RAMDISK=-DRAMDISK=2048
ROOT_DEV=FLOPPY
2)内核的编译
A)先Makeclean,再Make;
B)制作临时根文件系统
(1)制作一张大小为1024KB的空Image文件:
ddbs=1024if=/dev/zeroof=rootram.imgcount=1024;
(2)在bochs中运行linux-0.12-devel系统,在bochs主窗口上把驱动盘分别配置成:
A盘为rootimage-0.11-orign,B盘为rootram.img;
(3)mkfs/dev/fd11024
mkdir/mnt1
mount/dev/fd0/mnt
mount/dev/fd1/mnt1
(4)将rootimage-0.11-orign精简后(1024KB)拷入rootram.img
cd/mnt1
foriinbindevetcusrtmp
do
cp+recursive+verbose/mnt/$i$i
done
sync
(5)umount/dev/fd0umount/dev/fd1;
将/dev/fd1中的文件系统复制到linux-0.11-devel系统中,建立一个名称为rootram-0.11的根文件系统Image文件:
ddbs=1024if=/dev/fd1of=rootram-0.11count=1024
(C)建立集成盘:
修改bochs主窗口的A盘为bootroot-0.11
ddbs=8192if=/usr/src/linux/Image(内核引导启动文件)of=/dev/fd0
ddbs=1024if=rootram-0.11(文件系统映像)of=/dev/fd0seek=256
sync;sync;sync;
3)根文件系统的裁剪
保留/mnt/binmkfs,mknod,mount,sh,umount,vi
/mnt/usr/bincat,chmod,chown,cp,dd,df,ls,mkdir,mv,rm,rmdir
3、集成盘的引导过程描述
若RAMDISK没有设置(即长度为0),内核会根据ROOT_DEV所设置的根文件系统所在设备号,从软盘或硬盘上加载根文件系统,执行无虚拟盘时的一般启动过程。
若其已定义,引导时会检测启动盘的第256磁盘块(每个磁盘块为1KB,即2个扇区)开始处是否存在一个根文件系统。
即:
判断第257磁盘块中是否存在一个有效的文件系统超级块信息。
如果有,就加载到RAMDISK区域,并作为根系统使用。
如果没有,则内核提示插入根文件系统盘;然后内核把独立盘上的根文件系统整个读入到内存的虚拟盘区域中去执行。
五、内核引导启动+根文件系统
1、bootsect.S程序引导过程
1)磁盘引导块程序bootsect.s驻留在磁盘第一个扇区中。
2)PC加电、ROMBIOS自检后,BIOS会把bootsect加载到内存0x7C00并执行,执行期间,再将自己移到0x90000处并执行。
3)把从磁盘第二个扇区开始的4个扇区的setup模块加载到内存紧接着bootsect处(0x90200)
4)利用BIOS中断0x13取磁盘参数表中当前启动引导盘的参数,在屏幕上显示“Loadingsystem…”
5)……
6)把磁盘上system模块加载到内存0x10000处,确定根文件系统的设备号
7)长跳到setup程序开始处0x90200执行setup程序
2、启动引导时内核在内存中的位置
3、setup.S程序
1)利用BIOS中断读取机器系统数据,并将这些数据保存到0x90000开始的位置(覆盖掉bootsect程序所在地方)
2)然后将system模块整体下移到内存绝对地址0x00000处
3)加载中断描述符表寄存器idtr和全局描述符表寄存器gdtr,开启A20地址线,重设两个中断控制芯片8259A,将硬件中断号重设为0x20-0x2f
4)设置CPU控制寄存器CR0,进入32位保护模式运行,并跳转到位于system模块最前面部分的head.s程序
4、head.s程序
1)在编译生成目标文件后会与内核其他程序一起被连接成system模块,位于system模块的最前面
2)从这里开始,内核完全在保护模式下运行
3)采用AT&T汇编语言格式,使用GNU的gas和gld编译链接
六、系统调用
1、应用程序、库函数和内核系统调用之间的关系
系统调用是为了方便应用使用操作系统的接口,而库函数是为了方便人们编写应用程序而引出的,系统调用可以理解为内核提供给我们在用户态用的接口函数
2、创建系统调用过程
1)涉及到的文件
/usr/src/linux/kernel/sys.c/usr/src/linux/dev/unistd.h/usr/src/linux/include/linux/sys.h/usr/src/linux/kernel/sys_call.s/usr/src/linux/lib
2)关键代码的修改
添加系统调用功能号和原型定义
在/usr/src/linux/dev/unistd.h(unixstandardheader)
#define_NR_sethostname287//添加系统调用功能号
intsethostname2(char*name,intlen);新系统函数原型定义
添加外部函数声明
在usr/src/linux/include/linux
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- linux 考试 复习