您的位置:首页 > 运维架构 > Linux

ubuntu 10.04 编译安装linux-2.6.36内核(debug)

2012-09-28 16:03 316 查看
打开终端获得root权限:sudo su然后安装编译内核时需要的工具:

apt-get install build-essential kernel-package libncurses5-dev libqt3-headers

build-essential (基本的编程库(gcc, make等) kernel-package (Debian 系统里生成 kernel-image 的一些配置文件和工具) libncurses5-dev
(meke menuconfig要调用的) libqt3-headers (make xconfig要调用的)其他工具在升级过程中可以按提示安装

第二步:下载内核源代码linux-2.6.36.tar.bz2请到www.kernel.org官网下载最新版本linux-2.6.36.tar.bz2内核假设下载在root目录,然后解压到/usr/src/linux-2.6.36目录里cd
/usr/srctar zxvf /root/linux-2.6.36.tar.bz2解压后会在/usr/src生成新文件夹linux-2.6.36

第三步:配置把正在使用中的内核配置文件/usr/src/linux-headers-2.6.32-25-generic/.config 拷到/usr/src/linux-2.6.36目录下cp
/usr/src/linux-headers-2.6.32-22-generic/.config /usr/src/linux-2.6.36执行:cd /usr/src/linux-2.6.36

make menuconfig

终端会弹出一个配置界面

debug 版本需要配置以下选项(linux devices driver的选项)



CONFIG_DEBUG_KERNEL

CONFIG_DEBUG_SLAB.....

CONFIG_DEBUG_PAGEALLOC

CONFIG_DEBUG_SPINLOCK

CONFIG_DEBUG_SPINLOCK_SLEEP

CONFIG_INIT_DEBUG.....

CONFIG_DEBUG_INFO

CONFIG_MAGIC_SYSRQ

CONFIG_DEBUG_STACKOVERFLOW

CONFIG_DEBUG_STACK_USAGE

CONFIG_KALLSYMS

CONFIG_IKCONFIG

CONFIG_IKCONFIG_PROC.....

CONFIG_ACPI_DEBUG..

CONFIG_DEBUG_DRIVER

CONFIG_SCSI_CONSTANTS

CONFIG_INPUT_EVBUG

CONFIG_PROFILING



有些选项36版的没有,就忽略(可以直接打开.config编辑)。

注意主菜单最后有两项:load a kernel configuration... save a kernel configuration...先选第一项load
....,意思是,利用当前的内核配置详单来设置将要编译的内核,然后选save这一项保存,最后退出配置界面。

第四步:开如编译安装新内核执行:sudo make mrproper (清除以前曾经编译过的旧文件,如果你是第一次编译,可不执行)执行:sudo make (编译,可以加-j4,如果你CPU是双核心,够牛的话,因为可以提高速度)然后:sudo
make install

再:sudo make modules (编译模块)

(编译是会有关联错误,输入命令: make CONFIG_DEBUG_SECTION_MISMATCH=y)
再:sudo make modules_install (安装模块)最后创建initrd文件:

mkinitramfs -o /boot/initrd.img-2.6.36

第五步:更新配置GRUB引导列表sudo gedit /boot/grub/grub.cfg我的grub.cfg添加如下(注意:这个是自己的grub.cfg里面的内容 直接复制自己原来的稍加改动下就可以):menuentry
'Ubuntu,Linux 2.6.36' --class ubuntu --class gnu-linux --class gnu --class os {

recordfail

insmod ext2

set root='(hd0,8)'

search --no-floppy --fs-uuid --set 6af2d2f6-d381-4db8-b171-f449b827ebbf

linux /boot/vmlinuz-2.6.36 root=UUID=6af2d2f6-d381-4db8-b171-f449b827ebbf ro quiet
splash

initrd /boot/initrd.img-2.6.36

}#以下是原Linux 2.6.32-25-generic内核启动项menuentry 'Ubuntu,Linux 2.6.32-25-generic' --class ubuntu
--class gnu-linux --class gnu --class os {

recordfail

insmod ext2

set root='(hd0,8)'

search --no-floppy --fs-uuid --set 6af2d2f6-d381-4db8-b171-f449b827ebbf

linux /boot/vmlinuz-2.6.32-25-generic root=UUID=6af2d2f6-d381-4db8-b171-f449b827ebbf
ro quiet splash

initrd /boot/initrd.img-2.6.32-25-generic

}

做完以上部分不要重启,我在虚拟机上升级内核,在这步重启就没法启动会出现以下错误,进入initramfs后找不到boot目录,也没法启动老的系统。害的我重新安装系统(不知道真是机器上如何)

warning:can't open directory /lib/modules/2.6.36/modules.dep,no such files or directory

需要执行以下命令后再重启机器

######################################sudo su (保证获得root权限,否则会提示权限不够,不能成功完成任务哦)cd /bootcp initrd.img-2.6.36
initrd-2.6.36.old (先做一个备份以防万一,哈哈)depmod -aupdate-initramfs -k 2.6.36 -ccd /tmpgzip -dc /boot/initrd.img-2.6.36| cpio -idtouch lib/modules/2.6.36/modules.depfind ./ | cpio -H newc -o > /boot/initrd.img-2.6.36.newgzip /boot/initrd.img-2.6.36.newcd /bootmv initrd.img-2.6.36.new.gz
initrd.img-2.6.36

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

参考:

http://blog.163.com/prevBlogPerma.do?host=listsetio090529&srl=132732184201092982228656&mode=prev
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: