配置编译内核.

Slides:



Advertisements
Similar presentations
旋毛虫病  旋毛虫为毛首目毛形科的线虫,是一种人 畜共患病。幼虫寄生于肌肉中称肌旋毛虫, 成虫寄生于小肠称肠旋毛虫。它是多宿主 寄生虫。除猪、人以外,鼠类、狗、猫、 熊、狼等均可感染,目前已有 65 种哺乳动 物可感染此病。
Advertisements

哈工大计算机科学与技术学院软件基础教研室 第二部分 Android 与工程和科研 授课教师:李治军 综合楼 411 室 第 6 讲 进入 Android 内核 Lecture 6: Get Into the Android Kernels.
Linux 安裝入門與基本管理 課程目標: 學習Linux平台下的安裝設定 與 建置一個基本的Linux伺服器
毛峰教授 北京师范大学教授,博士生导师 国家社科基金项目专家 北京华文教育顾问
ARM 嵌入式系统 第七章 嵌入式Linux.
计算机网络 指导教师:杨建国 二零一零年三月.
Linux 的历史、现状和未来 2011 《网管员世界》杂志社 副总编辑 孙浩峰.
红旗Linux认证培训 课程介绍.
Linux基礎學習 課本:Ubuntu Linux 管理與架站實務 博碩文化出版發行.
第1章 Linux概述 马丽洁.
基于ARM和linux的开发 华中科技大学 武汉创维特 2017/3/20.
Linux 入門課程(介紹篇) 講者: Pank
UClinux在3000平台上的移植.
資訊安全與系統管理 2013/3/13 Chien wei lin.
UNIX系統與資料庫安裝 Why UNIX 常用的工具程式介紹 資料庫的安裝.
第16章 編譯與升級Kernel系統核心 課前指引
Chapter 13 輸入/輸出系統 (I/O Systems)
QtiPlot-實驗室數據分析與繪圖 撰文者: 1.海洋大學光電所 楊善文 2. (如對本文有貢獻者,記得在此留名)
Linux Further.
當企鵝龍遇上小飛象 DRBL-Hadoop Jazz Wang Yao-Tsung Wang
第7章:文件共享与远程控制 第6章:vi/vim——回顾 本章教学目标: vi/vim的三种工作模式 vi/vim的基本用法
Linux.
Linux的認識與使用 2013/01/05.
嵌入式操作系统 陈香兰 Fall 2009.
Building Embedded Linux 2
网络仿真工具介绍
第 19 章 檔案系統與 權限設定.
内核移植实例.
本 章 重 點 9-1 檔案系統簡介 9-2 檔案管理.
實現雲端運算 Hadoop HDFS 磁碟及記憶體之即時分級服務
Bootloader技术分析.
DM81X 视频采集处理 ——软硬件环境介绍 广州创龙电子科技有限公司
Linux 圖形操作介面 GUI -- X-window 與 Webmin
高并发之Redis初级 讲师:杨振平 博客地址:blog.csdn.net/yangzhenping
第9章 資訊倫理與道德 實用資訊.
Linux 系統管理 計網中心網路組 楊世偉.
嵌入式系統架構 長高科技 顏旭偉.
第3章 Linux系统的基本操作 3.1 X Window图形化用户界面 3.2 GNOME的桌面环境 3.3 窗口和菜单操作
Installation, advance wireless module and evaluation 2008/11/11
编译与多文件.
本节我们结合AD5724驱动时序给大家介绍一下状态机在实际工程中的使用。
CH.8 硬體管理.
陈香兰 助教:陈博、李春华 Spring 2009 嵌入式操作系统 陈香兰 助教:陈博、李春华 Spring 2009.
Native Development Kit
第2章 Linux概述 2.1 操作系统的功能和分类 2.2 Linux操作系统概述 2.3 Linux的应用现状与前景
Linux 基础知识讲座 红星中学 点动 IT社 主讲:姚宇晨
伺服器探索營 Day 1 指導老師: 張啟中 (JohnAxer) 教學助理:
DMA-2440XP WinCE5.0安裝與使用 長高科技 顏旭偉.
永远的 Autotools ——GNU Build System 简介(一)
嵌入式系统的Boot Loader技术 陈文智 浙江大学计算机学院 2009年5月.
内核移植基础.
中国科学技术大学计算机系 陈香兰(0512- ) 助教:孟宁 Fall 2009
TinyOS开发环境安装 基于Ubuntu14.04.
(第2版).
Linux核心編譯與模組管理 2013/01/19.
雲端計算.
编辑文本文件 软件包管理 Samba 在Linux下使用Windows共享打印机
2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A Lab3.
Author:BobZhang Copy Right 2007
Linux作業系統 電腦教室Linux使用說明.
2018 Operating Systems 作業系統實習 助教:林欣穎 實驗室:720A Lab3.
实验一:编译运行Linux内核并使用gdb进行调试
第12章 Linux與 嵌入式uClinux系統
實驗一 OAI-LTE與WiFi網路整合的實驗平台建置
行動寬頻介接網路與IoT實務應用-實驗課程
Git 新一代版本控制系统 superwen.
獨孤派作業系統 main memory 中正大學 作業系統實驗室 指導教授:羅習五.
Linux网络配置管理.
课程介绍 1、嵌入式系统开发先序课程; 2、共32+8课时: 3、本期采用混合式教学成绩计算方式:
第六章 文件系统与文件管理 6.4 Linux文件管理 1、比较MS DOS 与 Linux的目录结构 一、Linux文件系统的树形结构
Presentation transcript:

