系统内核升级

..........

http://www.linuxidc.com/Linux/2012-09/70297.htm

1、使用如下命令安装安装编译前需要的编译环境。

srv10:~# yum install -y gcc make  bison ncurses-devel rpm-build

2、使用如下命令下载内核原码包。

srv10:~# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.37.tar.bz2

3、使用如下命令解压内核原码包。

srv10:~# tar -xvjf linux-2.6.37.tar.bz2 -C /usr/src

4、使用如下命令开始系统的内核编译,先清掉以前的编译的内容(初次编译内核这步也可以省略)。

srv10:~# cd /usr/src/linux-2.6.37

srv10:~# make mrproper

5、使用如下命令复制现有内核编译的配置文件。

srv10:~# cp /boot/config-`uname -r` .config

6、使用如下命令选择需要的内容。

srv10:~# make menuconfig

一定要勾选General setup→[*] enable deprecated sysfs features to support old userspace tools和Processor type and features→HighMemory Support。

7、修改.config文件中CONFIG_SYSFS_DEPRECATED_V2,将原本被注释掉的,CONFIG_SYSFS_DEPRECATED_V2改成CONFIG_SYSFS_DEPRECATED_V2=y。

8、使用如下命令编译内核。

srv10:~# make bzImage && make modules && make modules_install

srv10:~# make install

9、使用如下命令生成RPM包(生成的RPM包位于/usr/src/RedHat/RPMS/目录,RPM源码包位于/usr/src/redhat/SRPMS/目录)。

srv10:~# make rpm

10、使用rpm -ivh命令安装上一步生成在/usr/src/redhat/RPMS/目录下i386(或x86_64)目录上的kernel的RPM包。

11、使用rpm命令安装上面生成的RPM包。

12、使用如下命令生成生成initrd文件。

srv10:~# cd /lib/modules

srv10:~# mkinitrd /boot/initrd-2.6.37.img 2.6.37/

在linux-2.6.33以后,如果在升级重启后会报的错误“insmod: error inserting ‘/lib/dm-region-hash.ko’: –1 File exits”,这是 由于initrd里面的init中加载dm-region-hash.ko这个模块重复了,因此需要修改生成的initrd文件(不是所有的机器都会出现这个错),修改的方式如下:

1、解压initrd。

srv10:~# cp /boot/initrd-2.6.37.img /tmp

srv10:~# cd /tmp/

srv10:~# mkdir newinitrd

srv10:~# cd newinitrd/

srv10:~# zcat ../initrd-2.6.33.img |cpio -i

2、编辑init,找到下面的内容,删掉或注释重复的两行。

echo "Loading dm-region-hash.ko module"

insmod /lib/dm-region-hash.ko

echo "Loading dm-region-hash.ko module"

insmod /lib/dm-region-hash.ko

3、重新打包initrd。

srv10:~# find .|cpio -c -o > ../initrd

srv10:~# cd ..

srv10:~# gzip -9 < initrd > initrd-2.6.33.img

4、将initrd重新复制到/boot目录下。

srv10:~# cp initrd-2.6.33.img /boot

========================================================================== 

http://xugang.blog.51cto.com/400032/95621

L inux2.6.9.42内核升级
在这里且不说版本的不同与区别,它所支持的功能。相信用过LINUX的人都希望自己所用的系统,内核是最新的了。接下来就来就给大家介绍linux2.6.9-42升级linux2.6.26-42的方法。首先来看下当前系统的版本吧:
接下来就开始吧,把所需文件 “ linux-2.6.26.2.tar.bz2 .” 拷贝进 /usr/src目录下来,先进行bzip2  d linux-2.6.26 tar.bz2解压,然后tar一下。看我操作步骤:
   按下回车键,解压完毕就可以进行配置了。现在看看目录下是不是多了个linux-2.6.26.2的目录,那么就#cd linux-2.6.26.2命令进到它下面了。执行#make mrproper命令,为的是清除掉以前升级留下的一些不正确文件。
