+ -
当前位置:首页 → 问答吧 → 2.6.32.2内核编译,系统启动不了(已解决)

2.6.32.2内核编译,系统启动不了(已解决)

时间:2010-01-15

来源:互联网

VM+RHEL5.1  以前没有编译过
kernel version:2.6.18-53.el5

[root@vm ~]# fdisk -l

Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1         917     7365771   83  Linux
/dev/sda2             918        1044     1020127+  82  Linux swap / Solaris


从网上DOWN了一个2.6.32.2新内核进行编译,步骤如下

make mrproper
make menuconfig

完成后变成.config文件

make
make modules_install

cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.32.2
cp System.map /boot/System.map-2.6.32.2
cd /boot
/sbin/mkinitrd initrd-2.6.32.2.img   2.6.32.2

下面修改grub.conf
如下

default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux Server (2.6.18-53.el5xen)
        root (hd0,0)
        kernel /boot/xen.gz-2.6.18-53.el5
        module /boot/vmlinuz-2.6.18-53.el5xen ro root=LABEL=/ rhgb quiet
        module /boot/initrd-2.6.18-53.el5xen.img

title Red Hat Enterprise Linux Server (2.6.32.2)
        root (hd0,0)
        kernel /boot/vmlinuz-2.6.32.2 ro root=LABEL=/ rhgb quiet
#     module /boot/vmlinuz-2.6.18-53.el5xen ro root=LABEL=/ rhgb quiet
        initrd /boot/initrd-2.6.32.2.img

选择2.6.18启动没有问题,选择2.6.32就启动不起来,不知道是grub.conf配置的问题,还是
编译中出了问题(2.6.32的sata驱动应该默认包含了,多默认的配置文件,基本没有动过)

[ 本帖最后由 带脚镣跳舞 于 2010-1-21 12:18 编辑 ]

作者: 带脚镣跳舞   发布时间: 2010-01-15

贴启动失败的截图


这两天好像不能上传图片,不行的话把内核配置文件传上来。
源码文件夹下的.config

[ 本帖最后由 Celinde 于 2010-1-15 13:20 编辑 ]

作者: Celinde   发布时间: 2010-01-15

config.rar (19.24 KB)
下载次数: 17
2010-01-15 14:47

下载 (40.07 KB)
2010-01-15 14:47

附件为config
错误提示如图

作者: 带脚镣跳舞   发布时间: 2010-01-15

硬盘驱动,ext3 fs等编译进内核了没有?

作者: chenyx   发布时间: 2010-01-15

又重新编译了一次,还是相同的错误,SCSI SATA FS EXT2 EXT3全部编译进去(进内核),非模块!

真是郁闷,以前在IDE硬盘接口上,从来就没有出现过编译不通过的问题

作者: 带脚镣跳舞   发布时间: 2010-01-19

我也遇到同样的问题,不知楼主怎么解决的??

作者: wenwen227   发布时间: 2010-01-19

貌似这是个bug。

kernel引导结束后,init切换跟分区的时候使用了设备文件/dev/root, 而这个设备文件没有被包含在新生成的initrd文件内,也没有存放在磁盘上.导致切换跟分区失败。

在这个版本的redhat linux上,/dev/root这个设备文件被包含在默认内核的initrd镜像里,而真正的/dev/root是由udev动态生成的。

印象里只要用张liveCD挂载根分区,创建/dev/root设备文件(这样创建的是静态的设备文件)就可以正常引导.

作者: Celinde   发布时间: 2010-01-19

哈哈!终于解决了这个问题,难得呀!
把我走的误区贴出来,共兄弟们参考,免得走冤枉路!
1、编译了sata scsi fs ext3等进去,编译成功,但是无法启动新内核2.6.32
2、查到一篇文章
   mount: could not find filesystem '/dev/root'
setuproot: moving /dev/failed: no such file or directory
setuproot: error mounting /proc: No such file or directory.
setuproot: error mounting /sys: No such file or directory.
switchroot: mount failed: No such file or directory.


Kernel panic - not syncing: Attempted to kill init!


===》找不到下面这个东西
用arm-linux-gcc 4.00以上的编译器做出都 文件系统老是报这个错 ,
而用rm-linux-gcc 3.xx 版本都都不会,看来一下内核的配置
原来问题在这里

Kernel Features --->
            
  • Use the ARM EABI to compile the kernel                  
    •    Allow old ABI binaries to run with this kernel (EXPERIMENTA)
      把这个选上就可以了

      但是进行make menuconfig的时候 发现没有kernel Features这项,真是神奇,于是继续搜索
      发现如下的文章
      举个例子:

      #make menuconfig

      General setup  --->                                       

      Loadable module support  --->                              

      Block layer  --->                                          

      Processor type and features  --->                          

      Power management options (ACPI, APM)  --->                 

      Bus options (PCI, PCMCIA, EISA, MCA, ISA)  --->            

      Executable file formats  --->                              

      Networking  --->                                          

      Device Drivers  --->                                       

      File systems  --->                                         

      Instrumentation Support  --->        

            



      #make ARCH=arm menuconfig

      Code maturity level options  --->                     

      General setup  --->                                   

      Loadable module support  --->                        

      Block layer  --->                                    

      System Type  --->                                    

      Bus support  --->                                    

      Kernel Features  --->                                 

      Boot options  --->                                    

      Floating point emulation  --->                        

      Userspace binary formats  --->                        

      Power management options  --->                        

      Networking  --->                                      

      Device Drivers  --->                  


      噼里啪啦捣鼓一通,以为能通过,结果编译没有问题,新内核还是起不来

      没有办法,能力受限,想不到原因,看源代码更是看天书,继续搜索,发现如下内容

      解决办法如下
      编辑内核源码包里面的.config文件.
      CONFIG_SYSFS_DEPRECATED_V2=y #默认该选项为not set,被注释掉的.
      然后再编译一遍内核就都OK了.

      果然启动新内核成功,使用了下http mysql php ssh服务 皆正常,真是爽,这几天没白捣鼓
  • 作者: 带脚镣跳舞   发布时间: 2010-01-21

    我也遇到了这个问题,按LZ说的
    CONFIG_SYSFS_DEPRECATED_V2=y
    内核重启成功,
    谢谢LZ

    作者: chenyx:   发布时间: 2010-01-25

    不错,楼主把解决过程总结出来,赞同

    作者: marksman201   发布时间: 2010-01-25

    谢谢分享经验~

    我的也是这个错误提示,不过还多了一个错误
    insmod: error inserting: 'lib/dm-regin-hash.ko' : -1 File exists

    而且键盘的“caps”和“scroll”灯闪烁

    还应该修改什么地方?

    作者: chenyx   发布时间: 2010-02-06

    作者: admam_cu   发布时间: 2010-03-12

    好楼主,就应该这样,问题解决了出来说明解决方法

    作者: tsyj2007   发布时间: 2010-03-14

    好楼主,就应该这样,问题解决了出来说明解决方法

    作者: li32768   发布时间: 2010-03-14

    本帖最后由 pxwpsy 于 2010-11-19 12:47 编辑

    学习了

    作者: li32768   发布时间: 2010-11-19