编译linux核心的几个问题:Kernel-2.6.x Rebuild document(转)

我想把redhat linux9.0的核心由2.4.8升级到2.6.16-21看能否解决我的sedY890手机在系统中认不到的问题,下面是一篇转帖。

发信人: xxxss (?nbsp;野  硐  ?, 信区: LinuxApp

标  题: Kernel-2.6.x Rebuild document

发信站: BBS 水木清华站 (Sun Apr 18 22:07:04 2004), 转信

 

                The Kernel Rebuild document. v0.27

                

 

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

多了一个sysfs虚拟文件系统 

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

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

USB模块名都变了 

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

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

什么版本的gcc都行吗? 

。。。。。。

 

 

准备工作

 

先看看这两个东西的结果,保存一下

/sbin/lspci

cat /proc/cpuinfo

 

这样呆会儿config的时候可以知道自己该选哪些设备

 

如果要打patch,现在据说是解压之后这样作:

patch -p1 <../patch-2.6.x....

 

看看文档:源码解开以后的README

还有看/usr/src/linux-2.6.5/Documentation/Changes

 

    linux 2.6.5需要一些软件更新到一定版本才可以:

 

o  Gnu C                  2.95.3                  # gcc --version

o  Gnu make               3.79.1                  # make --version

o  binutils               2.12                    # ld -v

o  util-linux             2.10o                   # fdformat --version

o  module-init-tools      0.9.10                  # depmod -V

o  e2fsprogs              1.29                    # tune2fs

o  jfsutils               1.1.3                   # fsck.jfs -V

o  reiserfsprogs          3.6.3                   # reiserfsck -V 2>&1|grep reiserfsprogs

o  xfsprogs               2.6.0                   # xfs_db -V

o  pcmcia-cs              3.1.21                  # cardmgr -V

o  quota-tools            3.09                    # quota -V

o  PPP                    2.4.0                   # pppd --version

o  isdn4k-utils           3.1pre1                 # isdnctrl 2>&1|grep version

o  nfs-utils              1.0.5                   # showmount --version

o  procps                 3.2.0                   # ps --version

o  oprofile               0.5.3                   # oprofiled --version

 

把该升的都升了。。。有些如果本来就不需要的就算了.

其中最重要的一个module-init-tool

 

☆──────────────────────────────────────☆

                        关于module-init-tool

 

    在编译安装modules,即make modules_install时,如果module-init-tools

没有到最新版本的话,(比如0.9.14或者3.0).在最开始有一行提示,让升级

module-init-tools的,并且会出错,symbol......

        并且。。就算通过了,也没法加载模块。。总之这个必须升级.

        2004年2月的版本是3.0

 

    还有一个问题是,module-init-tools 的默认安装路径是/usr/local/

会把lsmod装到/usr/local/bin/

其他几个文件装到/usr/local/sbin/

而系统原有的是在/sbin/

并且原有的lsmod是个link,  /sbin/lsmod -> insmod

所以这里即使你装了module-init-tools,也会在make modules_install的时候遇难。

所以看README

 

正确的安装module-init-tools的方法是

        tar -zxvf modules-init-tools-3.0.tar.gz

        cd modules-init-tools-3.0

        ./configure --prefix=/                  

        make

        make moveold

        make install

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

        mv /etc/modules.conf /etc/modules.conf.bak

 

剩下几步不知道是否必须:

        4) If you are using devfs, copy modprobe.devfs to /etc 

 

        5) You will need to run "depmod" for your new kernel, eg: 

 

        depmod 2.5.50 

 

        6) If you want to hack on the source: 

        aclocal && automake --add-missing --copy && autoconf 

 

还有mkinitrd需要用高版本的

 

☆──────────────────────────────────────☆

 

                        编译

 

据说不要在/usr/src/下面编译内核,所以我方在了别处

/home/xxxss/linux-2.6.5

 

编译之前,可以先改个名字,编辑Makefile

EXTRAVERSION =

这个后面来个名字啥的,比如-1xxxss

 

linux 2.6.5的编译步骤是:

    cd linux-2.6.5

    make mrproper

 

    make menuconfig             (或者xconfig config oldconfig .等等。。)

    make

    cp -af /lib/modules /lib/modules.bak        (备份老版的模块)

    make modules_install

切换到root

    make install

 

   (如果是制定输出目录,那么以上几步换成:)

    mkdir /home/xxxss/build;mkdir /home/xxxss/build/kernel;

    make O=/home/xxxss/build/kernel menuconfig;       (注意这里是大写O,不是0)

    make O=/home/xxxss/build/kernel;

    cp -af /lib/modules /lib/modules.bak;

    make O=/home/xxxss/build/kernel modules_install;

切换到root

    make O=/home/xxxss/build/kernel install;

    

☆──────────────────────────────────────☆

 

                        config的大概(我自己的一些改动,后面有个x都是我N掉的)

                        

Code maturity level options  --->

        [*] Prompt for development and/or incomplete code/drivers

        这条本来是建议"除非要帮助测试或者尝试新功能才选",不过据说

        用了也没有什么问题,所以干脆保持默认编进内核吧。如果确实觉得

        对稳定有影响,就可以N掉

        

General setup ->

        全保持默认

        Support for hot-pluggable devices   如果有usb设备就加上这条吧

        

Processor type and features  --->

        Processor family --->

                (X) Pentium-III/Celeron(Coppermine)

        [ ] Local APIC support on uniprocessors

                这条在某些机子上有,如果不选会出条interupt信息

        < >Toshiba laptop support       去掉,

        < > Dell laptop support         去掉,

        High Memory Support (off)  --->

                (X) off                 这里改成off,因为内存不到4G

Power Management options

        -> Power Mangement support x

Bus options

 #        -> ISA Support x

Device Drivers

        -> Parallel port support

            ->Suport for pcmicia management for pc-style ports x

        -> SCSI Device support

                SCSI 支持不止是scsi设备需要,IDE的刻录机驱动也需要模拟

                成scsi模式,所以如果有这个,就得选上。

                另外如果你的root分区在scsi硬盘上,就必须把scsi支持编进

                内核,而不是编成模块。

            -> PCMICIA SCSI adapter support x

        -> Networking Support

            -> Networking options

                -> [*] Network packet filtering (replaces ipchains) 

            -> Ethernet 1000 MBit x

            -> FDDI driver support x

            -> PPP Filtering x

            -> Token ring devices x

            -> Wan interfaces x

            -> Pcmcia network device support x

            -> ISDN??subsystem x

            -> Talephone Support x

            

        -> USB Support

            -> OHCI HCD Support M

            -> UHCI HCD Support M

 

        -> Input device support 

            -> Mice

                -> PS2 mouse       这个编到内核里

 

file system ->

            ext3   编译进内核

            反正是把root分区的文件系统编进内核,否则initrd没法启动

Kernel Hacking x

 

        

☆──────────────────────────────────────☆

 

                        loopback devices

                        

    接着遇到的问题是,make install内核的时候,有很大几率碰到

All of your loopback devices are in use.

mkinitrd failed

    这个问题很复杂...可能是当时系统内确实有东西使用光了loopback devices.

也可能是新换的modprobe和lsmod等无法正常工作导致.

    这个问题也不晓得怎么解决...

    大概modprobe loop;insmod loop 能解决?不知道了

 

☆──────────────────────────────────────☆

 

                        文件系统

                        

    如果没遇到这个问题,那么内核编译安装完成后,重启后第一个问题是

    - mount: error 2 mounting ext3

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

    - umount /initrd/proc failed : 2

    - Freeing unused kernel memory: 212k freed

    - Kernel panic: No init found. Try passing init= option to kernel

 

    这个问题是由于redhat 7.3以后大家基本都用的是ext3文件系统,但是内核选项里面

ext3文件系统是默认作为模块编译的.并没有编译在内核里面,所以启动时没加载上模块

就会导致无法mount 到/文件系统.

    所以解决的一个简单方法是,把ext3编进内核.

    或者还有别的方法,比如利用mkinitrd创建 Initial RAMDisk

    

    这个initrd是解决那个启动时"鸡生蛋,蛋生鸡"问题的--驱动需要加载/分区

    文件系统,但是驱动自己又在/分区文件系统里,所以没法被加载.

    mkinitrd就是创建一个文件系统镜像,这个ramdisk镜像可以用来预加载

    块设备的模块(比如IDE,SCSI,或者RAID)以访问root文件系统,mkinitrd

    会自动加载/etc/modules.conf里面关于文件系统的模块(比如ext3或者jbd),

    IDE模块.scsi卡等的条目.

    不过这个需要编译内核时把ramdisk那两条编译到内核里.

    

    使用方法:

    mkinitrd /boot/initrd-2.6.5.img 2.6.5

 

        这里请注意,只有当你把根分区文件系统的支持编译成模块时,才需要initrd

        否则grub.conf里面不要带这条:

        initrd /boot/initrd-2.6.x.img

 

☆──────────────────────────────────────☆

 

    这个问题解决以后,下一个问题是

 'spurious 8259A interrupt: IRQ7'

还未解决..

    这个不知道到底有没有影响,似乎是说这个APIC不enable那么系统也照样走。

    所以不管了。。

 

☆──────────────────────────────────────☆

 

                        关于module和设备问题

 

    下一个问题是在开机自检是竟然检测到了ps/2鼠标,而这台机子上根本没有鼠标.

 

    还有就是usb-uhci 显示没有正常加载,虽然编译内核时选了usb

