免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3129 | 回复: 4
打印 上一主题 下一主题

linux-2.6.26.5内核编译? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-09-10 18:09 |只看该作者 |倒序浏览
大家好:

我的linux系统是redhat-2.4.20-8的版本,现在我想编译成linux-2.6.26.5内核,参考了很多的资料,都说是先删除/usr/src/linux,但是我的目录下面没有那个文件,只有linux-2.4.20-8等几个文件,编译的时候是不是把这个文件夹删除啊?

然后进入linux-2.6.26.5文件夹,进行编译?

论坛徽章:
0
2 [报告]
发表于 2008-09-11 22:29 |只看该作者
首先还是要说在 RH8/RH9 上最好升级回与原版本相同的内核(如 kernel-2.4.xx )否则会因为版本差别太大而造成很多不必要的麻烦。废话少说,下面开始升级

一. 在升级前必须对以下的组件升级
1. 升级 device-mapper,在 ftp://sources.redhat.com/pub/dm下载
cd /usr/src
tar -zxvf device-mapper.1.01.04.tgz
cd device-mapper.1.01.04
./configure --perfix=/
make all
make install

2. 安装 LVM2,在 ftp://sources.redhat.com/pub/lvm2下载
cd /usr/src
tar -zxvf LVM2.2.01.14.tgz
cd LVM2.2.01.14
./configure --perfix=/
make all
make install

3. 升级 mkinitrd 在 http://rpm.pbone.net/ 下查找
rpm -Uvh mkinitrd-3.5.11-3.9.i386.rpm

4.update modutils 在 ftp://ftp.kernel.org/pub/linux/utils/kernel/modutils/下载
cd /usr/src
tar -zxvf modutils-2.4.27.tar.gz
cd modutils-2.4.27
./configure --perfix=/
make all
make install

5.安装module-init-tools,在 ftp://ftp.kernel.org/pub/linux/utils/kernel/module-init-tools 下载
cd /usr/src
tar -zxvf module-init-tools-3.2-pre9.tar.gz
cd module-init-tools-3.2-pre9
./configure --prefix=/
make moveold

