Linux内核编译

来源:互联网 发布:数据恢复需要多少钱 编辑:程序博客网 时间:2024/05/16 11:43

Linux 内核编译
关键词:Linux 内核 编译 配置


今天开始尝试对Linux内核的编译。Linux的内核编译是相当漫长的过程,仅仅通
过网上的教程进行编译只是了解编译的步骤,使自己对编译流程有个简单的了解。
编译器配置:使/sur/include 中的部分连接文件指向编译源代码固定位置,此部十
分重要。若配置不正确,则会引起编译过程文件无法找到的错误。
# cd /usr/include/
# rm -r asm linux scsi
# ln -s /usr/src/linux/include/asm-i386 asm
# ln -s /usr/src/linux/include/linux linux
# ln -s /usr/src/linux/include/scsi scsi
一、在编译的过程中主要用到以下几个命令:
1、make mrproper 该命令确保源代码目录下没有不正确的.o文件以及文件的互
相依赖。如果是刚下载的完整的源程序包进行编译,本步可以省略。而如果你多次使用了
这些源程序编译内核,那么最好要先运行一下这个命令。
2、make menuconfig 传统的配置模式,配置繁琐,不推荐使用。
make menuconfig 字符界面菜单选择配置模式,类似于安装操作系统时进入的
文本配置界面。
make xconfig 基于图形界面的配置界面,推荐使用。
在配置选择的时候,有以下参数,意义分别是:
Y--将该功能编译进内核
  N--不将该功能编译进内核
  M--将该功能编译成可以在需要时动态插入到内核中的模块
3、make dep 该命令实际上是读取配置过程中生成的配置文件,来创建对应的
依赖关系。从而决定那些需要编译而那些不需要编译。
4、make clean 删除前面步骤生成的一些中间文件,以免生成一些意想不到的错
误。
5、make bzImage或make zImage 实现完全编译内核,两个命令生成的内核都是
gzip压缩的。两个命令的区别是make bzImage可以生成大一些的内核。
6、make modules
7、make modules_install
8、depmod -a
后面这3个命令只有在你进行配置的过程中,在回答Enable loadable module
support (CONFIG_MODULES)时选了"Yes"才是必要的,make modules和make
modules_install分别生成相应的模块和把模块拷贝到需要的目录中。
  严格说来,depmod -a命令和编译过程并没有关系,它是生成模块间的依赖关系,
这样你启动新内核之后,使用modprobe命令加载模块时就能正确地定位模块。
三、编译后配置:
#cp /usr/src/linux/System.map /boot/System.map-2.4.18
#cp /usr/src/linux/arch/i386/bzImage /boot/vmlinuz-2.4.18
以上这两个文件是我们刚才编译时新生成的。下面修改/boot下的两个链接
System.map和vmlinuz,使其指向新内核的文件:
#cd /boot;rm -f System.map vmlinuz
#ln -s vmlinuz-2.4.18 vmlinuz
#ln -s System.map-2.4.18 System.map
修改Grub
title Red Hat linux (2.4.18)
root (hd0,0)
kernel /vmlinuz-2.4.18 ro root=/dev/hda2
Grub不需再次调用命令,自动生效。
重启以后就可以用新内核了。
通过使用make install命令 make程序会自动创建initrd..文件并且将我们刚才通
过编译形成的压缩内核文件和system.map拷贝到/boot文件夹下,并且自动修改grub.conf
文件,以形成新的选项。
二、编译配置选项解读:
  确保/usr/include/目录下的asm、linux和scsi等链接是指向要升级的内核源代码
的它们分别链向源代码目录下的真正的、该计算机体系结构(对于PC机来说,使用的体
系结构是i386)所需要的真正的include子目录。如:asm指
/usr/src/linux/include/asm-i386等。若没有这些链接,就需要手工创建,按照下面的
步骤进行:
# cd /usr/include/
# rm -r asm linux scsi
# ln -s /usr/src/linux/include/asm-i386 asm
# ln -s /usr/src/linux/include/linux linux
# ln -s /usr/src/linux/include/scsi scsi
我们以make menuconfig 配置模式来解释配置过程中的选项。
1. Code maturity level option
代码成熟等级。此处只有一项:prompt for development and/or incomplete
code/drivers,
如果你要试验现在仍处于实验阶段的功能,比如khttpd、IPv6等,就必须把该
项选 择为Y了;否则可以把它选择为N。
2. Loadable module support
对模块的支持。这里面有三项:
Enable loadable module support:除非你准备把所有需要的内容都编译到内核
里面,否则该项应该是必选的。
Set version inFORMation on all module symbols:可以不选它。
Kernel module loader:让内核在启动时有自己装入必需模块的能力,建议选上。
3. Processor type and features
4. CPU类型。内容蛮多的,不一一介绍了,有关的几个如下:
Processor family:根据你自己的情况选择CPU类型。
High Memory Support:大容量内存的支持。可以支持到4G、64G,一般可以不
选。Math emulation:协处理器仿真。协处理器是在386时代的宠儿,现在早已
不用了。 MTTR support:MTTR支持。可不选。Symmetric multi-processing
support:对称多处理支持。除非你富到有多个CPU,否则就不用选了。
5. General setup
这里是对最普通的一些属性进行设置。这部分内容非常多,一般使用缺省设置
就可以了。下面介绍一下经常使用的一些选项:
Networking support:网络支持。必须,没有网卡也建议你选上。
PCI support:PCI支持。如果使用了PCI的卡,当然必选。
PCI Access mode:PCI存取模式。可供选择的有BIOS、Direct和Any,选Any
吧。
 Support for hot-pluggabel devices:热插拔设备支持。支持的不是太好,
可不选。
 PCMCIA/CardBus support:PCMCIA/CardBus支持。有PCMCIA就必选了。
 System V IPC
 BSD Process Accounting
 Sysctl support:以上三项是有关进程处理/IPC调用的,主要就是System V
和BSD两种风格。如果你不是使用BSD,就按照缺省吧。
 Power Management support:电源管理支持。
 Advanced Power Management BIOS support:高级电源管理BIOS支持。
6. Memory Technology Device(MTD)
MTD设备支持。可不选。
7. Parallel port support
并口支持。如果不打算使用串口,就别选了。
8. Plug and Play configuration
即插即用支持。虽然linux对即插即用目前支持的不如Windows好,但是还是
选上吧,这样你可以拔下鼠标之类的体验一下Linux下即插即用的感觉。
9. Block devices
块设备支持。这个就得针对自己的情况来选了,简单说明一下吧:
 Normal PC floppy disk support:普通PC软盘支持。这个应该必选。
 XT hard disk support:
 Compaq SMART2 support:
 Mulex DAC960/DAC1100 PCI RAID Controller support:RAID镜像用的。
 Loopback device support:
 Network block device support:网络块设备支持。如果想访问网上邻居的
东西,就选上。
 Logical volume manager(LVM)support:逻辑卷管理支持。
 Multiple devices driver support:多设备驱动支持。
 RAM disk support:RAM盘支持。
10. Networking options
网络选项。这里配置的是网络协议。内容太多了,不一一介绍了,自己看吧,
如果你对网络协议有所了解的 话,应该可以看懂的。如果懒得看,使用缺省选
项(肯定要选中TCP/IP networking哦)就可以了。让我们看看,
TCP/IP、ATM、IPX、DECnet、Appletalk……支持的协议好多哦,IPv6也支持
了,Qos and/or fair queueing(服务质量公平调度)也支持了,还有
kHTTPd,不过这些都还在实验阶段。
11. Telephony Support
  电话支持。linux下可以支持电话卡,这样你就可以在IP上使用普通的电
话提供语音服务了。记住,电话卡可和modem没有任何关系哦。
12. ATA/IDE/MFM/RLL support
  这个是有关各种接口的硬盘/光驱/磁带/软盘支持的,内容太多了,使用缺
省的选项吧,如果你使用了比较特殊的设备,比如PCMCIA等,就到里面自己找
相应的选项吧。
13. 12. SCSI support
  SCSI设备的支持。我没有SCSI的设备,所以根本就不用选,如果你用了
