Linux内核重编译问题的解决办法

上一篇 / 下一篇  2012-08-16 13:12:54 / 个人分类:Linux

6d4ax;^2e0  内核重编译对很多Linux爱好者来说是一个不小的挑战。笔者认为,很多Linux用户对内核通常有一种误解,他们认为普通用户是不能调整内核的。其实,就实际情况而言,这种认识是不全面的。应该说,内核重编译是具有一定深度和复杂性的,同时也是易失败的配置工作。下面我把我的经历与大家分享,让你们少走一些弯路。

3Z$iv7}6S pA051Testing软件测试网%VR7|~Id7|-m n

   如果大家留意那些比较权威的Linux参考工具书的话,就会发现很多原版书籍都把内核重编译作为一个很重要的章节进行介绍。本文将要向读者介绍的并不是 如何去一步步的对Linux内核进行重编译,而是收集整理了几个在Linux内核重编译中最常见的故障及其解决方法,如果您在编译内核过程中遇到了类似的 故障,那么本文将会对您有所帮助。

I7`G9rZN,P0

l/O W/i7{b8Fi-x0  Linux内核重编译常见故障介绍51Testing软件测试网5E4|*r9i m

"lv/Jn&f W)w0  在介绍Linux内核重编译常见故障前,假设我们已经按照参考工具书上的步骤对Linux内核进行了相应的配置。51Testing软件测试网.EIp.}v Fn;w m

51Testing软件测试网 H9S A-mv|\7b

   Linux内核重编译通常包括了许多步骤。如果"幸运"的话,Linux内核重编译是可以一次性编译成功的。如果在编译完成后,启动计算机或者内核的时 候系统有错误信息的提示,那么最有可能出现的是以下5个:1.内核不能启动;2.异常I/O错误;3.内核反映缓慢;4.内核不能正确编译;5.系统重复 启动。51Testing软件测试网*{xH%c+R4[#C ~#Bm]

51Testing软件测试网&W,X!_:N8A n5X

  故障分析及其解决方法

)Ox6W%Q;^5k}B;g051Testing软件测试网-fL0J0J%Z.b.P-|2P

  内核不能启动51Testing软件测试网4k;c7sS9f'?

_u5f |6tm%n0   当我们重新创建Linux内核时,主要是选择用户需要或不需要在系统中使用的设备及服务。从2.0版内核开始,Linux引入了一个全新的设计特征到内 核中并提供了折中方案:组件可以动态的、随时的调入和调出内核。例如我们在修改/etc/lilo.conf之后都要重新启动系统,如果你的内核不能启 动,并且在屏幕上看到了下面的信息:

8_+zb*EVB6s7I051Testing软件测试网7z&f'wB0W1a??7|c

  Warning: unable to open an initial console Kernel panic:51Testing软件测试网?f'w#q-q$|+En$@

51Testing软件测试网#Aw H#SS p0D;]|

  no init found. Try passing init= option to kernel

rq*Hg&a7y.n5Q051Testing软件测试网!Tphc-Vg|

   这个错误最大的可能就是我们没有正确的给/etc/lilo.conf 中的"root="提供参数。例如,在一个Linux系统中有root=dev/hdc5这样的配置方式,那么这是错误的,正确的应该是root= /dev/hdc5,不要小看只是多了一个 "/",这是给root提供的重要参数。没有"/"则Linux内核无法确认root到底该从哪里启动。很多朋友往往忽略了这个小细节而造成内核引导失 败。下面给出/etc/lilo.conf的一个正确的配置清单,仅供参考。

6S/\ J,@2n#Xq4?J2{'O/Y051Testing软件测试网0E5^3~RQ0O%M|5m KP;R

  /etc/lilo.conf示例51Testing软件测试网`$T_?7[M

H&J$Aa WR(~0  ―――――――――――51Testing软件测试网6Z,B1j&u+~3e@}

51Testing软件测试网,n(o:c!{c*[UV+ajR&I

  boot=/dev/hdc5
J3^v} z-VG9Y-S0  map=/boot/map
5|%C%R,_?^s0  prompt51Testing软件测试网Mi^%a i,KqhT+Bm
  timeout=5051Testing软件测试网@2D#}6mr+g5_ L
  image=/boot/vmlinuz-2.2.2-151Testing软件测试网:xk1L9n KQ"G
  label=Linux
"BAk ~kt4g0  root=/dev/hdc5
%x1rBzSd/B5Er)T0  inirtd=/boot/initrd-2.2.2-1.img
Dj*cx4d/t"e0  read-only
qC1i;t-Q0  other=/dev/hda1
\*og [!F)?S9m@|0  label=dos
r2u0XBB7L#[ d(l$K0  table=/dev/hda

+e.F0z4VYBY8J1}v0

Ey*])G+e0  异常I/O错误51Testing软件测试网BJ K8Cl:EF3L,p+R:?

51Testing软件测试网YI${h\&C1B*JN0l

  如果您重新创建了一个Linux内核,并且能正确启动,但在使用新内核过程中,系统经常出现崩溃、死机等异常现象。那么很可能是I/O出现了问题。I/O异常除了使得系统频繁出现莫名其妙的故障之外,更重要的是会使Linux内核降级,导致整个系统系能严重下降。51Testing软件测试网EzQRSD*S;m!s

51Testing软件测试网_`9^(C` a2X#g)Ce:v;B

   究其异常I/O错误的原因,是用户在编译Linux内核结束的时候没有执行"make dep clean"这一步骤。一般来说,我们在保存Kernel configuration选项中的"menuconfig"或"xconfig"时并不包含"make dep clean"这个步骤。因此,这里建议用户在保存配置后的Kernel configuration选项时注意确认是否已经进行了"make dep clean"这一步。

0r8B'SWN051Testing软件测试网-h~ Qt b7y.I8Y

  内核反映缓慢

wmjq6Tl?051Testing软件测试网K9RrY&J/W

  目前很多计算机都采用了高速的CPU和大容量 内存。可有时候在创建新内核后系统显得比没有配置内核之前的反映速度慢得多。出现这个情况,很可能是用户在修改Kernel configuration options的时候,在"menuconfig"或者"xconfig"选择了过多的选项。这样不仅使得计算机在编译新内核的时候要花费更多的时间,也 使得系统在工作的时候占用了太多的内存。由于很多内存都是被无用的选项所占用,这就导致了系统运行的缓慢。解决方法很简单,尽量选择我们需要的选项,那些 无用的,太过于复杂的选项就无需去修改了,有时候使用默认的参数效果会显得更好。51Testing软件测试网t MdzC S

51Testing软件测试网]X+F5f,I \

  内核不能编译

yY4iS2C!G9GD5q051Testing软件测试网!DhCnJQf[ ZP

   当用户输入"make bzImage modules"并按下输入键的时候,出现了内核不能编译或者其他的奇怪现象。此时最好的方法就是重新启动系统,然后使用"rpm -e"命令移除Kernel configuration tools这个内核配置工具。接着再重新安装这个工具(请使用"rpm -I"或"rpm -Uvh"命令来安装),如果能正确安装,那么问题就简单多了,此时再重新配置内核和再编译应该就能成功。如果还是不能编译内核,请检查硬件设备是不是有 问题。

-w*|"U;k2UI1jl,D0

TAG:

 

评分:0

我来说两句

Open Toolbar