linux内核编译
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内核编译的更多相关文章
- 运行在TQ2440开发板上以及X86平台上的linux内核编译
一.运行在TQ2440开发板上的linux内核编译 1.获取源码并解压 直接使用天嵌移植好的“linux-2.6.30.4_20100531.tar.bz2”源码包. 解压(天嵌默认解压到/opt/E ...
- linux内核编译环境配置
linux内核编译环境配置 如果不是编译内核,只需要安装与内核相匹配的kernel-devel开发包即可.即是/lib/modules/`uname -r`/build -> /usr/src/ ...
- Linux内核编译与安装
2013-04-16 Linux内核介绍 Linux内核是一个用C语言写成的,符合POSIX标准的类Unix操作系统.内核是操作系统中最基本的一部分,提供了众多应用程序访问计算机硬件的机制.L ...
- Lab1:Linux内核编译及添加系统调用(详细版)
实验一:Linux内核编译及添加系统调用(HDU) 花了一上午的时间来写这个,良心制作,发现自己刚学的时候没有找到很详细的,就是泛泛的说了下细节地方也没有,于是自己写了这个,有点长,如果你认真的看完了 ...
- Linux内核编译、安装流程
原文链接:https://blog.csdn.net/qq_28437139/article/details/83692907 此处只讲linux内核编译步骤至于安装虚拟机,安装ubuntu操作系统请 ...
- Linux内核编译完整过程
Linux内核编译完整过程 通过网上的资料我自己的实际内核编译,我把对Linux内核编译的过程写在这里,也许对其他的Linux爱好者的编译学习有些帮助,其中很大部分是网上的资料,另外就是我在实际编译过 ...
- Linux 内核 编译模块
背景: 由于调试内核或者由于分区大小限制,有时候内核组件不一定完全需要编进内核中. 所以,在开发中经常将内核组件编译成为模块,等到在恰当的时机加载. 概览: Linux内核模块的编译方法有两种: 1. ...
- Linux内核编译配置脚本
环境 宿主机平台:Ubuntu 16.04.6 目标机:iMX6ULL Linux内核编译配置脚本 在linux开发过程中熟练使用脚本可以大大简化命令行操作,同时对于需要经常重复操作的指令也是一种备忘 ...
- linux内核编译,配置本机驱动
1.前言 编译linux内核失败的原因很多时候就是驱动选错,适合自己本机的驱动没编译进去.面对特殊平台(或者有些洁癖者,我就是^_^),要编译精简内核,只要本机驱动,其他都不需要.面对内核里面这么多 ...
- linux内核编译相关
参考:http://www.arm.linux.org.uk/docs/kerncomp.php 一. 内核编译1) linux 2.4make clean/make mrpropermake dep ...
随机推荐
- Windows Performance Monitoring with perfmon
直接引用 - https://technet.microsoft.com/en-us/magazine/2008.08.pulse.aspx
- SQL语句在数据库中是如何执行的
第一步:应用程序把查询SQL语句发给服务器端执行 我们在数据层执行SQL语句时,应用程序会连接到相应的数据库服务器,把SQL语句发送给服务器处理. 第二步:服务器解析请求的SQL语句 SQL计划缓存, ...
- Google Chrome input 设置 line-height 后光标变得和input一样高
Google Chrome input的height和line-height设置为相同的比默认高度高的值时,当input控件获得焦点并且没有输入内容时,input中的光标会占满整个input控件(如果 ...
- HEVC编解码优化信息
hevc解码GPU优化: 1.This GPU acceleration has opened up the possibility of playing a Full-HD (1080p) at 6 ...
- PRIMARY LANGUAGE ID not a number
用vs2010修改别人的源代码(估计是vc6下的) .RC 文件,报错: 1>.RC(8): error RC2144: PRIMARY LANGUAGE ID not a number 1 ...
- LR测试https协议设置方法
测试ssl隧道的设置方法: 前一段时间使用loadrunner测试ssl vpn时,使用ssl隧道一直配置不成功,经过查资料,终于成功,记录一下,方便大家测试.走ssl隧道与普通http,只需多设两个 ...
- ios开发中的toll-free bridged
所谓的Toll-free bridging是说您可以在某个框架的方法或函数 同时使用Core Foundatio和Foundation 框架中的某些类型. 很多数据类型支持这一特性,其中包括群体和字符 ...
- 能源项目xml文件标签释义--DefaultAdvisorAutoProxyCreator
[Spring]AOP拦截-三种方式实现自动代理 这里的自动代理,我讲的是自动代理bean对象,其实就是在xml中让我们不用配置代理工厂,也就是不用配置class为org.springframewor ...
- Ubuntu下解决bash 没有那个文件或目录的方法
因为之前电脑硬盘坏掉,维修换了新硬盘,今天重新安装了ubuntu,装好之后就赶紧搭建工作环境,将备份的资料拷贝进来,搭建交叉编译环境,但是发现,修改bashrc中PATH绝对路径指向交叉编译器后,在命 ...
- 纯css3代码写下拉菜单效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...