1,进入内核源码树,如果是第一次编译,建议清理以下内核功能选择文件:

make mrproper

2,删除前一次编译的残留文件:

make clean

3,配置内核功能

make menuconfig

这一步有可能是会提示缺少库

根据提示去安装库:

yum install ncurses-devel

( 我这里是centos,若是debian家族发行版,可能是:libncurses5-dev )

寻找方法

先可以先用关键字搜索列出相关可能是包:

yum search ncurses

再查看info来确定:

yum info ncurses-devel

从下边就是在menuconfig中根据自己的主机来配置编译选项。

这个就因人而异了,不过默认配置已经能满足大多数人的需要,只是这样编译出来的内核比较臃肿,根据个人需要精简,比如X86上用的intel的CPU就可以将AMD相关的选项去掉,不多赘述

这里特别提一下ntfs分区的支持:

File systems -> DOS/FAT/DVD Filesystems --> NTFS file system support

最后要保存一下刚刚的配置:

文件名用默认的就可以,因为接下来的配置默认是读取的这个文件明的配置,如果你保存为别的文件明,那么就有可能编译时读取的不是这次配置的.config,导致问题。

4,编译内核

make clean        # 先清除临时文件
make bzImage -j2  # 编译内核(并行编译,2个编译命令同时进行,对于双核CPU -j4也没问题)

编译完成后(若你是X86环境)

ll  arch/x86/boot/bzImage

这就是编译出的内核在内核代码树下的目录,应该存在设个文件:

4,编译模块

make modules -j4 # 编译刚刚配置时打M标记的内核模块

这个编译过程相对比较长。

5,安装内核模块外挂模组

make modules_install

安装完成后可以看到内核模块外挂模组目录:

6,将内核拷贝至/boot

cp arch/x86/boot/bzImage  /boot/vmlinuz-3.8.

7,制作虚拟文件系统

mkinitrd  -v /boot/initrd-3.8..img  3.8.0LeTX

(若是debian家族发行版,使用 mkinitramfs -o /boot/initrd-3.8.0.img 3.8.0LeTX)

8,编辑开机菜单

更新:

grub.cfg不建议手动修改,

grub2工具可以帮助搞定:

grub2-mkconfig -o /boot/grub2/grub.cfg

以下方法有效,但是不建议,

配置文件: /boot/grub2/grub.cfg

按照上下文新编译的内核文件和虚拟文件系统改一下即可:

menuentry 'CentOS Linux, with Linux 3.8.0' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_msdos
insmod xfs
set root='hd0,msdos9'
if [ x$feature_platform_search_hint = xy ]; then
    search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos9 --hint-efi=hd0,msdos9 --hint-baremetal=ahci0,msdos9 --hint='hd0,msdos9' bf17c730-86f6-4XXXXXXXX
else
    search --no-floppy --fs-uuid --set=root bf17c730-86f6-47f0-9XXXXXX
fi
 linux16 /vmlinuz-3.8. root=UUID=2e144fd9---a58c-a76XXXXX ro rd.lvm.lv=centos/swap vconsole.font=latarcyrheb-sun16 rd.lvm.lv=centos/root crashkernel=auto vconsole.keymap=us rhgb quiet LANG=en_US.UTF-
 initrd16 /initrd-3.8..img
}

