分享
 
 
 

升级2.6内核到底需要进行哪些事情

王朝other·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

升级2.6内核到底需要进行哪些事情?

升级到2.6是不是make config;make bzImage;make modules;make ...到最后处理一下grub或lilo的配置这么简单?

本文讲述了一点升级到kernel-2.6最起码的事情,注意是最起码的:

首先你要知道2.6需要注意的几件事情:

多了一个sysfs虚拟文件系统

老版本的modutils不能用了,module-init-tools要安装。

modules.conf和modprobe.conf是怎么回事儿?

USB模块名都变了

声卡配置怎么办?kernel-2.6采用alsa, alsa的配置工具是什么?

升级kernel会导致一些软件不能使用吗?

什么版本的gcc都行吗?

...

好了,继续,我的系统环境:

MagicLinux 1.2pre4b, gcc-3.3.1

要升级的2.6版本是2.6.0test7

编译:

第一步很简单,按照惯例,打好补丁,配置,编译。

我仍然是打成了rpm包,打了cp936少数汉字错误的一个补丁。

SMBFS和系统文件系统缺省的codec都为cp936。

因为是作产品,所以打开了尽可能多的驱动,包括USB键盘和鼠标。

打了for i586, i686, athlon的3个包,成功。

编译initscripts, 编译modutils和module-init-tools, 编译mkinitrd

安装。

你会发现,系统多了一套modules命令,就是*.old,这就是不能用的命令,

新的命令基于这些old,由module-init-tools提供。

安装所有软件包,检查grub配置没有问题,重启。

启动过程中USB驱动载入错误。

发现自己在/etc/modules.conf中定义的alias char-major-188 off无效

检查,发现一个generate-modprobe.conf脚本:到/etc/运行。

generate-modprobe.conf modprobe.conf移植modules.conf配置。

重启:char-major-188模块找不到错误消失,说明alias char-major-188生效。

继续usb配置问题:发现/proc/bus/usb/根本不存在,这就是前面提到到sysfs问题:

代码:

1, mkdir /sys

2, 在/etc/rc.sysinit中,只要有mount -f /proc就在下面加上mount -f /sys

3, 在/etc/rc.sysinit中,找到:

action $"Mounting proc filesystem: " mount -n -t proc /proc /proc

加上:

action $"Mounting sysfs filesystem: " mount -n -t sysfs /sys /sys

4,在/etc/fstab中加上:

none /sys sysfs defaults 0 0

5,把/etc/rc.d/init.d/halt中的:

awk '$2 ~ /^/$|^/proc|^/dev/{next}

修改成:

awk '$2 ~ /^/$|^/proc|^/sys|^/dev/{next}

重启,USB载入仍然错误。

但是/下已经多了一个文件系统/sys

/sys/bus/usb仍然不存在。

怎么办?手动probe模块测试:

modprobe hid

modprobe usbmouse(注意不是mousedev了和keybdev了)

lsmod看看,内核里确实加载了,但是usb鼠标纹丝不动。

忘了最重要的一个:

modprobe usb-uhci

系统提示不存在。

原来usb-uhci也没有了,usb-ohci当然也没有了。

而是uhci-hcd.

modprobe uhci-hcd,呵呵,鼠标可以用了。

修改/etc/rc.sysinit/

找到跟usb有关的信息:

代码:

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

大体解释一下:

定义usb变量为0

定义aliases变量为:

/sbin/modprobe -c | awk '/^alias usb-controller/ { print $3 }的执行结果。

aliases存在且不为空时:

载入usbcore

然后载入aliases定义的内容,

置usb为1

挂接usbdevfs

needusbstorage大概就是U盘了,这个变量跟下面几句没关系。

载入hid,键盘,鼠标驱动。

这里需要修改的是:

1,/proc/sys/usb定义是错的,应该是/sys

2,modprobe -c 能不能找到alias usb-controller,从而定义变量aliases为usb-uhci, 运行一下是不能的。

3,模块名不对,usbmouse和usbkbd才对。

根据逻辑,修改成:

代码:

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 usbdevfs usbdevfs /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 hid 2> /dev/null

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

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

fi

载入usbcore, uhci-hcd(也就是usb-uhci的新版本)

然后挂接usbdevfs,然后定义needusbstorage为以后的使用,然后就是载入鼠标键盘驱动。

检查一下rc.sysinit和/etc/rc.d/init.d/halt脚本,看看还有没有/proc/bus/usb的定义,通通搞成/sys/bus/usb.

重启,OK,模块正常载入,鼠标可以用了。

启动kde,没声。

对了,以前一直用oss,现在内核提供的是alsa.

找出一个配置工具alsaconf,这个是alsa-drivers的utils

配置,不行,找不到声卡,问题在于kernel-2.6的模块不再是.o而是.ko

修改alsaconf中所有的.o为.ko.

配置,OK,找到声卡为i810内嵌的,也就是ac97音效,正确的写入了

/etc/modules.conf,

lsmod一看,内核模块没有马上载入,说明alsaconf还是有点问题,

modprobe一下:

modprobe snd-intel8x0,OK了,内核驱动载入。

用alsa play播放:

aplay sample.wav

有声音了。

重启,lsmod看看,snd-intel8x0没有载入,/etc/modules.conf里不是有了吗?

以我的判断,肯定是正确的,试试generate-modprobe.conf,刚才那个

char-major-188的错误就是这么解决的。

做完之后,再重启,再lsmod看看,还是没有载入声卡驱动。

modprobe snd-intel8x0,出错,看来是modprobe.conf导致的,

把里面的sound相关配置通通删掉,重启后modprobe又可以出声了。

没有办法,好好读读alsaconf代码,发现了以前单独安装alsa的时候一个经典的东西:

alsasound启动进程。

这个东西也在alsadrivers的utils目录,找出来。

./alsasound start自动载入所有模块

./alsasound stop 自动卸载所有模块

OK,目的达到。

cp alsasound /etc/rc.d/init.d

chkconfig --add alsasound

再看看alsaconf原来可以进行测试声音的播放,只是以前从来没有把wav文件装上过,

拷贝一个wav文件,再次运行:

alsaconf

配置成功,然后自动载入模块成功,然后就是aplay这个wav.

OK,至此为止,基本的kernel-2.6升级工作完成了。

lsusb, usbview, kde 信息中心中usb目录定义仍然不对,所以通过这些命令你看不到系统任何usb信息

自己修正吧,其他的软件问题也不少,所以以上的工作是最基础的,所以建议大家没事不要赶什么潮流。

对了,忘了说了,kernel-2.6安装后,我测试重新编译kernel-2.6,gcc出现异常,连续测试7次,每次

都在随机的位置退出编译,说明gcc已经不能正常工作,可能又要LD_ASSUME_KERNEL,始终不是一件好事。

继续升级glibc, gcc再所难免'

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有