RPM编译内核并设置串口

今天发现自己以前在IBM技术论坛上速记的一个日志,整理后放到这里。

以前用过tar文件包编译内核,这几天用RPM文件编译内核,速记:

1.安装所需软件

1
2
3
4
[root@host]#yum install gcc
[root@host]#yum install kernel
[root@host]#yum install ncurses-devel
[root@host]#yum install rpm-build redhat-rpm-config unifdef

2.安装内核RPM文件

1
2
3
4
[root@host]# mkdir -p /usr/src/redhat/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
[root@host]# rpm –ivh kernel-3.2.5.src.rpm
[root@host]# cd /usr/src/redhat/SPECS/
[root@host]# rpmbuild -bp --target=`uname -m` kernel-2.6.spec

3.开始编译源码

1
2
3
4
5
6
7
8
9
[root@host]# cd /usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.x86_64
[root@host]# cp .config .config.bak
[root@host]# cp -f /boot/config-`uname -r` .config
[root@host]# make menuconfig
[root@host]# make clean ;
[root@host]# make bzImage;
[root@host]# make modules;
[root@host]# make modules_install ;
[root@host]# make install

4.确认引导文件

内核已经编译安装完毕,/boot目录会有文件:

1
vmlinuz-x.x.x

/lib/modules/会有目录:

1
x.x.x

/boot/grub/menu.lst自动添加了新的启动标签。

1
2
[root@host]# cd /boot
[root@host]# mkinitrd initrd-x.x.x.img x.x.x (此处x.x.x是在/lib/modules/下子目录,如果已经产生initrd-x.x.x.img,则可省略)

确认/boot/grub/menu.lst没有问题即可用新内核启动系统

5.设置串口(可选)

a) 修改/boot/grub.conf的kernel行,变成如下(举例):

1
2
3
4
5
6
7
8
9
10
11
12
13
#boot=/dev/hda
default=0
timeout=5
serial --unit=0 --speed=9600 --word=8 --parity=no --stop=1
terminal --timeout=0 serial console
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (x.x.x)
root (hd0,0)
kernel /vmlinuz-x.x.x ro root=LABLE=/ console=tty0 console=ttyS0,9600
initrd /initrd-x.x.x.img

b. 修改/etc/inittab,加一行:

1
7:2345:respawn:/sbin/agetty -L ttyS0 9600 vt100

c. 修改/etc/securetty,在最后加一行:

1
ttyS0

d. 修改/etc/sysconfig/kudzu,把 safe 改为no

吴羽舒 wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!