SCSI的硬盘/光驱/磁带等设备,自己找好了。
14. Fusion MPT device support
需要Fusion MPT兼容PCI适配器,不用选。
15. I2O device support
需要I2O接口适配器支持,在智能Input/Output(I2O)体系接口中使用。
16. Network device support
网络设备支持。上面选好协议了,现在该选设备了,可想而知,内容肯定多得
很。还好还好,里面大概分类了,有ARCnet设备、Ethernet(10 or 100
Mbit)、Ethernet(1000Mbit)、Wireless LAN(non-hamradio)、Token Ring
device、Wan interfaces、PCMCIA network device support几大类。我用的是
10/100M的以太网,看来只需要选则这个了。还是10/100M的以太网设备熟悉,
内容虽然多,一眼就可以看到我所用 的RealTeck RTL-8139 PCI Fast
Ethernet Adapter support,为了免得麻烦,编译到内核里面好了,不选M了,
选Y。耐心点,一般说来你都能找到自己用的网卡。如果没有,你只好自己到厂
商那里去要驱动 了。
17. Amateur Radio support
配置业余无线广播。
18. IrDA(infrared)support
红外线支持。
19. ISDN subsystem
如果你使用ISDN上网,这个就必不可少了。
20. Old CD-ROM drivers(not SCSI、not IDE)
原来那些非SCSI/IDE口的光驱谁还在用啊,自己选吧,用IDE的CD-ROM不用选
21. Character devices
字符设备。这个内容又太多了,先使用缺省设置,需要的话自己就修改。把大
类介绍一下吧:
  I2C support:I2C是Philips极力推动的微控制应用中使用的低速串行总线
协议。如果你要选择下面的Video For linux,该项必选。
  Mice:鼠标。现在可以支持总线、串口、PS/2、C&T 82C710 mouse
port、PC110 digitizer pad,自己根据需要选择。
  Joysticks:手柄。即使在linux下把手柄驱动起来意义也不是太大,游戏
太少了。
   Watchdog Cards:虽然称为Cards,这个可以用纯软件来实现,当然也有
硬件的。如果你把这个选中,那么就会在你的/dev下创建一个名为watchdog的
文件,它可以记录你的系统的运行情况,一直到系统重新启动的1分钟左右。有
了这个文件,你就可以恢复系统到重启前的状态了。
  Video For linux:支持有关的音频/视频卡。
  Ftape, the floppy tape device driver:
  PCMCIA character device support:
22. File systems
文件系统。内容又太多了,老法子,在缺省选项的基础上进行修改。介绍以
下几项:
Quota support:Quota可以限制每个用户可以使用的硬盘空间的上限,在多用
户共同使用一台主机的情况中十分有效。
  DOS FAT fs support:DOS FAT文件格式的支持,可以支持
FAT16、FAT32。
  ISO 9660 CD-ROM file system support:光盘使用的就是ISO 9660的文件
格式。
  NTFS file system support:ntfs是NT使用的文件格式。
  /proc file system support:/proc文件系统是linux提供给用户和系统进
行交互的通道,建议选上,否则有些功能没法正确执行。
23. 还有另外三个大类都归到这儿了:Network File Systems(网络文件系统)、
Partition Types(分区类型)、Native Language Support(本地语言支持)。
值得一提的是Network File Systems里面的两种:NFS和SMB分别是linux和
Windows相互以网络邻居的形式访问对方所使用的文件系统,根据需要加以选择。
24. Console drivers
控制台驱动。一般使用VGA text console就可以了,标准的80*25的文本控制
台。
25. Sound
声卡驱动。如果你能在列表中找到声卡驱动那自然最好,否则就试试OSS了。
26. USB supprot
USB支持。很多USB设备,比如鼠标、调制解调器、打印机、扫描仪等,在
linux都可以得到支持,根据需要自行选择。
27. Kernel hacking
配置了这个,即使在系统崩溃时,你也可以进行一定的工作了。普通用户是用
不着这个功能的。

原创粉丝点击