配置编译内核

主要内容 Linux内核简介 Linux内核源码结构 Linux内核配置、编译 Linux内核配置系统 内核配置选项

Linux内核简介 从技术上说 Linux 是一个内核 “内核”指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功 能的系统软件。一个内核不是一套完整的操作系统。 通常我们使用的 Linux 系统是一个集 Linux 内核、工具集、各种库、桌 面管理器、应用程序等一体的一个发布包 (发行版)‏

Linux内核简介 主流的 Linux 发行版 Debian GNU/Linux Red Hat Linux Fedora Core Ubuntu Linux SUSE Linux Gentoo Linux Asianux Slackware Linux Turbo Linux CentOS

Linux内核简介 Linux 内核的特性 可以移植,支持的硬件平台广泛 有MMU和没有MMU的处理器均支持 32 bit 处理器 (arch/ subdirectories)‏:alpha, arm, cris, frv, h8300, i386, m68k, m32r,m68knommu, mips, parisc, ppc, s390, sh, sparc, um, v850 64 处理器:ia64, mips64, ppc64, sh64, sparc64, x86_64 更多的细节看Documentation/<arch>/ (arch为处理器类型如 ”arm“) 高可扩展性 可剪裁、可扩展,可以运行在大型主机,也可以运行在个人计算机上

Linux内核简介 高可靠性、稳定性 稳定性是linux鲜明特点,安装了linux系统的主机,连续运行一年不宕机是很平 常的事情 超强的网络功能 真正的多任务,多用户系统 多个用户可以同时登录到系统同时工作 耗费的资源相对较少 模块化设计 模块可以动态加载,卸载,可以减少系统体积,同时可以用来解决冲突问题,模 块调试 遵循GPL开源许可协议的,开放系统 编程更加简单,资源丰富

Linux内核简介 GPL相关资料 GPL = General Public License http://www.gnu.org/copyleft/copyleft.html http://www.gnu.org/licenses/gplfaq.html

Linux内核简介 Linux内核子系统 进程管理 内存管理 文件系统 网络协议 设备管理

Linux内核源码结构 源码获取 https://www.kernel.org/ https://www.kernel.org/pub/linux/kernel/v3.x/ $ wget -c https://www.kernel.org/pub/linux/kernel/v3.x/linux- 3.14.25.tar.xz mainline:是主线版本 stable:是稳定版 longterm:是长期支持版

