虽然以前也编译过内核,但是关于内核配置选项特别是有关本机驱动这块还是不熟悉,因为没有通过确定有效的途径知道当前工作正常的内核中到底使用了什么驱动模块来控制硬件,最近看到一本书《Linux kernel in a netshell》,感觉讲的还不错,所以记下笔记。

1.编译内核的工具

gcc

binutils(ld)    binutils是gcc的工具链,用来链接目标文件以及汇编。

make

util-linux-ng(fdformat)

module-init-tools(depmod)

tune2fs

NFS(showmount)

udev        udev是Linux中用来管理/dev目录的工具,它维护/dev目录下所有的设备文件。

2.下载wget/curl

3.编译

$make defconfig    defconfig是i386计算机上的默认配置,也就是Linus Torvalds计算机中的配置。

$make config        最原始的配置方式

$make menuconfig    文本字符界面配置

$make xconfig    X Window配置界面

$make            编译Kernel

4.高级编译选项

make -jN        N设置为你CPU内核数的两倍,代表编译内核所用的线程数量。

$make drivers/usb/serial    只编译目录drivers/usb/serial,但是不会生成模块映像文件

$make M=drivers/usb/serial    同上,但是会生成模块文件,但是不会影响已经编译好的内核,如果想要改变已经编译好的内核,则需要重新执行

$make

$make drivers/usb/serial/visor.ko    只编译个别文件

$make -O=/path/to/output/    将输出重定向到另一个目录,注意configure也必须使用-O重定向输出。

$make ARCH=x86_64 defconfig    设置目标计算机体系结构

$make ARCH=arm CROSS_COMPILE=/usr/bin/...    设置交叉编译。

$make CC="ccache gcc"    设置编译器变量CC

5.配置内核     1)查找当前内核配置文件.config,在许多发行版中,内核配置文件最有可能位于/usr/src/linux/下和/proc/config.gz文件。例如在我的ubuntu(karmic koala)中,有/usr/src/linux-headers-2.6.31-16-generic/.config     2)查看特定驱动的模块 这里以网卡为例,使用ifconfig可以看到本机网卡,lo是回环地址,eth0...等是真正工作的网卡。     $ifconfig     $ls /sys/class/net/ 上面两种方法都可以查看本机网卡。现在我们要找到网卡驱动在内核中使用哪个模块来控制。     3)找到相应的内核模块     $basename `readlink /sys/class/net/eth0/device/driver/module`     在我的电脑上输出是8139too,表示网卡驱动模块名是8139too。     4)查找相应模块在配置内核中的选项     $cd /usr/src/linux-headers-2.6.31-16/    注意这里不是16-generic,因为后者是中的大部分都是前者的链接。     $find -type f -iname "makefile"|xargs grep -i "8139too" 输出是./drivers/net/Makefile:obj-$(CONFIG_8139TOO) +=8139too.o     5)配置内核中的选项     $make menuconfig     然后按下'/‘键,输入搜索内容8139too,即可得到相关的配置选项。

