kernel update 2.6.18-2.6.38

细致某种程度上可以体现作者的开放精神

copy for build a note needed when config the kernel

 

主要的问题出在了menu.lst 和 grub.conf文件

[root@localhost grub]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 24276372 6619472 16403832 29% /
/dev/sda1 295561 23914 256387 9% /boot
tmpfs 2029352 0 2029352 0% /dev/shm
/dev/hdc 4565054 4565054 0 100% /media/Cen

menu.lst:

title CentOS (2.6.38)
root (hd0,0)
kernel /vmlinuz-2.6.38 ro root=/dev/sda2 rhgb quiet
initrd /initrd-2.6.38.img

 

 内核升级,费时间,为了不挖坑,粘贴下面大侠的大作

------------------------------------------------------------------------------------------------

手把手教你内核编译[for 新手]
工具
ncurses-5.3-4.i386.rpm;
ncrses-devel-5.3-4.I386.rpm
10) I/0 控制类型选择默认的 BusLogic
11) 选择创建新的虚拟磁盘
12) 磁盘类型选择默认的 SCSI

依赖包以及安装顺序如下:
binutils-2.13.90.0.18-9.i386.rpm
cpp-3.2.2-5.i386.rpm
glibc-devel-2.3.2-11.9.i386.rpm
glibc-kernheaders-2.4-8.10.i386.rpm
rpm –ivhbinutils-2.13.90.0.18-9.i386.rpm
rpm –ivhcpp-3.2.2-5.i386.rpm
rpm –ivhglibc-devel-2.3.2-11.9.i386.rpm
rpm –ivhglibc-kernheaders-2.4-8.10.i386.rpm
然后是安装 gcc,进入 gcc 所在的目录,输入如下命令
rpm –ivh gcc-3.2.2-5.i386