linux内核编译的更多相关文章

  1. 运行在TQ2440开发板上以及X86平台上的linux内核编译

    一.运行在TQ2440开发板上的linux内核编译 1.获取源码并解压 直接使用天嵌移植好的“linux-2.6.30.4_20100531.tar.bz2”源码包. 解压(天嵌默认解压到/opt/E ...

  2. linux内核编译环境配置

    linux内核编译环境配置 如果不是编译内核,只需要安装与内核相匹配的kernel-devel开发包即可.即是/lib/modules/`uname -r`/build -> /usr/src/ ...

  3. Linux内核编译与安装

    2013-04-16    Linux内核介绍  Linux内核是一个用C语言写成的,符合POSIX标准的类Unix操作系统.内核是操作系统中最基本的一部分,提供了众多应用程序访问计算机硬件的机制.L ...

  4. Lab1:Linux内核编译及添加系统调用(详细版)

    实验一:Linux内核编译及添加系统调用(HDU) 花了一上午的时间来写这个,良心制作,发现自己刚学的时候没有找到很详细的,就是泛泛的说了下细节地方也没有,于是自己写了这个,有点长,如果你认真的看完了 ...

  5. Linux内核编译、安装流程

    原文链接:https://blog.csdn.net/qq_28437139/article/details/83692907 此处只讲linux内核编译步骤至于安装虚拟机,安装ubuntu操作系统请 ...

  6. Linux内核编译完整过程

    Linux内核编译完整过程 通过网上的资料我自己的实际内核编译,我把对Linux内核编译的过程写在这里,也许对其他的Linux爱好者的编译学习有些帮助,其中很大部分是网上的资料,另外就是我在实际编译过 ...

  7. Linux 内核 编译模块

    背景: 由于调试内核或者由于分区大小限制,有时候内核组件不一定完全需要编进内核中. 所以,在开发中经常将内核组件编译成为模块,等到在恰当的时机加载. 概览: Linux内核模块的编译方法有两种: 1. ...

  8. Linux内核编译配置脚本

    环境 宿主机平台:Ubuntu 16.04.6 目标机:iMX6ULL Linux内核编译配置脚本 在linux开发过程中熟练使用脚本可以大大简化命令行操作,同时对于需要经常重复操作的指令也是一种备忘 ...

  9. linux内核编译,配置本机驱动

    1.前言  编译linux内核失败的原因很多时候就是驱动选错,适合自己本机的驱动没编译进去.面对特殊平台(或者有些洁癖者,我就是^_^),要编译精简内核,只要本机驱动,其他都不需要.面对内核里面这么多 ...

  10. linux内核编译相关

    参考:http://www.arm.linux.org.uk/docs/kerncomp.php 一. 内核编译1) linux 2.4make clean/make mrpropermake dep ...

随机推荐

  1. D3.js 选择元素和绑定数据/使用数据

    选择元素和绑定数据是 D3 最基础的内容,本文将对其进行一个简单的介绍. 一.如何选择元素 在 D3 中,用于选择元素的函数有两个: d3.select():是选择所有指定元素的第一个 d3.sele ...

  2. Python核心编程-闭包

    百度搜了一下闭包的概念:简而言之,闭包的作用就是在外部函数执行完并返回后,闭包使得收机制不会收回函数所占用的资源,因为内部函数的执行需要依赖外函数中的变量.这是对闭包作用的非常直白的描述,不专业也不严 ...

  3. java,UDP协议简单实现

    //UDP协议简单实现-----Serverpackage UDP; import java.net.DatagramPacket; import java.net.DatagramSocket; i ...

  4. 【NOIP 2016】斗地主

    题意 NOIP 2016 斗地主 给你一些牌,按照斗地主的出牌方式,问最少多少次出完所有的牌. 分析 这道题的做法是DFS. 为了体现这道题的锻炼效果,我自己写了好多个代码. Ver1 直接暴力搞,加 ...

  5. Java replace() 方法

    Java replace() 方法 Java String类 replace() 方法通过用 newChar 字符替换字符串中出现的所有 oldChar 字符,并返回替换后的新字符串. 语法 publ ...

  6. English substitute

    英语写作中替换掉用到发腻的↓常用词↓,吐血整理2小时~~   动词替换:   1.Improve 提高:   Promote: 促进AC之间的贸易 promote the trade between ...

  7. 核心Javascript学习

    1. 引言: 1.1. 网页三要素: l HTML(内容) l CSS(外观) l Javascript(行为) 1.2.  OOP的相关概念 1). 对象,方法和属性 l 对象就是指"事物 ...

  8. 安装Ubuntu Linux系统时硬盘分区最合理的方法

    无论是安装Windows还是Linux操作系统,硬盘分区都是整个系统安装过程中最为棘手的环节,网上的一些Ubuntu Linux安装教程一般都是自动分区,给初学者带来很大的不便,下面我就根据多年来在合 ...

  9. 小例子(一)、MD5加密

    一个MD5加密的小案例 代码如下: using System; using System.Text; using CCWin; using System.Security.Cryptography; ...

  10. poj----1330Nearest Common Ancestors(简单LCA)

    题目连接  http://poj.org/problem?id=1330 就是构建一棵树,然后问你两个节点之间最近的公共父节点是谁? 代码: /*Source Code Problem: 1330 U ...