当前位置:  技术问答>linux和unix

内核编译问题?

    来源: 互联网  发布时间:2015-07-19

    本文导语:  我已经编译内核一个多星期了,可是仍然没有成功,我已经找了很多的资料包括的国外的,都未果,如今是极其郁闷,不知能有那位高手能帮我,非常感谢!! 错误如下: 我在make install 后,有如下错误: " /dev/mapp...

我已经编译内核一个多星期了,可是仍然没有成功,我已经找了很多的资料包括的国外的,都未果,如今是极其郁闷,不知能有那位高手能帮我,非常感谢!!
错误如下:
我在make install 后,有如下错误:
" /dev/mapper/control : open failed : No such file or directory .
Is device mapper mapped to kernel ? "
command fail
命令虽然报错,但是还是生成了/boot/……2.6.7.img,并且修改了grub.conf文件,在里面加了2.6.7内核的相关文字。
可是重新启动,进入2.6.7的内核后就报如下错误:
Kernel panic: VFS Unable to mount root fs on unknown-block
最后启动就停下来了。

请高手以及编译内核成功的大哥相助或者介绍经验

|
请不要将2.2内核直接生成2.6 , 这对熟悉linux的人都是大挑战哈哈.

用2.4到2.6的成功机会还是比较大.

推荐chinaunix的一篇文章:

