分享
 
 
 

编译内核

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

作者: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.conf

boot=/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-20

Insert 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.13

Insert 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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有