`
gyht0808
  • 浏览: 115606 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

(转)简单四步--编译 Linux 内核

 
阅读更多

下面介绍编译Linux内核的四个步骤:

1.需要先安装编译环境

进入 root 帐户:

> su

输入密码

安装必要的工具:

> apt-get install build-essential

(安装 gcc, make 等)

> apt-get install libncurses-dev

(安装 make menuconfig 时必须的库文件)

> apt-get install kernel-package, fakeroot

(Debian 系统里生成 kernel-image 的一些配置文件和工具)

> apt-get install initramfs-tools, module-init-tools

2.安装 kernel-source:

  可以从 Ubuntu 的源安装,这样的好处是简单,而且安装的内核是Debian 化了的,缺点是内核不是最新的内核。

> apt-get install linux-source

  也可以从 www.kernel.org 下载内核安装。kernel.org 的境象应该很多,选一个最快的来下载,因为要下载的文件很大。我这里介绍的是安装 2.6.24 的内核,加上了 ck 的补丁。

  下载 linux-2.6.24.tar.bz2 和 patch-2.6.24.bz2 ,并且把它们都存放在 /usr/src 目录下。

> tar xvjf linux-2.6.24.tar.bz2

> ln -s linux-2.6.24 linux

  (如果已经有了 linux 目录,则要先将其删除)

> cd linux

> bzcat ../patch-2.6.24.bz2 | patch -p1

  至此,内核源文件以及补丁就都安装好了。

3.编译内核

  把源码包解压到 /usr/src/linux-2.6.24,然后在/usr/src/下创建一个名为linux的指向/usr/src/linux-2.6.24的链接(link)。

在shell中输入

root@FE2000:~# cd ..
root@FE2000:/# cd /usr/src/linux
root@FE2000:/usr/src/linux# make mrproper
root@FE2000:/usr/src/linux# make menuconfig

  或者make gconfig

此时qconf已经读取了默认配置,你也可以这样做:

  在qconf中点File->Load 去读取其他的设置文件。

  比如 /boot/config-2.6.18-23-686

  下面在qconf中配置.config文件。选“Y”(打勾)就是把它编译到内核中,选“M”(打点)把它编译成模块,供内核动态调用。选“N”就是不安装。也可以保持默认选项……

下面只是简单提几项:

  • General setup
  • Optimize for size (Look out for broken compilers!) 发烧友可以选Y以获得更小的内核。
  • Processor type and features
  • Symmetric multi-processing support 如果你没有多线程处理器这个可以选N
  • Processor family 根据你的CPU来选择。
  • High Memory Support 1G以上内存的选“4GB”, 1G以下的,将来也不打算升级到1G的,选“off”.
  • Bus options (PCI, PCMCIA, EISA, MCA, ISA)
  • PCI support
  • PCI Express support 老式机器没有PCI-E设备的可以选N
  • ISA support 较新的新机器没有ISA设备,可以选N
  • MCA support 一般选N
  • NatSemi SCx200 support 一般选N
  • PCI Hotplug Support
  • Support for PCI Hotplug (EXPERIMENTAL) 如果没有PCI热插拔设备,选N
  • Device Drivers
  • Block devices
  • Packet writing on CD/DVD media
  • Enable write caching (EXPERIMENTAL) 如果你有刻录机,想启用写缓存功能,选Y
  • ATA/ATAPI/MFM/RLL support
  • Include IDE/ATA-2 DISK support 如果你的/boot是放在IDE硬盘上,那么这里一定要选Y,选M都不行。否则启动时会出现“waiting for root file system”的提示而停滞不前。
  • SCSI device support 如果有SATA硬盘,就选Y
  • SCSI disk support 如果你的/boot放在SATA硬盘上,一定要选Y。
  • Character devices
  • I2C support 一般可以选Y或者M
  • Graphics support 不建议把显卡驱动编译进内核。,选M,编译成模块方便日后升级驱动。
  • Support for frame buffer devices
  • VESA VGA graphics support 可以选Y
  • Logo configuration
  • Bootup logo 如果想看到Linux启动logo,选Y
  • Sound
  • Sound card support 选Y, 除非你没有声卡

  其他的驱动,酌情添加删除,根据机器配置删除不需要的驱动可以缩短编译时间。你可以在命令行下输如lspci或者dmesg查看硬件信息。

File systems

  • CD-ROM/DVD Filesystems
  • ISO 9660 CDROM file system support 一般选Y
  • DOS/FAT/NT Filesystems
  • VFAT (Windows-95) fs support 有FAT32分区就选Y吧
  • NTFS file system support 有NTFS分区就选Y吧
  • NTFS write support 如果想对 NTFS分区进行写操作,选Y
  • Native Language Support
  • Simplified Chinese charset (CP936, GB2312) 选Y或者M使读取FAT分区不会遇到中文乱码现象

  设置完毕后,按一下保存按钮,无论原先载入的是哪个配置文件,qconfig都将设置保存到 /usr/src/linux/.config 这个隐含文件。

  下面输入make开始编译,这一过程大约需要40-100分钟,具体的要看你的机器速度啦……

root@FE2000:/usr/src/linux# make

安装内核

root@FE2000:/usr/src/linux# make install

编译模块

root@FE2000:/usr/src/linux# make modules

安装模块

root@FE2000:/usr/src/linux# make modules_install

然后

root@FE2000:/usr/src/linux# cd /

root@FE2000:/usr/src/linux# /usr/sbin/mkinitramfs -o /boot/initrd.img-2.6.24 2.6.24

  如果有出错提示,可能是因为 initramfs-tools 没有装,先把它装上吧。

  如果没有这一步骤,那么开机就会出现提示

initrd /initrd.img-2.6.24

Error 15: File not found

4.修改内核启动选项

  最后打开 /boot/grub/menu.lst。在 ## ## End Default Options ## 下面添加类似下面的两段:

title Ubuntu, kernel 2.6.24

root (hd0,4)

kernel /vmlinuz-2.6.24 root=/dev/hdd6

initrd /initrd.img-2.6.24

savedefault

boot

title Ubuntu, kernel 2.6.24 (recovery mode)

root (hd0,4)

kernel /vmlinuz-2.6.24 root=/dev/hdd6 ro single

initrd /initrd.img-2.6.24

boot

  注意 root和kernel字段要模仿menu.lst下面已有的内容写。

  下面是 (hd0,4),那么你也写(hd0,4),下面写root=/dev/hdd6,你也写root=/dev/hdd6,只是内核的版本号改为现在编译的版本号。

  然后把下面重复的savedefault删除。

  重新启动计算机,在GRUB中选择新内核启动。

分享到:
评论

相关推荐

    linux内核编译原理

    linux内核编译2.6.39linux内核编译2.6.39linux内核编译2.6.39linux内核编译2.6.39linux内核编译2.6.39linux内核编译2.6.39linux内核编译2.6.39linux内核编译2.6.39linux内核编译2.6.39linux内核编译2.6.39linux内核...

    海思编译链 arm-hisiv300-linux

    (在开发的时候,你编译内核所用的交叉编译链跟用户的应用程序所用的交叉编译链一定需要相同,不然没法调用系统内核的依赖库)   其中eglibc这种很容易被人开发者忽视,从而选错了编译工具链。 uClibc和...

    xilinx-arm-linux 交叉编译工具链

    使用这套工具链,开发者可以编译Linux内核以及驱动程序、应用程序等,以适应ZED Board或其他基于ZYNQ的开发板。这涉及到配置Makefile、设置正确的编译选项,并且可能需要对内核源码进行特定的修改以适配硬件。 标签...

    操作系统实验---配置和编译Linux内核.doc

    在操作系统的学习中,配置和编译Linux内核是一项重要的实践环节,它能帮助我们深入了解内核的工作机制,并掌握定制化内核的能力。本文档记录了一次在Ubuntu 16.04上进行该实验的过程,旨在提高对Linux内核特性和编译...

    windows下面编译linux-0.11内核

    为了编译Linux内核,你需要安装MinGW32的完整版,包括gcc、make以及其他必要的库和工具。确保你的MinGW32安装了g++编译器,因为内核源码主要是用C++编写的。 接下来,我们需要**Linux 0.11** 的源代码。在解压提供...

    linux-内核编译各个选项的含义

    Linux 内核编译选项是 Linux 内核编译过程中的一个重要步骤,它决定了 Linux 内核的功能和性能。本文将对 Linux 内核编译选项进行详细的解析,以帮助读者更好地理解 Linux 内核编译选项的含义和作用。 一、代码成熟...

    linux内核编译实验报告

    - **编译Linux内核**: 执行`make bzImage`命令编译内核映像文件`bzImage`,并使用`make modules`和`make modules_install`命令编译并安装内核模块。 - **修改Grub配置**: 修改Grub配置文件以支持新编译的内核,确保...

    Linux内核编译与裁剪

    #### 四、编译Linux内核 编译Linux内核是一个复杂但重要的过程,它涉及到多个步骤: - **配置内核**:使用`make menuconfig`或`make xconfig`等工具来配置内核。这些工具提供了图形界面或文本界面,帮助用户选择...

    ARM-Linux内核编译流程

    适合arm-linux的内核编译, 包含u-boot,kernel,rootfs

    Android-x86内核编译

    理解Linux内核和Android系统的结构,熟悉Makefile的规则,以及对Kconfig配置的理解,都是成功编译的关键。此外,持续关注Android-x86项目的更新,以便利用最新的改进和修复,也是保持系统兼容性和性能的关键步骤。

    linux-2.6.18内核编译全过程

    Linux内核编译是一项复杂但极富价值的技能,它不仅能够加深对操作系统底层工作原理的理解,还能为特定场景下的性能优化提供强大的工具。通过本实训的实践操作,实训者将能够独立完成内核的定制化编译,为自己的项目...

    Ubuntu10.04 编译安装最新版本Linux-2.6.34内核

    第四步:编译安装新内核 执行 `sudo make mrproper` 清除以前曾经编译过的旧文件。如果你是第一次编译,可以不执行该命令。然后,执行 `sudo make` 编译,可以加 `-j4`,如果你 CPU 是双核心,可以提高速度。然后,...

    linux内核编译文档

    Linux 内核编译文档 本文档旨在为 Linux 新手提供一个详细的 Linux 内核编译指南,帮助他们从基础开始学习 Linux 系统。编译内核对于 Linux 新手来说可能有一些困难,但通过本文档的指导,读者可以轻松地完成内核...

    操作系统实验报告-编译linux内核

    本实验报告详细记录了在Fedora 10系统上编译Linux内核2.6.27.5的过程,旨在让学生理解内核构建流程,并深入学习Linux内核与发行版的关系。 实验的第一步是准备环境,这包括安装Fedora 10和必要的开发工具,如GCC和...

    制作mipsel-linux交叉编译工具.pdf

    4. 编译Linux内核:使用交叉编译工具链编译Linux内核,使其可以在MIPs架构的平台上运行。 5. 编译应用程序:使用交叉编译工具链编译应用程序,使其可以在MIPs架构的平台上运行。 交叉编译工具链的组成: 交叉编译...

    编译Linux内核及调试内核模块

    编译Linux内核及调试内核模块 本篇文章主要讲述了编译Linux内核及调试内核模块的过程,以帮助读者掌握编译内核调试内核模块的基本方法。下面是文章中所涉及的知识点: 1. 获取内核源码:文章中讲述了如何从网上...

    编译Linux内核

    编译Linux内核 编译Linux内核是Linux操作系统课程设计实验的一部分,目的是学习重新编译Linux内核,理解并掌握Linux内核和发行版本的区别。以下是编译Linux内核的详细知识点: 一、实验目的 * 了解Linux内核的...

    arm-fsl-linux-gnueabi-交叉编译工具链

    "arm-fsl-linux-gnueabi-"就是一种针对特定平台的交叉编译工具链,它允许在非ARM的Linux系统(比如基于x86的PC)上为Freescale公司(现NXP)的ARM Linux系统编译应用程序。 交叉编译工具链通常包括以下组件: 1. *...

    linux-0.11内核bochs实验编译环境

    编译Linux内核涉及以下步骤: 1. **配置**:运行`make menuconfig`或`make xconfig`(根据你的环境选择图形或文本配置界面),根据需求调整内核配置。由于我们是在Bochs中运行,所以可以选择最小化配置,只保留必要...

    Linux内核编译实验

    4. **了解Linux内核的编译过程**:学会如何编译Linux内核,理解编译过程中的关键步骤及其背后的原理。 5. **掌握如何将自定义代码加入Linux内核结构**:学会如何将自己的代码整合进内核,使其成为内核的一部分。 ##...

Global site tag (gtag.js) - Google Analytics