5 开始内核编译工作
编译内核需要用到的文件包括 linux 内核:linux-2.6.18.tar.bz2.zip,以及下述程序
编译内核之前需要对系统的一些程序进行升级以及安装一个系统默认没有安装。
这些程序以及安装顺序如下:
程序名称 对应下载文件 说明
module-init-tools-3.2 module-init-tools-3.2.tar.bz2.zip 加载模块
mkinitrd-4.1.18-2.i386.rpm mkinitrd-4.1.18-2.i386.rpm.zip 用于创建 initrd-x.x.x.img
文件, initrd-x.x.x.img 是
initial ramdisk 的缩写,用
于引导硬件到实际内核
vmlinuz
参考:
lvm2-2.00.25-1.01.i386.rpm lvm2-2.00.25-1.01.i386.rpm.zip LVM=(Logical Volume Mamager)逻辑卷管理器
device-mapper-1.00.19-2.i38
6.rpm
device-mapper-1.00.19-2.i386.rp
m.zip
管理系统中的设备映射,
参考:
http://www.ibm.com/dev
eloperworks/cn/linux/l-de
vmapper/index.html
binutils-2.17.tar.gz 工具包 binutils-2.17.tar.bz2 是一个工具集合,包含 ar,
ld, nm 等工具。
参考:
http://www.linuxsong.org
/2010/09/binutils/
Libncurses(包含两个文件) ncurses-5.3-4.i386.rpm;
ncrses-devel-5.3-4.I386.rpm
(这是两个不同的包,不同的系统
有不同的选择,这里两个都安装)
ncuuses 是 linux 最底层的
库之一,管字符界面的。
vi,screen 都依赖它
PS:
以上以.zip 结尾的,的文件使用前需要先用 linux 中的“ unzip filename”命令进行解压,然后
就会得到相应的.tar.gz 或.tar.bz2 的压缩包。(仅仅是.zip 的文件,其他格式的压缩包的最好在
linux 中解压,以防产生预料之外的错误)或者也可以先在 windows 中用 rar 解压之后再通过
文件共享传到 RedHat 中。
5.1 在 Vmware7.1 中 RedHat9.0 内核从 2.4.20-8 升级到 2.6.18),
步骤如下:
一、 准备工作
打开虚拟机,启动 linux 系统,并用根用户( root)登陆。查看 linux 内核版本
若系统自动进入命令行模式,可通过输入#uname -a 查看现有内核版本,为: 2.4.20-8
二、 配置工作
1) 将 2.6.18 内核及上述表格中的所有文件复制到/user/src 文件夹下。
2) 拷贝完毕后,开始解压新内核,具体操作请依次执行以下命令:
(进入到/usr/src 目录下,如果已经在/usr/src 目录下,可不执行该命令)
# cd /usr/src
(删除 linux 文件夹。如果内核先前从未编译过,则没有这个文件夹,此命令行可略
过 保险起见,可通过 # ls 命令查看是否有 linux 该文件夹)
# rm –rf linux
(解压新内核)
# tar jvxf linux-2.6.18.tar.bz2
(重新生成 linux 文件夹)
# ln -s linux-2.6.18 linux
3) 安装 module-init-tools 工具包,在/usr/src 目录下,依次执行下列命令:
(解压 module-init-tools)
# tar jvxf module-init-tools-3.2.tar.bz2
(由/usr/src 目录进入 module-init-tools 目录下)
# cd module-init-tools-3.2
#./configure --prefix=/
(将原来的工具程序改名,这样还可继续使用原来的 2.4.x 内核)
# make moveold
安装配置
# make all install
#./generate-modprobe.conf /etc/modprobe.conf
4) 安装另外三个升级工具
回到/usr/src 目录下,依次执行下列 3 个命令来安装另外三个升级工具:
(注意, 这里一定要加入--nodeps 参数,下同)
# rpm -ivh --nodeps mkinitrd-4.1.18-2.i386.rpm
# 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
5) 安装 binutils-2.17.tar.gz 工具包,依次执行如下命令:
# tar zxf binutils-2.17.tar.gz
# cd binutils-2.17
# ./configure
# make
# make install
网上很多人没有装 Binutils 开发包因此都会出现错误,如下类似:
Loading BusLogic.o module
No module found in object
insmod:error inserting '/lib/BusLogic.o':-1 Invalid module format
ERROR:/bin/insomd exited abnormally!
Mounting /proc filesystem
Creating block devices
VFS:Cannot open root device "LABEL=/dev/sda2" or unknown-block(0,0)
Please append a correct "root=" boot option
Kernel panic - not syncing:VFS:Unable to mount root fs on unknown-block(0,0)
6) 安装 libncurses,进入 ncurses-devel-5.3-4.i386.rpm和 ncurses-5.3-4.i386.rpm所在目录,
一次安装。
# rpm –ivh ncurses-devel-5.3-4.i386.rpm
# rpm –ivh ncurses-5.3-4.i386.rpm
如果不安装, make menucofig 时会提示下述错误
scripts/kconfig/lxdialog/checklist.c: 24 的文件中:
scripts/kconfig/lxdialog/dialog.h:32:20: 错误: curses.h:没有该文件或目录
In file included from scripts/kconfig/lxdialog/checklist.c:24:
……
…..
make[1]: *** [scripts/kconfig/lxdialog/checklist.o] 错误 1
make: *** [menuconfig] 错误 2
7) 配置内核选项。
(进入到/usr/src/linux-2.6.18 目录下)
# cd linux-2.6.18
(该命令可确保源代码目录下没有不正确的.o 文件)
# make mrproper
(配置内核各选项)
# make menuconfig
此时会出现一个图形界面,列出了所有的内核配置选项,有的选项下还有子选项,
你可以用方向键来选择,用 Y 键来确定。大多数选项默认就行, 以下列出的选项必须
选择(请认真核对下面每一个选项,否则编译很有可能前功尽弃):(注意:这里提及的
要标记为*(表示编译到内核中), 除非个别只能标记为<M>的, 无法转化成*, 则保留原
来的格式) 总而言之,一下提及到的配置选项,要在光标选中的情况下按 Y 键进行标
记。( 仔细找,如果你同意是编译 2.6.18 的内核,则每一项都能找到)
配置如下:

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

A.General setup->enable deprecated sysfs... and its extend line
A. Loadable Module support 选项中,选“Module unloading”和“Automatic kernel module loading”这两项; //no need config                                                                           
B. Device Drivers--->Block Devices 中选 Loopback device support;                         <*>
Device Drivers--->Multi-device support(RAID and LVM)”处选“device mapper  support”;     // not found
Device Drivers--->Graphics support”, 选” Support for frame buffer devices”;      //no need config
C. 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
JBD (ext3) debugging support

