下载源码,进入源码根目录:

一内核配置与编译

(1) 清除:

make clean 删除编译文件但保留配置文件。

make mrproper 删除所有编译文件和配置文件

make distclean 删除编译文件,配置文件包括backup备份和patch补丁

(2)配置方式

内核配置方法有三种:

(1)命令行:  make  config
(2)菜单模式的配置界面:  make menuconfig

(3) X window:make xconfig

(4) make defconfig(默认配置,对于新手最好选这次选项)

Linux的内核配置程序提供了一系列配置选项。对于每一个配置选项,用户可以回答"y"、"m"或"n"。其中"y"表示将相应特性的支持或设备驱动程序编译进内核;"m"表示将相应特性的支持或设备驱动程序编译成可加载模块,在需要时,可由系统或用户自行加入到内核中去;"n"表示内核不提供相应特性或驱动程序的支持。由于内核的配置选项非常多,本文只介绍一些比较重要的选项。

   1、Code maturity level options(代码成熟度选项) 
  Prompt for development and/or incomplete code/drivers (CONFIG_EXPERIMENTAL) [N/y/?] 如果用户想要使用还处于测试阶段的代码或驱动,可以选择“y”。如果想编译出一个稳定的内核,则要选择“n”。 
    2、Processor type and features(处理器类型和特色)
  (1)、Processor family (386, 486/Cx486, 586/K5/5x86/6x86, Pentium/K6/TSC, PPro/6x86MX) [PPro/6x86MX] 选择处理器类型,缺省为Ppro/6x86MX。 
  (2)、Maximum Physical Memory (1GB, 2GB) [1GB] 内核支持的最大内存数,缺省为1G。 
  (3)、Math emulation (CONFIG_MATH_EMULATION) [N/y/?] 协处理器仿真,缺省为不仿真。 
  (4)、MTRR (Memory Type Range Register) support (CONFIG_MTRR) [N/y/?] 
  选择该选项,系统将生成/proc/mtrr文件对MTRR进行管理,供X server使用。 
  (5)、Symmetric multi-processing support (CONFIG_SMP) [Y/n/?] 选择“y”,内核将支持对称多处理器。 
  3、 Loadable module support(可加载模块支持) 
  (1)、Enable loadable module support (CONFIG_MODULES) [Y/n/?] 选择“y”,内核将支持加载模块。 
  (2)、Kernel module loader (CONFIG_KMOD) [N/y/?] 选择“y”,内核将自动加载那些可加载模块,否则需要用户手工加载。 
  4、 General setup(一般设置) 
  (1)、Networking support (CONFIG_NET) [Y/n/?] 该选项设置是否在内核中提供网络支持。 
  (2)、PCI support (CONFIG_PCI) [Y/n/?] 该选项设置是否在内核中提供PCI支持。 
  (3)、PCI access mode (BIOS, Direct, Any) [Any] 该选项设置Linux探测PCI设备的方式。选择“BIOS”,Linux将使用BIOS;选择“Direct”,Linux将不通过BIOS;选择    “Any”,Linux将直接探测PCI设备,如果失败,再使用BIOS。 
  (4)Parallel port support (CONFIG_PARPORT) [N/y/m/?] 选择“y”,内核将支持平行口。 
  5、 Plug and Play configuration(即插即用设备支持) 
  (1)、Plug and Play support (CONFIG_PNP) [Y/m/n/?] 选择“y”,内核将自动配置即插即用设备。 
  (2)、ISA Plug and Play support (CONFIG_ISAPNP) [Y/m/n/?] 选择“y”,内核将自动配置基于ISA总线的即插即用设备。 
  6、 Block devices(块设备) 
  (1)、Normal PC floppy disk support (CONFIG_BLK_DEV_FD) [Y/m/n/?] 选择“y”,内核将提供对软盘的支持。 
  (2)、Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support (CONFIG_BLK_DEV_IDE) [Y/m/n/?] 选择“y”,内核将提供对增强IDE硬盘、CDROM和磁带机的支持。 
  7、 Networking options(网络选项) 
  (1)、Packet socket (CONFIG_PACKET) [Y/m/n/?] 选择“y”,一些应用程序将使用Packet协议直接同网络设备通讯,而不通过内核中的其它中介协议。 
  (2)、Network firewalls (CONFIG_FIREWALL) [N/y/?] 选择“y”,内核将支持防火墙。 
  (3)、TCP/IP networking (CONFIG_INET) [Y/n/?] 选择“y”,内核将支持TCP/IP协议。 
  (4)The IPX protocol (CONFIG_IPX) [N/y/m/?] 选择“y”,内核将支持IPX协议。 
  (5)、Appletalk DDP (CONFIG_ATALK) [N/y/m/?] 选择“y”,内核将支持Appletalk DDP协议。 
  8、SCSI support(SCSI支持) 
  如果用户要使用SCSI设备,可配置相应选项。 
  9、Network device support(网络设备支持) 
  Network device support (CONFIG_NETDEVICES) [Y/n/?] 选择“y”,内核将提供对网络驱动程序的支持。 
  10、Ethernet (10 or 100Mbit)(10M或100M以太网) 
  在该项设置中,系统提供了许多网卡驱动程序,用户只要选择自己的网卡驱动就可以了。此外,用户还可以根据需要,在内核中加入对FDDI、PPP、SLIP和无线LAN(Wireless LAN)的支持。 
  11、Character devices(字符设备) 
  (1)、Virtual terminal (CONFIG_VT) [Y/n/?] 选择“y”,内核将支持虚拟终端。 
  (2)、Support for console on virtual terminal (CONFIG_VT_CONSOLE) [Y/n/?] 
  选择“y”,内核可将一个虚拟终端用作系统控制台。 
  (3)、Standard/generic (dumb) serial support (CONFIG_SERIAL) [Y/m/n/?] 
  选择“y”,内核将支持串行口。 
  (4)、Support for console on serial port (CONFIG_SERIAL_CONSOLE) [N/y/?] 
  选择“y”,内核可将一个串行口用作系统控制台。 
  12、Mice(鼠标) 
  PS/2 mouse (aka "auxiliary device") support (CONFIG_PSMOUSE) [Y/n/?] 如果用户使用的是PS/2鼠标,则该选项应该选择“y”。 
  13、Filesystems(文件系统) 
  (1)、Quota support (CONFIG_QUOTA) [N/y/?] 选择“y”,内核将支持磁盘限额。 
  (2)、Kernel automounter support (CONFIG_AUTOFS_FS) [Y/m/n/?] 选择“y”,内核将提供对automounter的支持,使系统在启动时自动 mount远程文件系统。 
  (3)、DOS FAT fs support (CONFIG_FAT_FS) [N/y/m/?] 选择“y”,内核将支持DOS FAT文件系统。 
  (4)、ISO 9660 CDROM filesystem support (CONFIG_ISO9660_FS) [Y/m/n/?] 
  选择“y”,内核将支持ISO 9660 CDROM文件系统。 
  (5)、NTFS filesystem support (read only) (CONFIG_NTFS_FS) [N/y/m/?] 
  选择“y”,用户就可以以只读方式访问NTFS文件系统。 
  (6)、/proc filesystem support (CONFIG_PROC_FS) [Y/n/?] /proc是存放Linux系统运行状态的虚拟文件系统,该项必须选择“y”。 
  (7)、Second extended fs support (CONFIG_EXT2_FS) [Y/m/n/?] EXT2是Linux的标准文件系统,该项也必须选择“y”。 
  14、Network File Systems(网络文件系统) 
  (1)、NFS filesystem support (CONFIG_NFS_FS) [Y/m/n/?] 选择“y”,内核将支持NFS文件系统。 
  (2)、SMB filesystem support (to mount WfW shares etc.) (CONFIG_SMB_FS) 
  选择“y”,内核将支持SMB文件系统。 
  (3)、NCP filesystem support (to mount NetWare volumes) (CONFIG_NCP_FS) 
  选择“y”,内核将支持NCP文件系统。 
  15、Partition Types(分区类型) 
  该选项支持一些不太常用的分区类型,用户如果需要,在相应的选项上选择“y”即可。 
  16、Console drivers(控制台驱动) 
  VGA text console (CONFIG_VGA_CONSOLE) [Y/n/?] 选择“y”,用户就可以在标准的VGA显示方式下使用Linux了。 
  17、Sound(声音) 
  Sound card support (CONFIG_SOUND) [N/y/m/?] 选择“y”,内核就可提供对声卡的支持。 
  18、Kernel hacking(内核监视) 
  Magic SysRq key (CONFIG_MAGIC_SYSRQ) [N/y/?] 选择“y”,用户就可以对系统进行部分控制。一般情况下选择“n”