ps:"make moveold"将把系统原来的modutils工具程序改名为"*.old"(比如,lsmod.old等,是非常重要的一步! 如果忘记了这一步也不要紧张, 可以按照上面的步骤4重装一遍modutils就可以了.

make

ps: 用module-init-tools-3.1 编译时会出现 "make: *** [modprobe.conf.5] Error 127"

建议用 3.0 或 3.2-pre 版

make install
./generate-modprobe.conf /etc/modprobe.conf
二. 升级内核,
ftp://ftp.kernel.org/pub/linux/kernel/ 下载
cd /usr/src
tar -zxvf linux-2.6.13.3.tar.gz
cd linux-2.6.13.3.tar
bzip2 -dc patch-2.6.13.3.bz2 | patch -p1 -R ;打补丁
make mrproper ;初次编译可以不运行这一步
make clean ;初次编译不用运行这一步,第2次编译时把上一次编译出来的删除掉
make menuconfig ; 配置内核

ps:另外可以用以下命令代替
1. make config ;基于文本的最为传统的配置界面
2. make oldconfig ;自动保存为旧版的设置
3. make menuconfig ;txt界面下的菜单设置
4. make xconfig ;kernel 2.6 下新图形窗口模式的配置界面需要PQ库的支持
5. make gconfig ;旧的图形窗口模式的配置界面

要点: 1. Device Drivers -->Block devices--〉Initial RAM disk (initrd) support 一定要选上(Y),Default RAM disk size一定要改成16384以上
2. 有SCSI卡(如VMware 中的BusLogic BT946C) 的要把它编译成模块(M) 不然会在make install 出错
3. USB support 选模块(M) USB HID Boot Protocol drivers 中的 Keyboard/Mouse选(M)
4. Sound card support 可以选上新支持的模块Advanced Linux Sound Architecture ,至于旧的Open Sound System 模块就不要再选了.
关键是把Sound card support 以及 Advanced Linux Sound Architecture 里面的选项选成模块(M)
5. 通过lspci 命令查看硬件设备, 如有列出的一定要在 config 时选上

make ;漫长的编译过程,你可以走出去喝茶吃包,回来还没有编译完...
ps:在kernel 2.6 下已经省略了 make dep这一步

make modules_install install ; 安装内核及模块。安装完成后可以重启进入新的内核
三. 在新内核里发现有不少的改变,如果要正常运行必须要做一些修改,
1.在修改之前先备份以下文件(好的习惯)
/etc/rc.sysinit
/etc/fstab
/etc/rc.d/init.d/halt
/etc/modprobe.conf

2.新增的文件系统 sysfs
1. mkdir /sys
2. 在 /etc/rc.sysinit 中
找 mount -f /proc 在其后加上在下面加上 mount -f /sys
再顺便把下一行 [ -f /proc/bus/usb/devices ] && mount -f -t usbdevfs usbdevfs /proc/bus/usb 改成 [ -f /sys/bus/usb/devices ] && mount -f -t usbfs usbfs /sys/bus/usb

找 action $"Mounting proc filesystem: " mount -n -t proc /proc /proc 在其后加上在下面加上 action $"Mounting sysfs filesystem: " mount -n -t sysfs /sys /sys
3. 在/etc/fstab中加上一行 none /sys sysfs defaults 0 0
4. 修改 /etc/rc.d/init.d/halt
找 awk '$2 ~ /^/$|^\/proc|^\/dev/{next}
改成 awk '$2 ~ /^/$|^\/proc|^\/sys|^\/dev/{next}
找 [ -f /proc/bus/usb/devices ] && umount /proc/bus/usb
改成 [ -f /sys/bus/usb/devices ] && umount /sys/bus/usb
5.找 rc.sysinit和/etc/rc.d/init.d/halt 中的所有 /proc/bus/usb 改成 /sys/bus/usb

2.ps/2鼠标设备从原来的/dev/psaux 改成 /dev/input/mice
rm /dev/psaux
ln -s /dev/psaux /dev/input/mice

3.USB模块名的更改
打开 /etc/rc.sysinit,找
usb=0

if ! LC_ALL=C grep -iq "nousb" /proc/cmdline 2>/dev/null && ! LC_ALL=C grep -q "usb" /proc/devices 2>/dev/null ; then

aliases=`/sbin/modprobe -c | awk '/^alias usb-controller/ { print $3 }'`

if [ -n "$aliases" -a "$aliases" != "off" ]; then

modprobe usbcore

for alias in $aliases ; do

[ "$alias" != "off" ] && action $"Initializing USB controller ($alias): " modprobe $alias

done

[ $? -eq 0 -a -n "$aliases" ] && usb=1

fi

fi



if ! LC_ALL=C grep -iq "nousb" /proc/cmdline 2>/dev/null && LC_ALL=C grep -q "usb" /proc/devices 2>/dev/null ; then

usb=1

fi



if [ $usb = 1 -a ! -f /proc/bus/usb/devices ]; then

action $"Mounting USB filesystem: " mount -t usbdevfs usbdevfs /proc/bus/usb

fi



needusbstorage=

if [ $usb = "1" ]; then

needusbstorage=`LC_ALL=C grep -e "^I.*Cls=08" /proc/bus/usb/devices 2>/dev/null`

LC_ALL=C grep 'hid' /proc/bus/usb/drivers || action $"Initializing USB HID interface: " modprobe hid 2> /dev/null

action $"Initializing USB keyboard: " modprobe keybdev 2> /dev/null

action $"Initializing USB mouse: " modprobe mousedev 2> /dev/null

fi

改成

modprobe usbcore
action $"Initializing USB controller (uhci-hcd): " modprobe uhci-hcd

usb=1



if [ $usb = 1 -a ! -f /sys/bus/usb/devices ]; then

action $"Mounting USB filesystem: " mount -t usbfs usbfs /sys/bus/usb

fi



needusbstorage=

if [ $usb = "1" ]; then

needusbstorage=`LC_ALL=C grep -e "^I.*Cls=08" /sys/bus/usb/devices 2>/dev/null`

action $"Initializing USB HID interface: " modprobe usbhid 2> /dev/null

action $"Initializing USB keyboard: " modprobe usbkbd 2> /dev/null

action $"Initializing USB mouse: " modprobe usbmouse 2> /dev/null

fi

ps: 2.6中模块名已经改了
usb_huic --> uhci-hcd ; uhci-hcd 是通用控制器/ ochi-hcd USB-1.1控制器 / ehci-hcd USB-2.0控制器
hid --> usbhid ;输入模块
keybdev --> usbkbd ;键盘模块
mousedev --> usbmouse ;鼠标模块
4.新增的声卡模块ALSA
1). 首先把Sound card support 以及 Advanced Linux Sound Architecture 里面的选项编译成模块(M)
2). 把 /etc/modprobe.conf 里有关声卡的选项除了 alias char-major-14-* soundcore 外都删除掉
ps:ALSA是需要soundcore的支持.通过命令modinfo soundcore 可以看到以下信息
description: Core sound module
author: Alan Cox
license: GPL
alias: char-major-14-*
vermagic: 2.6.13 PENTIUM4 REGPARM gcc-3.2
depends:
srcversion: 6E1C8780DE9ADFFB5BCD439

