ChinaUnix首页 > 精华文章 > Linux > 正文

[原创] [原]在redhat as 3.0 上精简并编译系统内核(适用于初级用户)


http://www.chinaunix.net 作者:llzqq  发表于:2005-01-09 19:57:48
发表评论】 【查看原文】 【Linux讨论区】【关闭

在redhat as 3.0 上精简并编译系统内核
                               

我们在安装LUNUX的过程中实际上有大量的,我们并不需要的模块被放在LINUX的系统内核中,并且每次在系统启动时这些没有的内核模块(在特定的需求下)会加载到系统内核中,这样以来不仅有大量的内存被占用,更为严重的是系统内核的运行效率会大打折扣。
下面是我精简和编译系统内核的实践过程。

1.编译环境说明:
在这里特别说明的是在编译系统内核之前一定要装全系统的编译环境。一般情况下在安装LINUX时选上Kernel Development和Development Tools就可以了。如果当时没有选装上请再单独安装,否则编译系统内核的过程会出错而不能进行。

另外我们编译内核时一定要在本地登陆,不能通过远程的控制台登陆到系统上进行操作。

2.去掉多余的内核模块:

# su -
# cd /usr/src/linux-2.4
# make mrproper                  如果是新装的系统可省略这个
# make menuconfig

如果你不需要并口设备支持(如传统的打印机),注销这个选项:

Parallel port support  --->;

如果你使用的IDE硬盘(会影响USB设备的使用),注销这个选项:

SCSI support  --->;

如果你没有IEEE 1394(火线)设备,注销这个选项:

IEEE 1394 (FireWire) support  --->;

如果你的网络中没有下列需求,注销这个选项的下列子选项:

Network device support  --->;

     FDDI driver support                       光纤网络
   Ethernet (1000 Mbit)                     1000M网络
   ATM drivers                                    ATM网络
   PCMCIA network device support    笔记本计算机支持
   Wireless LAN (non-hamradio)        无线网络
   Token Ring devices                        令牌环网络

如果你不想用LINUX架设业余电台,注销这个选项: 

Amateur Radio support  --->;

如果你不想使用红外线设备,注销这个选项:

IrDA (infrared) support  --->;

如果你没有ISDN线路,注销这个选项:

ISDN subsystem  --->;

如果你没有可以支持I20(PIC的超集)的设备,注销这个选项:

I2O device support  --->;

如果你只想让LINUX安静的工作,注销这个选项:

Sound  --->;

如果你没有USB接口设备并厌恶USB设备,注销这个选项:

USB support  --->;

如果你没有IBM的蓝牙设备(市场这种产品非常少),注销这个选项:

Bluetooth support  --->;

如果你有其他的内核需求,查找相关的内核选项:


3.开始内核编译:

# make dep
# make clean
# make bzImage 
# make modules
# make modules_install
# make install

# reboot
开机会发现多了个新内核引导选项。使用新内核引导系统。                    
    
4.精简编译的成果:

我的系统在完成了上述编译后系统内存占用下降了35M,CUP的占用明显下降了,
我的系统服务有:
CROND、IMAP、HTTPD、IPTABLES、IRQBALANCE、MYSQLD、NETFS、NETWORK、
POSTFIX、PROFTPD、SGI_FAM、SMB、SSHD、SYSLOG、XFS、XINETD

REBOOT计算机TOP查看:
RAM使用:27M
CUP使用:0

[ 本帖最后由 llzqq 于 2006-7-16 13:11 编辑 ]



 好好先生 回复于:2004-03-15 12:45:27

不知道去掉SCSI的支持对USB设备有没有影响,楼主实验了吗?


 sonyex678 回复于:2004-03-15 13:41:45

编译后重起
“。。。。。。。。。。。
。。。。。。。。。。。。。
。。。。。。。。。。。。。
VFS:Cannot open root device "LABLE=/" or 00:00
Please append a correct "root=" boot option
Kernel panic:VFS:Unalbe to mount root fs on 00:00”

然后停止了~~~~~~~~~~


WHY~~~~~~~~~~


 compadre 回复于:2004-03-15 13:52:46

楼主你写完了吗,最后make 完了,是不是还需要手动改些配置文件或者拷贝一些文件啊,楼主,在吗????是写完整了的吗???请补充一下好吗??看在加精的份儿上!!!!!!!


 llzqq 回复于:2004-03-15 14:40:09

编译完了REBOOT就行了,不用作任何其他设置。我今天早上刚试的。没有任何问题
大家出问题可能是编译前没有对内核make mrproper(初始到原始状态)


 llzqq 回复于:2004-03-15 14:42:32

去掉SCSI的支持应该对USB设备没有什么影响,我没实验过。


 好好先生 回复于:2004-03-15 14:45:51

引用:原帖由 "llzqq"]去掉SCSI的支持应该对USB设备没有什么影响,我没实验过。
 发表:


你最好拿个usb的U盘或者什么试一下吧,你已经编译完了不费事儿的。 :em02: 因为usb的设备虚拟成sd,我不太清楚有没有影响。如果没有影响,我也要精减我的内核了。 :em02:


 sxsfxx 回复于:2004-03-15 14:49:04

引用:原帖由 "好好先生"]不知道去掉SCSI的支持对USB设备有没有影响,楼主实验了吗?
 发表:



U盘肯定用不了了,U盘是模似成一个scsi disk的,有一个scsi disk要选上。
我遇到过这个问题,其它usb就不知道了,呵呵!


 好好先生 回复于:2004-03-15 14:54:39

呵呵!我现在只担心这一个问题,因为我要用我的移动硬盘,它也是模拟成scsi硬盘。:em02:那就留下scsi的支持吧!


 llzqq 回复于:2004-03-15 14:54:55

要是这样的话SCSI support选项就要慎用了,因为我从来都是禁用USB 的。


 sxsfxx 回复于:2004-03-15 14:58:15

要的,只有scsi有效了,scsi disk才可以有效的!


 什么都不懂 回复于:2004-03-15 15:23:41

回去试一下,默认有很多东西都是没用的


 双眼皮的猪 回复于:2004-03-15 16:11:30

楼主的意思是在本机基础上编译的?
2.4.21EL?

2.6的好象有很大不同也,哈哈


 leibin79 回复于:2004-03-15 16:12:20

对于模拟成硬盘的USB设备肯定是用不了了,但对于模拟成软盘的USB设备应该没有影响吧!!!


 fzgang 回复于:2004-03-17 08:35:00

我自己试过的,不编译SCSI U盘和USB硬盘根本就不能用,我的是2.6的内核


 114 回复于:2004-04-20 23:59:31

我在make modules_install时出现了如下错误,该如何解决??
现在重启系统会不会有问题?还能启动起来嘛?

cd /lib/modules/2.4.9-e.3custom; \
mkdir -p pcmcia; \
find kernel -path '*/pcmcia/*' -name '*.o' | xargs -i -r ln -sf ../{} pcmcia
if [ -r System.map ]; then /sbin/depmod -ae -F System.map  2.4.9-e.3custom; fi
depmod: *** Unresolved symbols in /lib/modules/2.4.9-e.3custom/kernel/drivers/addon/qla2200/qla2200.o
depmod:         scsi_unregister_Rsmp_719d9782
depmod:         scsi_unregister_module_Rsmp_81d85a75
depmod:         scsi_register_Rsmp_b62f57c7
depmod:         scsi_register_module_Rsmp_fa20b7b0
depmod: *** Unresolved symbols in /lib/modules/2.4.9-e.3custom/kernel/drivers/addon/qla2200/qla2300.o
depmod:         scsi_unregister_Rsmp_719d9782
depmod:         scsi_unregister_module_Rsmp_81d85a75
depmod:         scsi_register_Rsmp_b62f57c7
depmod:         scsi_register_module_Rsmp_fa20b7b0
depmod: *** Unresolved symbols in /lib/modules/2.4.9-e.3custom/kernel/drivers/addon/qla2200_new/qla2200_new.o
depmod:         scsi_unregister_Rsmp_719d9782
depmod:         scsi_unregister_module_Rsmp_81d85a75
depmod:         scsi_register_Rsmp_b62f57c7
depmod:         scsi_register_module_Rsmp_fa20b7b0
depmod: *** Unresolved symbols in /lib/modules/2.4.9-e.3custom/kernel/drivers/addon/qla2200_new/qla2300_new.o
depmod:         scsi_unregister_Rsmp_719d9782
depmod:         scsi_unregister_module_Rsmp_81d85a75
depmod:         scsi_register_Rsmp_b62f57c7
depmod:         scsi_register_module_Rsmp_fa20b7b0
make: *** [_modinst_post] Error 1
[root@www linux-2.4.9-e.3]#


 stonerose 回复于:2004-08-31 14:54:39

另外我们编译内核时一定要在本地登陆,不能通过远程的控制台登陆到系统上进行操作。

远程编译内核没问题啊,我就是这么做的。
还有楼主启动这么多服务,怎样看出cpu利用率明显下降?难道就看那个idle是0?


 水若寒 回复于:2004-12-17 17:26:10

引用:原帖由 "sonyex678" 发表:
编译后重起
“。。。。。。。。。。。
。。。。。。。。。。。。。
。。。。。。。。。。。。。
VFS:Cannot open root device "LABLE=/" or 00:00
Please append a correct "root=" boot option
Kernel panic:..........



一样的问题,无法解决。。。。


 sleep_meng 回复于:2005-01-09 19:27:32

如果照楼主的那样做的话,/boot目录下的内核文件根本就没有改动,我不知道,你编了那个内核来做什么,/boot下的内核没有变,也就是系统还是用原来的那个内核,我不知道系统性能和原来有什么不同,


 sleep_meng 回复于:2005-01-09 19:57:48

引用:原帖由 "llzqq" 发表:

3.开始内核编译:

# make dep 大约需要5分钟
# make clean 大约需要5秒
# make bzImage 大约需要10分钟
# make modules 大约需要30分钟
# make modules_install 大约需要1分钟
# reboot 



因为RedHat的源码是改过的,所以把楼主上面这里改一下就行了。
把上面的   make bzImage 直接改成make,
然后再加上make install
这样新生成的内核就会自动复制到/boot目录,并会在grub中添加一个项,reboot后选择新的那个内核启动就行了,原来旧的那个内核还在(建议不要把原来的内核删除)




原文链接:http://linux.chinaunix.net/bbs/viewthread.php?tid=280689
转载请注明作者名及原文出处