(3)执行编译

make -jn:n为线程数,一般一个cpu对应1-2个线程数。

内核编译成功后,会在源码根目录/arch/$cpu/boot目录中生成一个新内核的映像文件zImage(小于512k)。如果编译的内核很大,这时,编译程序就会生成一个名叫bzImage的内核映像文件。

(4)安装内核

如果用户在配置内核时设置了可加载模块,则需要对这些模块进行编译,以便将来使用insmod命令进行加载。 
make modules 编译内核模块
make modelus_install 安装内核模块(成功后,系统会在/lib/modules目录下生成一个(内核版本号)子目录,里面存放着新内核的所有可加载模块)

(5)启动内核

编译完成之后,就可以进行内核的安装了,我们将源代码目录下的arch/x86_64/boot/bzImage复制到/boot/下面,因为我下载的源代码版本为linux-3.17.7,所以复制的命令为:

cp arch/x86_64/boot/bzImage  /boot/vmlinuz-3.17.7

读者需要根据自己的cpu类型,如是x86架构还是amd,或者是32位或64位,在相应的目录下寻找bzImage。

将源代码目录下的System.map复制到/boot目录下:

cp System.map /boot/System.map-3.17.7
将源代码目录下的.config复制到/boot/目录下:
 cp .config /boot/config-3.17.7
