第四Linux内核配置和编译.pptx_第1页
第四Linux内核配置和编译.pptx_第2页
第四Linux内核配置和编译.pptx_第3页
第四Linux内核配置和编译.pptx_第4页
第四Linux内核配置和编译.pptx_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

LINUXkernelconfigurationandcompilation Allrightsreserved BUAAAllrightsreserved Theinformationcontainedinthisdocumentissubjecttochangewithoutnotice 2 内容提纲 Linux内核简介内核源码结构配置 编译内核makezImagemakemodulesLinux2 6以后的版本 make搞定一切嵌入式文件系统 预备知识 C语言编程知识linuxshell编程基本知识嵌入式的组成 基本概念交叉编译工具gnu工具链的使用make gcc ld等等最好熟悉相关硬件的体系结构 嵌入式Linux的组成 嵌入式Linux由以下三个部分组成为 Bootloader 引导加载程序 内核根文件系统 嵌入式Linux的构建 在嵌入式Linux的构建中 Bootloader和Linux内核一般都有相对成熟的代码 主要的工作有两步 第一步是根据本系统硬件平台的状况进行移植 第二步是采取交叉编译对源代码进行编译 形成运行时需要的映象 Image 文件 嵌入式Linux的构建 Bootloader的移植 嵌入式Linux的构建 Linux内核的移植 嵌入式Linux的构建 Linux内核的启动并不依赖于根文件系统 rootfs 但是要保证Linux内核的正常运作 还是需要根文件系统的支持 在构建系统的过程中需要为系统生成根文件系统的映像文件 让Linux内核在启动的时候挂载 mount 根文件系统 Linux内核配置和编译的流程 Linux内核从配置到安装大致有如下步骤 配置内核 最常见的命令为makemenuconfig建立依赖关系 最常见的命令为makedep编译内核 最常见的命令为make或makezImage编译内核模块 最常见的命令为makemodules安装内核模块 最常见的命令为makemodules install安装内核 最常见的命令为makeinstall Linux内核 从技术上说linux是一个内核 内核 指的是一个提供硬件抽象层 磁盘及文件系统控制 多任务等功能的系统软件 一个内核不是一套完整的操作系统 通常我们使用的linux系统是一个集linux内核 工具集 各种库 桌面管理器 应用程序等等于一体的一个发布包 发行版 DebianGNU LinuxRedHatLinuxFedoraCoreUbuntuLinuxSUSELinuxGentooLinuxAsianuxConectivaLinuxKnoppixLinuxMagicLinuxMandrivaLinuxSlackwareLinuxStanixLiveCDTurboLinuxCentOS 主流的Linux发行版 Linux内核的特性 可以移植 支持的硬件平台广泛有MMU和没有MMU的处理器均支持32bit处理器 arch subdirectories alpha arm cris frv h8300 i386 m68k m32r m68knommu mips parisc ppc s390 sh sparc um v85064处理器 ia64 mips64 ppc64 sh64 sparc64 x86 64更多的细节看Documentation arch为处理器类型如 arm 高可扩展性可剪裁 可扩展 可以运行在大型主机 也可以运行在个人计算机上高可靠性 稳定性稳定性是linux鲜明特点 安装了linux系统的主机 连续运行一年不宕机是很平常的事情超强的网络功能真正的多任务 多用户系统多个用户可以同时登录到系统同时工作耗费的资源相对较少安全性 模块化设计模块可以动态加载 卸载 可以减少系统体积 同时可以用来解决冲突问题 模块调试遵循GPL开源许可协议的 开放系统编程更加简单 资源丰富 GPL GeneralPublicLicensehttp www gnu org copyleft copyleft htmlhttp www gnu org licenses gplfaq html GPL相关资料 Linux内核版本 目前linux系统采用A B C D的版本号管理方式A表示linux的主版本号B表示linux的次版本号 B为偶数表示稳定版本 奇数表示开发中的版本C表示linux的发行版本号D表示更新版本号如2 2 26 2 4 36 6 2 6 26均表示linux稳定版本 2 5 0则表示非稳定版本主版本 X Y 一般2 3年发布1 02 02 22 42 6稳定版本发布一般1 2月2 0 402 2 122 4 182 6 15稳定更新版本 1 2周更新2 6 23 1 2 6 23 7Kernel org上目前维护的主版本2 22 42 6 Linux内核子系统 进程管理内存管理文件系统网络协议设备管理 Linux内核模块结构图 initkernelmmipclibfsnetdrivers Linux内核代码结构1 arch i386armppcm68ksh include Linux系统源代码目录结构 2 Linux系统源代码目录结构 3 下载内核http kernel orgwgethttp kernel org pub linux kernel wgethttp kernel org linux bz2 signgpg verifylinux 2 xx tar bz2 signtarjxvflinux 2 xx tar bz2 内核配置与编译 1 Linux内核 Linux内核配置和编译的流程Linux内核配置Linux内核的编译 Linux内核配置和编译的流程 在内核源代码目录下输入 makeXXXconfig 等命令之一就可以对内核进行配置 makeconfig提供了一个命令行界面 然后对每一个内核选项依次询问用户的选择 makemenuconfig提供了一个基于终端curses的图形界面配置菜单 makexconfig提供了一个基于GTK的XWindow图形界面配置菜单 makeoldconfig和makeconfig类似 不过它只提示用户设置之前没有配置过的选项 根文件系统 Linux内核配置和编译的流程Linux内核配置Linux内核的编译 Linux内核配置和编译的流程 在内核源代码目录下输入 makeXXXconfig 等命令之一就可以对内核进行配置 makeconfig提供了一个命令行界面 然后对每一个内核选项依次询问用户的选择 makemenuconfig提供了一个基于终端curses的图形界面配置菜单 makexconfig提供了一个基于GTK的XWindow图形界面配置菜单 makeoldconfig和makeconfig类似 不过它只提示用户设置之前没有配置过的选项 makeARCH armCROSS COMPILE arm linux menuconfig Linux内核配置 内核都会在配置完后生成一个 config文件 还会产生大量的符号连接和头文件 这些在其余的创建过程中会用到 config文件中保存了根据在menuconfig中的选择定义的相应变量 在Linux内核目录下的Makefile文件中将会包含这个文件 重要的内核选项包括 Codematurityleveloptions 内核成熟级别选项 Loadablemodulesupport 可加载模块支持 Generalsetup 通用设置 Memorytechnologydevices 内存技术设备 Blockdevices 块设备 Networkdevicesupport 网络设备支持 Characterdevices 字符设备 Filesystems 文件系统 Consoledrivers 控制台驱动 Linux内核的编译 建立内核依赖关系 linux 2 6 x不再需要这个步骤 makedep编译内核 makezImage或者 make单独地编译内核模块 makemodules如果编译成功 所生成的内核映像文件将放置在arch ARCH boot目录下 对于ARM架构来说就是arch arm boot目录 内核配置与编译 2 使用补丁升级如果你有一个版本可以到kernel org下载相应的升级补丁如果想从2 4 26升级到2 4 27则可以wget cftp ftp kernel org pub linux kernel v2 4 patch 2 4 27 bz2wgetftp ftp kernel org pub linux kernel v2 4 patch 2 4 27 bz2 sign如果想从2 6 11升级到2 6 11 12则可以wgethttp www kernel org pub linux kernel v2 6 patch 2 6 11 12 bz2wgethttp www kernel org pub linux kernel v2 6 patch 2 6 11 12 bz2 sign确认下载的补丁是否正确gpg verifypatch 2 4 27 bz2 sign为内核代码打补丁cdlinux2 4 26 bzcat patch 2 4 27 bz2 patch p1cd mvlinux 2 4 26linux 2 4 27 内核配置与编译 3 我们配置和编译内核主要关心两类文件顶层Makefile和各层目录下MakefileKconfig相关文档见 Documentation kbuildkconfig language txtKconfig语法makefiles txtLinux内核Makefiles文档modules txt如何编译和安装模块 内核配置步骤 1 makemrproper2 选择一个和开发板相似的默认配置如 arch arm configs smdk2410 defconfigcparch arm configs smdk2410 defconfig config3 修改makefileARCH armCROSS COMPILE arm linux 4 执行配置命令make menuconfig config xconfig gconfig oldconfig 3 4部也可以使下列命令makeARCH armCROSS COMPILE arm linux menuconfig以上2 4亦可以合并为makeARCH armCROSS COMPILE arm linux smdk2410 defconfig makexconfig界面 makemenuconfig界面 代码成熟度 模块 可执行文件格式 设备驱动 文件系统 内核调试 GeneralSetup 缺省命令行选项配置 SpecifyNFSserverifNFSrootfilesystemisused 缺省命令行选项配置说明 root dev nfsrwnfsroot 192 168 0 1 opt target rootfsip 192 168 0 5 192 168 0 1 192 168 0 1 255 255 255 0 SHE eth0 offconsole ttyS0 dev nfsisavirtualdevicewhichcanspecifykerneltomountNFSrootfilesystem Accessprivilege nfsroot ip Specifyconsole 其他常用命令行选项 root指定根文件系统ro rw指定挂在的文件系统的属性只读 可写init指定内核初始化完成后调用的用户空间程序缺省 sbin init 见内核启动代码console指定打印信息的终端mem指定内存的大型Initrd指定ramdisk引导时根文件系统所在的内存位置和大小参见文档 Documentation kernel parameters txt 内核命令行选项的例子 HPiPAQh2200PDAbootingexample root dev ram0 Rootfilesystem firstramdisk rw Rootfilesystemmountingmodeinit linuxrc Firstuserspaceprogramconsole ttyS0 115200n8 Console serial console tty0 Otherconsole framebuffer ramdisk size 8192 Miscparameters cachepolicy writethrough 加载和保存配置 选择 LoadanAlternateConfigurationFile 加载一个已经配置好的配置文件选择 SaveConfigurationtoanAlternateFile 将当前配置保存到一个配置文件中 配置过程和结果 make config执行过程顶层Makefile scripts kconfig Makefile arch ARCH Kconfig 为mconf conf qconf gconf等配置结果如果include linux 不存在则创建 config保存类似CONFIG xxx的定义 供Makefile使用顶层Makefile有 include config cmd include configinclude linux autoconf hinclude linux config h文件中包含引用了linux autoconf h文件保存类似 defineCONFIG xxx undefCONFIG xxx的配置 Kconfig简单语法 菜单 menu endmenu menu endmenu choiceendchoice choice endchoice arch arm Kconfigsource source drivers Kconfig详细信息参看相关内核文档 Documentation kbuild Kconfig简单语法 菜单项 configconfigMODVERSIONSbool Setversioninformationonallmodulesymbols dependsMODULEShelpUsually moduleshavetoberecompiledwheneveryouswitchtoanewkernel typedefinition bool tristate string hex int inputprompt prompt if defaultvalue default if dependencies dependson requires reversedependencies select if drivers video Kconfignumericalranges range if helptext help or help 详细信息参看相关内核文档 Documentation kbuild 内核Makefile简介 顶层Makefile config文件中CONFIG XXX y m n定义ARCHCROSS COMPILECPPFLAGSSUBDIRSLIBS boot vmlinux MAKE CFLAGS CFLAGS CFLAGS KERNEL Carch ARCH bootvmlinux includearch ARCH Makefilemenuconfig include linux version hsymlinksclean 各层子目录下MakefileCompilingthedependentobjectsinthedirectoriesobj y obj mobj CONFIG XXX o递归目录obj CONFIG XXX subdirname 静态编译进内核与编译成动态加载模块CompiledasaseparatemoduleCONFIG ISO9660 FS mDriveroptionsCONFIG USB yCONFIG SCSI yCompiledstaticallyinthekernelCONFIG PROC FS y详细信息参看相关内核文档 Documentation kbuild 编译内核 编译2 4内核步骤makedepmakezImagemakemodulesmakemodules install编译2 6内核makezImagemakemodulesmakemodules install vmlinux未压缩的Linux内核arch boot zImage经zlib压缩后的Linux内核arch boot bzImage经zlib压缩后的Linux内核 b是指big 压缩比更高arch boot uImageUboot格式的内核文件 会用到uboot工具mkimage boot vmlinuz 经zlib压缩后的Linux内核 编译生成的文件 boot System map 内核符号地址 boot initrd im

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论