JBD (ext4) debugging support
File system--->DOS/FAT/NT Filesystems --->选上“ NTFS file system support”  // under it ,tow <*>
File Systems --> Miscellaneous filesystems ---><*> Compressed ROM file system support (cramfs)
注意:
由于 Red Hat 9.0 使用 ext3 作为文件系统, 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
D. 由于在 VMware 虚拟机下编译内核, SCSI 硬盘,因此以下三个选项必选:
“Device Drivers”→“SCSI device support”;
“Device Drivers”→“SCSI device support”→“SCSI disk support”;

“Device Drivers”→“SCSI device support”→“SCSI low-level drivers”→“BusLogic SCSI support”;

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

三、 编译工作
设置完成!开始进行真正的内核编译工作。 在/usr/src/linux-2.6.18 目录下,执行以下命
令即可编译。编译需要一段时间。
(建立编译时所需的从属文件。注意:如果内核从未编译过,此步可跳过)
# make dep
(清除内核编译的目标文件)
# make clean
(这一步才真正编译内核,注意其中 I 是大写的)
# make bzImage
内核编译成功后,会在/usr/src/linux/arch/i386/boot 目录中生成一个新内核的
映像文件 bzImage。如果用 make zImage 编译,内核很大的话,系统会提示你使用
make bzImage 命令来编译,所以我直接用 make bzImage 来编译。然后将目录切换
到/usr/src/linux 下执行以下命令(我在/usr/src/linux-2.6.18 目录下执行出现错误)
(编译可加载模块)
# make modules
(安装可加载模块)
# make modules_install
安装成功后,系统会在/lib/modules 目录下生成一个 2.6.18 子目录,里面存放
着新内核的所有可加载模块。
执行下属命令
cp /usr/src/linux-2.6.18/drivers/scsi/BusLogic.o  /lib/modules/2.6.18/kernel/drivers/scsi
如果不执行上一步复制操作,在 make install 时会出现如下错误信息:
No module BusLogic found for kernel 2.4.12mkinitrd failed 此问题一般只出现在 SCSI
硬盘+VMWARE+REDHAT 架构中,因为 BusLogic 被编译进了内核而不是一个
module 的形式( 2.4 内核的 Buslogic 模块即使静态编译进内核也不行)。其解决方
式就是直接将 BusLogic.o 文件复制过去。
四、 安装新内核
安装新内核的任务主要是把编译生成的新内核和相关文件( 2.6.18)链接到系统中,替
换原来的文件(2.4.20-8)。
 在/usr/src/linux 目录下执行如下指令即可(这里选择用这种方式,因为手动方式在
后面创建 initrd-2.6.18.img 文件的时候命令有错误)
# make install
 或者你也可以选择手动的方式(这一系列命令就等于 make install)
将新内核和 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.18System.map (重新建立连接)
如果你是用 make install 进行内核安装的,最好是检查一下是否安装成功:
进入/usr/boot 目录下,执行# ll (两个小写的 LL),然后对照手动方式,检查:
目录下是否有文件 vmlinuz-2.6.18
目录下是否有文件 System.map-2.6.18
System.map 是否链接到了 System.map-2.6.18,
类似于如下截图(注意:此图是在我配置好系统之后重启进入 2.6.18 内核之
后截的,和你的有所不同,但是相近)
五、 启动新内核
 修改 Grub 启动管理器
如果安装内核时用的是 make install 自动方式
那么 initrd-2.6.18.img 已经创建了,在/boot 目录下。无需进行任何操作。
如果上面安装内核用的是手动方式那么
在/boot 目录下,执行以下命令:
# new-kernel-pkg --mkinitrd --depmod --install 2.6.18 (这时候你的/boot 下生成一
个 initrd-2.6.18.img,并且你的 grub.conf
也作了相应更改)
正式修改启动项:
# df (查看根目录在那个分区,下一步要用到。注意,这里根分区不是 boot 的
那个 50M 的分区,而一般是你最大的那个分区,也就是”/”,千万不要搞错。我
的为 /dev/sda1)
执行: # vi /grub/grub.conf
进入 grub.conf 文件,做两处修改:
( 1)将 default=1 改为 default=0( 启动项中有两个内核,一个是 2.4.20-8 一个是
刚刚编译完的 2.6.18,通常情况下 2.6.18 那个在文件的前面。如果不是这样的话,
那么将 default 改为 1,反正起始编号为 0,后续启动项一次递增)
( 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 roroot=/dev/sda2(注意这里别改错了)
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


你可能感兴趣的:(kernel update 2.6.18-2.6.38)