第一步:当前2.6内核的安装(获取)
  首先,所有Linux内核的官方版本可以在http://kernel.org/. 找到。通过镜像站点下载内核程序可以比较快捷迅速些。kernel.org 镜像站点列表:http://kernel.org/mirrors 。
  然后下载GnuPG ,它主要用于检验新的内核程序的真实性和合法性。(http://www.kernel.org/signature.html.)
第二步:熟悉已有文件
  至少需要熟悉顶级README文件、Documentation目录中的change文件,它们都是分布式的Linux内核源代码。
  因为2.6.0-test是内核发展中的一个阶段(2.6.0没有扩展名-test,即是2.6的最初版本),所以其顶级README文件引自2.5开发内核的README文件。你将从这个文件中获得许多成功编译Linux内核的技巧。(具体内容见附1)
  “Documentation/Changes”文件列出了发展2.5内核的新需求,提供了新内核程序升级的软件列表。(主要内容见附2)
  第三步:升级系统内每个change文件的版本
  新的2.6内核的升级工作涉及到许多实用程序的升级。对于某些change文件中列出的实用程序也不必担心,它们或许只是某种文件系统的特殊例子而已。但是,下面的文件还是必须至少要满足到下表给出的的最低版本:
Name: Minimum version: How to find version: 
Gnu C Compiler 2.95.3 gcc--version 
Gnu Make 3.78 make--version 
binutils 2.12 ld-v 
util-linux 2.10o fdformat--version 
module-init-tools 0.9.9 depmod-V 
procps 2.0.9 ps--version 
[procps 2.x] [procps .x] 
  (若有变动,参见“Documentation/Change”中的最新更新。具体可见附2)
  下面的实用程序是文件系统中的特殊程序。若运行ext2 或ext3,那么就必须升级e2fsprogs。若运行jfs,就必须升级jfsutils,等等。如:
Name: Minimum version: How to find version: 
e2fsprogs 1.29 tune2fs 
jfsutils 1.0.14 fsck.jfs -V 
reiserfsprogs 3.6.3 reiserfsck–V 2>&1| grep reiserfsprogs 
xfsprogs 2.1.0 xfs_db -V 
nfs-utils 1.0.5 showmount --version 
  另外,少数实用程序当你用到它时才需要升级的有:
Name: Minimum version: How to find version: 
pcmcia-cs 3.1.21 Cardmgr -V 
quota-tools 3.09 Quota -V 
PPP 2.4.0 ppd--version 
isdn4k-utils 3.1pre1 Isdnctrl 2>&1 | grep version 
oprofile 0.5.3 oprofiled--version 
  如果首次运行ALSA,请访问http://www.alsa-project.org/获取最新的alsa-lib 和 alsa-utils。
第四步:配置新内核
  这里,你所注意到的首要变化之一就是新的结构体系的形成。旧的TK/Tcl“xconfig”结构由新的QT“xconfig”所取代。当然,GTK“gconfig”也行。
  2.6内核配置包括:
  Make config 
  与2.4内核配置“config”相似,做为简单的配置方法,它仅仅要求你选择每个配置选项。需要“bash”。
  Make menuconfig
  与2.4内核配置的“menuconfig”相似。
  Make xconfig
  新的默认的图形化的配置系统,利用了QT库。它非常方便易用。
  Make gconfig
  该选项是xconfig的新的克隆,用GTK库代替了QT库。不幸的是,在测试中发现其中有bug。运行时会不停的重复提示同样的错误信息。
  Make oldconfig
  在内核升级中,该选项非常有用。乍一看它有点象简单的“make config”,实际上,oldconfig是读取和自动响应设置当前的.config设置。它向你提示新的配置选项的功能。如要用,只需简单地复制入你的old.config文件,再运行“make oldconfig”即可。
  (注:首次配置2.6内核时,查看Linux代码顶级README文件时请注意以下技巧: ①多余的驱动将增大内核,在一定条件下会导致问题的出现
  ②内核hacking配置信息的选择常常导致内核更庞大更缓慢,甚至导致内核的不稳定。因此在回答“development”、“experimental”或“debugging”特征时多数选择“N”。)
  ALSA:
  从2.4版本到2.6版本的升级,这就要使用到ALSA(Advanced Linux Sound Architecture即:新的 Linux 音频体系结构)。它取代了OSS(Open Sound System)。配置内核时,选定ALSA的OSS API效法选项(SND_OSSEMUL、SND_MIXER_OSS和SND_PCM_OSS)和适当的声音驱动(PCI 驱动)。最后,下载和安装最新的alsa-lib和alsa-utils。
 第五步:创建新内核
  创建2.6内核比2.4的更容易些,不必进行“make dep”这一步。创建新的内核,进行“make bzlmage”。如果选择了编译模块,那么还需要运行“make modules”和“make modules_install”。可以一起进行:“make bzlmage && make modules && make modules_install”。
  第六步:安装新内核
  创建了内核,需要将之复制到一个位置,若x86的机子,其位置路径就是“arch/i386/boot”。拷贝该文件和新的体系.map到根目录/boot下。例如:
  # pwd
  /usr/src/linux-2.6.0-test4
  # mv arch/i386/boot/bzImage /boot/bzImage-2.6.0-test4
  # mv System.map /boot/System.map-2.6.0-test4
  # cd /boot
  # rm System.map
  # ln –s System.map-2.6.0-test4 System.map
  拷贝了新内核后,然后是使用grub和lilo配置根loader。有个发现就是新的2.6内核比用同样版本的gcc编译的2.4内核更大,或许是在编译时选了更多选项的缘故吧。
  -rw-r--r-- 1 root  root  1094390 Aug 12 20:30 bzImage-2.4.21-ck3
  -rw-r--r-- 1 root  root  1639129 Aug 27 22:06 bzImage-2.6.0-test4
  第七步:确认数据的备份
  这一步,你不用做任何或许会破坏到硬盘数据的事,但下一步即是启动新内核,最后一次请确认硬盘重要数据已备份。 第八步:试用新内核
  现在,重启计算机,测试新编译的2.6内核。如果所有步骤正确,将会出现内核启动信息:initstate=3,新的内核很快就出现。如果安装了ALSA,可以检验声音驱动: 'cat /proc/asound/cards'。例如:
  $ cat /proc/asound/cards
  0 [Live]:EMU10K1 - Sound Blaster Live! 
  Sound Blaster Live! (rev.5) at 0x18e0, irq 11
  如果出现以上信息,说明声音程序没运行,启动“alsamixer”并确认驱动已经开启。另外发现还需开启“Master”和“PCM” (/dev/dsp),声音程序才能正常运作
附1
  README——Linux 内核2.5.xx(部分数据)
  讲述了内核的安装方法和出错的处理方法。
  内核的安装
  安装了所有必须的资源后,将内核解压缩在许可目录下(如主目录):
  gzip -cd linux-2.5.XX.tar.gz | tar xvf -   (XX为新内核的版本号)
  注:不得用/usr/src/linux
  通过补丁升级2.5.xx版本。
  gzip -cd ../patch-2.5.xx.gz | patch -p1或bzip2-dc ../patch-2.5.xx.bz2 | patch -pl或linux/scripts/patch-kernel linux
  删除旧的.o文件及其附属文件 
  cd linux
  make mrproper
  软件需要
  编译和运行2.5.xx内核必须要升级各种软件包的新版本。参见./Documentation/change中需要的最低版本。
  编译内核
  ⑴确定gcc 2.95.3版本以上
  ⑵ make bzImage (如果用磁盘启动则插入A盘再进行make bzdisk)
  ⑶ make modules (若编译部分modules,则在“make modules_install”后执行)
  ⑷ 保留一份内核的备份件
  ⑸ 启动新内核
  新内核的拷贝。编译后的新内核在.../linux/arch/i386/boot/bzImage可找到,将之拷贝到可启动的位置。若是软盘驱动的,将内核的bzImage文件拷贝到/dev/fd0形成可启动的软驱。若是硬盘启动,则用LILO(/etc/lilo.conf)。内核映象文件常常是/vmlinuz、/boot/vmlinuz、/bzImage或/boot/bzImage。保存新的内核映象文件覆盖旧的,然后再运行LILO,就可以启用新内核了。
  重新设置LILO是运行/sbin/lilo的关键。你可通过编辑/etc/lilo.conf来指定旧的内核映象(即是/vmlinux.old)的出口以避免新内核运行出现问题。LILO重设后,所有准备工作就都做好了,然后就是关闭系统,重启计算机。
  注:如果需要改变缺省的root驱动、video 方式、ramdisk大小等等,可在内核映象中用“rdev”程序(或LILO的引导选项)。不必重新编译内核来改变这些参数。
  ⑹重新启动新内核。



    
 
 

您可能感兴趣的文章:

  • CentOS 6内核升级:下载编译启用新内核版本详细过程
  • GCC3.4可以编译2.4内核吗 如何查看某版本内核是用哪个版本gcc编译的
  • Fedora Core 2自带的内核升级程序下载下来内核后,要不要再编译一遍内核?
  • [求教]内核加载模块后,这部分内容编译在内核里的吗?
  • 编译新内核后怎么进入原来内核
  • 关于如何把编译进内核的编译成模块
  • 不重新编译内核能修改内核函数吗?
  • 为什么我自己编译的内核比系统自带的内核大了10倍左右?
  • Linux 编译内核之后 没办法选择内核版本
  • 内核编译出现:没有编译规则/driver/pci/devlist.h。
  • *******是不是对内核模块编程然后再重新编译内核就可以把此模块整合到linux系统中
  • 修改内核代码问题:如何编译修改的单个文件而不用重建整个内核?
  • 想问一下,编译LINUX内核时,是否可以只编译其中的一个模块?
  • 新手的菜鸟问题:不同内核版本下编译的程序能否互相调用,是否需要在同一内核下重新编译.
  • 编译新内核时提示内核太大无法把装入软盘,如何解决?
  • 问一个小白问题,在交叉编译时,系统内核和开发板的内核有没有相关性?
  • 我现在要重新编译内核,要怎样才能保留原来的内核
  • 【求助】基于2.6.29内核编译的驱动程序能否应用于2.6.32内核的系统?
  • 何处有 Linux 内核编译配置详细的中文介绍? 我在重新配置编译时老是出错:-(
  • intel e1000网卡无法加载,内核是2.4.28,想重新编译内核,应该注意哪些步骤!
  • 请问重新编译LINUX内核是否能将没有用的外设的驱动程序删除并减少内核占有内存的资源?请好心人仕指教!
  • 内核栈~ 内核线程 ~用户线程 之间关系 问题
  • 把redhat9.0的2.4.20-8内核升级为2.4.22内核时遇到的问题
  • Android 内核移植问题 要求识别SATA硬盘 请问内核的make menuconfig 要如何配置?求高手
  • 请教一个问题:程序在Linux 2.4.20内核上跑无问题。但在2.4.19内核上跑就出现段错误现象。查了一星期,毫无头绪,万望各位指点。
  • 内核版本问题 GCC版本问题
  • linux内核安装问题 , 有点疑惑~
  • 内核升级问题!!!!!
  • 内核问题
  • 问个编译内核的简单问题~~~
  • 内核重编译前的小白问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux内核中影响tcp三次握手的一些协议配置
  • 进程内核栈和操作系统内核栈的关系
  • TCP协议四次断连过程介绍及Linux内核协议栈中相关设置项
  • Linux中内核线程不访问内核态地址空间?
  • Linux进程的内核栈和用户栈概念,相互关系及切换过程
  • 2.6内核下编译2.4内核
  • linux内核中的likely宏和unlikely宏介绍及用法
  • 谁能提供kgdb内核补丁内核模块的下载
  • CentOS 6.5 下载地址及如何升级内核(kernel)版本到 3.10.28
  • 请问linux中如何判断内核是否已经启动。(在内核中写程序)
  • Linux下c/c++开发之程序崩溃(Segment fault)时内核转储文件(core dump)生成设置方法
  • 内核模块跟内核版本不匹配????????
  • docker使用的技术之Container内核原理介绍
  • 请教:如何安装新内核(rpm包)而不同原来得内核冲突?? 在线等待!!
  • linux为什么要升级内核?升级内核有何作用?
  • 内核升级后,如何在新的内核中加载显卡驱动?
  • 内核源码和结果make过的内核源码有什么区别
  • 如何学好内核?学了内核能应用于哪方面?
  • 请问在2.6的内核环境下编译2.4的内核有没有什么特殊的要求
  • 内核进程间发送信号用哪个函数,如果没有这东西,那内核里异步通知用哪个东西
  • 初学内核编程,在内核态下怎么用socket通信?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3