Linux内核源码结构

Linux内核源码结构 目录 描述 arch/ 体系结构相关的代码,例如:arch/i386, arch/arm,arch/ppc block/ 部分块设备驱动程序 crypto/ 加密、压缩、CRC校验算法 Documentation/ 内核文档 drivers/ 各种设备驱动程序,例如:drivers/char drivers/block … firmware/ 一些设备运行需要的固件 fs/ 文件系统,例如:fs/ext3/ fs/jffs2 … include/ include/asm是体系结构相关的头文件,它是 include/asm-arm等目录的链接。include/linux是 Linux内核基本的头文件

Linux内核源码结构 目录 描述 init/ Linux初始化,例如:main.c ipc/ 进程间通信的代码 kernel/ lib/ 各种库子程序,例如:zlib, crc32 mm/ 内存管理代码 net/ 网络支持代码,主要是网络协议 samples/ 一些内核编程的范例 scripts/ 内部或者外部使用的脚本

Linux内核源码结构 目录 描述 security/ SElinux的模块 sound/ 声音驱动的支持 usr/ 用户的代码,如cpio的实现 virt/ 内核虚拟机

Linux内核配置、编译 查看帮助 生成默认配置并修改配置 $ make ARCH=arm help …… exynos_defconfig - Build for exynos 生成默认配置并修改配置 $ make ARCH=arm exynos_defconfig $ make menuconfig 或 $ cp arch/arm/configs/exynos_defconfig .config

Linux内核配置、编译 功 能 配 置 方 式 通过命令行程序更新当前配置 config 功 能 config 通过命令行程序更新当前配置 menuconfig 通过菜单程序更新当前配置(使用sudo apt-get install libncurses5-dev命令安装ncurses 库) xconfig 通过Qt图形界面更新当前配置(使用sudo apt-get install qt4-dev-tools命令安装qt4开发工具) gconfig 通过GTK图形界面更新当前配置(使用sudo apt-get install libglade2-dev命令安装gtk图形库) oldconfig 通过已经提供的.config文件更新当前配置

Linux内核配置、编译

Linux内核配置、编译

Linux内核配置、编译 编译 $ make ARCH=arm uImage -j2 $ make ARCH=arm dtbs 如果不想每次都在命令行中输入ARCH=arm,则可以通过修改顶层的Makefile文件来 实现(也可以设置交叉编译工具链前缀)。 将:ARCH ?= $(SUBARCH) 改为:ARCH ?= arm

Linux内核配置、编译 make zImage make uImage make dtbs make modules make modules_install

Linux内核配置、编译 编译生成的文件 vmlinux 未压缩的Linux内核 arch/<arch>/boot/zImage 经zlib压缩后的Linux内核 arch/<arch>/boot/bzImage 经zlib压缩后的Linux内核,b是指big,压缩比更高 arch/<arch>/boot/uImage Uboot格式的内核文件(会用到uboot工具mkimage)