.更新grub.cfg文件:
 update-grub2
之后,就可以重启电脑了,在previous version中就可以启动新编译的内核了

二.内核源码树目录:arch:包含和硬件体系结构相关的代码,每种平台占一个相应的目录。和32位PC相关的代码存放在i386目录下,其中比较重要的包括kernel(内核核心部分)、mm(内存管理)、math-emu(浮点单元仿真)、lib(硬件相关工具函数)、boot(引导程序)、pci(PCI总线)和power(CPU相关状态)。block:部分块设备驱动程序。crypto:常用加密和散列算法(如AES、SHA等),还有一些压缩和CRC校验算法。Documentation:关于内核各部分的通用解释和注释。drivers:设备驱动程序,每个不同的驱动占用一个子目录。fs:各种支持的文件系统,如ext、fat、ntfs等。include:头文件。其中,和系统相关的头文件被放置在linux子目录下。init:内核初始化代码(注意不是系统引导代码)。ipc:进程间通信的代码。kernel:内核的最核心部分,包括进程调度、定时器等,和平台相关的一部分代码放在arch/*/kernel目录下。lib:库文件代码。mm:内存管理代码,和平台相关的一部分代码放在arch/*/mm目录下。net:网络相关代码,实现了各种常见的网络协议。scripts:用于配置内核文件的脚本文件。security:主要是一个SELinux的模块。sound:常用音频设备的驱动程序等。usr:实现了一个cpio


