Linux大型作业系统裁剪.docx
《Linux大型作业系统裁剪.docx》由会员分享,可在线阅读,更多相关《Linux大型作业系统裁剪.docx(11页珍藏版)》请在冰豆网上搜索。
![Linux大型作业系统裁剪.docx](https://file1.bdocx.com/fileroot1/2022-12/14/f09c43a4-910e-4336-a122-b578e808dab8/f09c43a4-910e-4336-a122-b578e808dab81.gif)
Linux大型作业系统裁剪
Linux原理与设计
课程设计报告
学院:
计算机学院
学号:
XXXXXXX
姓名:
XXX
老师:
XXX
导言:
Linux内核裁剪是根据用户的需要进行删除和保留相关的模块。
Linux内核裁剪完成后在进行编译,使之后的Linux系统为用户所需要的操作系统。
Linux内核升级是为了弥补较低版本的漏洞,使得Linux系统安全系数更高;另外使Linux系统的性能更稳定;最后是增加新功能,满足用户的功能需求。
实验目的:
按照自己的要求裁剪Linux操作系统,并编译成功。
实验设备:
本次实验的裁剪对象是最新的Linux3.3.3系统。
实验步骤:
Linux系统内核的裁减涉及到模块间的依赖关系、内核的配置和编译等多个步骤,其基本步骤如下:
1.删除过时的目标文件
2.重新设置系统内核
3.重新编译系统内核
1.删除过时的目标文件
进入内核目录,运行sudomakemrproper命令以清除过时、旧的目标文件。
这是因为经过多次编译后系统会留下部分目标文件,如果没有清除干净可能造成本次编译出错。
2.重新设置系统内核
无论是内核裁减还是内核升级都要重新配置系统内核。
共有三种方式来运行配置内核的命令:
设置屏幕的类型命令
文本makeconfig
窗口菜单(NCurses)makemenuconfig
X图形makexconfig
第1种makeconfig是命令行方式,使用与修改都较为不便,一般不推荐使用。
第2种makemenuconfig是窗口菜单方式,采用窗口菜单进行人机交互,并可随时获得帮助;它占用的内存较少,适合在字符终端下使用,
我采用第三种makexconfig的方式来配置系统内核,makexconfig是图形用户界面,采用图形窗口按钮进行人机交互,整个设置界面简洁明了、使用非常方便且帮助文件也容易获取。
界面如下图:
配置系统内核的目的是建立一个适合大小、满足需求的系统内核;因此,用户必须根据自己所设计系统的需要对Linux系统支持的硬件和软件进行适当裁减,即从配置内容中选择相应的硬件类型和合适的设备驱动程序。
配置选项含义如下:
编号
类别
含义
1
Codematurityleveloptions
代码成熟级别
2
Loadablemodulesupport
可装载模块支持
3
Processortypeandfeatures
处理器类型与特征
4
Generalsetup
一般设置
5
MemoryTechnologyDevice
MTD设备支持
6
Parallelportsupport
并行口支持
7
PlugandPlayconfiguration
即插即用支持
8
Blockdevices
块设备支持
9
Multi-devicesupport(RAIDandLVM)
多设备支持
10
Cryptographysupport
密码系统支持
11
Networkingoptions
网络选项
12
TelephonySupport
电话支持
13
ATA/IDE/MFM/RLLsupport
多种接口存储设备支持
14
SCSIsupport
SCSI设备的支持
15
FusionMPTdevicesupport
FusionMPT设备支持
16
IEEE1394(FireWire)support
IEEE1394防火墙设备支持
17
I2Odevicesupport
I2O设备支持
18
Networkdevicesupport
网络设备支持
19
AmateurRadiosupport
业余无线电支持
20
IrDA(infrared)support
红外线支持
21
ISDNsubsystem
ISDN子系统
22
OldCD-ROMdrivers(notSCSI、notIDE)
非SCSI/IDE接口的CD-ROM设备
23
inputcoresupport
输入核心支持
24
Characterdevices
字符设备
25
Multimediadevices
多媒体设备
26
CryptoHardwaresupport
Crypto硬件支持
27
Filesystems
文件系统
28
Consoledrivers
控制台驱动
29
Sound
声卡驱动
30
USBsupport
USB支持
31
Additionaldevicedriversupport
附加设备驱动支持
32
Bluetoothsupport
蓝牙支持
33
profilingsupport
Profiling支持
34
Kernelhacking
内核分析
35
Libraryroutines
库例程
配制方法
以运行xconfig设置程序为例说明配置方法。
在xconfig主屏幕上有许多设置选项,但在内核裁减中许多选项可以采用默认的设置。
下面按配置内容类别说明主要选项的配置方法。
1.代码成熟级别选项(Codematurityleveloptions)
这里只有一项:
promptfordevelopmentand/orincompletecode/drivers,如果你要试验使用还有待完善的代码,比如framebuffer、khttpd、IPv6等,就必须把该项选择为Y;否则可以把它选择为N。
这是内核的一个内置特性,不能选择为模块。
如图3-3所示。
图3-3代码成熟级别选项
2.可装载模块支持(Loadablemodulesupport)
这里有3项,如图3-4所示。
图3-4可装载的模块支持
Enableloadablemodulesupport:
除非你准备把所有需要的内容都编译到内核里面,否则该项应该是必选的。
SetversioninFORMationonallmodulesymbols:
可选可不选。
Kernelmoduleloader:
让内核在启动时有自己装入必需模块的能力,该选项必须在Enableloadablemodulesupport选项激活(即为“y”)情况下才能选择;建议选上。
3.处理器类型与特征(Processortypeandfeatures)
这里的选项一般不需要设置,使用默认的设置即可。
例如:
Processorfamily:
系统安装时会根据你的计算机情况选择CPU类型。
HighMemorySupport:
大容量内存的支持。
可以支持到4G、64G,默认为“off”。
Mathemulation:
协处理器仿真,现在的协处理器已集成在CPU内;默认为“n”。
MTTRsupport:
MTTR(MemoryTypeRangeRegister)支持。
可不选,默认为“n”。
Symmetricmulti-processingsupport:
对称多处理器支持。
单CPU系统一般不用选。
4.一般设置(Generalsetup)
这里是安装RedHatLinux9.0时对系统最基本的硬件设置。
这部分内容非常多,一般在安装中Linux会根据你计算机系统的硬件自动检测并设置,使用缺省设置就可以。
常用的选项简要介绍如下:
Networkingsupport:
网络支持。
如果有网卡默认为“y”。
PCIsupport:
PCI支持。
如果使用了PCI的卡,默认为“y”。
PCIaccessmode:
PCI存取模式。
可供选择的有BIOS、Direct和Any,默认为Any。
Supportforhot-pluggabeldevices:
热插拔设备支持。
如果有此类设备默认为“y”。
PCMCIA/CardBussupport:
PCMCIA/CardBus支持。
用系统测试的默认选择。
SystemVIPC
BSDProcessAccounting
Sysctlsupport
以上三项是有关进程处理IPC调用的,主要就是SystemV和BSD两种风格。
如果你不是使用BSD,就不要改变默认选择。
PowerManagementsupport:
电源管理支持,用系统默认选择。
AdvancedPowerManagementBIOSsupport:
高级电源管理BIOS支持,用系统默认选择。
5.MTD设备支持(MemoryTechnologyDevice)
MTD设备是像闪存芯片、小型闪存卡、记忆棒等之类的设备,它们在嵌入式设备中的使用正在不断增长。
PC上一般默认为“n”。
6.并行口支持(Parallelportsupport)
如果不打算使用并行口,就选“n”。
7.即插即用支持(PlugandPlayconfiguration)
目前Linux对即插即用设备的支持不如Windows好,如果系统中有PNP设备,默认的选项为“y”。
8.块设备支持(Blockdevices)
一般使用缺省设置就可以,主要选项简要说明如下:
NormalPCfloppydisksupport:
普通PC软盘支持。
若有软驱默认为“y”。
XTharddisksupport:
早期的硬盘支持,一般默认为“n”。
CompaqSMART2support:
磁盘阵列控制卡,没有该设备为“n”。
MulexDAC960/DAC1100PCIRAIDControllersupport:
RAID镜像,没有该设备为“n”。
Loopbackdevicesupport:
把文件当成区块设备使用,一般默认为“n”
Networkblockdevicesupport:
网络块设备支持。
如果想访问网上邻居的东西,选“y”。
RAMdisksupport:
RAM盘支持,一般默认为“n”。
9.多设备支持(Multi-devicesupport(RAIDandLVM))
Multipledevicesdriversupport:
多设备驱动支持,一般默认为“n”;该项激活(“y”)时
以下两项才可以选择。
RAIDsupport:
RAID支持,没有该设备为“n”。
Logicalvolumemanager(LVM)support:
逻辑卷管理支持,一般默认为“n”。
10.密码系统支持(Cryptographysupport)
在个人计算机(PC)系统上一般不用,系统默认为“n”。
11.网络选项(Networkingoptions)
这里配置的主要是网络协议,其选项很多。
如果要定义TCP/IP、ATM、IPX、DECnet、Appletalk……等协议的支持,可以把它们编译进内核中或以模块加载。
在这里还可以配置路由、防火墙、IP隐藏、IP广播、IP转发等等。
不过有些配置仍然处于实验阶段,例如:
IPv6、httpd、Qosand/orfairqueueing(服务质量公平调度)等。
12.电话支持(TelephonySupport)
Linux下可以支持电话卡,这样你就可以在IP上使用普通的电话提供语音服务了。
默认选项为“n”。
13.多种接口存储设备支持(ATA/IDE/MFM/RLLsupport)
有关各种接口的硬盘/光驱/磁带/软盘支持,一般使用默认的选项即可。
14.SCSI设备的支持(SCSIsupport)
如果有SCSI设备,系统会默认选择若干选项,其他的选项可以根据情况选择。
如果在PC上安装了虚拟机(如VM),则会把IDE硬盘虚拟成SCSI硬盘,部分选项会自动选中。
15.FusionMPT设备支持(FusionMPTdevicesupport)
需要FusionMPT兼容PCI适配器,一般默认为“n”。
16.IEEE1394防火墙设备支持(IEEE1394(FireWire)support)
该项仍在实验中,默认为“n”。
17.I2O设备支持(I2Odevicesupport)
需要I2O接口适配器支持,在智能Input/Output(I2O)体系接口中使用。
默认为“n”。
18.网络设备支持(Networkdevicesupport)
在网络选项中选好协议后,在这项中定义使用这些网络协议的方式。
有ARCnet设备、Ethernet(10or100Mbit)、Ethernet(1000Mbit)、WirelessLAN(non-hamradio)、TokenRingdevice、Waninterfaces、PCMCIAnetworkdevicesupport几大类。
实际上这个选项中主要做的是网络接口卡类的设置,如10/100M的以太网网卡。
如果Linux系统可以识别到网卡,则基本无需设置;如果无法识别网卡,则只能自己打开Ethernet(10ro100Mbit)选项查找了。
一般都能找到自己适用的网卡型号。
如果没有找到,只好到厂商那里去要驱动了。
一般把该类编译到内核里,不选“m”而选“y”。
19.业余无线电支持(AmateurRadiosupport)
配置业余无线电广播,一般默认选项为“n”。
20.红外线支持(IrDA(infrared)support)
没有红外设备,默认选项为“n”。
21.ISDN子系统(ISDNsubsystem)
如果你使用ISDN上网,这个选项选“y”。
22.非SCSI/IDE接口的CD-ROM设备(OldCD-ROMdrivers(notSCSI、notIDE))
现在的计算机一般都没有这样的设备了,默认的选项就是“n”。
23.输入核心支持(inputcoresupport)
该选项下有若干USB人机接口设备(如鼠标、键盘和游戏杆等)选项。
如果你要使这些设备驱动编译进内核或以模块加载,则在选择前先使“inputcoresupport”选项为“y”。
24.字符设备(Characterdevices)
这个选项的内容包括以下几个大类:
I2Csupport:
I2C是Philips极力推动的微控制应用中使用的低速串行总线协议。
如果你要选择下面的VideoForLinux,该项必选。
Mice:
鼠标。
现在可以支持总线、串口、PS/2、C&T82C710mouseport、PC110digitizerpad等,实际上在安装Linux时就根据自己的鼠标类型选择了。
Joysticks:
手柄。
设置在Linux下手柄驱动。
WatchdogCards:
“看门狗卡”虽然称为Cards,这个可以用纯软件来实现,当然也有硬件的。
如果你把这个选中,那么就会在你的/dev下创建一个名为watchdog的文件,它可以记录你的系统的运行情况,一直到系统重新启动的1分钟左右。
有了这个文件,系统可以恢复到重启前的状态。
VideoForLinux:
在Linux下支持有关的音频/视频卡,可根据需要选择。
Ftape,thefloppytapedevicedriver:
磁带设备驱动支持。
没有设备默认为“n”。
PCMCIAcharacterdevicesupport:
PCMCIA字符设备支持。
没有设备默认为“n”。
25.多媒体设备(Multimediadevices)
该选项下有VideoForLinux和RadioAdapters两个子选项。
其中RadioAdapters(无线电适配器)选项一般默认为“n”。
如果你需要摄像头等视频设备时需要配置VideoForLinux(Linux视频)选项。
如video4linux为视频采集设备提供了编程接口。
26.Crypto硬件支持(CryptoHardwaresupport)
没有该类设备时,默认配置为“n”。
27.文件系统(Filesystems)
这个选项的内容包括以下几个大类:
Quotasupport:
用Quota支持可以限制每个用户可用的硬盘空间的上限,在多用户共同使用一台主机的情况中十分有效。
DOSFATfssupport:
DOSFAT文件格式的支持,可以支持FAT16、FAT32。
ISO9660CD-ROMfilesystemsupport:
CD-ROM使用的就是ISO9660的文件格式。
NTFSfilesystemsupport:
ntfs是NT使用的文件格式。
/procfilesystemsupport:
/proc文件系统是Linux提供给用户和系统进行交互的通道,建议选上,否则有些功能没法正确执行。
Virtualmemoryfilesystemsupport:
虚拟内存文件系统支持,一般用默认配置。
NetworkFileSystems(网络文件系统):
如果要进行嵌入式系统开发,则可以对它配置,也可以通过在终端下执行setup命令设置(模块
加载方式);如果配置SMB服务器(Linux和Windows相互以网络邻居的形式访问对方),则可以对它配置。
PartitionTypes(分区类型):
一般用默认配置。
NativeLanguageSupport(本地语言支持):
系统根据安装时对语言支持的选择配置。
28.控制台驱动(Consoledrivers)
一般使用VGAtextconsole就可以了,标准的80*25的文本控制台。
如果要使用某些特殊的显示模式,如帧缓冲等可以配置其中的Videomodeselectionsupport、Frame-buffersupport等部分子选项。
29.声卡驱动(Sound)
如果你的系统有声卡,则安装中Linux会检测它并设置Soundcardsupport和相应的声卡驱动程序为“y”,如果系统检测不到声卡,则你只能在声卡驱动列表中看看能否找到适合的了。
30.USB支持(USBsupprot)
很多USB设备,比如鼠标、摄像头、调制解调器、打印机、扫描仪等,在Linux都可以得到支持,可以根据需要自行选择。
31.附加设备驱动支持(Additionaldevicedriversupport)
如果你的系统中有一些像AEPSSLAccelerator等附加的设备,则可以在该选项中进行选择,如果没有,则默认为“n”。
32.蓝牙支持(Bluetoothsupport)
如果你的系统中有蓝牙设备,则可以在该选项的子选项中进行选择,如果没有,则默认为“n”。
33.Profiling支持(profilingsupport)
这个选项用来开启系统内核做效率统计,并会提供其他在为系统检错时有用的信息。
这些功能的开启会付出一些时间代价,并造成系统执行得较为缓慢,如果你在研究或测试系统内核的某些问题,则可以选择“y”;否则默认为“n”。
普通用户是用不着这个功能的。
34.内核分析(Kernelhacking)
该选项是为优化或增强功能而对系统内核进行的调整。
如果你正在开发驱动程序或试图调试内核找出问题可以选“y”,否则默认为“n”。
普通用户是用不着这个功能的。
35.库例程(Libraryroutines)
该选项下有两个子选项zlibdiscompressionsupport和zlibcompressionsupport分别为zlib库解压缩和压缩的支持;默认为“n”。
设置选项及子选项很多,这里只是介绍35个大项和部分子选项,其目的是让大家了解内核裁剪时内核的配置包含哪些内容。
在做完选项的选择后,不要忘记保存设置后退出,保存按钮如图3-5所示。
当然、你也可以不保存退出,或者保存到系统配置文件中以便以后装载再配置。
图3-5配置保存
3.重新编译系统内核
在完成内核的裁减之后,内核的编译就是一个非常简单的过程。
你只要执行以下几条命令就行:
1、makeclean
这条命令是在正式编译你的内核之前先把环境给清理干净。
有时你也可以用makerealclean或makemrproper来彻底清除相关依赖,保证没有不正确的.o文件存在。
2、makedep
这条命令是编译相关依赖文件。
3、makezImage
这条命令就是最终的编译命令。
4、makeinstall
这条命令可以把相关文件拷贝到默认的目录。