Linux内核配置、编译 编译生成的文件 System.map 内核符号地址 modules.order 编译生成的模块名称 /lib/modules/<version> 缺省模块安装路径 modules.dep 模块依赖文件 arch/<arch>/boot/dts/*.dtb 编译生成的设备树文件

Linux内核配置、编译 其他编译选项 查看帮助 make help 查看完整命令行 make V = 1 删除生成的文件 make clean 删除全部生成的文件,包括.config make mrproper #执行完该命令后要重新配置内核 生成tags文件 make tags

Linux内核配置系统 配置过程和结果 make %config 执行过程 配置结果 顶层Makefile-> scripts/kconfig/Makefile-> $< arch/$(ARCH)/Kconfig $< 为 mconf|conf|qconf|gconf 等 配置结果 .config 保存类似 CONFIG_xxx 的定义,供Makefile使用 顶层Makefile有-include .config include/generated/autoconf.h include/linux/kconfig.h 文件中包含引用了include/generated/autoconf.h文件, 保存类似 #define CONFIG_xxx,#undef CONFIG_xxx的配置

Linux内核配置系统 Kconfig 简单语法-菜单 menu 、endmenu menu <prompt> <menu options> <menu block> endmenu choice、endchoice (例如:arch/arm/Kconfig) choice <choice options> <choice block> endchoice

Linux内核配置系统 source source <prompt> 例如:drivers/Kconfig 详细信息参看相关内核文档:Documentation\kbuild

Linux内核配置系统 config config MODVERSIONS bool "Set version information on all module symbols" depends MODULES help Usually, modules have to be recompiled whenever you switch to a new kernel. ... type definition bool/tristate/string/hex/int input prompt prompt <prompt> [if <expr>]

Linux内核配置系统 dependencies depends on/requires <expr> numerical ranges range <symbol> <symbol> [if <expr>] help text help or ---help---

Linux内核配置系统 顶层 Makefile .config 文件中CONFIG_XXX=y/m 定义 ARCH CROSS_COMPILE CPPFLAGS SUBDIRS LIBS … vmlinux: include arch/$(ARCH)/Makefile menuconfig: include/linux/version.h symlinks clean:

Linux内核配置系统 各层子目录下 Makefile compiling the dependent objects in the directories obj-y, obj-m obj-$(CONFIG_XXX) += ???.o 递归目录 obj-$(CONFIG_XXX) += subdirname/ 静态编译进内核与编译成动态加载模块 Compiled as a separate module CONFIG_ISO9660_FS=m Driver options CONFIG_USB=y CONFIG_SCSI=y Compiled statically in the kernel CONFIG_PROC_FS=y 详细信息参看相关内核文档:Documentation\kbuild

内核配置选项 执行make menuconfig出现的配置菜单。 在各级子菜单项种,选择相应的配置时,有3种选择,它们代表的含义分别 如下。 在各级子菜单项种,选择相应的配置时,有3种选择,它们代表的含义分别 如下。 y-将该功能编译进内核。 n-不将该功能编译进内核。 m-将该功能编译成可以在需要时动态加载到内核中的模块。 可以按下相应的字母键进行选择,也可以使用空格键进行切换

内核配置选项 如果使用的是make xconfig,使用鼠标就可以选择对应的选项。 如果使用的是make menuconfig,则需要使用方向键和回车键进行选取。 中括号——可以选y和n 尖括号——可以选y、n和m 圆括号——填入实际的内容(字符串,整数值等)

内核配置选项 “General setup”菜单包含通用的一些配置选项 “System Type”菜单包含系统平台列表及其相关的配置选项 CONFIG_CROSS_COMPILE指定交叉编译工具的前缀。 “System Type”菜单包含系统平台列表及其相关的配置选项 CONFIG_ARCH_EXYNOS是三星Exynos系列SoC的配置选项。 “Networking”菜单包含网络协议支持选项 CONFIG_PACKET支持socket接口的功能。 CONFIG_INET选项支持TCP/IP网络协议。 CONFIG_IPV6选项支持IPv6协议的支持。 “Device Drivers”菜单包含各种设备驱动程序 “Network device support”菜单对应drivers/net目录的配置选项,包含各类 网络设备驱动程序。 “MMC/SD Card support”菜单对应drivers/mmc目录的配置选项,包含MMC/SD 卡的驱动程序。

内核配置选项 “File systems”菜单包含各种文件系统的支持选项 “Kernel hacking”菜单包含各种内核调试的选项 CONFIG_EXT2_FS选项支持EXT2文件系统。 “DOS/FAT/NT Filesystems”子菜单包含DOS/Windows的一些文件系统类型选项。 “Pseudo filesystems”子菜单包含sysfs procfs等驻留在内存中的伪文件系 统选项。 “Miscellaneous filesystems”子菜单包含JFFS2等其他类型的文件系统。 “Network File Systems”子菜单包含NFS等网络相关的文件系统。 “Kernel hacking”菜单包含各种内核调试的选项