ubuntu14.04编译linux 3.17.内核源码相关推荐

  1. android 3.10. 内核,编译android 3.10内核源码时出错

    最近我尝试为我的xiaomi mi4c交叉编译android内核. 要做到这一点,我已经下载并这样配置的工具链:从这里编译android 3.10内核源码时出错 git clone https://a ...

  2. android s905 编译_NanoPi K2 (Amlogic S905) Ubuntu 16.04 编译Android 5.1系统源码

    NanoPi K2 (Amlogic S905) Ubuntu 16.04 编译Android 5.1系统源码 1. 下载源码 在这里下载https://www.mediafire.com/folde ...

  3. linux编译ko文件(不同内核源码版本)

    最近编译内核驱动程序遇到了一些困难,网上下载与我的linux系统相同的版本,编译的时候过不去(每次都是编译到sound文件夹下时提示找不到xxx.c文件),后来经过多次的实验后便把内核换了别的版本作为 ...

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

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

  5. Ubuntu16.04编译Android 6.0系统源码过程简要记录总结

    一,安装VMware Workstation,百度网盘下载(内含注册机) 链接: https://pan.baidu.com/s/1wz4hdNQBikTvyUMNokSVYg 提取码: yed7 V ...

  6. 编译Android 9.0内核源码并刷入手机

    目的:修改内核源码,并刷入手机 步骤如下: 1.获取手机对应的内核下载地址 参考https://source.android.com/setup/build/building-kernels 我的设备 ...

  7. 编译天嵌E8内核源码

    不久前,买了一块天嵌E8的板,拿到资料后就试着编译一下所给的内核源码. 解压,进入源码目录,发现没有.config文件.于是: #cp config_for_E8_Linux .config 然后,# ...

  8. linux 4.1内核源码编译

    编译环境 Arch Linux on VirtualBox 下载内核 https://www.kernel.org/ 下载的内核压缩包,此时的最新内核版本为4.1: 解压包 # tar -xvJf l ...

  9. vc编译器编译linux平台拷贝的源码问题

    最近向windows平台移植一个linux的项目,编译老是出现问题. 具体症状: 在调试运行时,发现反汇编的的代码老是和源码对不上. 原因:linux平台上的文件格式一般是utf-8 无bom的格式, ...

最新文章

  1. 名词解释_写字楼租赁相关名词解释
  2. iOS 11开发教程(二十二)iOS11应用视图实现按钮的响应(2)
  3. 确保nginx安全的10个技巧
  4. 机会:新兴产业+大消费(转载)
  5. Ticket 服务: 一种经济的分布式唯一主键生成方案
  6. 口袋中的xmind如何添加优先等级图标
  7. 转python version 2.7 required,which was not found in the registry
  8. linux磁带存储,linux 磁带文件操作分析
  9. 计算机视觉应关注的资源
  10. 版权归原作者的飞鸽传书(IPMSG)
  11. [学习笔记]0/1分数规划
  12. python数据可视化柱状图_python数据可视化示例柱状图
  13. ajax常见的status状态码
  14. LINUX下载编译YASM
  15. css居中对齐的几种方式
  16. numpy中的ones函数
  17. 在字符串指定位置插入字符串C语言版
  18. iOS Apple登录一些限制与细节
  19. 论创业者的幸存者偏差
  20. 用BasicScrollBarUI实现一个简单的个性化滚动条皮肤

热门文章

  1. 基于ensp设计三层校园网络
  2. eclipse detach后恢复的方法
  3. OKR(Objectives and Key Results)学习心得
  4. java工程师报考费用_Java工程师的年薪是多少钱
  5. System 命名空间
  6. 程序员推荐简单有效的科学健脑方法
  7. [Win10] depends.exe(即Dependency Walker)运行很慢解决办法
  8. 新歌 wuha之《武汉》
  9. 微服务调用失败的一种解决方案
  10. UNI-APP开发在线预览PDF(ios,安卓,H5端亲测有效)