好了,下面要做的就是拷贝/boot/config- 2.6.26.2.EL里的文件到/usr/src/ linux-2.6.26.2/.config下生成.config文件
确认.config文件存在,那么就来配置内核各个选项吧,键入make menuconfig命令:
出现内核配置工具拦,如图;
    选择倒数第二项,加载一个已经存在的配置文件,按下select键。弹出保存文件名为.condig选择OK。
进到主菜单下,看到配置比较多就选择“File sysyems”下。
   来做个NTFS格式的加载吧。点住这项选select键。
出现下面这个对话框后,点到末尾按下  M  键。
    出现前面带有<>的两行,按空格键加*号退出并保存。
     配置结束了,该是进行编译了,进到下图所示目录,make dep来建立编译时所需要的从属文件,但是以前没进行过升级的话可以省略。
      make clean  来清除下内核编译的目标文件,看到成功,继续输入  make bzImage  ,注意  I 大写,这时候真正的编译才算是开始了。(时间比较长,耐心等待吧)
好了,编译终于算是完成了,功夫不负有心人啊。
    下面就进行编译可加载模块了,键入“make modules”命令执行,时间相对也要长些。
  看到编译完成。
    下面就开始安装可加载模块,输入“make_install”命令。
    过段时间后,完成了。进行下一步吧,从图中看到输入的是“make install”,这是加载新内核的命令。
    在安装过程中,发出个警告,不要去理会它。是scsi盘加载失败,我们用的是虚拟机吗,所以会报错,但这并不影响内核的升级。
好了,经过编译、安装后终于完成了。但如果认为真正意义上的完成那就错了。重启下系统就会发现,起不来。这是因为刚升级完内核,在启动加载配置文件上还是第一个,这时需要做的就是让系统能找到升级完后的新文件。
那就是“ cd /boot/grub 命令,查看下“menu.last”就是它了。
V 编辑器打开,在下图所示红色标记处添加“enforcing=0”然后保存退出,目的是使其强制加载。
 
     重启下系统,选择“Red Hat Enterprise linux AS (2.6.26.2)”看能否启动得了。
   
    经过段时间,系统正常启动。来查看下内核版本。
    已经成功升级为2.6.26.2了,实验成功完成了。回过头来总结一下实验也就是配置内核选项和编译两项比较麻烦一点,其它也没什么。

 

 =========================================================================

http://blog.yunvi.com/html/908.html

Centos 内核升级,升级步骤记录

linux kernel 主页:www.kernel.org

下载:

wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.39.4.tar.bz2

1.查看当前系统的版本:

1
2
[root@xyly ~]# uname  -a
Linux xyly 2.6.18-164.el5 #1 SMP Thu Sep 3 03:28:30 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux

当前系统内核版本为2.6.18-164.el5,而下载的kernel 版本为2.6.39.4

2,内核的编译步骤。

1
2
3
4
5
6
7
8
[root@xyly ~]#cd /usr/src
[root@xyly ~]# tar jxvf linux-2.6.39.4.tar.bz2
[root@xyly ~]# cd  linux-2.6.39.4
[root@xyly linux-2.6.39.4]# make mrproper                          #去除内核的依赖关系及编译后的垃圾信息<span id="more-908"></span>
[root@xyly linux-2.6.39.4]# make menuconfig 或make xconfig 或 make gconfig
make menuconfig 在以菜单模式进入内核配置界面
make xconfig 是在图形界面模式进入内核配置界面
make gconfig 在图形界面模式进入内核配置界面

我选用的是菜单模式

勾选需要的文件系统,相应的硬件参数,如果相对于熟悉,可以调整内核的参数,本人有点小迷糊 没做多大的调整。

1
2
3
[root@xyly linux-2.6.39.4]# make      #编译内核
[root@xyly linux-2.6.39.4]# make  modules  #编译内核模块
[root@xyly linux-2.6.39.4]# make  modules_install     #安装内核模块