3). 启动新内核后必须要安装 alsa-lib-1.0.9.tar.bz2 和 alsa-utils-1.0.9.tar.bz2 你可以到官方网站 http://www.alsa-project.org/ 下载。
cd /usr/src
tar -jxvf alsa-lib-1.0.9.tar.bz2
tar -jxvf alsa-utils-1.0.9.tar.bz2
cd alsa-lib-1.0.9
./configure;make;make install
cd ../alsa-utils-1.0.9
./configure;make;make install

4). 装完alsa-lib / alsa-utils 后就可以通过alsaconf来对声卡作设置
5). 用lsmod看到声卡模块被加载
6). 用alsamixer设置声卡音量
7). 测试声卡可以 aplay /usr/share/sounds/alsa/Front_Center.wav,终于能发声了,兴奋ing...
. 重启内核后发现声卡模块可能无法正常加载, 可以在 /etc/rc.d/rc.local 加入 modprobe 声卡模块名 让内核启动时自动加载声卡
9). 有关 ALSA 的详细说明请在官方网站 http://www.alsa-project.org/alsa-doc/ 选上你声卡的型号查看

5.rpm 问题,在新内核起动后,rpm有些功能不能使用,并出现下列错误
rpmdb: unable to join the environment
error: db4 error(11) from dbenv->open: Resource temporarily unavailable
error: cannot open Packages index using db3 - Resource temporarily unavailable (11)
error: cannot open Packages database in /var/lib/rpm
no packages

解决方法是,运行 export LD_ASSUME_KERNEL=2.2.5 并把才句加入 /etc/bashrc 里面
再 rpm -q mkinitrd 看一下, 正常了。

6.CD-ROM 模块的改变
1). vi /etc/fstab 把

/dev/cdrom /mnt/cdrom udf,iso9660 noauto,owner,kudzu,ro 0 0

改成

/dev/hdc /mnt/cdrom udf,iso9660 noauto,owner,kudzu,ro 0 0

2). mount /dev/hdc

这是我从网上找到的希望对你有所帮助

论坛徽章:
0
3 [报告]
发表于 2008-09-12 00:39 |只看该作者
原帖由 allen_home 于 2008-9-10 18:09 发表
大家好:

我的linux系统是redhat-2.4.20-8的版本,现在我想编译成linux-2.6.26.5内核,参考了很多的资料,都说是先删除/usr/src/linux,但是我的目录下面没有那个文件,只有linux-2.4.20-8等几个文件,编译的 ...


哥们,你想一步登天成功率是微乎其微的!

论坛徽章:
0
4 [报告]
发表于 2008-09-12 10:15 |只看该作者

回复 #1 allen_home 的帖子

对于没有编译过内核的,/usr/src/下是没有linux目录的,因此,删除linux目录这个步骤是可以省略的。
linux这个目录是在你解压内核后通过ln命令可生成,应该是个链接文件夹。

论坛徽章:
0
5 [报告]
发表于 2008-09-13 00:36 |只看该作者
谢谢,呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP