`
jackchen0227
  • 浏览: 146813 次
  • 性别: Icon_minigender_1
  • 来自: 帝都
社区版块
存档分类
最新评论

[zz]linux 内核编译祥解

 
阅读更多

先把linux-2.6.18.2.tar.bz2  复制到 /usr/src/   的下面

tar  jxvf   linux-2.6.18.2.tar.bz2

cd linux-2.6.18.2

 

make mrproper   把原来编译产生的垃圾删除

 

配置内核可以根据需要与爱好使用下面命令中的一个:

make config  (基于文本的最为传统的配置界面)

make menuconfig  (基于文本选单的配置界面)

make xconfig  (基于图形窗口模式的配置界面)

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

 

进行配置时,大部分选项可以使用其缺省值,只有小部分需要根据用户不同的需要选择。例如,如果需要内核支持DOS 分区的文件系统,则要在文件系统部分选择FATDOS 系统支持;系统如果配有网卡、PCMCIA 卡等,需要在网络配置中选择相应卡的类型。

                           

选择相应的配置时,有三种选择,它们分别代表的含义如下:

                           

  Y ”-  将该功能编译进内核

                           

  N ”-  不将该功能编译进内核

                           

  M ”-  将该功能编译成可以在需要时动态插入到内核中的模块。

                           

     将与核心其它部分关系较远且不经常使用的部分功能代码编译成为可加载模块,有利于减小内核的长度,减小内核消耗的内存,简化该功能相应的环境改变时对内核的影响。许多功能都可以这样处理,例如像上面提到的网卡的支持、对FAT 等文件系统的支持。

                           

其实现在编译内核最关键的地方就是配置内核。我一般用 make menuconfig 配置内核。

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

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

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

 

[root@leo boot]# 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)

 

编译配置

在这一部分涉及几个重要模块的配置请, 特别注意. 一般用"make menuconfig" 命令来配置内核.

输入以上命令后出现一个菜单界面, 用户可以对需要的模块. 下面着重讲几个重要的配置

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)

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

 

make dep  ( 确保关键文件在正确的位置) 2.5.*-2.6.0 都不需要了。其实2.4.* 某些内核也不需要了。

                           

make clean  ( 确保所有有关文件都处于最新版本状态)

                           

make zImage ( 编译压缩形式的内核)

                           

在需要内核支持较多的外设和功能时,内核可能变得很大,此时可以编译大内核:

                           

make bzImage

                           

编译的时间与机器的硬件条件及内核的配置等因素有关,所获得的内核的位置在 /usr/src/linux/arch/i386/boot 目录下,当然这里假设用户的CPUx86 型的。

                            

如果选择了可加载模块,编译完内核后,要对选择的模块进行编译:

                           

make modules  ( 编译选择的模块)

                           

make module_install  ( 将编译后的模块转移到系统标准位置)

 

# make install

 

上面的命令"make install":

  (1) 把压缩内核映象拷贝到/boot 目录下 并创建相应的System.map 符号链接

  (2) 修改bootloader 的配置文件;

  (3) 调用mkinitrd 程序创建内核的initrd 映象 对于GRUB 而言 将在/boot/grub/grub.conf 配置文件增加如下类似的配置行:

 

       title Red Hat Linux (2.***)

       root(hd0, 1)

       kernel /boot/vmlinuz-2.*** ro root=LABEL=/

       initrd /boot/initrd-2.***.img

                            

模块在系统中的标准目录位于/lib/modules/x.y.z ,后面的x.y.z 是版本号,为安全起见,在运行#make  modules_install 之前最好对/lib/modules 进行备份。模块通常是带有扩展名.o 的文件,使用命令 lsmod 可以对当前内核的模块进行列表。

                           

我一般是 make bzImage make modulesmake module_install; make install

                            

运行新内核之前, 请检查一下/boot/grub/grub.conf 的内容, 下面的配置可作参考

# grub.conf generated by anaconda

#

# Note that you do not have to rerun grub after making changes to this file

# NOTICE:   You have a /boot partition.   This means that

#           all kernel and initrd paths are relative to /boot/, eg.

#           root (hd0,0)

#           kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00

#           initrd /initrd-version.img

#boot=/dev/hda

default=0

timeout=5

splashimage=(hd0,0)/grub/splash.xpm.gz

hiddenmenu

title Fedora Core (2.6.18.2)

         root (hd0,0)

         kernel /vmlinuz-2.6.18.2 ro root=/dev/VolGroup00/LogVol00 rhgb quiet

         initrd /initrd-2.6.18.2.img

title Fedora Core (2.6.18-1.2798.fc6)

         root (hd0,0)

         kernel /vmlinuz-2.6.18-1.2798.fc6 ro root=/dev/VolGroup00/LogVol00 rhgb quiet

         initrd /initrd-2.6.18-1.2798.fc6.img

 

现在重启机器,即可测试最新的内核。

分享到:
评论

相关推荐

    linux系统管理与服务

    ### Linux系统管理与服务知识点详解 #### Linux的起源与发展 - **UNIX**: - 定义:UNIX是一个注册商标,任何遵循特定标准的操作系统均可称为UNIX。 - 常见的UNIX系统包括IBM-AIX、HP-UX、SUN-Solaris以及FreeBSD...

    推荐一本Linux学习笔记

    ### 推荐一本《Linux学习笔记》的知识点详解 #### 第一章 Linux简介及安装 **一、Linux介绍** - **Linux起源与定义**:Linux 是由芬兰大学生 Linus Torvalds 在 1991 年发起的一个开源项目。它是一种基于 Unix 的...

    5152单片机proteus仿真和源码条件编译应用举例

    5152单片机是基于8051内核的一种增强型单片机,其内部集成了大量的外设资源,如多个定时器、串行口等,广泛应用于工业控制、智能家居等领域。相比于传统的8051系列单片机,5152单片机具有更强的处理能力和更丰富的...

    5152单片机proteus仿真和源码液晶时钟设计

    ### 5152单片机Proteus仿真与源码液晶时钟设计详解 #### 一、引言 在嵌入式系统开发过程中,单片机作为一种核心控制单元,被广泛应用于各种场合。其中,5152单片机因其良好的性能、低廉的价格以及丰富的资源,成为...

    5152单片机proteus仿真和源码闪烁的LED

    5152单片机通常指的是基于8051内核的增强型单片机。这类单片机继承了8051系列的所有特性,并在此基础上进行了扩展,比如增加了更多的I/O口、更大的RAM和ROM空间、更丰富的中断资源等。5152单片机因其良好的性价比,...

    5152单片机proteus仿真和源码甲机通过串口控制乙机LED闪烁

    #### 实验步骤详解 1. **准备环境**: - 安装Proteus软件; - 下载项目所需的相关资源文件(例如,5152单片机的库文件)。 2. **搭建电路**: - 在Proteus软件中创建一个新的工程; - 使用软件提供的元件库,...

    5152单片机proteus仿真和源码智能温控器

    5152单片机是一种基于8051内核的增强型单片机。它继承了传统8051单片机的基本特性,并在此基础上进行了诸多改进,如增加了更多的I/O口、增强了定时计数功能等。5152单片机广泛应用于各种控制领域,尤其是对于那些对...

    5152单片机proteus仿真和源码键控看门狗

    4. **编译与下载**:将编写好的程序编译成.hex格式文件,并在Proteus中加载该文件。 5. **运行仿真**:设置好必要的仿真参数后,点击运行按钮开始仿真测试。此时可以在软件界面上观察到按键操作如何影响看门狗的状态...

    5152单片机proteus仿真和源码继电器控制照明设备

    5152单片机是基于8051内核的一种高性能微控制器。它继承了传统8051系列单片机的优点,同时又在性能上有所提升。例如,其拥有更多的I/O口(通常为40个),更高的工作频率(最高可达24MHz)等特性,使得5152单片机在...

    5152单片机proteus仿真和源码通过对P3口地址的操作流水点亮8位LED

    ### 5152单片机Proteus仿真与源码详解:通过P3口地址操作流水点亮8位LED #### 一、5152单片机简介 5152单片机是一种基于8051内核的增强型微控制器,广泛应用于各种电子设备和自动化控制系统中。它具有高性能、低...

    5152单片机proteus仿真和源码将数据0x0f写入AT24C02再读出送P1口显示

    ### 5152单片机Proteus仿真与源码详解:将数据0x0f写入AT24C02并读出至P1口显示 #### 一、5152单片机简介 5152单片机是一种基于8051内核的增强型微控制器,具有高性能、低功耗等特点,在工业控制、智能家居等领域...

    5152单片机proteus仿真和源码将P1口状态送入P0,P2,P3

    5152单片机是一种基于8051内核的增强型微控制器,广泛应用于各种电子设备中。它继承了传统8051系列单片机的优点,如低功耗、高性价比,并在此基础上增加了更多的功能特性。5152单片机具有多个I/O端口,包括P0到P3四...

    5152单片机proteus仿真和源码数码时钟设计

    ### 5152单片机Proteus仿真与源码数码时钟设计详解 #### 一、引言 在嵌入式系统开发过程中,单片机作为一种核心控制单元,被广泛应用于各种电子设备中。其中,5152单片机作为8位微控制器的一种典型代表,在教学和...

    5152单片机proteus仿真和源码最小系统

    ### 5152单片机Proteus仿真与源码最小系统详解 #### 一、5152单片机简介 5152单片机是一种基于8051内核的增强型单片机,具有较高的性价比,在工业控制、家用电器等多个领域有着广泛的应用。它继承了传统8051系列...

    5152单片机proteus仿真和源码多功能电子钟

    5152单片机是一种基于8051内核的高性能单片机。它具有丰富的内部资源,如大量的RAM(随机存取存储器)、ROM(只读存储器)以及多种I/O端口等,这些都使得5152单片机非常适合用于各种复杂的控制任务。相比于传统的...

    5152单片机proteus仿真和源码用LED数码显示器循环显示数字0~9

    5152单片机基于经典的8051内核,这是一种广泛使用的单片机架构。它继承了8051单片机的基本特性,例如指令集兼容性、易于编程等特点,并在此基础上增加了更多的功能和改进。5152单片机通常拥有更强大的存储器配置、更...

    5152单片机proteus仿真和源码用LCD循环右移显示WelcometoChina

    5152单片机是一种基于8051内核的微控制器,它在传统8051的基础上进行了扩展和改进,增加了更多的功能,比如更多的I/O口、更大的程序存储空间等。这种类型的单片机广泛应用于各种电子产品的控制中,特别是在嵌入式...

    8051Proteus仿真c源码74LS138译码器应用

    ### 8051 Proteus 仿真 C 源码与 74LS138 译码器应用详解 #### 一、引言 在嵌入式系统开发过程中,利用仿真工具进行电路设计和验证变得越来越普遍。Proteus 是一款强大的电子电路仿真软件,支持包括 8051 微控制器...

    5152单片机proteus仿真和源码用if语句控制P0口8位LED的流水方向

    5152单片机基于传统的8051内核,具有丰富的内部资源和较强的处理能力。它支持多种时钟频率,内置大量的I/O端口,并具备多种中断源,能够满足复杂应用的需求。 **1.3 Proteus软件介绍** Proteus是一款强大的电路...

Global site tag (gtag.js) - Google Analytics