但是这两个模块默认没有被选上

        所以在内核里注意把usb uhci和ohci都选上,<M>就可以了

    然后还要改几个地方:

    1, mkdir /sys 

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

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

   将其中所有的/proc/ksyms替换为/proc/kallsyms。

   将其中所有的/proc/sys/kernel/modprobe 替换为/sbin/modprobe

在文件中的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} 

   

   如果不是上面那个样子,而是这样:

   awk '!/(^#|proc|loopfs|autofs|^none|^\/dev\/root| \/ )/ {print $2}' /proc/mounts

 

就改成:

 

   awk '!/(^#|proc|loopfs|sys|autofs|^none|^\/dev\/root| \/ )/ {print $2}' /proc/mounts

 

 

        修改/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 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 

**********************************************************************

 

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

在/etc/modprobe.conf里面手动改动一条,把

alias usb-controller usb-uhci

换成

alias usb-controller uhci-hcd

 

这样修改的原因是

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

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

3,模块名不对,usbcore, uhci-hcd(也就是usb-uhci的新版本) ,usbmouse和usbkbd才对。 

 

上面贴的几段大概是rh9.0左右版本的,其他发行版本的如果不配套,那么根据

需要自己修改吧。。

一个处理2.4和2.6内核共存的简单办法:

对于kernel 2.4/2.6需要有不同处理的引导过程(包括有些模块加载过程), 

可以在引导shell中判断uname -r值分别处理.

 将/etc/rc.d/rc.sysinit复制为rc.sysinit-2.4和rc.sysinit-2.6然后把rc.sysinit-2.6根据需要修改, 

 最后建立新的/etc/rc.d/rc.sysinit:

#!/bin/sh

if [ `uname -r` = "2.6.5" ]; then

exec /etc/rc.d/rc.sysinit-2.6

else

exec /etc/rc.d/rc.sysinit-2.4

fi

 

注意,那个uname -r 出来的别写错。。

还有别直接改/etc/rc.sysinit,因为这个是个链接,指向/etc/rc.d/rc.sysinit

 

☆──────────────────────────────────────☆

 

                                关于声卡

                                

以前一直用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. 

 

还有两个东西可以参考:

        运行cat /proc/asound/cards看看声卡是否正常加载,

        运行alsamixer看看设备是否打开

 

还不行去http://www.alsa-project.org/

 

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

 

不对的程序:

 usbmodules  

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

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

 

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

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

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

 

☆──────────────────────────────────────☆

 

                        关于rpm

 

        rh9.0升级了内核之后,有没有发现没法装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

warning: xxxxx.x.x.x.x.x.rpm: V3 DSA signature: NOKEY, key ID db42a60e

rpmdb: unable to join the environment

error: db4 error(11) from dbenv->open: Resource temporarily unavailable

error: cannot open Packages database in /var/lib/rpm

**********************************************************************

 

这个问题的解决办法是:

run "export LD_ASSUME_KERNEL=2.2.5", before running rpm.

This is thought to be a bug related to db4 and O_DIRECT interaction

 

如果你的realplay 不能用了,可能也是同样的问题,同样处理方法.

 

参考以下:

**********************************************************************

Here's what Penelope Fudd had to say about this problem:

 

The original RH9 glibc has the problem, the updated RH9 glibc is fine:

 

ftp://ftp.rpmfind.net/linux/redhat/updates/9/en/os/i386/glibc-2.3.2-27.9.i386.rpm

 

And when you update that, you need to update these:

 

ftp://ftp.rpmfind.net/linux/redhat/updates/9/en/os/i386/glibc-common-2.3.2-27.9.i386.rpm

ftp://ftp.rpmfind.net/linux/redhat/updates/9/en/os/i386/glibc-devel-2.3.2-27.9.i386.rpm

ftp://ftp.rpmfind.net/linux/redhat/updates/9/en/os/i386/glibc-utils-2.3.2-27.9.i386.rpm

 

I tried rpm -Uvh glibc*, but it was not a pain-free process, as rpm

choked halfway through.  I had to rpm -e the old one and rpm -Uvh --force

the new one.  That got it working.

***********************************************************************

 

☆──────────────────────────────────────☆

 

                                电源管理

 

        有没有发现关机shutdown以后电源不断了?

        内核里面记得选上:

            <*>   Advanced Power Management BIOS support                  

            [*]     Ignore USER SUSPEND                                  

            [*]     Enable PM at boot time                                

            [*]     Make CPU Idle calls when idle                        

            [ ]     Enable console blanking using APM                    

            [ ]     RTC stores time in GMT                                

            [ ]     Allow interrupts during APM BIOS calls                

            [ ]     Use real mode APM BIOS call to power off              

 

        [ ] Symmetric multi-processing support绝对不要选

 

解释如下:

[*] Power Management support │ │//这一项必选,它就管你的关机 

[ ] ACPI support │ │ //如果你的机器较新可以使用它,关于它的设置一会再说 

<×> Advanced Power Management BIOS support │ │//如果你使用APM选这一项,适合老机器 

[ ] Ignore USER SUSPEND │ │ 

[ ] Enable PM at boot time │ │//这一项一般不用选,原因看我以前的贴子 

[X ] Make CPU Idle calls when idle │ │//这一项请选它让你的机器在空闲时省电,不过作用嘛不大,至于如何更好的省电,以后我再讲 

[ ] Enable console blanking using APM │ │//这一项基本用不到,主要用来关闭LCD的背光,还经常不起作用 

[X ] RTC stores time in GMT │ │这一项如果想让时间正确请选 

[ ] Allow interrupts during APM BIOS calls │ │这一项,如果你的机器在休眠后醒不了请选 

[ ] Use real mode APM BIOS call to power off //这一项如果你的机器老的只用上面的选项不能关机请选,不过一般不要用它。 

这样基本上你的机器就能够正常的进行关机休眠等操作了,当然你要有apmd这个守护程序,不过一般的发行版都有了,不用你操心  

再来看ACPI 

[*] Power Management support //同上面一样这一项必选 

[*] ACPI support //这个不用说了吧 

[ ] ACPI Debug Statements //这个你愿意研究的话就选,大数人用不着 

<*> ACPI Bus Manager //想省电必选 

<*> System //同上 

<×> Processor //建议为Y,原因同上 

<X> Button //建议为Y,默认情况下它的动作为按下电源钮就自动关机,当然你可以自定义,以后再讲。 

< > AC Adapter //桌面电脑永远都使用交流电不用这一项,如果你用笔记本那么选吧,其实没用。 

< > Embedded Controller //这一项,2.6中没有我就不知是作什么的了  

如上你就可以使用ACPI了,不过请注意RH没有装ACPID这个守护程序,所以不管你怎么设置ACPI都不起作用(别人的不知,我的就没装害的我纳闷了很久)  。所以请下载个最新的RPM包装上重启就OK了。

 

☆──────────────────────────────────────☆

 

还有,如果你有刻录机,看到"ide-scsi"这种东西就不要留了,比如装rh9.0时可能

遇到的,2.6内核已经broken这个东西了

 

☆──────────────────────────────────────☆

 

                                VMware

 

    首先, 把/usr/bin/vmware-config.pl文件里所有``/proc/ksyms'' 替换成

     ``/proc/kallsyms''.运行 vmware-config.pl,会有错误信息. 解压

     vmnet.tar到/usr/lib/vmware/modules/source目录. 

这会在那里创建一个vmnet-only目录.在那个目录里编辑bridge.c文件. 

在368行附近, 找到下面这行: 

 

atomic_add(skb->truesize, &sk->wmem_alloc);

替换成:

atomic_add(skb->truesize, &sk->sk_wmem_alloc);

同样的, 在618行和817行,把 protinfo 替换成 sk_protinfo. 

然后把vmnet-only目录打包,替换掉老版本的vmnet.tar,然后重新运行

vmware-config.pl. 请确认vmware-config.pl使用了和你编译内核时相同的编译器.

 

下面是关于使用gcc 3.x的

*********************************************************************

[...]

And second, a recent change in struct task_struct makes the compilation of

vmware net modules fail. The workaround is simple: untar vmmon.tar, edit file

vmmon-only/linux/driver.c and substitue any occurrence of: current->uid,

current->euid, current->fsuid, current->egid, current->gid and

current->fsgid

                                                                                

for

                                                                                

current->__uid, current->__euid, current->__fsuid,

current->__egid, current->__gid and current->__fsgid, respectively.

                                                                                

PS1: the change in struct tast_struct took place in 2.6.0-test6-mm1, but

is not present in 2.6.0-test6.

                                                                                

PS2: kernel and VMware modules compiled with gcc 3.2.3 from Debian Sid

there's someting out there to get vmware-config.pl to run against the kernel using GCC 3.x. It's available at http://ftp.cvut.cz/vmware/ He says the latest tarball (named vmware-any-any-updateXX.tar.gz) needs to be untarred and run instead of the usual vmware-config.pl. I didn't try this myself, though. 

 

***********************************************************************

 

☆──────────────────────────────────────☆

 

                                防火墙

        netfilter ipt_unclean 的规则没有用了,所以remove the chain[s]

否则开机防火墙启动时会失败.

 

☆──────────────────────────────────────☆

                        mii-tool配置网卡

 

        你如果是使用 mii-tool 来配置网卡 ,现在可能就不行了,(as in my case). 

安装使用 [ethtool] and using in lieu 就足够了 (甚至可能更好, 因为ethtool 

看上去更强大).

http://sourceforge.net/project/showfiles.php?group_id=3242&package_id=19201

 

☆──────────────────────────────────────☆

                        update和bdflush() 

 

        在启动的日志里你可能能看到这些:

