手机
当前位置:查字典教程网 >操作系统 >unix linux >linux内核编译常常出现的问题的解决办法
linux内核编译常常出现的问题的解决办法
摘要:1、若编译内核时总是出现同一个错误,如下:在makemodules_install时最后几行弹出错误:if[-rSystem.map-a-x...

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中

<*> Compressed ROM file system support (cramfs) 在file systems -> Miscellaneous filesystems中

5、若重启之后出现网卡不识别,无法激活,出现via-rhine device eth0 does not seem to be present, delaying initialization

缺少VIA 驱动

运行 make menuconfig

在Networking support-->Networking device support --> Ethernet (10 or 100Mbit) 里找到 <M>"VIA Rhine RevB support"

6、若重启后显示如下:

reading all physical volumns, this may take a while…

no volumns group found!

unable to find volumns group "VolGroup00"

ERROR: /bin/lvm exited abnormal with value 5 (pid 335)

error 6 mounting ext3

ERROR OPENING /dev/console!!:2

error dup2ing fd of 0 to 0

error dup2ing fd of 1 to 1

error duping fd of 2 to 2

switchroot:mount failed:22

kernel panic - no syncing: attempted to kill init!

运行make menuconfig时在 device drivers ->[*] Multiple devices driver support (RAID and LVM)

如果有以下选项,也应该启用它们:<*> Logical volume manager (LVM) support

【linux内核编译常常出现的问题的解决办法】相关文章:

Linux和Windows区别分析之线程问题

linux系统单网卡绑定双IP的具体操作方法

Linux操作系统内核编译详解

linux服务器出现严重故障后的原因以及解决方法

yum update 升级报错的解决办法

linux 双网卡绑定网络设置方法

Linux系统“死机”时解决方法

Linux上安装GCC编译器过程

redhat linux 安装 gcc编译器

Linux Mplayer播放各种格式的电影

精品推荐
分类导航