Chinaunix首页 | 论坛 | 博客
  • 博客访问: 108985
  • 博文数量: 50
  • 博客积分: 968
  • 博客等级: 少尉
  • 技术积分: 492
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-17 09:51
文章分类

全部博文(50)

文章存档

2012年(2)

2011年(48)

我的朋友

分类: LINUX

2011-06-15 10:31:03

升级内核实验

 

 

编译Linux内核

 

[root@/ ]# cp /mnt/hgfs/share/linux-2.6.30.4.tar.bz2   /usr/src/

 

[root@ src]# cd /usr/src/

 

[root@ src]# tar jxf linux-2.6.30.4.tar.bz2

 

[root@ src]# cp /boot/config-2.6.9-42.EL  /usr/src/linux-2.6.30.4/.config

 

[root@ src]# cd linux-2.6.30.4

 

[root@ linux-2.6.30.4 ]# make menuconfig

 

 

vmware下编译内核,硬盘用的是scsi的,以下三个选项必选:

     Device Drivers ---><*>SCSI device support  (此项不选的话,下面两项就选择不上)

     Device Drivers ---><*>SCSI device support ---><*>SCSI disk support

     Device Drivers---><8>SCSI device support--->SCSI low-level drivers---><*>; BusLogic SCSI support

去掉下面两项

     DeviceDrivers--->[*]Networkdevicesupport--->[*]Ethernet(1000Mbit)--->Intel(R) 82575/82576 PCI-Express Gigabit Ethernet support去掉

    Device Drivers--->[*]USB support--->USB Serial Converter support--->USB KL5KUSB105 (Palmconnect) Driver去掉最后一个

 

另外建议: 

因为原始系统的内核配置文件将许多驱动设置为编译为模块,

如果你对自己机器的硬件非常了解,可以去掉这些驱动,节省大量的编译时间和精减内核;

有一些对系统实时性影响较大的模块可以酌情考虑去掉或不使用,如硬盘开启DMA传输,

使用X服务器加速,USB Legacy SupportCPU requency, SMI等等。

 

添加NFS支持等PC常用功能。

 

 

 

 

 

[root@linux-2.6.30.4]# make bzImage

内核编译成功后,会在/usr/src/linux/arch/i386/boot目录中生成一个新内核的映像文件bzImage

如果用 make  zImage编译,内核很大的话,系统会提示你使用make   bzImage命令来编译,所以直接用make bzImage来编译。

 

[root@linux-2.6.30.4]# make modules

 

[root@linux-2.6.30.4]# make modules_install

 

安装成功后,系统会在/lib/modules目录下生成一个2.6.30.4子目录,里面存放着新内核的所有可加载模块。

3、安装新编译的linux内核

 

[root@linux-2.6.30.4]# make install

 

 

看看/boot目录下是不是一切都为我们准备好了,包括initrd-2.6.30.4-.imgvmlinuz-2.6.30.4-XXXSystem.map-2.6.30.4-XXX

而且,grub引导项也自动为我们添加了,当然对于引导项后面还要作一点小的修改。

 

****************************************************************************************************

如果在/boot下没有我们生成的三个目标文件,则需要将新内核和System.map文件拷贝到/boot目录下,依次执行以下命令:    

# cp  /usr/src/linux-2.6.30.4/arch/i386/boot/bzImage   /boot/vmlinuz-2.6.30.4    

# cp  /usr/src/linux-2.6.30.4/System.map   /boot/System.map-2.6.30.4   

# cd  /boot  (进入boot目录)

 

/boot目录下,执行以下命令:

# new-kernel-pkg --mkinitrd --depmod --install 2.6.30.4 (这时候你的/boot下会生成一个initrd-2.6.30.4.img,并且你的grub.conf文件也作了相应更改)

# rm rf  System.map  (删除原来的连接)    

# ln s System.map-2.6.30.4  System.map   (重新建立连接)

 

******************************************************************************************************

 

[root@linux-2.6.30.4]# df -h     

Filesystem 容量 已用 可用 已用% 挂载点

 

/dev/sda1 9.7G 5.3G 3.9G 58% /

 

none 125M 0 125M 0% /dev/shm

 

/dev/sda2 4.2G 160M 3.9G 4% /home

可知,/目录的挂载点是/dev/sda1,这在下面的引导项中root要用到。

 

[root@linux-2.6.30.4]# vi /boot/grub/grub.conf

 

make install之后生成了如下的引导项:

 

default=1

timeout=5

splashimage=(hd0,0)/grub/splash.xpm.gz

 

title Red Hat Enterprise Linux AS (2.6.30.4-XXX)

 

      root (hd0,0)

 

      kernel /boot/vmlinuz-2.6.30.4-XXX ro root=LABEL=/ rhgb quiet

 

      initrd /boot/initrd-2.6.30.4-XXX.img

title Red Hat Enterprise Linux AS (2.*.*.*-*)     //旧内核

 

      root (hd0,0)

 

      kernel /boot/vmlinuz-***** ro root=LABEL=/ rhgb quiet

 

      initrd /boot/initrd-*****.img

将其修改为:(区别在defaultroot处)

 

default=0

timeout=5

splashimage=(hd0,0)/grub/splash.xpm.gz

 

title Red Hat Enterprise Linux AS (2.6.30.4-XXX)

 

      root (hd0,0)

 

      kernel /boot/vmlinuz-2.6.30.4-XXX ro root=LABEL=/ enforcing=0 rhgb quiet

 

      initrd /boot/initrd-2.6.30.4-XXX.img

title Red Hat Enterprise Linux AS (2.*.*.*-*)     //旧内核

 

      root (hd0,0)

 

      kernel /boot/vmlinuz-***** ro root=LABEL=/ rhgb quiet

 

      initrd /boot/initrd-*****.img

 

做两处修改:

(1) default=1改为default=0(不改的话也可以,只不过重启之后会默认进入之前的内核)

(2) kernel行的“LABEL=/”换成根目录所在的分区(上一步查看的就是)

此步很重要,修改错误将可能导致进不去系统

3Enforcing mode requested but no policy loaded, halting now.

Kernel panic - not syncing : Attempted to kill init!

然后就死机了,解决方法:

1、修改/etc/selinux/config

selinux=enforcingpermissive改成disabledok.

 

还有一种方法:

 

比如我在kernel /vmlinuz-2.6.18.8 ro root=/dev/VolGroup00/LogVol00 rhgb quiet

中修改为:kernel /vmlinuz-2.6.18.8 ro root=/dev/VolGroup00/LogVol00 enforcing=0 rhgb quiet

 

 

4、重启以使用新编译内核

 

[root@linux-2.6.30.4]# reboot

 

引导时,选择“Red Hat Enterprise Linux AS (2.6.30.4-XXX)”项

 

[root@haitao-desktop ~]# uname –a

 

Linux haitao-desktop 2.6.30.4-XXX #1 Wed Apr 23 03:09:26 CST 2008 i686 athlon i386 GNU/Linux


阅读(1183) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~