LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 3752|回复: 2

成功升级 2.6.11,e文 不好,好多东东乱选 的,请大家指点,并完成

[复制链接]
发表于 2005-3-9 05:21:49 | 显示全部楼层 |阅读模式
光长时间不鼓捣这个东东了,这不又想学了,嘻嘻,别打我! ^_^

机子老点就装了个rh 9 (scsi 18.4g , adaptec 7880p 40m  , sis 300 ,ga-6vx 创新8738)
按着论坛上的2.4 -->2.6.X 升级之南上的修改,成功编译了2.6.10 ,感觉 不错,这不又出来了2.6.11 ,按着原来的试试,OK了,下面说说俺是怎么弄的吧!

俺的系统是装好后,先用apt 升的级,不知道与这个有没有关系!!

1. 下面是引用的 http://www.linuxsir.cn/bbs/showthread.php?t=113208 上一段话,嘻嘻
安装module-init-tools-3.0.tar.gz工具包

linux-2.6.x内核的module处理过程有所改变(很多原先在用户态下由modutils处理的工作都放到内核里去完成了), 因此2.4.x下的modutils工具包已经不在适合新的2.6.x内核, 必需将其升级到module-init-tools工具包. 该工具包的最新版本是3.0(ps, 该工具包的版本从0.9.15一下跳到3.0, 其跨度之大...hoho). 可以下载module-init-tools-3.0.tar.gz源码包的地方有两个:

o Rusty's Linux Kernel Page: http://www.kernel.org/pub/linux/ker...ools-3.0.tar.gz
o http://www.kernel.org/pub/linux/uti...ools-3.0.tar.gz

接下来, 按照下列步骤安装module-init-tools工具包:

# configure --prefix=/
# make moveold
# make all install
# ./generate-modprobe.conf /etc/modprobe.conf

命令"make moveold"将把系统原来的modutils工具程序改名为"*.old"(比如,lsmod.old等等). NOTE! 这是非常重要的一步, 千万不要省略. 这将使得你可以继续使用原有的linux-2.4.x系统, 因为在2.4.x系统下, 新的module-init-tools工具包实际上是倚赖原来"*.old"程序来加载内核模块. 如果忘记了这一步也不要紧张, 可以先下载并安装原来的modutils程序包, 然后按照上面的步骤重来一遍就可以了.

新的module-init-tools工具包不再使用原来的/etc/modules.conf配置文件了, 而是使用新的配置文件/etc/modprobe.conf. 因此必需用命令"./generate-modprobe.conf /etc/modprobe.conf"来生成新的配置文件/etc/modprobe.conf. 但是令人不爽的是, 这个生成的新配置文件存在BUG, 下面我们将会提到.


