嵌入式Linux系统裁剪与微内核化.doc_第1页
嵌入式Linux系统裁剪与微内核化.doc_第2页
嵌入式Linux系统裁剪与微内核化.doc_第3页
嵌入式Linux系统裁剪与微内核化.doc_第4页
嵌入式Linux系统裁剪与微内核化.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

嵌入式Linux系统裁剪与编译 1 构建交叉编译环境 1.1 交叉编译原理简介 嵌入式开发一般都是使用交叉编译环境。交叉编译就是在一台计算机上编译软件,其生成的软件在另一台不同类型处理器的机器上运行。因为嵌入式硬件性能一般无法和家用计算机相比,无法构建开发和编译环境。所以我们只能“借”家用计算机来对目标平台的软件进行开发和编译。此时称家用计算机为宿主机,而目标平台机器为目标机。每一个软件。在编译过程中。都要经过一系列处理,才能从源代码变成可执行目标代码。这一系列处理包括,预编译、高级语言编译、汇编、连接及其重定位。这一套流程里面用到的工具和库的组合,就称为工具链。Linux上常用的开发工具GCC,它包含预编译器cpp,c语言编译器gcc,汇编器as和连接器ld。这个工具链中,还有用于处理二进制包的工具包binutils,整个工具链应该是GCC+binutils+Glibc。 为了编译在目标机上运行嵌入式Linux内核,首先我们必须编译目标平台的编译链,而这个链是存放在主机上,故名为交叉编译链。1.2 下载构建交叉编译链的工具及其补丁 Binutils-2.19.1 Busybox-1.13.0 GCC-4.3.3 GMP-4.2.4 MPFR-2.4.1 uClibc-0.9.30.1 制作交叉编译链 定义环境变量 定义MYSYS变量为嵌入式系统主目录变量、MYSYS_TARGET变量为目标平台、MYSYS_HOST为主机平台。使用export命令或者将此变量添加.bashrc文件中。 cat /.bashrc “EOF” set +h umask 022 MYSYS=/mnt/mysys LC_ALL=POSIX PATH=$MYSYS/ctools/bin:/bin:/usr/bin export MYSYS LC_ALL PATH EOF 这样我们设置了生成系统的根目录变量。 export MYSYS_HOST=”$MACHTYPE” export MYSYS_TARGET=”XXX-ulibc-linux-gnu”这两个变量都是编译过程需要使用的.XXX是目标平台,如arm平台,可写为arm-ulibc-linux-gun。 首先需要安装内核头文件。make mrproper make ARCH=$MYSYS_ARCH headers_checkmake ARCH=$MYSYS_ARCH INSTALL_HDR_PATH=dest headers_install制作工具链的时候需要使用部分内核头文件。 编译GMP。 ./configure -prefix=/ctools -enabled-mpbsd make make install 编译MPFR。 LDFLAGS=-Wl,-rpath,/ctools/lib ./configure -prefix=/ctools -enable-shared -with-gmp=/ctools cp -rv dest/include/* $MYSYS/usr/include make make install 第一次编译GCC AR=ar LDFLAGS=-Wl,-rpath,/ctools/lib ./gcc-4.3.3/configure -prefix=$MYSYS/ctools -build=$MYSYS_HOST -host=$MYSYS_HOST -target=$MYSYS_TARGET -with-sysroot=$MYSYS -disable-nls -disable-shared -with-mpfr=/ctools -with-gmp=/ctools -without-headers -with-newlib -disable-decimal-float -disable-libgomp -disable-libmudflap -disable-libssp -disable-threads -enable-languages=c make make install 此时的编译出来的gcc,是不可以编译c程序的。因为没有连接库。同时安装的Linux头文件也是这一步被使用。GCC必须掌握目标体系的全部细节,这由Linux的内核头文件给出。 编译uclibc库,当然也可以编译glibc库。编译最终版gcc ./gcc-4.3.3/configure -prefix=$CLFS/cross-tools -build=$CLFS_HOST -target=$CLFS_TARGET -host=$CLFS_HOST -with-sysroot=$CLFS -disable-nls -enable-shared -enable-languages=c -enable-c99 -enable-long-long -with-mpfr=/cross-tools -with-gmp=/cross-tools make make install 这样就得到了交叉编译链。1.3 下载Linux内核并进行裁剪Linux-2.6.30.5 2 Linux内核编译与裁剪 2.1 配置内核的几种命令: make config:基于文本的最为传统的配置界面,不推荐使用。 make menuconfig:基于文本选单的配置界面,字符终端下推荐使用。 make xconfig:基于图形窗口模式的配置界面,Xwindow下推荐使用。 make oldconfig:如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦。 make ARCH=$CLFS_ARCH CROSS_COMPILE=$CLFS_TARGET- menuconfig 通过对嵌入式需求分析,通过必要的勾选,即可完成对linux内核裁剪和重编译。 2.2讲解一些内核选项:2.2.1 General setup常规设置 子选项Prompt for development and /or incomplete code/drivers是测试版本代码。 Support for paging of anonymous memory(swap)选择是否支持内存随机页面支持(SWAP),如果嵌入式存储空间过小,可以去掉。可以提高运行速度。 Auditing support审计支持,SELinux会需要用到它。 Initial RAM filesystem and RAM disk support初始化RAM文件系统和RAM磁盘支持,初始RAM文件系统是一种ram文件系统,它被启动器装载,在启动程序前以root形式挂载。 Initramfs source files初始ram文件系统源文件。有.cpio后缀的压缩包。 Optimize for size 尺寸优化,可以得到更小的内核。 Configure standard kernel features(for small sysytems)为小系统配置标准内核特性。 2.2.2 Loadable module support 可加载模块支持Enable loadable module support允许可装载模块支持。此选项可以让你的内核支持模块。模块是一小段代码,编译后可在系统运行动态加入内核,从而为内核增加一些特性或是对某种硬件进行支持。一般一些不常用到的驱动或特性可以编译为模块以减小内核的体积。在运行时可以用modprobe命令来加载它到内核中去。Module unloading模块卸载,能卸载不再使用的模块。可以使内核尺寸减小一些。 Forced module unloading强制内核模块卸载,强行卸载模块,即使内核认为不安全,内核会理解卸载模块2.2.3 Enable the block layer 允许块设备 Support for Large Block Devices 提供对2TB活着更大的块设备支持。 Support for Large Single File提供对大文件支持,为大于2TB的文件。 Deadline I/O scheduler Deadline I/O调度简单紧密,在单进程的I/O磁盘调度上,它的工作方式几乎和抢先式调度器相同,因此也是一个好的选择。2.2.4 Processor type and features处理器类型及特性(此处可以针对嵌入式芯片进行裁剪) Symmetric multi-processing support(SMP)多处理器支持。 RDC R-321x Soc RDC R-321x系列芯片 Processor family及其子选项,可以针对选择处理器。 Generic X86 support对X86 CPU类型进行优化。 Maximum number of CPUs 最大支持的CPU数量。 Multi-core scheduler support多核调度器支持。 Preemptible Kernel可抢先式内核,这个选项通过使所有内核代码编译为“可抢先”来降低内核延迟。这个非常适合嵌入式编译内核。 High Memory Support高容量内存支持。如果内核不会运行在高于1G内存的机器上,就去掉。 Timer frequency时钟频率的设置。 Built-in kernel command line内嵌内核命令行,允许编译内核的时候指定 2.2.5 Power management options 电源管理选项 Suspend to RAM and standby内存挂起和待机功能。允许系统休眠,主内存仍带电保存相关信息。 Hibernation 休眠 AC Adapter AC交流电源适配器 Battery电池 Button 风扇 ARM BIOS support高级电源管理支持。2.2.6 Bus options 总线选项2.2.7 Executable file formants 可执行文件格式 Kernel support for ELF Binaries ELF二进制文件内核支持2.2.8 Networking support 网络支持 Packet socket包套接字 Unix domain sockets UNIX域套接字THE IPv6 protocol IPv6协议。Security Marking给网络套接字提供安全标志。Network packet filtering framework 网络包过滤框架。Asynchronous Transer Mode(ATM)异步传输模式,如果有ATM网卡,可选。Appletalk protocol support苹果电脑用于连接网络的协议。ld Ethernet Bridging 802.ld以太网桥接。 802.1Q VLAN support 802.1Q VLAN接口支持。The IPX protocol IPX协议,这是对Novell网络的协议,这个驱动会使内核增大16KB. Bluetooth subsystem support 蓝牙子系统支持。Phonet protocols family 网络电话协议家族。 Wireless无线支持。 IrDA(infrared) subsystem support红外子系统支持。2.2.9 Device Drivers 设备驱动 MTD partitioning support如果有一个设备,需要将他分成几个分区。Parallel port support并行端口支持。Plug and Play support即插即用设备。 Block devices块设备。 Normal floppy disk support普通软盘支持。 Network block device support网络块设备。 Low Performance USB Block driver低端USB块驱动设备。 RAM block device support RAM块设备支持 Packet writing on CD/DVD media CD/DVD媒体包写入。 ATA over Ethernet support 以太网ATA支持。 ATA/ATAPI/MFM/RLL support如果系统是纯种SCSI,那么可以选择N。Support for DATA支持。 SCSI device support SCSI设备支持。 SCSI disk support SCSI磁盘支持。 RAID support RAID支持。 Network device support网络设备支持。 Input device support 输入设备支持。 Graphics support 图形支持。 Sound 声音。 HID Devices HID设备。 USB Human Interface Device supports 人性化接口设备。 USB support USB支持。 MMC/SD card support MMC/SD卡支持。可以从选项知,这是进行嵌入式裁剪非常重要的一个选项。我们可以为嵌入式环境量身打造我们需要的驱动,去掉我们不需要的驱动,那么Linux内核将减小很多。 2.2.10 Firmware Divers 固件驱动2.2.11 File systems 文件系统 Second extended fs support 第二次扩展文件支持,既Ext2文件系统。 Ext3 journalling file system support Ext3日志文件系统。 Ext3 extended attributes Ext3扩展属性。The Extended 4(ext4) filesystem ext4扩展文件系统。 JFS filesystem support JFS文件系统支持。 XFS filesystem support XFS文件系统支持。 OCFS2 file system support OCFS2文件系统。 Kernel automounter support 内核自动挂载支持。 CD-ROM/DVD Files

温馨提示

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

评论

0/150

提交评论