kernel: warning: process `update' used the obsolete bdflush system call

'update'是个使用bdflush()来清理硬盘的,现在这个已经被2.6的内核废除了,现在

改为使用内核控制pdflush

所以在 /etc/inittab 里面注释掉这行:

        #ud::once:/sbin/update

        

☆──────────────────────────────────────☆

                        一些工具程序

        如果你升级了很多工具到GNU发布的最新版本,并且选择了默认安装路径

(/usr/local/bin),并且把这个路径包含在了$PATH里第一条.有些工具却还是运行的

老版本.比如awk.

这样改:

1.      cd /usr/bin/

2.      mv awk awkORIG

3.      ln -s /usr/local/bin/gawk awk

 

这样就把旧版的awk保存为awkORIG,并且建了symlink到new GNU version 上.

其他hard coded的工具也类似处理.

 

☆──────────────────────────────────────☆

                                named

                                

在boot logs里还有关于'named'以及它的控制器'rndc'的错误信息:

        process `named' is using obsolete setsockopt SO_BSDCOMPAT

去下载最新的 [bind source code 9.2.3], 

http://www.isc.org/index.pl?/sw/bind/

解压,在/lib/isc/unix/socket.c里面找到需要修改的代码:

首先找到这个 (在1297行附近): 

 

        #if defined(USE_CMSG) || defined(SO_BSDCOMPAT)

                int on = 1;

 

改成:

        #if defined(USE_CMSG)

                int on = 1;

 

再找到这段子程序(在1384行附近):

