爱钻网

linux内核编译常常出现的问题的解决办法

编辑:tkgame 来源:爱钻网 时间:2023-03-26

    1、若编译内核时总是出现同一个错误,如下:
   
    在make   modules_install时最后几行弹出错误:
   
    if   [   -r   System.map   -a   -x   /sbin/depmod   ];   then   /sbin/depmod   -ae   -F   System.map     2.6.12.2;   fi
   
    /bin/sh:   line   1:     3357   已杀死                               /sbin/depmod   -ae   -F   System.map   2.6 .12.2
   
    make:   ***   [_modinst_post]   错误   137
   
    如果继续make   install,重启,是进不去刚刚编译安装的那个内核的,显示内核错误。
   
    分析:如果 System.map可读 并且 /sbin/depmod可执行;那么就执行/sbin/depmod -ae -F System.map  2.6.20;结束
   
    depmod(depend module)
   
    功能说明:分析可载入模块的相依性。
   
    语  法:depmod [-adeisvV][-m <文件>][--help][模块名称]
   
    补充说明:depmod可检测模块的相依性,供modprobe在安装模块时使用。
   
    参  数:
   
    -a或--all  分析所有可用的模块。
   
    -d或debug  执行排错模式。
   
    -e  输出无法参照的符号。
   
    -i  不检查符号表的版本。
   
    -m<文件>或system-map<文件>  使用指定的符号表文件。
   
    -s或--system-log  在系统记录中记录错误。
   
    -v或--verbose  执行时显示详细的信息。
   
    -V或--version  显示版本信息。
   
    --help  显示帮助。
   
    解决方法:make   module_install之前你是否关闭了selinux,
   
    该问题是selinux阻止写/lib/modules/ <version> 目录
   
    2、若重启系统后显示:
   
    Warning--SElinux relabel is required
   
    Disabling security enforcement
   
    Relabeling could take a very long time
   
    depending on file system size
   
    可以更改grub.conf 将selinux=0添加到如下位置
   
    kernel /vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/ selinux=0 rhgb quiet
   
    或者更改/etc/selinux/config,将SELINUX=Disabled,存盘就可以把 selinux 关闭了
   
    3、修改selinux
   
    在新版本中的Red Hat 和 Fedora 上,修改档案/etc/sysconfig/selinux:
   
    # This file controls the state of SELinux on the system.
   
    # SELINUX= can take one of these three values:
   
    #       enforcing - SELinux security policy is enforced.
   
    #       permissive - SELinux prints warnings instead of enforcing.
   
    #       disabled - SELinux is fully disabled.
   
    SELINUX=enforcing
   
    # SELINUXTYPE= type of policy in use. Possible values are:
   
    #       targeted - Only targeted network daemons are protected.
   
    #       strict - Full SELinux protection.
   
    SELINUXTYPE=targeted
   
    把 SELINUX设定为disable, 下次启动系统后将会停止SElinux.
   
    Linux核心参数(Kernel Parameter)
   
    或者可以在核心参数后加上: selinux=0 (停止) 或 selinux=1 (开启)参数
   
    档案/boot/grub/menu.lst
   
    title Fedora Core (2.6.18-1.2798.fc6)
   
    root (hd0,0)
   
    kernel /vmlinuz-2.6.18-1.2798.fc6 ro root=LABEL=/ rhgb quiet  selinux=0
   
    initrd /initrd-2.6.18-1.2798.fc6.img
   
    检查SELinux现时况态
   
    要知到你现在是否使用 SELinux:
   
    # getenforce
   
    disabled
   
    4、重启后若出现Kernel panic:VFS: Unable to mount root fs on unknown-block(0,0)
   
    从错误信息上看,是没有识别到硬盘。看来,我机器上的SATA硬盘必须在内核中做相应的配置才能识别。
   
    仔细阅读了内核配置时的帮助信息,得知内核支持两种SATA驱动程序:一种是libata,在SCSI子系统中,支持最新的SATA控制器;还有一种是 IDE驱动程序中的SATA,主要是支持第一代的SATA控制器。我的机器应该是比较新的,所以先按libata的方式来配置试试。
   
    先看看我的SATA控制器是什么类型的?运行lspci,输出如下:
   
    00:1f.2 IDE interface: Intel Corporation 82801GBM/GHM (ICH7 Family) SATA IDE Con troller (rev 01)
   
    就是SATA控制器的类型。
   
    解决方法:在make menuconfig中设置以下选项:
   
    Device Driver
   
    |---->SCSI device support
   
    |---->SCSI disk support
   
    |----->verbose SCSI error reporting (不是必须的,但可方便问题定位)
   
    |----->SCSI low-level drivers
   
    |---->Serial ATA (SATA) support
   
    |---->intel PIIX/ICH SATA support
   
    <*> RAM disk support     在 device drivers -> Block devices中
   
    <*> Initial RAM disk (initrd) support   在 device drivers -> Block devices中
 

更多资讯
游戏推荐
更多+
玩家评论