2.装了个 modutils-2.4.26-16.i386.rpm ,忘了是rpm -Uvh 还是ivh了,反正不懂,自家试试就中,没接的话上rpmfind.net 上找找吧
3.然后 载kernel ,然后 解开(放到了/usr/src/下, 然后cd  /usr/src/linux-2.6.11  然后 make xconfig
4.按着这里
http://www.linuxfans.org/nuke/modules.php?name=Forums&file=viewtopic&t=40011
修改了一部分
5.其它的,大部分是默认的,大体从网上找了找,像从www.linuxfans.org上的精华上找的,记住的大体说说
    Block devices 这一项
        Normal floppy disk support (系统应该自己就选择了吧)
       Parallel port IDE device
这一项,只选 了Parallel port ATAPI CD-ROMs ,其它的不懂,就成了模块了
Loopback device support 忘了这是干么的了,从网上查,选 上好
  Cryptoloop Support(这个是它的选项,选 上再说)
Network block device support (好像是网络支持还是)
Low Performance USB Block driver 不知道干么的,
RAM disk support (选 上吧,如果你有usb,或者scsi 就用到吧,俺选 了)
Packet writing on CD/DVD media
其它的不选了,
ATA/ATAPI/MFM/RL
Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support
Include IDE/ATAPI CDROM support
IDE Taskfile Access
generic/default IDE chipset support
SCSI emulation support  这个不知道干么的,可能与俺的scsi 有关就选 了
CMD640 chipset bugfix/support 系统就选 了
PCI IDE chipset support
    Sharing PCI IDE interrupts support
    Generic PCI IDE Chipset Support
    Generic PCI bus-master DMA support
            Intel PIIXn chipsets support
            VIA82CXXX chipset support
算了,还是不复制and 粘贴了,把config 弄上来,想看的看看吧
就是usb 我只选 了
Support for Host-side USB
   USB device filesystem
EHCI HCD (USB 2.0) support
OHCI HCD support
UHCI HCD (most Intel and VIA) support
USB Mass Storage support
USB Human Interface Device 里面的选 项都 没选
然后把网卡,声卡都 编进去了

6.make && make modules && make modules_install
7. cd /usr/src/linux-2.6.11/drivers/ 把scsi 这个目录 考到 /lib/modules 中的2.6.11 目录中,是对于用scsi 的说的, 原因: 如果不这样做,无论你加为模还是加入到内核和中去,你make install 时会出错! 原话:
从网上找到的
①在内核配置时需要将“RAM Disk support”和“Initial RAM disk”编译进内核,同时将SCSI驱动编译成可加载模块,这样在make install后就可以生成initrd.img文件。
②有时候即便如此install脚本也会弹出No modules BusLogic found for kernel X的错误,原因是mdinitrd程序没有找到已经编译好的SCSI驱动模块,从某种程度来说这是install脚本编写者所犯下的错误,为了弥补这种错误我们需要手工将mkinitrd所需要的可加载模块放在一个它能找到的位置,比如/lib/modules/2.x/scs/

8.好了,你可以看到,已经编译好了,在/boot 下什么都 有了,连grub 也都给弄好了
9. 解决usb ,成功了,但没有试过行不行,至少不会在启动时出错了
引用:http://www.linuxfans.org/nuke/mo ... wtopic&t=100067
USB问题主要是因为2.6内核中的这些模块已经改名了
USB-2.0的host控制器的内核模块名字仍然是ehci-hcd
USB-1.1的host控制器的内核模块名字已经从usb-ohci改为ochi-hcd
通用USB host控制器的内核模块名字已经从usb-uhci该为uhci-hcd.
USB键盘的模块名字从keybdev变为usbkbd
支持USB鼠标的模块名字也从mousedev改为usbmouse
因此, 我们必需修改启动脚本/etc/rc.sysinit文件. 同时必须兼容原有的2.4.x系统:

首先修改/etc/modprobe.conf
找到:
alias usb-controller usb-ohci
alias usb-controller1 ehci-hcd

把它改为:

alias usb-controller ohci-hcd
alias usb-controller1 ehci-hcd

修改/etc/rc.sysinit
2.6内核默认将HID编进内核,这样将不会生成hid,usbmouse,和usbkbd模块,也不会有USBMOUSE,USBKEYBOARD选项
Device Drivers--->
USB support--->
<*>USB Human Interface Device(full HID)support
  • HID layer inout support
    [ ]/dev/hiddev raw HID device support
    #////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    #MOdify by June.Hn.
    #2.6内核中找不到usbdevfs
    #odl:
    #if [ $usb = 1 -a ! -f /proc/bus/usb/devices ]; then
    # action $"Mounting USB filesystem: " mount -t usbdevfs usbdevfs /proc/bus/usb
    #fi
    if [ "$KERNELVER" = "2.4" ]; then
    if [ $usb = 1 -a ! -f /proc/bus/usb/devices ]; then
    action $"Mounting USB filesystem: " mount -t usbdevfs usbdevfs /proc/bus/usb
    fi
    fi
    #end
    #////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    needusbstorage=
    if [ $usb = "1" ]; then
    #///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    #Add by June.Hn.
    if [ "$KERNELVER" = "2.6" ]; then
    needusbstorage=`LC_ALL=C grep -e "^I.*Cls=08" /sys/bus/usb/devices 2>/dev/null`
    #LC_ALL=C grep 'hid' /sys/bus/usb/drivers || action $"Initializing USB HID interface: " modprobe usbhid 2> /dev/null
    else

    #end
    #///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    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
    fi
    #///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    #Modify by June.Hn.
    #2.6内核中被编进内核,不需要加载
    #old:
    #action $"Initializing USB keyboard: " modprobe keybdev 2> /dev/null
    #action $"Initializing USB mouse: " modprobe mousedev 2> /dev/null
    #new:
    if [ "$KERNELVER" = "2.4" ]; then
    action $"Initializing USB keyboard: " modprobe keybdev 2> /dev/null
    action $"Initializing USB mouse: " modprobe mousedev 2> /dev/null
    fi
    #end
    #///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    fi

    如果把USB Human Interface Device(full HID)support编译成模块,有USBMOUSE,USBKEYBOARD选项
    Device Drivers--->
    USB support--->
    <m>USB Human Interface Device(full HID)support
  • HID layer inout support
    [ ]/dev/hiddev raw HID device support
    USB HID Boot Protocol drivers--->
  • USB HIDBP Keyboard(simple Boot)support
  • USB HIDBP Mouse(simple Boot)support
    如果你要把它作为模块,请参考snoopyxp大哥的<<2.4->2.6内核升级指南>>中的这一段

    # ----- KERNEL 2.6.x support ------
    # This is for compatibility between kernel-2.4.x and kernel-2.6.x
    #
    UNAME=`uname -r`
    KERNELVER=${UNAME:0:3}
    if [ "$KERNELVER" = "2.6" ]; then
    #
    # This is kernel-2.6.x
    #
    KSYMS=/proc/kallsyms
    KEYBDEV_NAME=usbkbd
    MOUSEDEV_NAME=usbmouse
    else
    #
    # This is kernel-2.4.x
    #
    KSYMS=/proc/ksyms
    KEYBDEV_NAME=keybdev
    MOUSEDEV_NAME=mousedev
    fi

    然后, 把/etc/rc.sysinit脚本文件中出现keybdev和mousedev的地方都改为$KEYBDEV_NAME和$MOUSEDEV_NAME. 把脚本文件/etc/rc.sysinit中的needusbstorage部分从:

    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_NAME 2> /dev/null
    action $"Initializing USB mouse: " modprobe $MOUSEDEV_NAME 2> /dev/null
    fi

    改为:

    needusbstorage=
    if [ $usb = "1" ]; then
    if [ "$KERNELVER" = "2.6" ]; then
    needusbstorage=`LC_ALL=C grep -e "^I.*Cls=08" /sys/bus/usb/devices 2>/dev/null`
    LC_ALL=C grep 'hid' /sys/bus/usb/drivers || action $"Initializing USB HID interface: " modprobe usbhid 2> /dev/null
    else
    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
    fi
    action $"Initializing USB keyboard: " modprobe $KEYBDEV_NAME 2> /dev/null
    action $"Initializing USB mouse: " modprobe $MOUSEDEV_NAME 2> /dev/null
    fi
    然后把
    # Initialize USB controller and HID devices
    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
    上的  上面三行打上# 因为上面已经有了,不然你开机还会有错误!

    10.重起吧,老大,!
    ^_^
    问题:1,内核中好多不东不知该选 还是不该 选 ,望 大家共同去鼓捣一下!
            2.按我的配置,虽然成功,但是在第六步时出现
    arch/i386/kernel/apm.c:1191: warning: `pm_send_all' is deprecated (declared at include/linux/pm.h:126)
    arch/i386/kernel/apm.c:1241: warning: `pm_send_all' is deprecated (declared at include/linux/pm.h:126)
    arch/i386/kernel/apm.c: In function `check_events':
    arch/i386/kernel/apm.c:1357: warning: `pm_send_all' is deprecated (declared at include/linux/pm.h:126)

    kernel/intermodule.c:179: warning: `inter_module_register' is deprecated (declared at kernel/intermodule.c:38)
    kernel/intermodule.c:180: warning: `inter_module_unregister' is deprecated (declared at kernel/intermodule.c:79)
    kernel/intermodule.c:183: warning: `inter_module_put' is deprecated (declared at kernel/intermodule.c:160)

    kernel/power/pm.c: In function `pm_undo_all':
    kernel/power/pm.c:201: warning: `pm_send' is deprecated (declared at kernel/power/pm.c:155)
    kernel/power/pm.c: In function `pm_send_all':
    kernel/power/pm.c:242: warning: `pm_send' is deprecated (declared at kernel/power/pm.c:155)
    kernel/power/pm.c: At top level:
    kernel/power/pm.c:259: warning: `pm_register' is deprecated (declared at kernel/power/pm.c:62)
    kernel/power/pm.c:260: warning: `pm_unregister' is deprecated (declared at kernel/power/pm.c:86)
    kernel/power/pm.c:261: warning: `pm_unregister_all' is deprecated (declared at kernel/power/pm.c:115)
    kernel/power/pm.c:262: warning: `pm_send_all' is deprecated (declared at kernel/power/pm.c:234)
    这个东东,望高手指点,是不是还是没有配置好,
    3.请高手根把我的配置,建议我都是选 那些好,原因?
    4.大家别打我! ^_^
  • 本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    发表于 2005-3-10 19:40:37 | 显示全部楼层
    看来是电源管理的事了。

    兄弟先看一下这个,可能有点帮助。


    Linux操作系统的高级电源管理 [转]
    出处:中国电脑教育报
    日期:2001年9月5日 作者:鸣涧

      在Windows下我们已经对系统的电源管理非常熟悉了,我们可以通过主板的高级电源管理模块实现STR、STD等功能。对于笔记本电脑用户使用高级电源管理方式,让笔记本电脑处于休眠状态,节省电池就更加重要。上面说的这些功能在Windows平台下实现对于我们来说,可能都已经不再是困难的事情。但如果换成Linux恐怕就很少有人知道了,今天我们就来介绍一下在Linux操作系统下的电源管理的实现。由于许多服务器都采用了Linux,电源管理的重要性也就变得非常明显了。

      在x86机器中,存在两种电源管理方法:APM (Advanced Power Management,高级电源管理)和ACPI (Advanced Configuration and Power Interface,高级配置和电源接口)。APM是老标准,而ACPI则提供了管理电脑和设备更为灵活的接口。Linux支持这两种协议,不过有时还需要手工配置。另外,两个标准不能同时运行。缺省情况下Linux运行ACPI。

      APM可以让你把机器处于Suspend(悬挂)或Standby(备用)状态,以及检查电池容量。而ACPI还可以让你把外设(如:显示器、显卡、PCI总线)单独断电,在节省电能方面有更多的控制。为了让电源管理功能生效,需要在BIOS和Linux核心里要打开它,并且在linux里加载必需的应用软件。

      检查系统是否支持电源管理

      在较新的核心里,都包含了对ACPI和APM的支持。一般地,ACPI是激活的。使用dmesg来检验一下:

      dmesg |egrep -i '(apm|acpi)'

      Kernel command line: vga=274 quiet console=ttyS3,9600acpi=no-idleoot=/dev/hda3

      ACPI: Core Subsystem version [20010208]

      ACPI: Subsystem enabled

      ACPI: System firmware supports: C2

      ACPI: plvl2lat=99 plvl3lat=1001

      ACPI: C2 enter=1417 C2 exit=354

      ACPI: C3 enter=-1 C3 exit=-1

      ACPI: Not using ACPI idle

      ACPI: System firmware supports: S0 S1 S4 S5

      另外,支持ACPI的系统也将增加/proc/ sys/acpi的目录。如果它存在,就表示核心已经加载ACPI驱动。

      具体的应用实例

      建议用最新的核心(如:2.4.5)。因为旧的核心支持的特色较少,而2.2.x的核心就是支持ACPI,也只有极少的功能。

      1、Advanced Power Management

      APM应用包含:apmd(APM的后台服务程序)和其他的应用程序(如APM)。建议到rpmfind.net找最新的适合你使用的版本,安装和运行OK后,我们可以试验APM命令了。

      APM最简单的使用就是显示机器里的电池容量。

      APM

      AC on-line, no system battery

      如果不支持APM,就显示“No APM support in核心”。这时,先检查是否有/proc/apm。如果没有,检查是否运行安装APM后的核心。如果你把APM作为了一个模块,检查是否加载这个模块。 apm还能用-S/-s分别进入备用(Standby)和悬挂(Suspend)状态。


    图1

      图1是KDE系统界面,它采用APM来检查电池容量,还可以管理其他硬件的节能模式(图2),并在任务栏显示。进一步的了解可到www.linuxdoc.org。

      2、ACPI

      linux对ACPI的支持较好,而且相关的文档也比APM的要多。

      ACPI的权威网站是http://phobos.fs.tum.de/acpi/, ... 化和管理ACPI。


    图2

      Pmtools里面有个命令是Pmtest,它让你检测设备。一般地,它显示你系统里的ACPI设备,并能让你对它们进行“悬挂”或“备用”处理。它必须用root来运行。

      /pmtools/pmtest

      VGA (D0)

      keyboard (D0)

      PCI 0x0 (D0)

      system 0x0 (D0)

      看来,VGA显示器、键盘、PCI总线和系统都被识别为ACPI设备。它们的状态都是D0,就是活动状态。我们可以把状态设为D1/D2 (耗电最小化)或D3 (完全关闭)。比如:

      /pmtools/pmtest -d1 VGA

      现在显示器应该变黑。这并不会让显卡停止产生视频信号(显示器也表示有输入信号),只是把信号全部转变为黑色。/pmtools/pmtest -d0 VGA可以恢复。

      上面我们仅仅是举了几个例子,大家可以举一反三,管理好您的系统,充分发挥出高级电压管理功能。
    回复 支持 反对

    使用道具 举报

     楼主| 发表于 2005-3-12 23:32:27 | 显示全部楼层

    感谢北南兄,

    我看了一下,可能是在选电源时中的,只选了主项,内面 选项没有选 的事吧!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    快速回复 返回顶部 返回列表