*********************************************************************

 #ifdef SO_BSDCOMPAT

        if (setsockopt(sock->fd, SOL_SOCKET, SO_BSDCOMPAT,

                       (void *)&on, sizeof on) < 0) {

                isc__strerror(errno, strbuf, sizeof(strbuf));

                UNEXPECTED_ERROR(__FILE__, __LINE__,

                                 "setsockopt(%d, SO_BSDCOMPAT) %s: %s",

                                 sock->fd,

                                 isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL,

                                                ISC_MSG_FAILED, "failed"),

                                 strbuf);

 

 

                /* Press on... /*

        }

 #endif

**********************************************************************

把这段全部注释掉,然后build ,install

这个版本在redhat上还有一个问题,我试图将named.pid 放在/var/run下面,但是

root是它的属主,'named'没有权限建立它.

 

所以在named.conf文件里添加

pid-file "/var/run/named/named.pid"; 

这一段到

 options {

           directory 

 

 

                    }

这里就可以了

 

☆──────────────────────────────────────☆

 

                        USB存储设备

        

        数码相机的flash card reader.是个usb storage devices.

在编译内核时必须选上以下几项:

Device drivers 

        -> USB Support

            -> [*]USB device file system

            -> USB mass storage support M

并且,usb mass storage 设备是像scsi设备一样对待的,所以还需要

编译内核时加上

scsi_mod etc

 

但是,如果就这样,你cat /proc/scsi/scsi 

会发现'Generic Model: USB SD Reader',

这是因为这种多个设备一个槽的被认为是一个设备.

所以还需要在内核里加上:

        SCSI device support 

                -> Probe alls LUNs on each SCSI device

这样在/proc/scsi/scsi里有四个槽,用/dev/sdb1就很容易mount上CF card 了

 

☆──────────────────────────────────────☆

 

                        硬盘dma

      hdparm测试

hdparm -tT /dev/hda

/dev/hda:

 Timing buffer-cache reads:   128 MB in  0.40 seconds =322.47 MB/sec

 Timing buffered disk reads:  64 MB in 13.73 seconds =  4.66 MB/sec

 

如果hdparm的dma 参数没法设置,在内核编译上

ATA/ATAPI/API/MFM/RLL support

        -> PCI IDE chipset support

                -> Generic PCI bus-master DMA support

                        -> Intel PIIXn chipset support

根据自己设备的实际情况选择.

然后就可以用hdparm -d1 /dev/hda设置dma了

 

☆──────────────────────────────────────☆

 

        键盘、鼠标的支持记得编译进内核,而不要编译成模块。

cd刻录需要scsi 设备支持,因为是模拟成scsi设备驱动的。

 

☆──────────────────────────────────────☆

        有些系统上grub.conf 会没法引导需要去掉"root=LABEL=/"

#kernel /vmlinuz-2.6.0-test10 ro root=LABEL=/

kernel /vmlinuz-2.6.0-test10 ro

 

☆──────────────────────────────────────☆

                        有些可能会启动时黑屏的  

In the Character devices menu, if you don't see Virtual terminal as you first 

selection, go back to the previous section (Input device support) and select 

Input devices for compilation into the kernel then return here. Select 

Virtual terminal to compile into the kernel. Also ensure you select Unix98 

PTY support. Other selections are at your option. NOTE: you will want the 

following line in your /etc/fstab file:

 

devpts     /dev/pts     devpts     default     0    0

 

Without the above line, those programs requiring a psuedo-terminal won't work. 

There is another gotcha waiting below, but if you're impatient, see the 

graphics support.

 

Graphics support has changed considerably and will cause confusion and a lack 

of a working monitor for many. I highly suggest you choose frame buffer 

device support. I use the boot parameter vga=791 on almost all my systems. 

Choosing support for frame buffer devices will allow you to select the 

generic VESA VGA graphics support. If you have a particular video card on the 

list, I suggest you also choose that (or don't choose agpgart or dri support 

or your kernel may fail to compile).

 

Regardless of whether or not you chose to include support for frame buffer 

devices, the console display driver support will still be available. Make 

sure you enter this subsection and choose VGA text console or you won't have 

a console at all. If you chose frame buffer device support, I recommend you 

compile Framebuffer Console support either into the kernel or as a module. 

If you choose module, make sure it loads early on. If you use VGA=791 and 

load the frame buffer console support as a module (as I do), you won't have 

anything visible on the screen until fbcon is loaded. If this concerns you, 

compile framebuffer console support into the kernel.

 

The Logo configuration subsection is for those who want to see a logo at 

bootup. Note that, for this to work, you'll need the frame buffer console 

support compiled into the kernel.

 

 

- Blank screen after decompressing kernel?

  Make sure your .config has

   CONFIG_INPUT=y

   CONFIG_VT=y

   CONFIG_VGA_CONSOLE=y

   CONFIG_VT_CONSOLE=y

  A lot of people have discovered that taking their .config from 2.4 and

  running make oldconfig to pick up new options leads to problems, notably

  with CONFIG_VT not being set.

 

☆──────────────────────────────────────☆

                网卡无法接收数据包?

An additional bug biting some people is that NICs fail to receive packets

  (usually notable by a NIC not getting a DHCP lease for eg, despite being

   sent one by the server). Booting with "noapic" "acpi=off" or a combination

  of both fixes this for most people.

 

☆──────────────────────────────────────☆

 

(Possibly linked to above bug) VIA APIC routing is currently broken.

  boot with 'noapic'.

 

☆──────────────────────────────────────☆

 

还有,如果你有刻录机,看到"ide-scsi"这种东西就不要留了,比如装rh9.0时可能

遇到的,2.6内核已经broken这个东西了

 

☆──────────────────────────────────────☆

quota升级了,需要新tools,去安装最新的吧

http://www.sf.net/projects/linuxquota/

 

☆──────────────────────────────────────☆

刻录cd据说比2.4快很多,而且buffer underrun的情况会少很多,据说。

这里有cdda2wav工具,ripping audio tracks 用的

*.kernel.org/pub/linux/kernel/people/axboe/tools/

Currently only 'open by device name' works in cdrecord.

  cdrecord -dev=/dev/hdX -inq

 

☆──────────────────────────────────────☆

 

top阿,ps阿之类的命令需要更新到最新版,因为/proc/meminfo 的格式变了一些。

到http://procps.sourceforge.net/

下载新版,

这个http://tech9.net/rml/procps/

似乎没更新

 

☆──────────────────────────────────────☆

 

ext3文件系统支持indexed directory,索引目录?据说使包含大量文件的

目录性能得到很大改观,这个对开基于文件系统的bbs的来说非常有用。

在reiserfs 4 稳定之前值得试试看.

使用htree 功能需要1.32版本以上的e2fsprogs.

去http://prdownloads.sourceforge.net/e2fsprogs

下载最新版

已经存在的文件系统可以用下面的命令转换

    tune2fs -O dir_index /dev/hdXXX

 

据说2.6内核下建立子目录会比原来快。。因为子目录都放在比较接近的地方。

 

☆──────────────────────────────────────☆

 

NVidia的配合2.6内核的显卡驱动可以在这里找到

http://www.minion.de/

安装方法:

#sh NVIDIA-Linux-x86-1.0-5336-pkg1.run 

#sh NVIDIA-Linux-x86-1.0-5336-pkg1.run -x 

#cd NVIDIA-Linux-x86-1.0-5336-pkg1/usr/X11R6/lib/modules/extensions 

#cp libglx.so.1.0.5336 /usr/X11R6/lib/modules/extensions 

Overwrite (y/n): y 

#exit 

$startx 

 

Now, you have your system ready to execute glx apps., open a shell from XWindows and try 

 

TESTING: glxgears -> will show glx graphics and you will be ready to execute any glx app. 

 

$glxgears 

 

☆──────────────────────────────────────☆

 

据说还可以这样定制自己的声音设置:

建立一个/etc/aumixrc文件,内容类似下面的:

vol:75:75:P

pcm:75:75:P

speaker:75:75:P

line:75:75:P

mic:75:75:R

cd:75:75:P

igain:75:75:P

line1:75:75:P

phin:75:75:P

video:75:75:P

 

然后再rc.local里加上这条 

/bin/aumix-minimal -f /etc/aumixrc -L >/dev/null 2>&1;

 

 

 

☆──────────────────────────────────────☆

 

Revision history:

0.27 - fix some error of share rc.sysinit

0.26 - fix some error

        change the sequence of some paragragh 

0.25 - added more experience search from google

0.24 - added experience from internal forum

0.1->0.23 - experience of upgrage by myself

 

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

 

Feedback

Comments and corrections

The current maintainer of this document is xxxss. Please send corrections, additions, comments and criticisms to <xxxss@sina.com>. 

 

The maintainer would also appreciate e-mails from people that have sucessfully used this document to configure and use the DocBook . Please state the version of the document you used, your Linux distribution and its version. 

 

The document's maintainer is not a professional writer. If you find some parts of this document difficult to comprehend then let the maintainer know. 

 

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

reference

 

Other Links.

 

http://www.codemonkey.org.uk/post-halloween-2.5.txt

http://www.digitalhermit.com/~kwan/kernel.html

http://thomer.com/linux/migrate-to-2.6.html

http://kerneltrap.org/node/view/799

http://www.hants.lug.org.uk/cgi-bin/wiki.pl?RedHat_2.4_To_2.6_Kernel_Upgrade

about framebuffer & VGA:

http://linuxbooks.pananix.com/kernel2.6.html     

 

http://www.linuxfans.org/nuke/modules.php?name=Forums&file=viewtopic&t=43117

www.linuxfans.org/nuke/modules.php?name=News&file=article&op=view&sid=1490

 

 

 

 

 

 

                        附B :

                        The post-halloween document. v0.49

                        (aka, 2.6 - what to expect)

                        部分内容

 

Regressions.

~~~~~~~~~~~~

(Things not expected to work just yet)

- The hptraid/promise drivers for proprietary RAID formats are currently

  non functional, and will probably be converted to use device-mapper.

- Some filesystems still need work (Intermezzo, UFS, HFS, HPFS..)

  - UMSDOS fs is currently missing, pending rewrite.

  - EFS (has a blocksize problem, depending on the device that the

    filesystem is being mounted on)

- A number of drivers don't compile currently due to them needing various

  work to convert them to the new APIs

- The format of /proc/stat changed, which could break some

  applications that still depend on the old layout.

 

 

Removed features.

~~~~~~~~~~~~~~~~~

- khttpd is gone.

- Older Direct Rendering Manager (DRM) support (For XFree86 4.0)

  has been removed. Upgrade to XFree86 4.1.0 or higher.

- LVM1 has been removed. See Device-mapper below.

- The system call table is no longer exported. Any module that relied

  on this previously will no longer work.

- Soundmodem hamradio support has been removed. Its functionality

  has been superceded by a userspace replacement.

  http://www.baycom.org/~tom/ham/soundmodem

- Direct booting from floppy is no longer supported.

  You should now use a boot loader program such as syslinux instead.

  "make bzdisk" continues to work (now using syslinux).

- Callout tty devices (/dev/cua) have been deprecated since 2.1.90pre2.

  Support is now removed.

 

 

Deprecated/obsolete features.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

- devfs will be obsoleted in favour of udev (http://www.kernel.org/pub/linux/utils/kernel/hotplug/)

- boot time root= parsing changed.

  ramdisks are now ram<n> instead of rd<n> and cm206 is cm206cd (instead of

  cm206).

  Additionally, cciss driver needs the numeric device ID passed instead of

  the device name.

- usbdevfs will be going away in 2.7. The same filesystem can

  be mounted as 'usbfs' in recent 2.4 kernels, and in 2.5.52

  and above, which is what the filesystem will furthermore be

  known as.

- elvtune is deprecated (as are the ioctl's it used).

  Instead, the io scheduler tunables are exported in sysfs (see below)

  in the /sys/block/<device>/queue/iosched directory.

  Jens wrote a document explaining the tunables of the new scheduler at

  http://www.lib.uaa.alaska.edu/linux-kernel/archive/2002-Week-44/att-deadline-iosched.txt

- Using sysctls by numeric values is deprecated, and will go away

  in the next development series.

 

        

Modules.

~~~~~~~~

- The in-kernel module loader was reimplemented.

- You need replacement module utilities from

  http://www.kernel.org/pub/linux/kernel/people/rusty/modules/

- A backwards compatible set of module utilities is also available

  from the same URL in RPM format.

- Debian sarge/sid or Conectiva snapshot users can just use

  'apt-get install module-init-tools'

- Modules now free stuff marked with __init or __initdata.

- For Red Hat users, there's another pitfall in "/etc/rc.sysinit".

  During startup, the script sets up the binary used to dynamically load

  modules stored at "/proc/sys/kernel/modprobe". The initscript looks

  for "/proc/ksyms", but since it doesn't exist in 2.6 kernels, the

  binary used is "/sbin/true" instead.

 

  This, eventually, will keep modules from working. Red Hat users will

  have to patch the "/etc/rc.sysinit" script to set

  "/proc/sys/kernel/modprobe" to "/sbin/modprobe", even

  when "/proc/ksyms" doesn't exist.

- Modules now have a .ko suffix instead of .o

- Some (older) versions of 'mkinitrd' don't search for modules

  that end with .ko, so update your mkinitrd if this is a problem.

        

        

Kernel build system.

~~~~~~~~~~~~~~~~~~~~

- The build system is much improved compared to 2.4.

  You should notice quicker builds, and less spontaneous rebuilds

  of files on subsequent builds from already built trees.

- There are new graphical config tools.

  "make xconfig" now requires the qt libraries.

  "make gconfig" uses gtk libraries.

- Make menuconfig/oldconfig has no user-visible changes other than speed,

  whilst numerous improvements have been made.

- Several new debug targets exist: 'allyesconfig' 'allnoconfig' 'allmodconfig'.

- Note: The new configuration system is not CML2 related.

- Also note: Whilst some ideas were taken from it, Keith Owens'

  kbuild-2.5 project was not integrated.

- "make" is now the preferred command, without a target; it does <arch-zimage>

  and modules.

- "make -jN" is now the preferred parallel-make execution.

  Do not bother to provide "MAKE=xxx"

- The build is now much less verbose.  If you want to see exactly what's

  going on, try "make V=1" or set KBUILD_VERBOSE=1 in your environment.

- 'make kernel/mm.o' will build the named file, provided a

  corresponding source exists. This also works for (non-composite)

  modules. (FIXME: broken for modules right now?)

- 'make kernel/' will compile all files in a subdirectory and below.

- There is no need to run 'make dep' at any stage.

- 'make help' provides a list of typical targets, including debugging targets.

- You can now build in a separate tree from the source by doing

  make O=builddir

 

IO subsystem.

~~~~~~~~~~~~~

- You should notice considerable throughput improvements over 2.4 due

  to much reworking of the block and the memory management layers.

- Report any regressions in this area to Jens Axboe <axboe@suse.de>

  and Andrew Morton <akpm@osdl.org>

- Two different IO elevators are available. The default is the

  anticipatory IO scheduler. You can select the deadline scheduler by

  booting with "elevator=deadline" on the kernel command line.

- For some workloads the anticipatory scheduler is around 10% slower

  than deadline. Most notably, database workloads which seek all over the

  disk performing reads and synchronous writes. Database folks will likely

  want to boot with elevator=deadline to get that last bit of performance back.

- Assorted changes throughout the block layer meant various block

  device drivers had a large scale cleanup whilst being updated to

  newer APIs.

- The size and alignment of O_DIRECT file IO requests now matches that

  of the device, not the filesystem.  Typically this means that you

  can perform O_DIRECT IO with 512-byte granularity rather than 4k.

  But if you rely upon this, your application will not work on 2.4 kernels

  and will not work on some devices.

 

block device size support.

~~~~~~~~~~~~~~~~~~~~~~~~~~

- Thanks to work done by Peter Chubb, block devices can now access up to

  16TB on 32-bit architectures, and up to 8EB on 64-bit architectures.

- To use the new BLKGETSZ64 ioctls, you'll need updated file-utils.

  (Currently only jfsutils 1.0.20 has this change, patches for other

   filesystems are still pending merging)

- The old 'struct statfs' is not able to describe large devices - the

  statfs() system call will now return -EOVERFLOW for such devices.

  A new system call called statfs64() with a new structure has been added

  to support large devices. It it unknown at time of writing how many

  userspace utilities have been converted to take advantage of this

  syscall when available.

 

 

POSIX ACLs & Extended attributes.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

- Userspace tools available at http://acl.bestbits.at/

 

 

VM Changes.

~~~~~~~~~~~

- Version zero swap partitions are no longer supported (everything is

  using v1 now anyway - rerun mkswap if in doubt).

  Linux 2.0.x requires v0 swap space, Linux v2.1.117 and later

  support v1.  mkswap(8) can format swap space in either format.

- The actual 'reverse mappings' part of Rik van Riel's rmap vm was merged.

  VM behaviour under certain loads should improve.

- VM misbehaviour should be reported to linux-mm@kvack.org

- The VM explicitly checks for sparse swapfiles, and aborts if one is found.

- /proc/sys/vm/swappiness defines the kernel's preference for pagecache over

  mapped memory. Setting it to 100 (percent) makes it treat both types of

  memory equally. Setting it to zero makes the kernel very much prefer to

  reclaim plain pagecache rather than mapped-into-pagetables memory.

- The bdflush() syscall is now officially deprecated. The syscall

  does nothing, and prints a stern warning to users. The functionality

  is replaced by the pdflush daemons.

- Due to various changes, swap files should be just as fast as swap partitions.

- In 2.4, up to 64 swap files were possible. In 2.6, this number is reduced

  to 32.  Like 2.4, these files can be up to 64GB in size, though you will

  need a recent util-linux to have a mkswap utility that supports >2GB

 

 

Kernel preemption.

~~~~~~~~~~~~~~~~~~

- The much talked about preemption patches made it into 2.6.

  With this included you should notice much lower latencies especially

  in demanding multimedia applications. 

- Note, there are still cases where preemption must be temporarily disabled

  where we do not. These areas occur in places where per-CPU data is used.

- If you get "xxx exited with preempt count=n" messages in syslog,

  don't panic, these are non fatal, but are somewhat unclean.

  (Something is taking a lock, and exiting without unlocking)

- If you DO notice high latency with kernel preemption enabled in

  a specific code path, please report that to Andrew Morton <akpm@osdl.org>

  and Robert Love <rml@tech9.net>.

  The report should be something like "the latency in my xyz application

  hits xxx ms when I do foo but is normally yyy" where foo is an action

  like "unlink a huge directory tree".

 

 

Process scheduler improvements.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

- Another much talked about feature. Ingo Molnar reworked the process

  scheduler to use an O(1) algorithm.  In operation, you should notice

  no changes with low loads, and increased scalability with large numbers

  of processes, especially on large SMP systems.

- Scheduler is now Hyperthreading SMP aware and will disperse processes

  over physically different CPUs, instead of just over logical CPUs.

- Robert Love wrote various utilities for changing behaviour of the

  scheduler (binding processes to CPUs etc). You can find these tools at

  http://tech9.net/rml/schedutils

- The behavior of sched_yield() changed a lot.  A task that uses

  this system call should now expect to sleep for possibly a very

  long time.  Tasks that do not really desire to give up the

  processor for a while should probably not make heavy use of this

  function.  Unfortunately, some GUI programs (like Open Office)

  do make excessive use of this call and under load their

  performance is poor.  It seems this new 2.6 behavior is optimal

  but some user-space applications may need fixing.

- The above applies to use of yield() in the kernel, too.

- 2.6 adds system calls for manipulating a task's processor

  affinity: sched_getaffinity() and sched_setaffinity()

- Regressions to mingo@redhat.com and rml@tech9.net

- Debian users who encounter effects such as skips in mp3

  playback, jerky mouse movement may want to stop the

  X server from renicing itself to -10

  You can alter this permanently with 'dpkg-reconfigure xserver-common';

  if you elect not to have /etc/X11/Xwrapper.config managed by debconf,

  simply edit it directly.

- Balancing of IRQs between multiple CPUs should be handled using the

  irqbalance (http://people.redhat.com/arjanv/irqbalance/) program.

- David Mosberger maintains a webpage containing some current 'known gotchas'

  of the O(1) scheduler at http://www.hpl.hp.com/research/linux/kernel/o1.php

 

 

PCI.

~~~~

- PCI domain support has been added.  For most people, this just means that

  all PCI slot names are extended with "0000:" on the front, but for people

  with bigger servers it means they're able to access all their PCI devices.

- More hotplug drivers have been added, including a fake PCI hotplug driver

  so people without specialised hardware can test hotplug features.

 

Random.

~~~~~~~

- /dev/hwrandom got support for some new hardware (now also backported to 2.4)

  such as the HW RNG on newer VIA Cyrix CPUs.

- rng-tools can be found at http://sourceforge.net/projects/gkernel

 

 

Fast userspace mutexes (Futexes).

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

- Rusty Russell added functionality that allows userspace to have

  fast mutexes that only use syscalls when there is contention. Used by

  NPTL.

- Additional information on futexes can be found in Ulrich Dreppers

  paper on the subject at http://people.redhat.com/drepper/futex.pdf

- Bert Hubert has written some documentation on this functionality

  at http://ds9a.nl/futex-manpages

 

 

epoll

~~~~~

Davide Libenzi wrote an event based poll replacement that got

included in 2.6.  More info available at

http://www.xmailserver.org/linux-patches/nio-improve.html

http://lwn.net/Articles/13587/

 

 

Threading improvements.

~~~~~~~~~~~~~~~~~~~~~~~

- Ingo Molnar put a lot of work into threading improvements for 2.6.

  Some of the features of this work are:

  -  Generic pid allocator (arbitrary number of PIDs with no slowdown,

     unified pidhash).

  -  Thread Local Storage syscalls

  -  sys_clone() enhancements (CLONE_SETTLS, CLONE_PARENT_SETTID, CLONE_SETTID,

     CLONE_CLEARTID, CLONE_DETACHED)

  -  POSIX thread signals stuff (atomic signals, shared signals, etc.)

  -  Per-CPU GDT

  -  Threaded coredumping support

  -  sys_exit() speedups (O(1) exit)

  -  Generic, improved futexes, vcache

  -  New, threading related ptrace features

  -  exit/fork task cache

  -  /proc updates for threading

  -  API changes for threading.

- Users should notice a significant speedup in basic thread operations.

  This is true to a lesser extent even for old-threading userspace libraries 

  such as LinuxThreads.

- Regressions should go to Ingo Molnar <mingo@redhat.com> and

  phil-list@redhat.com.  Regressions could happen in the area of signal

  handling and related threading semantics, plus coredumping.

- Native Posix Threading Library (NPTL).

  Ulrich Drepper worked closely with Ingo on the threading enhancements, and

  developed a 1:1 model threading library. You can find out more about NPTL at

  http://people.redhat.com/drepper/nptl-design.pdf

 

 

Enhanced coredumping. 

~~~~~~~~~~~~~~~~~~~~~

- 2.6 offers you the ability to configure the way core files are

  named through a /proc/sys/kernel/core_pattern file.

  You can use various format identifiers in this name to affect

  how the core dump is named.

 

    %p - insert pid into filename

    %u - insert current uid into filename

    %g - insert current gid into filename

    %s - insert signal that caused the coredump into the filename

    %t - insert UNIX time that the coredump occurred into filename

    %h - insert hostname where the coredump happened into filename

    %e - insert coredumping executable name into filename

 

  You should ensure that the string does not exceed 64 bytes.

- Multithreaded processes can now dump core

 

 

 

Input layer.

~~~~~~~~~~~~

- Possibly the most visible change to the end user. If misconfigured,

  you'll find that your keyboard/mouse/other input device will no longer work.

  2.6 offers a much more flexible interface to devices such as keyboards.

- The downside is more confusing options.

  In the "Input device support" menu, be sure to enable at least the following.

 

                    --- Input I/O drivers

                    < > Serial i/o support

                    < >   i8042 PC Keyboard controller

                    [ ] Keyboards

                    [ ] Mice

 

  (Also choose the relevant keyboard/mouse from the list)

 

- If you find your keyboard/mouse still don't work, edit the file

  drivers/input/serio/i8042.c, and replace the #undef DEBUG

  with a #define DEBUG, recompile and reinstall.

 

  When you boot, you should now see a lot more debugging information.

  Forward this information to Vojtech Pavlik <vojtech@suse.cz>

 

- If you use a KVM switcher, and experience problems, booting with the boot

  time argument 'psmouse_noext' should fix your problems.

- Users of multimedia keys without X will see changes in how the kernel

  handles those keys. People who customize keymaps or keycodes in 2.4

  may need to make some changes in 2.6

- Users wanting support for the PC speaker need to enable CONFIG_INPUT_PCSPKR,

  or you won't get a single beep.

- Synaptics touchpad users may be interested to check out

  http://w1.894.telia.com/~u89404340/touchpad/

- In 2.4 users of Japanese keyboards were able to type '|' or

  '\' characters without loading any custom keymap on the

  console.  With the keymap in 2.6, this is not possible

  anymore.  People with these keyboards have to load a keymap

  with loadkeys rebuilt from the source, since loadkeys in some

  vendor distributions cannot load keycodes larger than 127.

  There is a patch to fix this, but it has not been integrated

  (http://tinyurl.com/t75a).

- A FAQ on common problems with the new input layer is available

  at http://lwn.net/Articles/69107/

 

 

PnP layer.

~~~~~~~~~~

- Support for plug and play devices such as early ISAPnP cards has improved a

  lot in the 2.6 kernel. The new code behaves more closely to the code

  handling PCI devices (probe, remove etc callbacks), and also merges

  PnP BIOS access code.

- Report any regressions in plug & play functionality to

  Adam Belay <ambx1@neo.rr.com>

 

 

ALSA.

~~~~~

- The advanced linux sound architecture was merged into 2.6.

  This offers considerably improved functionality over the older OSS drivers,

  but requires new userspace tools.

- Several distros have shipped ALSA for some time, so you may already have the

  necessary tools. If not, you can find them at http://www.alsa-project.org/

- ALSA can emulate OSS interface using the snd_pcm_oss/snd_pcm_mixer

  modules, if your card produces nothing but silence, you may need to run

  alsamixer to unmute channels wich /dev/mixer doesn't see

- Note that the OSS drivers are also still functional, and still present.

  Many features/fixes that went into 2.4 are still not applied to these

  drivers, and it's still unclear if they will remain when 2.6 ships.

  The long term goal is to get everyone moved over to (the superior) ALSA.

 

 

AGP.

~~~~

- The agpgart driver got a long overdue cleanup which involved

  splitting it into an agpgart core, and per-chipset drivers.

  You may need to adjust your modules configuration to autoload

  the chipset drivers on loading the agpgart module.

- Generic AGP 3.0 support is now included.

 

DRI.

~~~~

- Direct rendering in 2.6 hasn't had much (if any?) testing on

  older versions of XFree86. Feedback on whether 4.1 works would

  be useful.

 

 

Faster system calls.

~~~~~~~~~~~~~~~~~~~~

- Systems that support the SYSENTER extension (Basically Intel Pentium-II

  and above, and AMD Athlons) now have a faster method of making the

  transition from userspace to kernelspace when a syscall is performed.

- Pentium Pro also has SYSENTER, but due to errata, is unusable.

- Without an updated glibc, this will not be noticable.

- VMWare 4 users may get crashes due to this.

  Zwane Mwaikambo wrote a patch for a "nosysenter" option which is worth

  googling for if there isn't a vmware update available.

- Regressions to torvalds@osdl.org and libc-alpha@sources.redhat.com

 

procps.

~~~~~~~

- The 2.6 /proc filesystems changed some statistics, which confuse older

  versions of procps. Rik van Riel and Robert Love have been maintaining a

  version of procps during the development of 2.6 which tracks changes to

  /proc which you can find at http://tech9.net/rml/procps/

- Alternatively, the procps by Albert Cahalan now supports the altered formats

  since v3.0.5  -- http://procps.sf.net/

- The /proc/meminfo format changed slightly which also broke gtop in strange

  ways. Likely this also broke some of the KDE/GNOME panel applets.

 

 

Framebuffer layer.

~~~~~~~~~~~~~~~~~~

- James Simmons has reworked the framebuffer/console layer considerably for

  2.6. Support for some cards is still lagging a little, but it should be

  functionally no different than previous incarnations.

- boot time arguments may have changed depending on your driver.

  an example of the change is..

    append = "video=radeon:1024x768-24@100"

  needs to become..

    append = "video=radeonfb:1024x768-24@100"

- Current userspace tools (fbset for eg) are not yet updated,

  and won't function as expected.

- The VESA framebuffer now enables MTRRs for the framebuffer memory range during

  initialisation (Note: PCI cards only).

  If you notice screen corruption, please report this, along with an lspci output,

  so your card can be blacklisted.

- Any problems should go to <jsimmons@infradead.org>

 

IDE.

~~~~

- The IDE code rewrite was subject to much criticism in early 2.5.x, which

  put off a lot of people from testing. This work was then subsequently

  dropped, and reverted back to a 2.4.18 IDE status.

  Since then additional work has occurred, but not to the extent

  of the first cleanup attempts.

- Known problems with the current IDE code. 

  o  Simplex IDE devices (eg Ali15x3) are missing DMA sometimes

  o  Most PCMCIA devices have unload races and may oops on eject

  o  Modular IDE does not yet work, modular IDE PCI modules sometimes

     oops on loading

  o  ide-scsi is completely broken in 2.6 currently. Known problem.

     If you need it either use 2.4 or fix it 8)

- IDE disk geometry translators like OnTrack, EZ Partition, Disk Manager

  are no longer autodetected. The only way forward is to remove the translator

  from the drive, and start over, or use boot parameters depending on the

  type of remapper used :-

    hdx=remap63   - add 63 to each sector (For OnTrack DM)

    hdx=remap     - remap 0->1 (For EZDrive)

- See also the CD Recording section for some important changes

  related to IDE CD writers.

 

IDE TCQ.

~~~~~~~~

- Tagged command queueing for IDE devices has been included.

- Not all combinations of controllers & devices may like this,

  so handle with care.

  READ AS: ** Don't use IDE TCQ on any data you value.

  It's likely bad combinations will be blacklisted as and when discovered.

 

- If you didn't choose the "TCQ on by default" option, you can enable

  it by using the command

 

    echo "using_tcq:32" > /proc/ide/hdX/settings

 

  (replacing 32 with 0 disables TCQ again).

 

- Report success/failure stories to Jens Axboe <axboe@suse.de> with

  inclusion of hdparm -i /dev/hdX, and lspci output.

 

 

SCSI.

~~~~~

- Various SCSI drivers still need work, and don't even compile.

- Various drivers currently lack error handling.

  These drivers will cause warnings during compilation due to

  missing abort: & reset: functions.

- Note, that some drivers have had these members removed, but still

  lack error handling. Those noticed so far are ncr53c8xxx, sym53c8xx

- large dev_t support allowing thousands of disks to be

  supported (was 128 or 256 in the 2.4 series)

- major code cleanup, initially to support the block layer (bio)

  improvements have led to:

   - better throughput (?) [less double handling of data]

   - per HBA locks (there was a single io_request_lock in

     the 2.4 series)

   - more flexible interface to HBA drivers

   - better hotplug support, especially for USB mass storage

     and ieee1394 sbp2 devices [well it's work_in_progress]

- improved error processing and scanning code (support for

  large, sparse lun spaces)

- lots of scsi driver internals available via sysfs

 

 

v4l2.

~~~~~

- The video4linux API finally got its long awaited cleanup.

- xawtv, bttv and most other existing v4l tools are also compatible

  with the new v4l2 layer. You should notice no loss in functionality.

- See http://bytesex.org/v4l/ for more information.

 

 

Quota reworking.

~~~~~~~~~~~~~~~~

The new quota system needs new tools. Supports 32 bit uids.

http://www.sf.net/projects/li

One thought on “编译linux核心的几个问题:Kernel-2.6.x Rebuild document(转)”

  1. Quota reworking.

    ~~~~~~~~~~~~~~~~

    The new quota system needs new tools. Supports 32 bit uids.

    http://www.sf.net/projects/linuxquota/

     

     

    CD Recording.

    ~~~~~~~~~~~~~

    - Jens Axboe added the ability to use DMA for writing CDs on

      ATAPI devices. Writing CDs should be much faster than it

      was in 2.4, and also less prone to buffer underruns and the like.

    - With a recent cdrecord, you also no longer need ide-scsi in order to use

      an IDE CD writer.

    - Ripping audio tracks off of CDs now also uses DMA and should be

      notably faster. You can also find an updated cdda2wav at:

      *.kernel.org/pub/linux/kernel/people/axboe/tools/

    - Send good/bad reports of audio extraction with cdda2wav and burning with

      the cdrecord to Jens Axboe <axboe@suse.de>

    - Currently only 'open by device name' works in cdrecord.

      cdrecord -dev=/dev/hdX -inq

    - More info at http://lwn.net/Articles/13538/ & http://lwn.net/Articles/13160/

     

     

    USB:

    ~~~~

    - USB host controller drivers were renamed in 2.6. They are now

       uhci-hcd for UHCI controllers.

       ohci-hcd for OHCI controllers.

       ehci-hcd for EHCI (USB 2.0) controllers.

    - Very little user visible changes, the only noticable 'major' change

      is that there is now only one UHCI driver. As noted elsewhere, usbdevfs 

      was renamed to usbfs.

    - USB-storage has changed behaviour. A device which is disconnected and

      then reconnected is not reassociated with the old /dev node.

    - USB storage also got several performance enhancements.

     

    - USB 'gadget' support.

      There's a new "USB Gadget" API supporting USB devices that

      run Linux inside.  Examples include PDAs, cable modems,

      and some printers.  That API is how the driver for the

      USB Device Controller (UDC) hardware talks with portable

      "gadget drivers".  A gadget driver is what makes that

      hardware act like a "network link" or a "printer".

                                                                                              

      When you don't want to write a gadget driver in the kernel,

      then "gadgetfs" lets you do it in user mode programs.

      Each endpoint appears as a single file, so it's a lot

      simpler than "usbfs".  Currently it's purely synchronous,

      but it should be natural for someone to add AIO support.

                                                                                               

      See http://www.linux-usb.org/gadget for more information

      about this API framework, including a pthreaded example

      "gadgetfs" program.  See the 2.6 kerneldoc for API info.

     

     

    Nanosecond stat:

    ~~~~~~~~~~~~~~~~

    The stat64() syscall was changed to return jiffies granularity.

    This allows make(1) to make better decisions on whether or not it

    needs to recompile a file. Not all filesystems may support such precision.

     

     

    Filesystems:

    ~~~~~~~~~~~~

    A number of additional filesystems have made their way into 2.6.

    Currently it supports: ext2, ext3, reiserfs, jfs, xfs, minix, romfs,

    iso9660, udf, msdos, vfat, ntfs (ro), adfs, amiga ffs, apple macintosh hfs,

    BeOS befs (ro), bfs, efs (ro), cramfs, free vxfs, os/2 hpfs, qnx4fs,

    sysvfs, ufs.

    Whilst these have had testing out of tree, the level of testing

    after merging is unparalleled. Be wary of trusting data to immature

    filesystems.  A number of new features and improvements have also

    been made to the existing filesystems from 2.4.

     

    Reports of stress testing with the various tools available would

    be beneficial.

     

     

    Generic VFS changes.

    ~~~~~~~~~~~~~~~~~~~~

    - Since Linux 2.5.1 it is possible to atomically move a subtree to

      another place. The usage is...

       mount --move olddir newdir

    - Since 2.5.43, dmask=value sets the umask applied to directories only.

      The default is the umask of the current process.

      The fmask=value sets the umask applied to regular files only.

      Again, the default is the umask of the current process.

    - Directories can now be marked as synchronous using chattr +S,

      so that all changes will be immediately written to disk.

      Note, this does not guarantee atomicity, at least not for all filesystems

      and for all operations.  You *can* be guaranteed that system calls will

      not return until the changes are on disk; note though that this does have

      has some significant performance impacts.

     

     

     

    devfs.

    ~~~~~~

    - devfs was somewhat stripped down and a lot of duplicate functionality

      was removed. You now need to enable CONFIG_DEVPTS_FS=y and mount

      the devpts filesystem in the same manner you would if you were not

      using devfs.

     

     

    EXT2.

    ~~~~~

    - 2.5.49 included an extension to ext2 which will cause it to not attach

      buffer_head structures to file or directory pagecache at all, ever.

      This is for the big highmem machines.  It is enabled via the `-o nobh'

      mount option.

    - The ext2 filesystem is now using finer-grained locking which yields reduced

      context switch rates and higher throughput on large SMP machines.

     

     

    EXT3.

    ~~~~~

    - The ext3 filesystem has gained indexed directory support, which offers

      considerable performance gains when used on filesystems with directories

      containing large numbers of files.

    - In order to use the htree feature, you need at least version 1.32 of

      e2fsprogs.

    - Existing filesystems can be converted using the command

     

        tune2fs -O dir_index /dev/hdXXX

     

    - The latest e2fsprogs can be found at

      http://prdownloads.sourceforge.net/e2fsprogs

    - The ext2 and ext3 filesystems have new file allocations policies (the "Orlov

      allocator") which will place subdirectories closer together on-disk.  This

      tends to mean that operations which touch many files in a directory tree are

      much faster if that tree was created under a 2.6 kernel.

     

    Reiserfs.

    ~~~~~~~~~

    - Reiserfs now supports inode attributes such as immutable.

      (Also included in 2.4.17, so not really 'new').

    - Relocated/non-standard size journal support (also backported

      to 2.4.22pre3)

    - Support for writes larger than 4KB in size, which means speedups

      on large file writes, esp in append mode, should also be more

      SMP friendly.

    - Variable blocksize support. (Ie, you can choose any blocksize

      in the range of 1024 .. PAGE_CACHE_SIZE, must be power of 2).

    - A bug in kmail was triggered by some optimisations in reiserfs in 2.6

      Upgrading kmail should fix this, or mounting the reiserfs partition

      with 'nolargeio=1'

     

     

    NFS.

    ~~~~

    - Basic support has been added for NFSv4 (server and client)

    - Additionally, kNFSD now supports transport over TCP.

      This experimental feature is also backported to 2.4.20

    - Interoperability reports with other OS's would be useful.

    - v1.0.3 of nfs-utils supports the newer 2.6 kernels change

      of kdev_t type. You can grab it at http://nfs.sourceforge.net/

    - Problems to nfs@lists.sourceforge.net

     

     

    NTFS.

    ~~~~~

    - A new, rewritten NTFS driver was merged for 2.6. It has the

      following main benefits over the old driver:

      - SMP and reentrant safe

      - support bigger than 4 kB cluster sizes

      - full support for sparse files on W2K/XP/W2K3

      - mmap() support

      - More stable, and much faster than the previous NTFS driver.

      - Still read-only, but with safe file overwrite support without changes

      to the file size

      - More information is available at http://linux-ntfs.sf.net/

     

     

    sysfs.

    ~~~~~~

    In simple terms, the sysfs filesystem is a saner way for

    drivers to export their innards than /proc.

    This filesystem is always compiled in, and can be mounted

    just like another virtual filesystem. No userspace tools

    beyond cat(1) and echo(1) are needed. tree(1) is also good for

    viewing its overall structure.

     

        mount -t sysfs none /sys

     

    See Documentation/filesystems/sysfs.txt for more info.

     

     

    JFS.

    ~~~~

    IBM's JFS was merged for 2.6. (And backported to 2.4.20, but

    it was still a new feature here first. You can read more about JFS at

    http://www-124.ibm.com/developerworks/oss/jfs/index.html

     

     

    XFS.

    ~~~~

    The SGI XFS filesystem has been merged, and has a number of userspace

    features. Users are encouraged to read http://oss.sgi.com/projects/xfs

    for more information.

    The various utilities for creating and manipulating XFS volumes can

    be found on SGI's ftp server:

    ftp://oss.sgi.com/projects/xfs/download/download/cmd_tars/xfsprogs-2.5.4.src.tar.gz

     

     

    CIFS.

    ~~~~~

    Support utilities and documentation for the common internet file system (CIFS)

    can be found at http://us1.samba.org/samba/Linux_CIFS_client.html

     

     

    FAT.

    ~~~~

    CVF (Compressed VFAT) support has been removed. This means you

    will no longer be able to access DriveSpace partitions.

     

     

    HugeTLBfs.

    ~~~~~~~~~~

    Files in this filesystem are backed by large pages if the CPU

    supports them. See Documentation/vm/hugetlbpage.txt for more details.

     

     

    Internal filesystems.

    ~~~~~~~~~~~~~~~~~~~~~

    /proc/filesystems will contain several filesystems that are not

    mountable in userspace, but are used internally by the kernel

    to keep track of things. Amongst these filesystems are futexfs 

    and eventpollfs.

     

     

    Kernel Asynchronous I/O (AIO) Support

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Support for kernel AIO has been included in 2.6. 

     

    AIO enables even a single application thread to overlap I/O 

    operations with other processing, by providing an interface

    for submitting one or more i/o requests in one system call

    (io_submit) without waiting for completion, and a separate 

    interface (io_getevents) to reap completed i/o operations

    associated with a given completion group.

     

    The following is a quick summary of what works today as 

    expected:

    - AIO read and write on raw (and O_DIRECT on blockdev)

    - AIO read and write on files opened with O_DIRECT on

      ext2, ext3, jfs, xfs

     

    And what doesn't work as expected or is not currently 

    supported:

    - AIO read and write on files opened without O_DIRECT

      (i.e. normal buffered filesystem AIO). On ext2, ext3,

      jfs, xfs and nfs, these do not return an explicit

      error, but quietly default to synchronous or rather 

      non-AIO behaviour (i.e io_submit waits for i/o to complete 

      in these cases). For most other filesystems, -EINVAL is 

      reported.

    - AIO fsync (not supported for any filesystem)

    - AIO read and write on sockets (doesn't return an

      explicit error, but quietly defaults to synchronous

      or rather non-AIO behaviour)

     

    You need to install libaio-0.3.92 (available at 

    http://www.kernel.org/pub/linux/kernel/people/bcrl/aio/

    if you are writing AIO applications which use the native 

    AIO interfaces.

     

    More info is available at http://lse.sf.net/io/aio.html

     

    Profiling.

    ~~~~~~~~~~

    - A system wide performance profiler (Oprofile) has been included in 2.6.

      With this option compiled in, you'll get an oprofilefs filesystem

      which you can mount, that the userspace utilities talk to.

      You can find out more at http://oprofile.sf.net/

    - You need a fixed readprofile utility for 2.6.

      Present in util-linux as of 2.11z

     

     

     

    Improved BIOS table support.

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    - Linux now supports various new BIOS extensions.

     

     

    Simple boot flag support.

    ~~~~~~~~~~~~~~~~~~~~~~~~~

    The SBF specification is an x86 BIOS extension that allows improved

    system boot speeds. It does this by marking a CMOS field to say

    "I booted okay, skip extensive POST next reboot".

    Userspace tool is at http://www.codemonkey.org.uk/projects/sbf/sbf.c

    More info on SBF is at http://www.microsoft.com/hwdev/resources/specs/simp_bios.asp

     

     

    EDD Support.

    ~~~~~~~~~~~~

    - Support for BIOS Enhanced Disk Drive Services (EDD) was added,

      which exports information on what the BIOS thinks is the boot

      drive and other useful info to /sys/firmware/edd

    - Matt Domsch is interested in hearing success/fails on this code

      with some simple tests decribed at http://linux.dell.com/edd/results.html

     

     

    Improved system monitoring.

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~

    - lm_sensors.

      - Shipped in vendors kernels for years, lm_sensors is now part of mainline.

        It does however have a different interface. (/sysfs instead of /proc

      - http://www.xs4all.nl/~thospel/ASIS/bin/psensors is a handy script

        for parsing the new sysfs fields.

    - IPMI. (Intelligent Platform Management Interface)

      - IPMI is a standard for monitoring the hardware in a system.

      - Project home page: http://openipmi.sourceforge.net/

      - Specification: http://www.intel.com/design/servers/ipmi/spec.htm

     

     

    x86 CPU detection.

    ~~~~~~~~~~~~~~~~~~

    - The CPU detection code got a pretty hefty shake up. To be certain your

      CPU has all relevant workarounds applied, be sure to check that it was

      detected correctly. cat /proc/cpuinfo will tell what the kernel thinks it is.

    - Likewise, the x86 MTRR driver got a considerable makeover.

      Check that XFree86 sets up MTRRs in the same way it did in 2.4

      (Failures will get logged in /var/log/XFree86.log)

    - Early PII Xeon processors and possibly other early PII processors

      require microcode updates either from the BIOS or the microcode driver

      to work around CPU bugs the O(1) scheduler exposes.

      You can find the relevant microcode tools at

      http://www.urbanmyth.org/microcode/

    - Any regressions in both should go to mochel@osdl.org Cc: davej@codemonkey.org.uk

     

     

    Extra tainting.

    ~~~~~~~~~~~~~~~

    Running certain AMD processors in SMP boxes is out of spec, and will taint

    the kernel with the 'S' flag.  Running 2 Athlon XPs for example may seem to

    work fine, but may also introduce difficult to pin down bugs.

    In time it's likely this tainting will be extended to cover other out of

    spec cases.

     

    Additionally, the new modules interface will taint the kernel if you try

    to 'force' a module to load with insmod -f.

     

     

    Power management.

    ~~~~~~~~~~~~~~~~~

    - 2.6 contains a more up to date snapshot of the ACPI driver. Should

      you experience any problems booting, try booting with the argument

      "acpi=off" to rule out any ACPI interaction. ACPI has a much more involved

      role in bringing the system up in 2.6 than it did in 2.4

    - The old "acpismp=force" boot option is now obsolete, and will be ignored

      due to the old "mini ACPI" parser being removed.

    - software suspend is still in development, and in need of more work.

      Use with SMP and/or PREEMPT not advised.

    - The ACPI code will do basic sanity checks on the DMI structure in the BIOS

      to determine the date it was written. BIOSes older than year 2000 are

      assumed to be broken. In some circumstances, this assumption is wrong.

      If you see a message saying ACPI is disabled for this reason, try booting

      with acpi=force. If things work fine, send the output of dmidecode

      (http://www.nongnu.org/dmidecode/) to acpi-devel@lists.sf.net

      with an explanation of why your BIOS shouldn't be blacklisted.

     

     

    CPU frequency scaling.

    ~~~~~~~~~~~~~~~~~~~~~~

    Certain processors have the facility to scale their voltage/clockspeed.

    2.6 introduces an interface to this feature, see Documentation/cpufreq

    for more information. This functionality also covers features like

    Intel's speedstep, and the Powernow! feature present in mobile AMD Athlons.

    In addition to x86 variants, this framework also supports various ARM CPUs.

    You can find a userspace daemon that monitors battery life and

    adjusts accordingly at: http://sourceforge.net/projects/cpufreqd

     

     

    Background polling of MCE.

    ~~~~~~~~~~~~~~~~~~~~~~~~~~

    The machine check handler has been extended so that it regularly polls

    for any problems on AMD Athlon, and Intel Pentium 4 systems.

    This may result in machine check exceptions occuring more frequently

    than they did in 2.4 on out of spec systems (Overclocking/inadequate

    cooling/underated PSU etc..).

     

     

    LVM2 - DeviceMapper.

    ~~~~~~~~~~~~~~~~~~~~

    The LVM1 code was removed wholesale, and replaced with a much better

    designed 'device mapper'.

    - This is backwards compatible with the LVM1 disk format.

    - Device mapper does require new tools to manage volumes however.

      You can get these from ftp://ftp.sistina.com/pub/LVM2/tools/

     

     

    Debugging options.

    ~~~~~~~~~~~~~~~~~~

    During the stabilising period, it's likely that the debugging options

    in the kernel hacking menu will trigger quite a few problems.

    Please report any of these problems to linux-kernel@vger.kernel.org

    rather than just disabling the relevant CONFIG_ options.

     

    Merging of kksymoops means that the kernel will now spit out

    automatically decoded oopses (no more feeding them to ksymoops).

    For this reason, you should always enable the option in the

    kernel hacking menu labelled "Load all symbols for debugging/kksymoops".

     

    Testing with CONFIG_PREEMPT will also increase the amount of debug

    code that gets enabled in the kernel. Kernel preemption gives us

    the ability to do a whole slew of debugging checks like sleeping

    with locks held, scheduling while atomic, exiting with locks held, etc.

     

     

    Compiler issues.

    ~~~~~~~~~~~~~~~~

    - The recommended compiler (for x86) is still 2.95.3.

    - When compiled with a modern gcc (Ie gcc 3.x), 2.6 will use additional

      optimisations that 2.4 didn't. This may shake out compiler bugs that

      2.4 didn't expose.

    - Do not use gcc 3.0.x on x86 due to a stack pointer handling bug.

    - gcc 2.96 is not supported with CONFIG_FRAME_POINTER=y due to a stack

      pointer handling bug.

     

    Security concerns.

    ~~~~~~~~~~~~~~~~~~

    Several security issues solved in 2.4 may not yet be forward ported

    to 2.6. For this reason 2.6.x kernels should not be tested on

    untrusted systems.  Testing known 2.4 exploits and reporting results

    is useful.

     

    SELinux.

    ~~~~~~~~

    NSA Security-Enhanced Linux (SELinux) was merged in 2.6.

    SELinux defaults to not being config'd in.  If you

    config it in it defaults to enabled.  If you also config the bootparam

    you can use that param to disable it, otherwise selinux=1 is redundant

    as that's the default.

     

    You can obtain SELinux tools and an example policy configuration from

    http://www.nsa.gov/selinux

     

     

     

    Networking.

    ~~~~~~~~~~~

    - ebtables

      The bridging firewall code was merged. To manage these you'll

      need the ebtables tool available from

      http://users.pandora.be/bart.de.schuymer/ebtables/

      More on bridge-nf can be found at http://bridge.sourceforge.net/

    - Bridged packets can now be 'seen' by iptables.

    - IPSec

      Linux finally has IPSec support in mainline.  Use the KAME tools port on

      http://sourceforge.net/projects/ipsec-tools

      For more info see http://www.lib.uaa.alaska.edu/linux-kernel/archive/2002-Week-44/1127.html

      Also Bert Hubert has a howto at http://lartc.org/howto/lartc.ipsec.html

      Additionally, ipsec-utils is at http://sourceforge.net/projects/ipsec-tools

      Herbert Xu also has patches against FreeSWAN 2.00 to allow its userspace

      to use the 2.6 IPSec functionality. They can be downloaded from

      http://gondor.apana.org.au/~herbert/freeswan/

      An additional HOWTO is at http://www.ipsec-howto.org/

    - Some applications may trigger the kernel to spit out warnings about

      'process xxx using obsolete setsockopt SO_BSDCOMPAT' .

      - Bind 9.2.2 checks for #ifdef SO_BSDCOMPAT in <asm/socket.h> correctly,

        so a recompile is all that is needed.

      - bind9-host from debian testing triggers, though the 'host' package doesn't.

      - process `snmpd' is using obsolete setsockopt SO_BSDCOMPAT

      - process `snmptrapd' is using obsolete setsockopt SO_BSDCOMPAT

      - ntop uses obsolete (PF_INET,SOCK_PACKET)

    - Users of boxes with >1 NIC may find that for eg, eth0 and eth1 refer to

      the opposites of what they did in 2.4.   This is a bug that will be fixed

      before 2.6.0.  One option (or management workaround) for this is to use

      'nameif' to name Ethernet interfaces.  There is a HOWTO for doing this at

      <http://xenotime.net/linux/doc/network-interface-names.txt&gt;

    - Support for various new RFCs.

      - RFC3173 (IP Payload Compression).

      - RFC3041 (IPv6 Privacy Extensions).

      - RFC2473 (IPv6 in IPv6 tunnels).

      - RFC2960 (SCTP - see below).

    - Linux reaches congestion collapse when subjected to heavy network load.

      NAPI fixes this amongst other things and therefore improving network

      performance.

      More info at http://www.cyberus.ca/~hadi/usenix-paper.tgz and

      ftp://robur.slu.se/pub/Linux/net-development/NAPI/

    - IPVS (IP Virtual Server)

      http://www.linuxvirtualserver.org/

    - RFC 2960 - SCTP (Stream Control Transmission Protocol)

      SCTP is an IP based, message oriented reliable transport protocol with

      congestion control, support for transparent multi-homing and multiple

      ordered streams of messages. RFC2960 defines the core protocol.

      More information about the protocol can be found at

        http://www.ietf.org/rfc/rfc2960.txt

      and about the Linux kernel implementation at

        http://lksctp.sourceforge.net/

    - ANSI/IEEE 802.2 LLC type 2 Support

      Full implementation of LLC 1 and 2 stack, used by Appletalk, IPX and Token

      Ring, also needed for the out of the tree, not yet functional NetBEUI

      stack and for the for Linux SNA.

                                                                                    

      This is based on the stack released under the GPL by Procom Inc. for the

      2.0.30 Linux kernel.

     

     

    Crypto

    ~~~~~~

    - A generic crypto API has been merged, offering support for various

      algorithms (HMAC,MD4,MD5,SHA-1,SHA256,SHA384,SHA512,DES,Triple DES EDE,

      Blowfish, Twofish, Serpent, AES, CAST5, CAST6)

     

    - This functionality is used by IPSec and the crypto-loop.  It's possible

      that it will later also be available for use in userspace through a crypto

      device, possibly compatible with the OpenBSD crypto userspace.

     

    - The in-kernel loopback device can now do crypto using the CryptoAPI.

      May need new userspace tools.

     

    - A 2.4->2.6 cryptoloop migration guide is at http://clemens.endorphin.org/Cryptoloop_Migration_Guide.html

     

    Ports.

    ~~~~~~

    - 2.6 features support for several new architectures.

      - x86-64 (AMD Hammer)

      - ppc64

      - UML (User mode Linux)

        See http://user-mode-linux.sf.net/ for more information.

      - uCLinux: m68k(w/o MMU), h8300 and v850.  sh also added a uCLinux option.

    - The 64 bit s390x port was collapsed into a single port, appearing

      as a config option in the base s390 arch.

    - In the opposite direction, arm26 was split out from arm.

    - x86 architecture also got 'subarch' support to support 'strange' x86

      boxes (usually big boy toys). Currently supported subarchs include

      - ES7000

      - PC9800 (incomplete merge)

      - VISWS (Was in 2.4, but now maintained again)

      - Voyager. (http://www.hansenpartnership.com/voyager/)

     

    --

     

    ※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.155.*]

    上一篇 返回上一页 回到目录 回到页首

Comments are closed.