安装成功后 /lib/modules目录会有一个2.6.39.4的子目录,里面放的是新内核可加载的所有模块

1
2
3
[root@xyly linux-2.6.39.4]# make install                     #编译安装
sh /root/linux-2.6.39.4/arch/x86/boot/install.sh 2.6.39.4 arch/x86/boot/bzImage \
System.map "/boot"

内核安装完毕

1
2
3
4
[root@xyly boot]# ll initrd-2.6.39.4.img
-rw------- 1 root root 2722020 Aug 29 14:43 initrd-2.6.39.4.img
[root@xyly boot]# pwd
/boot

3.设置启动顺序,把刚编译的内核添加到grub中

( 内核启动已经添加进去了,省的动手了)

修改/etc/grub.conf 中的default 启动顺序 如下
default=0
重启下系统,看看是否内核升级了。

1
2
[root@xyly ~]# uname -r
2.6.39.4

OK !!! 升级完毕!

 

 

 

 

 

 

##############################################################################

http://down.chinaz.com/server/201202/1598_1.htm

当前系统为CentOS Linux release 6.0 (Final),内核版本为2.6.32-71.el6.i686.由于最近内核出现最新的漏洞(linux kernel 又爆内存提权漏洞,2.6.39 内核无一幸免,所以将内核升级至3.2.2最新版本。

1、查看当前系统内核

# uname -r
2 2.6.32-71.el6.i686

2、下载linux-3.2.2内核包

# cd ~
# wget -c http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.2.2.tar.bz2
# tar jxvf &nbsp;linux-3.2.2.tar.bz2
# cd&nbsp;linux-3.2.2

3、配置内核并安装

# make mrproper  #清除环境变量,即清除配置文件
# make menuconfig #在菜单模式下选择需要编译的内核模块

找到以下选中选项并选中networking support → networking options → network packet filtering framework(netfilter)

(1)Core netfilter configuration

  • 勾中"Netfilter connection tracking support" -m state相关模块是依赖它的,不选则没有。
  • 将netbios name service protocal support(new) 编译成模块,不然后面升级iptables后启动时会出错
  • 勾中"Netfilter Xtables support (required for ip_tables)"

(2)IP: Netfilter Configuration

  • 将 "IPv4 connection tracking support (require for NAT)" 编译成模块。
  • 勾中IP tables support (required for filtering/masq/NAT) 。
  • 将 "Full NAT" 下的 "MASQUERADE target support" 和 "REDIRECT target support" 编译成模块

(3)其它模块可以根据自己的需要进行选择,若不懂可以参考内核配置手册.

# make clean #确保所有东西均保持最新状态.
# make bzImage #生成内核文件
# make modules #编译模块
# make modules_install #安装模块
# make install #安装

4、编辑 /etc/grub.conf 文件,将 default=1 改为 default=0

# cat /etc/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/mapper/VolGroup-lv_root
# initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS Linux (3.2.2)
root (hd0,0)
kernel /vmlinuz-3.2.2 ro root=/dev/mapper/VolGroup-lv_root rd_LVM_LV=VolGroup/lv_root rd_LVM_LV=VolGroup/lv_swap rd_NO_LUKS rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us crashkernel=auto rhgb quiet
initrd /initramfs-3.2.2.img
title centos (2.6.32-71.el6.i686)
root (hd0,0)
kernel /vmlinuz-2.6.32-71.el6.i686 ro root=/dev/mapper/VolGroup-lv_root rd_LVM_LV=VolGroup/lv_root rd_LVM_LV=VolGroup/lv_swap rd_NO_LUKS rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us crashkernel=auto rhgb quiet
initrd /initramfs-2.6.32-71.el6.i686.img

5、重启系统,并查看内核

# reboot
# uname -r

3.2.

 

http://www.cnblogs.com/wanghaosoft/archive/2013/01/12/2857766.html

今日在centos上安装jsp环境,即(Nginx+jdk+mysql+tomcat)发现nginx启动后无法访问,于是查看日志,log如下

[root@AY12122501352213a7156 ~]# cat /var/log/nginx/error.log 
2013/01/12 16:29:43 [emerg] 32055#0: eventfd() failed (38: Function not implemented)
2013/01/12 16:29:43 [alert] 32054#0: worker process 32055 exited with fatal code 2 and can not be respawn

到网上以查找,原来内核版本太低,没有Linux-native aio,但是最新版Nginx 需要 Linux-native aio 啊,没办法,升级内核吧。

1、查看当前内核版本

[root@AY12122501352213a7156 ~]# uname -r
2.6.18-164.el5

2、下载linux-3.2.14内核包

[root@AY12122501352213a7156 ~]# wget -c http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.2.14.tar.bz2

[root@AY12122501352213a7156 ~]#tar -jxvf linux-3.2.14.tar.bz2

[root@AY12122501352213a7156 ~]#cd  linux-3.2.14

3、配置内核并安装

 

# yum install ncurses-devel       #升级ncurses

# make mrproper  #清除环境变量,即清除配置文件
# make menuconfig  #在菜单模式下选择需要编译的内核模块

一定要勾选(输入y选中,M编译为模块)

a、General setup→[*] enable deprecated sysfs features to support old userspace tools

b、Processor type and features→HighMemory Support。

c、找到以下选中选项并选中networking support → networking options → network packet filtering framework(netfilter)

(1)Corenetfilter configuration

  • 勾中"Netfilter connection tracking support" -m state相关模块是依赖它的,不选则没有。
  • 将netbios name service protocal support(new) 编译成模块,不然后面升级iptables后启动时会出错
  • 勾中"Netfilter Xtables support (required for ip_tables)"

(2)IP: Netfilter Configuration

  • 将 "IPv4 connection tracking support (require for NAT)" 编译成模块。
  • 勾中IP tables support (required for filtering/masq/NAT) 。
  • 将 "Full NAT" 下的 "MASQUERADE target support" 和 "REDIRECT target support" 编译成模块

(3)其它模块可以根据自己的需要进行选择,若不懂可以参考内核配置手册.

# make clean #确保所有东西均保持最新状态. 
# make bzImage #生成内核文件
# make modules #编译模块
# make modules_install #安装模块
# make install #安装

注意:编译内核的时候可能会出现如下问题:

cp include/linux/hidraw.h /usr/include/linux/
cp include/linux/hid.h /usr/include/linux/
vi samples/hidraw/hid-example.c
(在Linux下编译程序有时会遇到这种问题,这貌似是一个Linux历史遗留问题:
把所有#include <sys/xxx.h>都提到最前面,把#include <linux/xxx.h>的包含放在其后,就可以编译通过了,之所以出现面的问题是存在循环引用所致。)

将13-15行的如下3行移动到33行以后。

     13 #include <linux/types.h>
     14 #include <linux/input.h>
     15 #include <linux/hidraw.h>

     29 #include <sys/ioctl.h>
     30 #include <sys/types.h>
     31 #include <sys/stat.h>
     32 #include <fcntl.h>
     33 #include <unistd.h>

vi /usr/include/linux/input.h

line 647
#define BUS_PCI                 0x01
#define BUS_ISAPNP              0x02
#define BUS_USB                 0x03
#define BUS_HIL                 0x04
#define BUS_BLUETOOTH           0x05
/*以下一行为新增*/
#define BUS_VIRTUAL             0x06

#define BUS_ISA                 0x10
#define BUS_I8042               0x11
#define BUS_XTKBD               0x12
#define BUS_RS232               0x13
#define BUS_GAMEPORT            0x14
#define BUS_PARPORT             0x15
#define BUS_AMIGA               0x16
#define BUS_ADB                 0x17
#define BUS_I2C                 0x18
#define BUS_HOST                0x19
#define BUS_GSC                 0x1A
/*以下两行为新增*/
#define BUS_ATARI               0x1B
#define BUS_SPI                 0x1C  
然后重复(1)上面步骤即可完成

4、vim /etc/grub.conf,将 default=1 改为 default=0

# vi /etc/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/mapper/VolGroup-lv_root
# initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS Linux (3.2.2)
root (hd0,0)
kernel /vmlinuz-3.2.2 ro root=/dev/mapper/VolGroup-lv_root rd_LVM_LV=VolGroup/lv_root rd_LVM_LV=VolGroup/lv_swap rd_NO_LUKS rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us crashkernel=auto rhgb quiet
initrd /initramfs-3.2.2.img
title centos (2.6.32-71.el6.i686)
root (hd0,0)
kernel /vmlinuz-2.6.32-71.el6.i686 ro root=/dev/mapper/VolGroup-lv_root rd_LVM_LV=VolGroup/lv_root rd_LVM_LV=VolGroup/lv_swap rd_NO_LUKS rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us crashkernel=auto rhgb quiet
initrd /initramfs-2.6.32-71.el6.i686.img
 

5、重启系统,并查看内核

# reboot
# uname -r
3.2.14-rt24
 
6、问题及解决办法
HOSTCC scripts/basic/fixdepHOSTCC
scripts/kconfig/conf.o
*** Unable to find the ncurses libraries or the*** required header files.*** 'make menuconfig' requires the ncurses libraries.****** Install ncurses (ncurses-devel) and try again.***make[1]: *** [scripts/kconfig/dochecklxdialog] Error 1make: *** [menuconfig] Error 2
如果出现上面的错误,记得要安装ncurses-devel,如果你设置了本地源的话,就很简单了。
# yum install ncurses-devel 
 
注意,如果在编译内核或者模块以及安装过程中有错误或者警告,请把信息放到百度或者google里面查一下,免得重启后出现各种问题。
还有切勿远程升级内核,要升级内核最好现场升级。
 
http://blog.csdn.net/21aspnet/article/details/6724488
 

首先说明,下面带#号的行都是要输入的命令行,且本文提到的所有命令行都在终端里输入。接下来,让我们一起开始精彩的Linux内核升级之旅吧!

 

一、准备工作

 

启动Linux系统,并用根用户登录,进入终端模式下。

 

1、查看Linux内核版本

# uname -a

如果屏幕显示的是2.6.x,说明你的已经是2.6的内核,也用不着看下文了,该干什么干什么去吧!~~~如果显示的是2.4.x,那恭喜你,闯关通过,赶快进行下一步。

 

2、下载2.6内核源码

下载地址:http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.tar.bz2

 

3、下载内核升级工具

(1)下载module-init-tools-3.2.tar.bz2

http://www.kernel.org/pub/linux/utils/kernel/module-init-tools/module-init-tools-3.2.tar.bz2

(2)下载mkinitrd-4.1.18-2.i386.rpm

http://ayo.freshrpms.net/fedora/linux/3/i386/RPMS.core/mkinitrd-4.1.18-2.i386.rpm

(3)下载lvm2-2.00.25-1.01.i386.rpm

http://ayo.freshrpms.net/fedora/linux/3/i386/RPMS.core/lvm2-2.00.25-1.01.i386.rpm

(4)下载device-mapper-1.00.19-2.i386.rpm

http://ayo.freshrpms.net/fedora/linux/3/i386/RPMS.core/device-mapper-1.00.19-2.i386.rpm

 

(2.6.18内核和这4个升级工具我都有备份,如果以上下载地址失效,请到http://www.fly2.cn/guestbook 留下你的邮箱,我给你发过去)

 

二、配置工作

 

好啦,2.6内核和4个升级工具都下载完了(少一个也不行,如果没有下载齐全,请不要尝试下面的步骤,升级是不会成功的),下面回到Linux系统中开始配置工作吧。

 

4、将下载好的内核和4个升级工具都拷贝到/usr/src文件夹下。怎么拷贝就不用我教了吧~~~~不会拷贝的去撞墙吧!~~呵呵!

 

5、拷贝完毕,开始解压新内核,具体操作请依次执行以下命令:

# cd /usr/src (进入到/usr/src目录下,如果已经在/usr/src目录下,可不执行该命令)

# rm –rf linux (删除linux文件夹。值得一提的是,如果内核先前从未编译过,则没有这个文件夹,此命令行可略过)

# tar jvxf linux-2.6.18.tar.bz2 (解压新内核)

# ln -s linux-2.6.18 linux (重新生成linux文件夹)

 

6、安装module-init-tools工具包

在/usr/src目录下,依次执行下列命令:

# tar jvxf module-init-tools-3.2.tar.bz2 (解压module-init-tools)

# cd module-init-tools-3.2 (由/usr/src目录进入module-init-tools目录下)

#./configure --prefix=/

# make moveold

# make all install

#./generate-modprobe.conf /etc/modprobe.conf

 

7、安装另外三个升级工具

回到/usr/src目录下,依次执行下列3个命令来安装另外三个升级工具:

# rpm -ivh --nodeps mkinitrd-4.1.18-2.i386.rpm (注意,这里一定要加入--nodeps参数,下同)

# rpm -ivh --nodeps lvm2-2.00.25-1.01.i386.rpm

# rpm -ivh --nodeps device-mapper-1.00.19-2.i386.rpm

 

如果不更新以上几个升级包,在后面编译内核时会提示以下错误:

mkinitrd failed

make[1]: *** [install] Error 1

make: *** [install] Error 2

 

8、配置内核选项。有点繁琐,~~希望一次成功哦~~。

# cd linux-2.6.18 (进入到/usr/src/linux-2.6.18目录下)

# make mrproper (该命令可确保源代码目录下没有不正确的.o文件)

# make menuconfig (配置内核各选项)

 

此时会出现一个图形界面,列出了所有的内核配置选项,有的选项下还有子选项,你可以用方向键来选择,用Y键来确定。经过我多次试验,大多数选项默认就行,以下几个选项必须选择(请认真核对下面每一个选项,否则编译很有可能前功尽弃):

 

(1)Loadable Module support选项中,一定要选上“Module unloading”和“Automatic kernel module loading”这两项;

  (2)Device Drivers--->Block Devices中一定要选上Loopback device support;

Device Drivers--->Multi-device support(RAID and LVM)”处要选上“device mapper support”;

Device Drivers--->Graphics support”, 一定要选上” Support for frame buffer devices”;

Device Drivers --->;USB support --->选上”USB Mass Storage support”(如果是在实环境中,想要更多USB支持,就全选吧。我的是在虚拟机中,用不着了)

Device Drivers --->; Network device support --->;Ethernet (10 or 100Mbit) --->; <*>; AMD PCnet32 PCI support

(3) File system--->(以下9个选项是关于ext2和ext3文件系统配置,全部选上)

Second extended fs support

Ext2 extended attributes

Ext2 POSIX Access Control Lists

Ext2 Security Labels

Ext3 journalling file system support

Ext3 extended attributes

Ext3 POSIX Access Control Lists

Ext3 Security Labels

JBB (ext3) debugging support

File system--->DOS/FAT/NT Filesystems --->选上“ NTFS file system support”;

File Systems --> Miscellaneous filesystems ---><*> Compressed ROM file system support (cramfs)

 

注意:

ext2和ext3文件系统配置很重要,也是必需的,如果对Ext3、Ext2文件的支持直接编译进内核,在你reboot时机器就会当掉,出现如下错误信息:

kernel panic : no init found ,try passing init = option to kernel.....

或者是:

VFS:Cannot open root device "hdxy" or unknow-block(0,0)

Please append a correct "root=" boot option

kernel panic:VFS:Unable to mount root fs on unknown-block(0,0)

或者是:

mount: error 19 mounting ext3

pivotroot: pivot_root(/sysroot,/sysroot/initrd) failed: 2

umount /initrd/proc fail: 2

Freeing unused kernel memory: 244k freed

Kernel panic – not syncing: No init found. Try passing init = option to kernel

(我的机器就是在重启之后出现第三种错误,进不去系统,郁闷死,只好重装了~~~)

 

(4)如果你在vmware下重新编译内核,硬盘用的是scsi的,以下选项必选:

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

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

 

三、编译工作

 

OK,繁杂的配置工作完成了,至此,编译前的准备工作都做好了!

9、开始编译啦……:

在/usr/src/linux-2.6.18目录下,执行以下命令即可编译。编译需要一段时间,给自己倒杯茶耐心等候吧!

# make dep (建立编译时所需的从属文件。注意:如果内核从未编译过,此步可跳过)

# make clean (清除内核编译的目标文件)

# make bzImage (注意大小写。这一步才真正编译内核)

内核编译成功后,会在/usr/src/linux/arch/i386/boot目录中生成一个新内核的映像文件bzImage。如果用make zImage编译,内核很大的话,系统会提示你使用make bzImage命令来编译,所以我直接用make bzImage来编译。

# make modules (编译可加载模块)

# make modules_install (安装可加载模块)

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

# make install (安装新内核)

 

注意:make install的时候可能会出现如下错误信息:

No module BusLogic found for kernel 2.4.12

mkinitrd failed

此问题一般只出现在SCSI硬盘+VMWARE+REDHAT架构中,因为BusLogic被编译进了内核而不是一个module的形式(2.4内核的Buslogic模块即使静态编译进内核也不行)。解决方式是直接将可以BusLogic.o文件复制过去:

# cp /usr/src/linux-2.6.18/drivers/scsi/BusLogic.o /lib/modules/2.6.18/kernel/drivers/scsi

不过别忘记,复制过后再执行一下make install。

(如果make menuconfig时,把BusLogic模块选成M--Module模式--就不会出现这个提示。)

 

四、启动新内核

10、将新内核和System.map文件拷贝到/boot目录下,依次执行以下命令:

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

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

# cd /boot (进入boot目录)

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

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

 

11、修改Grub启动管理器

如果没有错误的话, 下面开始修改grub配置文件(不要告诉我你用的lilo)

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

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

 

# df (查看根目录在那个分区,下一步要用到。注意,这里根分区不时boot的那个50M的分区,而一般是你最大的那个分区,也就是”/”,千万不要搞错哦。我的为 /dev/hda2)

 

# vi /grub/grub.conf

进入grub.conf文件,找到如下信息:

default=1

timeout=10

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

title Red Hat Linux (2.6.18)

root (hd0,0)

kernel /vmlinuz-2.6.18 ro root= LABEL=/

initrd /initrd-2.6.18.img

做两处修改:

(1)将default=1改为default=0(不改的话,重启之后默认进入2.4内核)

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

此步很重要,修改错误将会可能导致进不去系统,我把我修改后的grub.conf文件列出来,不明之处,可以对照修改:

default=0

timeout=10

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

title Red Hat Linux (2.6.18)

root (hd0,0)

kernel /vmlinuz-2.6.18 ro root=/dev/hda2

initrd /initrd-2.6.18.img

title Red Hat Linux (2.4.20-8)

root (hd0,0)

kernel /vmlinuz-2.4.20-8 ro root=LABEL=/

initrd /initrd-2.4.20-8.img

 

12,OK,大功告成!赶快重启,看看升级后的2.6内核吧!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2013-04-17 14:57  陳聽溪  阅读(1350)  评论(0)    收藏  举报