LinuX编译显示内核配置无效,配置编译内核(Linux kernel)相关推荐

  1. linux怎么显示第三个数据,从零开始的linux 第三章

    从零开始的linux 第三章 同学们~起床咯~~(小编拿着喇叭在宿舍楼下喊道) 美好的一天从...从赞小编的博客开始~~ (↓看见小编的同学们) 什么!?你们对着可爱的小编说什么!?再说一遍!!? 同 ...

  2. JAVA编译显示存在不安全_java – 编译时出现“未经检查或不安全的操作”错误...

    参见英文答案 > What causes javac to issue the "uses unchecked or unsafe operations" warning   ...

  3. Android源码编译流程及所需的编译环境

    编译过程: 下载源码->搭建编译环境->编译源码->解决编译报错->生成编译固件包 编译环境 本文使用的是下载好的Android8.1源码,搭建好的虚拟机Ubuntu14.0/ ...

  4. Linux 2.6.19.x 内核编译配置选项简介(内核裁剪)

    Linux 2.6.19.x 内核编译配置选项简介 Code maturity level options 代码成熟度选项 Prompt for development and/or incomple ...

  5. Linux编译内核的详细配置

    分类: Linux内核 2005-03-12 10:58 4492人阅读 评论(0) 收藏 举报 linux网络idedoswindowsdocumentation 前言之前言:谁是这篇文章的读者? ...

  6. linux内核基础和配置编译原理

    2020-8-8 星期六 北京 闷热天 总结linux内核基础和配置编译原理,分两部分总结.仅作为技术积累,方便日后查阅.参考了网上的一些笔记. 第一部分:内核基础 2.14.1.内核和发行版的区别 ...

  7. linux内核体系学习路径_Linux内核分析(一)linux体系简介|内核源码简介|内核配置编译安装...

    从本篇博文开始我将对linux内核进行学习和分析,整个过程必将十分艰辛,但我会坚持到底,同时在博文中如果那些地方有问题还请各位大神为我讲解. 今天我们会分析到以下内容: 1. Linux体系结构简介 ...

  8. linux内核的配置过程,linux内核的配置机制及其编译过程

    linux内核的配置机制及其编译过程. 一.配置系统的基本结构 Linux内核的配置系统由三个部分组成,分别是: 1.Makefile:分布在 Linux 内核源代码根目录及各层目录中,定义 Linu ...

  9. 一篇编译内核的详细配置文章

    前言之前言:谁是这篇文章的读者? 不习惯读英文资料的非LINUX高手 声卡不响光驱不转连不上网等等,只要有问题就行 开发嵌入式操作系统 现在流行的ODL(only disk linux)中做内核部分, ...

最新文章

  1. linux 脚本 变量为空,Shell脚本中判断输入变量或者参数是否为空的方法
  2. 计算机端口封闭,如何查询局域网内被封的电脑端口?
  3. Jquery Mobile左右滑动效果
  4. 今天 学习用到的一些知识(properties 读取,js 删除元素)
  5. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言—— 1044:判断是否为两位数
  6. 07:有趣的跳跃【一维数组】
  7. 信阳农林技术学院经纬度_信阳农林学院驻村工作队为扶贫村协调种苗助力美丽乡村建设...
  8. java折行_Java源代码的折行规则
  9. android 支付宝 记账本,支付宝记账本如何导出?看看这两种方法
  10. 中国移动路由器怎么设置虚拟服务器,中国移动宽带无线wifi设置方法【图】
  11. 【灰色系统】—— 灰色系统的定义及其理论内容
  12. yoga14s amd r7-4800h虚拟机安装黑苹果记录
  13. 微处理器 微型计算机系统,(计算机)什么是“微处理器、微型计算机、微型计算机系统,以及它们区别和联系?...
  14. Excel快捷键大全和35个函数---第二弹
  15. 电大管理英语4计算机期末考试,2021国家开放大学电大本科《管理英语4》期末试题及答案(试卷号:1389)...
  16. C++字符串操作函数strstr,strcmp,strlen,strcpy,strcat,strok
  17. mongo慢查询排查
  18. 阿里云服务器域名备案
  19. mlp原来是这么回事
  20. AI随笔-python3(4)

热门文章

  1. HALCON标定板制作、标准文件输出方法、算子讲解
  2. QT学习笔记(二):QT MinGW 和 MSVC 编译方式
  3. OpenCV的工具函数
  4. leetcode-sort-colors
  5. log4j 控制台和文件输出乱码问题解决
  6. oracle查看锁表进程,杀掉锁表进程
  7. java程序移植_java JDBC 提高程序可移植性
  8. vscode php断点,VSCode中设置断点调试PHP(示例代码)
  9. java多态可以传匿名对象吗_Java复习笔记2--匿名类和多态
  10. 现代软件工程课件 需求分析 如何提出靠谱的项目建议 NABCD