免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1785 | 回复: 0
打印 上一主题 下一主题

转贴(编译内核) [复制链接]

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-08-05 15:51 |只看该作者 |倒序浏览
作者:meichaol
下面的安装过程在 RedHat Linux 6.1 Server 上测试,安装过程使用 root 用户,当时新的内核版本为2.2.13,现在最新的稳定版本时2.2.15 (请到 http://www.kernel.org 查询最新的内核版本信息)。
(下述的编译、安装步骤我本人已经在HP LC3 PII 300 机器上测试过的。)

一、 创建紧急启动盘
察看/etc/lilo.conf文件,确定你是用哪个内核映像文件启动的。例如:[root@deep]# cat /etc/lilo.confboot=/dev/sda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
image=/boot/vmlinuz-2.2.12-20
label=linux
root=/dev/sda6
initrd=/boot/initrd-2.2.12-20.img
read-only

上述例子说明系统使用/boot/vmlinuz-2.2.12-20 内核映像文件启动。现在,使用root登录,然后放入一张1.44M 软盘。[root@deep]# mkbootdisk --device /dev/fd0 2.2.12-20Insert a disk in /dev/fd0. Any information on the disk will be lost.
Press to continue or ^C to abort:

使用上述的命令建立一张可以启动的软盘,当你升级内核出现错误的时候可以使用这张软盘恢复。建议使用这张软盘重新启动机器确保能正常使用。

二、 内核优化
解压缩下列 .tar.gz 文件进入 /usr/src/ 目录[root@deep]# cp linux-version.tar.gz /usr/src/[root@deep]# rm -rf linux
[root@deep]# rpm -e --nodeps kernel-headers kernel
[root@deep]# rm -rf /usr/src/linux-2.2.12/
[root@deep]# rm -rf /lib/modules/2.2.12-20/
[root@deep]# tar xzpf linux.version.tar.gz
[root@deep]# chown -R 0.0 /usr/src/linux/
[root@deep]# rm -f linux-version.tar.gz

增加任务数为了增加系统允许的任务数,应该编辑头文件/usr/src/linux/include/linux/tasks.h 并对下列参数进行修改。
[root@deep]# vi /usr/src/linux/include/linux/tasks.h把 NR_TASKS 从 512 改为 3072把 MIN_TASKS_LEFT_FOR_ROOT 从 4 改为 24
使用 vi /usr/src/linux/Makefile 编辑 Makefile 文件修改下列代码行:把
CFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer修改为CFLAGS = -Wall -Wstrict-prototypes -O6 -mcpu=pentiumpro -march=pentiumpro-fomit-frame-pointer-fno-exceptions

把HOSTCFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer修改为HOSTCFLAGS = -Wall -Wstrict-prototypes -O6 -mcpu=pentiumpro -march=pentiumpro-fomit-frame-pointer-fno-exceptions

三、 编译确定 /usr/include/asm, /usr/include/linux, and /usr/include/scsi 这三个符号连接正确地连接到内核源代码的相关位置。
你可以使用下列的命令:
[root@deep]# cd /usr/include[root@deep]# rm -rf asm linux scsi
[root@deep]# ln -s /usr/src/linux/include/asm-i386 asm
[root@deep]# ln -s /usr/src/linux/include/linux linux
[root@deep]# ln -s /usr/src/linux/include/scsi scsi

使用下列命令清楚从前编译内核时残留的.o 文件和不必要的关联:[root@deep]# cd /usr/src/linux/[root@deep]# make mrproper

安装好源代码后,现在可以进行内核的配置了。[root@deep]# cd /usr/src/linux/[root@deep]# make config

有三种配置内核的方法:第一种方法是 make config 命令,它提供了一种基于字符的界面来进行各种内核的配置。 系统会提示你各种内核的配置选项。
第二种方法是 make menuconfig 命令,它提供了一个易于使用的菜单界面来进行内核的配置。第三种方法智 make xconfig 命令,它提供了一种图形界面来进行内核的配置。配置完成后,保存选项,然后返回 /usr/src/linux/ 目录,然后使用下列的命令完成内核的编译。[root@deep]# make dep; make clean; make bzImage
编译的时间根据你的机器配置会花费十几分钟到一个多小时不等,请耐心的等候就是
编译完成后,你可以安装编译并压缩好的内核映像文件了。如果在内核配置时选择了可装载模块选项的话(CONFIG_MODULES),你还要使用下列的命令编译相应的模块。
[root@deep]# make modules[root@deep]# make modules_install

之后拷贝内核影像文件 /usr/src/linux/arch/i386/boot/bzImage 到 /boot 并给它一个合适的名字:[root@deep]# cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-kernel.version.number
拷贝 /usr/src/linux/System.map 到 /boot 并给它一个合适的名字:[root@deep]# cp /usr/src/linux/System.map /boot/System.map-kernel.version.number
然后用 cd 命令转到 /boot 目录并重新建立连接 vmlinuz 和 System.map :[root@deep]# cd /boot[root@deep]# ln -fs vmlinuz-kernel.version.number vmlinuz
[root@deep]# ln -fs System.map-kernel.version.number System.map

删除不必要的文件:
[root@deep]# rm -f module-info[root@deep]# rm -f initrd-2.2.12-20.img (如果你有SCSI设备的话)
最后,编辑 /etc/lilo.conf 文件让系统启动的时候使用新的内核:[root@deep]# vi /etc/lilo.conf
boot=/dev/sda
map=/boot/map
install=/boot/boot.b
prompt
timeout=20
restricted
password=somepasswd
image=/boot/vmlinuz-kernel.version.number #(在这里是你的内核映像文件的名称).label=linux
root=/dev/sda6
read-only

(上面的仅是例子而已,跟你的文件会略有不同)别忘了修改 /etc/lilo.conf 后及时更新lilo:[root@deep]# /sbin/lilo -v
特别注意:如果你在配置 Unix98 PTY support (CONFIG_UNIX98_PTYS)选择了 NO ,那么你还要修改/etc/fstab 文件,删除下列的行:none /dev/pts devpts gid=5,mode=620 0 0
编辑 /etc/conf.modules 并删除没有必要的模块[root@deep]# vi /etc/conf.modules例如Alias scsi_hostadapter model (如果有 SCSI 驱动).Alias eth0 Ethernet model card (以太网卡).Alias parport_lowlevel parport-pc (并口).Pre_install pcmcia_core /etc/rc.d/init.d/pcmcia start (如果是笔记本的话).
如果这些模块在配置新内核的时候没有选择编译或者已经编译到内核里,那么就应该删除它们。修改之后必须重新运行LILO ,重新启动机器。
重新创建紧急启动软盘

如果一切正常,那么恭喜你,内核升级就算完成了!这时你应该重新创建一张紧急启动软盘。
以 root 登录,插入一张新的软盘:[root@deep]# mkbootdisk --device /dev/fd0 2.2.13Insert a disk in /dev/fd0. Any information on the disk will be lost.
Press to continue or ^C to abort:

更新 /dec 入口如果你升级了内核或者添加了一个新的设备,那么你应该更新 /dev 入口。以root用户登录:[root@deep]# cd /dev[root@deep]# ./MAKEDEV update
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP