现在,把内核源程序升级到最新版本了,开始内核编译。
4.内核编译
准备工作
运行命令是:
#cd/usr/src/linux;makemrproper
该命令确保源代码目录下没有不正确的.o文件以及文件的互相依赖。
确保/usr/include/目录下的asm、linux和scsi等链接是指向要升级的内核源代码的。
它们分别链向源代码目录下的真正的、该计算机体系结构(对于PC机来说,使用的体系结构是i386)所需要的真正的include子目录。
asm指向/usr/src/linux/include/asm-i386等。
按照下面的步骤进行:
#cd/usr/include/
#rm-rasmlinuxscsi
#ln-s/usr/src/linux/include/asm-i386asm
#ln-s/usr/src/linux/include/linuxlinux
#ln-s/usr/src/linux/include/scsiscsi
删除掉/usr/include下的asm、linux和scsi链接后,再创建新的链接指向新内核源代码目录下的同名的目录。
这些头文件目录包含着保证内核在系统上正确编译所需要的重要的头文件。
5.配置
配置内核使用下面命令中:
#makeconfig(基于文本的最为传统的配置界面,不推荐使用)
#makemenuconfig(基于文本选单的配置界面,字符终端下推荐使用)
#makexconfig(基于图形窗口模式的配置界面,Xwindow下推荐使用)
#makeoldconfig(如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦)
Y--将该功能编译进内核
N--不将该功能编译进内核
M--将该功能编译成可以在需要时动态插入到内核中的模块
使用的makexconfig,使用鼠标就可以选择对应的选项。
使用是makemenuconfig,需要使用空格键进行选取。
将与内核其它部分关系较远且不经常使用的部分功能代码编译成为可加载模块,有利于减小内核的长度,减小内核消耗的内存,简化该功能相应的环境改变时对内核的影响;不需要的功能就不要选;与内核关心紧密而且经常使用的部分功能代码直接编译到内核中。
1.Codematurityleveloptions
代码成熟等级。
此处只有一项:
promptfordevelopmentand/orincompletecode/drivers,试验现在仍处于实验阶段的功能khttpd、IPv6等,选择为Y了;
2.Loadablemodulesupport
Enableloadablemodulesupport:
必选
Setversioninformationonallmodulesymbols:
不选它。
Kernelmoduleloader:
让内核在启动时有自己装入必需模块的能力,选上。
3.Processortypeandfeatures
CPU类型。
Processorfamily:
选择CPU类型。
HighMemorySupport:
不选。
Mathemulation:
协处理器仿真。
MTTRsupport:
MTTR支持。
不选。
Symmetricmulti-processingsupport:
不选。
4.Generalsetup最普通的一些属性进行设置。
Networkingsupport:
网络支持。
必须,
PCIaccessmode:
PCI存取模式。
可供选择的有BIOS、Direct和Any,选Any。
Supportforhot-pluggabeldevices:
热插拔设备支持。
不选。
PCMCIA/CardBussupport:
PCMCIA/CardBus支持。
有PCMCIA必选。
SystemVIPC
BSDProcessAccounting
Sysctlsupport:
缺省。
PowerManagementsupport:
电源管理支持。
AdvancedPowerManagementBIOSsupport:
高级电源管理BIOD支持。
5.MemoryTechnologyDevice(MTD)
MTD设备支持。
不选。
6.Parallelportsupport
串口支持。
7.PlugandPlayconfiguration
即插即用支持。
8.Blockdevices
块设备支持。
NormalPCfloppydisksupport:
普通PC软盘支持。
必选。
XTharddisksupport:
CompaqSMART2support:
MulexDAC960/DAC1100PCIRAIDControllersupport:
RAID镜像。
9.Networkingoptions网络选项。
10.TelephonySupport
11.ATA/IDE/MFM/RLLsupport
12.SCSIsupport
。
13.IEEE1394(FireWire)support不选。
14.I2Odevicesupport 不选。
15.Networkdevicesupport网络设备支持。
16.AmateurRadiosupport不选
17.IrDA(infrared)support不选
18.ISDNsubsystem不选
19.OldCD-ROMdrivers(notSCSI、notIDE)不选
20.Characterdevices
21.Filesystems文件系统。
22.Consoledrivers
控制台驱动。
23.Sound
声卡驱动。
24.USBsupprot
USB支持。
25.Kernelhacking
配置完,存盘退出。
6.编译
#makedep
#makeclean
#makezImage
#makebzImage
#makemodules
#makemodules_install
#depmod-a
更新后得到了新版本的内核。
改动:
#cp/usr/src/linux/System.map/boot/System.map-2.4.0test8
#cp/usr/src/linux/arch/i386/bzImage/boot/vmlinuz-2.4.0test8
#cd/boot;rm-fSystem.mapvmlinuz
#ln-svmlinuz-2.4.0test8vmlinuz
#ln-sSystem.map-2.4.0test8System.map
然后修改/etc/lilo.conf:
#vi/etc/lilo.conf
增加如下一段:
image=/boot/vmlinuz-2.4.0test8
label=linux240
read-only
root=/dev/hda2 其中root=/dev/hda2运行:
#/sbin/lilo-v
确认对/etc/lilo.conf的编辑无误,现在重新启动系统:
#shutdown-rnow
三.Linux内核裁剪的具体过程
在menuconfig中配置:
详细介绍内核配置选项及删改情况
第一部分:
全部删除
Codematurityleveloptions--->代码成熟等级选项
[]Promptfordevelopmentand/orincompletecode/drivers
第二部分:
除以下选项,其它全部删除
Generalsetup—〉
SystemVIPC(IPC:
InterProcessCommunication)
第三部分:
除以下选项,其它全部删除
Loadablemodulesupport--->
[]Enableloadablemodulesupport
第四部分:
全部删除
Blocklayer-----〉块设备
第五部分:
除以下选项,其它全部删除
Processortypeandfeatures--->处理器类型
SubarchitectureType(PC-compatible)--->使Linux可以支持多种PC标准,使用的PC机是遵循所谓IBM兼容结构(pc/at)。
选择一些其它架构。
选择PC-compatible。
Processorfamily(386):
对每种CPU做最佳化,让它跑的好又快,选的是386
第六部分:
除以下选项,其它全部删除
Powermanagementoptions(ACPI,APM)--->电源管理选项
[]PowerManagementDebugSupport电源管理的调试信息支持,
ACPISupport---〉高级电源接口配置支持,
[]Button这个选项用于注册基于电源按钮的事件,
第七部分:
除以下选项,其它全部删除
Busoptions(PCI,PCMCIA,EISA,MCA,ISA)--->总线选项
[]PCIsupport
PCIaccessmode(Any)--->PCI外围设备配置,选Any,系统将优先使用MMConfig,然后使用BIOS,最后使用Direct检测PCI设备。
第八部分:
除以下选项,其它全部删除
Executablefileformats--->
KernelsupportforELFbinariesELF是开放平台下最常用的二进制文件,它支持不同的硬件平台。
要选。
第九部分:
除以下选项,其它全部删除
Networking
Networkingoptions--->
[]Unixdomainsockets
[]TCP/IPnetworking
第十部分:
除以下选项,其它全部删除
DeviceDrivers--->设备驱动
Blockdevices-------〉
[]CompaqSMART2support
[]CompaqSmartArray5xxxsupport
[]Loopbackdevicesupport
[]RAMdisksupport
SCSIdevicesupport--->里面有关于USB支持的,要选择
[]SCSIdevicesupportUSB要用,必须选择
[]legacy/proc/scsi/supportUSB要用,必须选择
[]SCSIdisksupportUSB要用,必须选择
SCSILow-leveldrivers
[]SerialATA(SATA)support
[]IntelPIIX/ICHSATAsupport 这个必须选择,否则无法产生引导文件
[]ViaSATAsupport
Networkingdevicesupport--->这个下面是选网卡驱动,一定要选
Ethernet(1000mbit)-我的电脑是千兆网卡所以就选这个
[]broadcomTigon3support
Inputdevicesupport--->这个里面要设置你的鼠标键盘什么的
[]Providelegacy/dev/psauxdevice
Graphicssupport--->
[]Supportforframebufferdevices支持Framebuffer的,一定要选择
USBsupport--->
[]USBdevicefilesystem这个好象是用U盘必须的
[]EHCIHCD(USB2.0)support有usb2.0就选上把,编译成模块
[]OHCIHCDsupport必须选择,编译成模块
[]UHCIHCD(mostIntelandVIA)support必须选择,编译成模块
[]USBMassStoragesupport用U盘必须选择
USBHumanInterfaceDevice(fullHID)support里面选择usb鼠标和usb键盘,
HIDinputlayersupport选择
/dev/hiddevrawHIDdevicesupport选择
第十一部分:
除以下选项,其它全部删除
filesystems--->文件系统
<*>Secondextendedfssupport
[*]Ext2extendedattributes
[*]Ext2POSIXAccessControlLists
[*]Ext2SecurityLabels
Ext3journallingfilesystemsupport
[*]Ext3extendedattributes
[*]Ext3POSIXAccessControlLists
[*]Ext3SecurityLabels
Kernelautomountersupport内核自动挂载的,当然要选
Kernelautomounterversion4support(alsosupportsv3)当然要选
DOS/FAT/NTFilesystems--->
DOSFATfssupport
MSDOSfssupport
VFAT(Windows-95)fssupport
NTFSfilesystemsupport
Nativelanguagesupport语言支持,这里就支持英语和汉语就行了,不多说了
[]NLSISO8859-1必须选择,这个是关于U盘挂载的。
CD-ROM/DVDFilesystems--->这个是关于挂载ISO文件的
<*>ISO9660CDROMfilesystemsupport
第十二部分:
全部删除
Instrumentationsupport
第十三部分:
全部删除
Kernelhack