操作系统构成实验Word格式文档下载.docx
- 文档编号:17396180
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:13
- 大小:25.40KB
操作系统构成实验Word格式文档下载.docx
《操作系统构成实验Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《操作系统构成实验Word格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。
(3)关于系统管理的操作命令:
adduser、addgroup、df、su、ctl+Fn(n=1、2、3、4、5、6)等;
(4)安装和卸载文件系统:
mount、umount等。
3、在Linux操作系统的XWindows环境下,常用应用程序的使用。
4、关闭Linux操作系统。
二.通过Linux操作系统中的make工具重新配置新内核
1、进入到LinuxOS中的/usr/src/linux-n.n.n子目录下(n.n.n为Linux的内核版本号)。
2、执行命令makemrproper,其作用是文件归位。
3、执行命令makemenuconfig,配置新内核。
在此过程中,可根据自己的需要去配置各个选项。
不过在配置filesystems时,一定要选上secondextendedfs(Ext2)support和DOSFATfssupport、VFATfssupport之一。
4、执行命令makedep。
5、执行命令makeclean。
6、执行命令makebzImage(如果内核不大则可执行命令makezImage)。
7、执行命令makemodules和命令makemodules_install(若配置中加入了模块的支持<选项为M>。
)
以上命令执行完后,在/usr/src/linux-n.n.n/arch/i386/boot子目录下便可得到新配置的内核bzImage(或zImage)。
三.制作一张启动盘(BootDisk)
1、mke2fs-i8192-m0/dev/fd0大小(1440)
(该大小可小于1440K,根据自己配置的新内核的大小来确定,但不能小于新内核的大小;
“–i8192”表示每8192bytes一个node)
2、mount/dev/fd0/mnt(装载软盘)
3、rm-rf/mnt/lost+found/(此行命令也可不要)
4、mkdir/mnt/{boot,dev,etc}
5、在/mnt/etc下编写lilo.conf文件:
#cd/mnt/etc(进入/mnt/etc目录)
#vililo.conf(创建lilo.conf文件)
以下为lilo.conf文件的内容:
boot=/dev/fd0
install=/boot/boot.b
map=/boot/map
read-write
ramdisk=nnnn(大小,如4096)
backup=/dev/null
compact
linear(此命令可以避免1024柱面问题)
image=bzImage(新配置的内核;
若裁减的内核<4096K,则可以用zImage。
label=SDLinux(自己可随意命名)
root=/dev/fd0
6、cp-dpR/dev/{fd0,null}/mnt/dev/(此处的–dpR选项一定不可少)
7、cp/boot/{boot.b,map}/mnt/boot/
8、cp/……/bzImage/mnt/(前面配好了的新内核)
9、lilo-v-C/etc/lilo.conf-r/mnt
10、rdev-r/mnt/bzImage49152(根文件系统位于第二张盘的第0块)
11、umount/mnt(卸载软盘)
当然,可以先将lilo.conf文件、bzImage文件等后面需要的文件准备好,再将整个过程用vi/vim工具编写成一个shellscript文件(命名为bootdisk),编写好文件后,再用命令chmod755bootdisk(上面编写的文件名)改变该文件的执行权限以使之成为可执行文件。
最后将一个干净的软盘(floppy)插入软驱,执行./bootdisk↙bootdisk盘就完全做好了。
上面“rdev–r/mnt/bzImage49152”是设置内核镜像文件中的ramdisk的偏移量(offset)以指出如何确定定位根文件系统。
这就需要计算ramdisk的offset,它是通过命令rdev来设置的,其内容的含义如下:
bits0-10:
Offsettostartoframdisk,in1024bytesblocks
bits11-13:
unused
bit14:
Flagindicatingthatramdiskistobeloaded
bit15:
Flagindicatingtopromptbeforeloadingrootfs
如果位15被设置为1,当系统启动时,会提示把另一张软盘插入软驱中。
如果Root盘放在另一张软盘上的话,这个设置是很有必要的。
计算offset的方法如下:
如果制作单一的Boot&
Root盘,则压缩的RootFilesystem会被放置在内核之后,从而offset会是第一块freeblock(这个值应该会与KERNEL_BLOCKS相等)。
bit14会被设为1,bit15会被设为0。
比如,若启动盘根文件系统始于数据块453(十进制),则ramdisk偏移量应为453+214=453+16384=16837。
而如果Boot&
Root盘有两张,启动盘根文件系统始于第二张盘的block0,则offset为0,bit14会被设为1,bit15也会被设为1。
从而ramdisk偏移量应为214+215=16384+32768=49152。
四.制作一张根文件系统盘(RootFilesystemDisk)
1 准备DEVICE
为了能够创建一个如上所述的RootFilesystem,必须有一个足够大的设备,能存放压缩之前的所有文件。
一般有以下几种选择:
(1)使用Rmdisk(即DEVICE=/dev/ram0),时内存被模拟成一台驱动器。
(2)使用硬盘Partition,如果你的硬盘有一个未使用且足够大的Partition。
(3)使用一个LoopbackDevice,这可以把一个磁盘文件当作一台设备来使用。
选择好其中一种(此处我选择最后一种)后,准备设备文件DEVICE用如下命令:
ddif=/dev/zeroof=DEVICEbs=1kcount=4096↙(此处4096可根据需要改为其它数)
这行指令送出一堆0把DEVICE填满。
而用0填满DEVICE是关键的一步,因为RootFilesystem之后会被压缩,所以所有未使用的部分应被用0填满以达到最大的压缩比。
无论何时从RootFilesystem删除文件,请记住这个事实。
实际上RootFilesystem只是释出(de-allocate)这些blocks,但并没有再把它们填为0。
从而如果执行过多的删除与拷贝动作,压缩后的RootFilesystem最后会比必要的大,甚至大出很多。
2 选择所创建的RootFilesystemDisk的文件系统
LinuxKernel能够识别两种直接copy到Ramdisk上的文件系统—Minix和Ext2,其中Ext2性能更好。
一般选择Ext2文件系统。
使用Ext2,会发现用“–i”选项定义比缺省更多的信息节点非常有用。
命令mke2fs在缺省情况下在1.44M的软盘上产生360个信息节点,而使用压缩格式的根文件系统需要更多的信息节点,所以使用如下命令创建根文件系统可以创建2000个信息节点(一般不会用光):
mke2fs–m0–i2000DEVICE↙
mke2fs将会自动判断设备容量的大小并相应地配置其自身,其中“–m0”参数防止它给root保留空间,这样会腾出更多的有用空间。
接着挂上这个DEVICE到/mnt:
mount–text2–oloopDEVICE/mnt↙
如果/mnt这个mount点并不存在,你就应用mkdir在“/”目录下创建一个/mnt。
3 制作RootFilesystemDisk
以下是RootFilesystem最起码有的目录:
(1)/dev:
里面存放设备文件(Devices),为达成I/O工作所需
(2)/bin:
被认为是系统一部分的基本二进制执行文件
(3)/sbin:
重要的(Critical)系统二进制执行文件(binaries)
(4)/etc:
里面存放系统配置文件
(5)/lib:
提供run-time支持的共享函数库与函数库装载器
(6)/usr:
额外的工具程序与应用程序
(7)/proc:
一个把procfilesystem放置于其下的stub
(8)/mnt:
维护其他磁盘所用的磁盘挂入点(mountpoint)
(9)/var:
主要放置系统参数和配置
(10)/tmp:
临时文件存放点
上述的/proc、/mnt、/tmp在RootFilesystem中均为空,只需要用mkdir造出即可。
用如下命令以上目录:
mkdir/mnt/{dev,bin,sbin,etc,lib,usr,proc,mnt,var,tmp}↙
其余的分述如下。
3.1 子目录/dev
/dev目录包含很多特殊的文件,这些文件是给系统上所有设备使用的,这样的目录在每一个Linux系统中都必须有。
该目录本身是一个一般的目录,可以用一般的方法,即用mkdir创建,然而其下的特殊文件就必须用mknod命令来创建。
不过,可以用cp命令拷贝出现有Linux系统中/dev目录中的内容,再删去不需要的设备文件,方法如下(假设挂靠在/mnt下,以下同):
cp–dpR/dev/{arp,atibm,audio,audio1,aztcd,cdu535,cm2060d,console,cua0,cua1,cua2,cua3,cua4,fd0,fd0h1200,fd0h1440,fd0u1440,fd1,fd1h1200,fd1h1440,fd1u1440,full,gscd0,hd*,icmp,inet,inportbm,ip,kmem,lmscd,logibm,loop*,lp0,mcd,mcdx0,mcdx1,mem,nrft0,nst0,nst1,null,par0,par1,par2,port,psaux,ptyp*,ram*,rft0,rmt16,rmt8,sbpcd*,scd0,scd1,sg*,sjcd,socket,socksys,sonycd,spx,st0,st1,systty,tape_d,tape_reset,tcp,tty*,udp,unic,zero}/mnt/dev↙
其中“-dp”参数确保symbolic links是以links的方式来copy,而不是copy链结文件所指向的targetfile,同时原本的文件属性也被保留,从而保留了文件的所有权信息;
“-R”参数会copy目录中相关的文件,但不会copy其内容。
(以下同)
3.2 子目录/bin
/bin目录是一个放置为了执行基本作业(Operations)而所需的额外工具程序的方便好地方。
在LinuxOS下,可以用如下命令将所需的程序copy到所创建文件系统的/bin目录:
cp–dpR/bin/{arch,basename,bash,cat,chgrp,chmod,chown,cp,dd,df,echo,egrep,fgrep,grep,gunzip,gzip,hostname,kill,ln,login,ls,mkdir,mknod,more,mount,mv,ps,pwd,rm,rmdir,sh,sleep,su,sync,topuch,umount,uname,vi}/mnt/bin↙
cp–dpR/usr/bin/{clear,cmp,dircolors,dirname,du,finger,free,fwhois,killall,which,who,whois}/mnt/bin↙
cp–dpR/usr/sbin/traceroute/mnt/bin↙
3.3 子目录/sbin
在这个目录下放置一些系统扩展命令文件,才能保证所做的系统正常运行,同时还可让所做的系统功能更加强大。
可以用如下命令将所需的程序copy到所创建文件系统的/sbin目录:
cp–dpR/sbin/{fdisk,halt,init,insmod,killall5,lsmod,mingetty,mke2fs,mkfs,mkfs.ext2,mkswap,modprobe,runlevel,shutdown,swapon,update,depmod,mkdosfs,pidof,reboot,rmmod,swapoff,telinit}/mnt/sbin↙
cp–dpR/usr/sbin/{gpm,rdev}/mnt/sbin↙
cd/mnt/sbin↙
ln–sbdflushupdate↙(其中“-s”参数表示为符号连接而不是硬连接)
cd/↙
3.4 子目录/etc
该目录包含了重要的配置文件和一些系统初始化文件。
在大多数Linux系统上,这些文件可分为如下三类:
(1)一直都必备的,如rc,fstab,passwd等。
(2)可能是必备的,但没有人能够确定。
(3)偷跑进来的垃圾。
可以用如下命令将所需的程序和文件copy到所创建文件系统的/etc目录:
cp–dpR/etc/{DIR_COLORS,exports,fstab,group,host.conf,hosts,inittab,issue,ld.so.cache,ld.so.conf,mail.rc,motd,mtab,passwd,profile,shells,termcap,rc.d}/mnt/etc↙
cd/mnt/etc↙
ln–sutmp/mnt/var/run/utmp↙
mkdirsysconfigvga↙
cp–dpR/etc/sysconfig/{clock,keyboard,mouse,network}/mnt/etc/sysconfig↙
cdsysconfig↙
mkdirnetwork-scripts↙
cp–dpR/etc/sysconfig/network-scripts/{ifcfg-eth0,ifcfg-lo,ifdown,ifup}/mnt/etc/sysconfig/network-scripts↙
子目录/vga为空。
其中有些配置文件需要修改:
(1)修改fstab文件如下:
/dev/ram/ext2defaults
/proc/procprocdefaults
/dev/hda1/mnt/doscvfatdefaults00
/dev/fd0/ext2noauto00
(2)修改inittab文件如下:
id:
3:
initdefault:
si:
:
sysinit:
/etc/rc.d/rc.sysinit
l0:
0:
wait:
/etc/rc.d/rc0
l1:
1:
/etc/rc.d/rc1
l2:
2:
/etc/rc.d/rc2
l3:
/etc/rc.d/rc3
ca:
ctrlaltdel:
/sbin/shutdown-t3-rnow
12345:
respawn:
/sbin/mingettytty1
2345:
/sbin/mingettytty2
/sbin/mingettytty3
(3)修改rc文件如下:
#!
/bin/sh
/bin/mount-av
/bin/hostnameSDLinux
其它配置文件根据自己的实际情况进行修改。
3.5 子目录/lib
在此目录中,必须放入必要的共享函数库和函数库装载器。
如果无法在创建的系统中的/lib目录下找到必要的函数库,那么系统将不能开机。
至于哪些是必须的,可以使用命令ldd来检查所需的共享函数库和函数库装载器。
但是,某些函数库相当大,这就需要裁减。
可以用命令objcopy来完成。
可以用如下命令将所需的共享函数库和函数库装载器copy到所创建文件系统的/lib目录:
cp-dpR/lib/{libext2fs.so.n,libcom_err.so.n,libe2p.so.n,ld-linux.so.n,libc.so.n,libdl.so.n,libm.so.n,libtermcap.so.n,ld.so.n}/mnt/lib/↙
objcopy--strip-debug/lib/libext2fs.so.n/mnt/lib/libext2fs.so.n↙
objcopy--strip-debug/lib/libcom_err.so.n/mnt/lib/libcom_err.so.n↙
objcopy--strip-debug/lib/libe2p.so.n/mnt/lib/libe2p.so.n↙
objcopy--strip-debug/lib/libdl.so.n/mnt/lib/libdl.so.n↙
objcopy--strip-debug/lib/ld-linux.so.n/mnt/lib/ld-linux.so.n↙
objcopy--strip-debug/lib/libc.so.n/mnt/lib/libc.so.n↙
objcopy--strip-debug/lib/libm.so.n/mnt/lib/libm.so.n↙
objcopy--strip-debug/lib/libtermcap.so.n/mnt/lib/libtermcap.so.n↙
objcopy--strip-debug/lib/ld.so.n/mnt/lib/ld.so.n↙
mkdir/mnt/lib/modules↙(为系统动态加载作准备)
其中n为用ldd命令在现有的Linux系统中检查到的版本号。
3.6 子目录/usr
该目录下放置了一些用户经常需要使用的程序和一些配置数据。
可以用如下命令将所需的程序copy到所创建文件系统的/usr目录:
mkidr/mnt/usr/{adm,bin,etc,lib,local,sbin}↙
cp–dpR/etc/wgetrc/mnt/usr/etc↙
cp–dpR/usr/lib/{libncurse.so,libncurse.so.n,libtermcap.so,sendmail.hf}/mnt/usr/lib↙
objcopy--strip-debug/usr/lib/libncurse.so/mnt/usr/lib/libncurse.so↙
objcopy--strip-debug/usr/lib/libncurse.so.n/mnt/usr/lib/libncurse.so.n↙
objcopy--strip-debug/usr/lib/libtermcap.so/mnt/usr/lib/libtermcap.so↙
cp–dpR/usr/lib/rpc/rpmrc/mnt/usr/lib↙
cp–dpR/usr/sbin/{in.telnetd,rpc.mountd,rpc.nfsd,tcpd}/mnt/usr/sbin↙
cp–dpR/sbin/portmap/mnt/usr/sbin↙
3.7 子目录/var
该目录下主要放置系统参数和配置。
可以用如下命令将所需的程序copy到所创建文件系统的/var目录:
mkdir/mnt/var/{lock,lock/subsys,log,run,spool,spool/mail,spool/mqueue,subsys}↙
cp–dpR/var/lock/subsys/sendmail/mnt/var/lock/subsys↙
cd/mnt/var/run↙
viutmp↙(只创建该文件而不编辑任何内容,故用vi命令进入后立即保存退出)
到此,的根文件系统就创建完成了,接着你应该缷下/mnt,并压缩之。
可用如下命令实现:
umount/mnt ↙
ddif=DEVICEbs=1k|gzip–v9>
rootfs.gz↙
附:
系统测试及部分问题的解决
当系统加电后,首先进行BIOS的启动,初始化硬件(即常说的POST,PowerOnSelfTest),再进行LILO加载。
当LILO载入自己时,屏幕上会显示LILO这个字,每个字母会在执行某个特定动作之前或之后被印在屏幕上。
如果LILO在某点上不能完成任务,到此为止所印在屏幕上的字母可以用来辨认出发生了什么问题。
分别说明如下:
(nothing)
LILO完全没有被载入。
LILO不是没有被安装好,就是LILO开机磁区所在的partition并非使用中的partition。
L
第一阶段的bootloader已被载入并
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 构成 实验
![提示](https://static.bdocx.com/images/bang_tan.gif)