linux kernel 2.6.37,2

    技术2022-05-20  32

    昨天因为/etc/rc.d/rc文件被我弄坏,不得不重新安装系统,安装的发行版内核用的还是2.6.18,决定要赶紧升级下内核,呵呵。话说linux2.6.37.2内核出来也已经有一段时间了,目前2.6.38还在开发当中,于是还是下个stable的,步骤如下:

    1.  ftp://ftp.kernel.org/pub/linux-2.6.37.2.tar.bz2获取源代码,放在/usr/src/kernel下, 并用tar解压

    2.  首先看一下源目录中Documentation/Changes,看看要升级哪些软件

    o  Gnu C                  3.2                     # gcc --versiono  Gnu make               3.80                    # make --versiono  binutils               2.12                    # ld -vo  util-linux             2.10o                   # fdformat --versiono  module-init-tools      0.9.10                  # depmod -Vo  e2fsprogs              1.41.4                  # e2fsck -Vo  jfsutils               1.1.3                   # fsck.jfs -Vo  reiserfsprogs          3.6.3                   # reiserfsck -V 2>&1|grep reiserfsprogso  xfsprogs               2.6.0                   # xfs_db -Vo  squashfs-tools         4.0                     # mksquashfs -versiono  btrfs-progs            0.18                    # btrfscko  pcmciautils            004                     # pccardctl -Vo  quota-tools            3.09                    # quota -Vo  PPP                    2.4.0                   # pppd --versiono  isdn4k-utils           3.1pre1                 # isdnctrl 2>&1|grep versiono  nfs-utils              1.0.5                   # showmount --versiono  procps                 3.2.0                   # ps --versiono  oprofile               0.9                     # oprofiled --versiono  udev                   081                     # udevinfo -Vo  grub                   0.93                    # grub --versiono  mcelog                 0.6o  iptables               1.4.2                   # iptables -V

    Changes中包含了大多数软件包的下载地址,按找版本要求安装即可

    我需要升级e2fsprogs,reiserfsprogs,xfsprogs,squashfs-tools,btrfs-progs,mcelog,iptables

    安装iptables的时候,要把/sbin中的iptables*和ip6tables*删除,并将/usr/local/sbin中的相应文件复制到/sbin中

    3.好,安装完需要的软件包后,可以开始进入配置内核的界面了

    #make mrproper 确保源代码目录下没有不正确的.o文件

    #make menuconfig 根据自己硬件配置,不确定的选择默认吧

    需要注意的是,在General setup --->

                                                   [*] enable  deprecated sysfs features to support old  userspace too

                                                   [*] enabled deprecated sysfs features by default

    要选中,否则会因为mkinitrd和nash的版本问题出现如下错误:

    mount: could not find filesystem ‘/dev/root’setuproot: moving /dev failed: No such file or directorysetuproot: error mounting /proc: No such file or directorysetuproot: error mounting /sys: No such file or directoryswitchroot: mount failed: No such file or directory

    #make dep 建立编译时需要的从属文 件,没有编译过的代码可以跳过

    #make clean 这里也可以跳过

    #make

    漫长的等待中...

    #make modules (编译模块)

    #make modules_install

    #make install(安装内核)

    [root@localhost linux-2.6.37.2]# make installsh /usr/src/kernels/linux-2.6.37.2/arch/x86/boot/install.sh 2.6.37.2 arch/x86/boot/bzImage /                System.map "/boot"

    4.把新镜像文件放到tmp中

    # cp /boot/initrd-2.6.37.2.img /tmp

    在tmp中新建一个文件夹

    # mkdir /tmp/newinitrd

    # cd /tmp/newinitrd

    然后解压initrd-2.6.37.2.img到newinitrd文件夹

    [root@localhost newinitrd]# zcat ../initrd-2.6.37.2.img | cpio -i11260 blocks[root@localhost newinitrd]# lsbin  dev  etc  init  lib  proc  sbin  sys  sysroot

    用vim修改init文件

    其中:

    echo "Loading dm-region-hash.ko module"insmod /lib/dm-region-hash.koecho "Loading dm-region-hash.ko module"insmod /lib/dm-region-hash.ko

    删去重复的两行,不然启动会echo这个错误!

    重新打包镜像

    [root@localhost newinitrd]# find . | cpio -c -o > ../initrd-2.6.37.2_new.img 11260 blocks

    然后把新的镜像文件移动到/boot

    [root@localhost newinitrd]# mv ../initrd-2.6.37.2_new.img /boot修改/boot/grub/grub.conf

    #boot=/dev/sdadefault=1    #改为0timeout=15splashimage=(hd0,7)/grub/splash.xpm.gzhiddenmenutitle Red Hat Enterprise Linux Server (2.6.37.2)        root (hd0,7)        kernel /vmlinuz-2.6.37.2 ro root=LABEL=/ rhgb quiet        initrd /initrd-2.6.37.2.img         #改为initrd /initrd-2.6.37.2_new.imgtitle Red Hat Enterprise Linux Server (2.6.18-164.el5)        root (hd0,7)        kernel /vmlinuz-2.6.18-164.el5 ro root=LABEL=/ rhgb quiet        initrd /initrd-2.6.18-164.el5.imgtitle Other        rootnoverify (hd0,1)        chainloader +1

    5.重新启动

    #reboot


    最新回复(0)