• 读者文摘
  • 美文摘抄
  • 短文摘抄
  • 日记大全
  • 散文精选
  • 感恩亲情
  • 人生感悟
  • 智慧人生
  • 感悟爱情
  • 心灵鸡汤
  • 实用文档
  • 名人名言
  • 伤感文章
  • 当前位置: 蜗牛文摘网 > 日记大全 > [为什么重新编译内核及编译准备] 重新编译内核

    [为什么重新编译内核及编译准备] 重新编译内核

    时间:2020-02-14 08:22:05 来源:千叶帆 本文已影响

      为什么重新编译内核

      Linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新。

      新的内核修订了旧内核的bug,并增加了许多新的特性。如果用户想要使用这些新特性,或想根据自己的系统度身定制一个更高效,更稳定的内核,就需要重新编译内核。

      通常,更新的内核会支持更多的硬件,具备更好的进程管理能力,运行速度更快、 更稳定,并且一般会修复老版本中发现的许多漏洞等,经常性地选择升级更新的系统内核是Linux使用者的必要操作内容。

      为了正确的合理地设置内核编译配置选项,从而只编译系统需要的功能的代码,一般主要有下面四个考虑:

      自己定制编译的内核运行更快(具有更少的代码)

      系统将拥有更多的内存(内核部分将不会被交换到虚拟内存中)

      不需要的功能编译进入内核可能会增加被系统攻击者利用的漏洞

      将某种功能编译为模块方式会比编译到内核内的方式速度要慢一些。

      下载源代码和编译软件的准备

      下载内核源代码:http://www.kernel.org/

      注意,点击2.6.25内核的F版,即完整版。

      如果你懒得去网站点联接,运行下列命令:

      $cd ~

      $ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.25.10.tar.bz2

      安装有关编译程序。安装make ,gcc, make-kpkg,运行menuconfig等等和编译内核相关的工具。

      安装不了,请检查/etc/apt/sources.list 文件。

      有关命令:

      $sudo apt-get install build-essential kernel-package libncurses5-dev

      make-kpkg是一种新的编译内核的方法,后面会单独讲。

      kernel-package是为了安装make-kpkg。

      libncurses5-dev是menuconfig需要的库。

      解压源代码

      注意,网上很多教程上说应该解压到 /usr/src,纯属以讹传讹,linux掌门人linus说解压到任何目录上都可以。当然,linus的说法是正确的。我放在自己的主目录下的src目录。

      如果你下载源代码是放到自己的主目录下或者运行上面的wget下载的,那么运行下列命令:

      $ cd ~

      $ mkdir src && tar jfx linux-2.6.25.10.tar.bz2 -C src/

      现在,源代码就在 ~/src/linux-2.6.25.10

      注意目录容量要到达1.5G

      进入源代码的目录,准备下一步的工作。后面都在这个目录里面进行。

      $ cd ~/src/linux-2.6.25.10

      配制内核config

      首先,清理以前编译时留下的临时文件。如果是刚刚解开的包,不需要执行这步。如果是第二次或者是第n次编译,那么一定要执行。

      相关命令如下:

      $ sudo make mrproper

      网上很多教程上说把现在使用的内核的config拷贝过来参考,据实验,是不需要的,ubuntu还有debian会自动做这步。不过这条命令倒是可以学习一下。当然你可以将以前的配置拷贝过来。

      命令:

      cp /boot/config-`uname -r` ./.config

      ./.config的意思是拷贝到当前目录并以.config重命名。

      注意:在配制内核时,修改的文件为linux-2.6.25.10文件夹中的.config文件。这是个隐藏文件,更改查看方式可以看到。是make mrproper时自动拷贝过来的,下载的源包中没有。

      相关命令

      #make config:基于文本的最为传统的配置界面,不推荐使用

      #make menuconfig:基于文本选单的配置界面,字符终端下推荐使用

      #make xconfig:基于图形窗口模式的配置界面,Xwindow下推荐使用

      #make oldconfig:如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦

      #make defconfig :按默认选项对内核进行配置(386的默认配置是Linus做的)

      #make allnoconfig : 除必须的选项外, 其它选项一律不选. (常用于嵌入式系统)

      配置2.6.0内核时如果你的主板是Intel芯片的话,你用默认配制也许就可以得到一个满意的内核哦。做法是make menuconfig后离开时选择保存。

      这里的难点是pci,如果你硬盘是IDE的那一定要选择好你主板上南桥芯片。SCSI的话就是要选择上你的SCSI卡型号。

      还有就是网卡,声卡芯片的型号了,他们的型号你都可以用lspci 查找到比如我的是。

      # lspci

      00:00.0 Host bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 01)

      00:01.0 PCI bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 01)

      00:07.0 ISA bridge: Intel Corp. 82371AB/EB/MB PIIX4 ISA (rev 08)

      00:07.1 IDE interface: Intel Corp. 82371AB/EB/MB PIIX4 IDE (rev 01)

      00:07.2 USB Controller: Intel Corp. 82371AB/EB/MB PIIX4 USB

      00:07.3 Bridge: Intel Corp. 82371AB/EB/MB PIIX4 ACPI (rev 08)

      00:0f.0 VGA compatible controller: VMware Inc [VMware SVGA II] PCI Display Adapter

      00:10.0 SCSI storage controller: LSI Logic / Symbios Logic 53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI (rev 01)

      00:11.0 Ethernet controller: Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rev 10)

      00:12.0 Multimedia audio controller: Ensoniq ES1371 [AudioPCI-97] (rev 02)

      编译配置

      1)文件系统

      请务必要选中ext3文件系统,

      File systems--->

      [*] Ext3 journalling file system support

      [*] Ext3 Security Labels

      [*] JBD (ext3) debugging support

      以上三项一定要选上,而且要内建(即标*). 这个非常重要,在配置完后一定要检查一下.config文件有没有"CONFIG_EXT3_FS=y"这一项.

      如果不是"CONFIG_EXT3_FS=y"而是"CONFIG_EXT3_FS=m",你在运行内核时就会遇上以下错误: pivotroot: pivot_root(/sysroot,/sysroot/initrd) failed

      2)网卡驱动

      务必把自己网卡对应的驱动编译进内核,比较普遍的网卡是realtek 8139,以下就是这种网卡的配置,以供参考

      Device Drivers--->

      Networking support--->

      Ethernet (10 or 100Mbit) --->

      <*> RealTek RTL-8139 C+ PCI Fast Ethernet Adapter support (EXPERIMENTAL)

      <*> RealTek RTL-8139 PCI Fast Ethernet Adapter support

      3)声卡驱动

      也要选择自己声卡对应的驱动编译进内核,比较普遍的声卡是i810_audio,以下就是这种声卡的配置,以供参考

      Device Drivers --->

      Sound --->

      <*> Sound card support

      Advanced Linux Sound Architecture --->

      <*> Advanced Linux Sound Architecture

      <*> Sequencer support

      < > Sequencer dummy client

      <*> OSS Mixer API

      <*> OSS PCM (digital audio) API[*] OSS Sequencer API

      <*> RTC Timer support

      PCI devices --->

      <*> Intel i8x0/MX440, SiS 7012; Ali 5455; NForce Audio; AMD768/8111

      Open Sound System --->

      < > Open Sound System (DEPRECATED)

      以上三项配置关系到新内核能否正常运行,请备加注意.其他的配置如果不是很了解,大可以按默认的选择.

    相关热词搜索:Linux教程为什么重新编译内核及编译准备linux内核编译安卓内核编译

    • 名人名言
    • 伤感文章
    • 短文摘抄
    • 散文
    • 亲情
    • 感悟
    • 心灵鸡汤