1、第8章 构建嵌入式Linux系统,第8章 构建嵌入式Linux系统,8.1 嵌入式Linux系统的构建流程 8.2 Bootloader 8.3 Linux内核 8.4 根文件系统,8.1 嵌入式Linux系统的构建流程,嵌入式Linux的组成 嵌入式Linux的构建,嵌入式Linux的组成,嵌入式Linux由以下三个部分组成为: Bootloader(引导加载器) 内核 根文件系统,嵌入式Linux的构建,在嵌入式Linux的构建中,Bootloader和Linux内核一般都有相对成熟的代码。主要的工作有两步:第一步是根据本系统硬件平台的状况进行移植;第二步是采取交叉编译对源代码进行编译,形
2、成运行时需要的映象(Image)文件。,嵌入式Linux的构建,Bootloader的移植,嵌入式Linux的构建,Linux内核的移植,嵌入式Linux的构建,Linux内核的启动并不依赖于根文件系统(rootfs),但是要保证Linux内核的正常运作,还是需要根文件系统的支持。在构建系统的过程中需要为系统生成根文件系统的映像文件,让Linux内核在启动的时候挂接(mount)根文件系统。,8.2 Bootloader,嵌入式linux的引导方式 Bootloader的作用,嵌入式linux的引导方式,启动加载(Boot Loader)模式:启动加载模式也称为“自主”(Autonomous)
3、模式。在这种情况下,Boot Loader 从目标机上的某个固态存储设备上将操作系统加载到 RAM 中运行,整个过程并没有用户的介入。下载(Downloading)模式:在下载模式中,目标机上的 Boot Loader 将通过串口连接或网络连接等通信手段从主机(Host)下载文件。工作于这种模式下的 Boot Loader 通常都会向它的终端用户提供一个简单的命令行接口。,嵌入式linux的引导方式,根据所使用的存储介质和开发阶段的不同,可以采用不同的系统引导方式: 使用可固化存储设备(如FLASH) 使用磁盘设备 通过网络引导,Bootloader的作用,Bootloader是系统启动后首先
4、运行的程序,对于嵌入式linux操作系统的Bootloader,其最基本的功能是加载linux的内核并运行。Bootloader一般还具有以下的功能: 通讯功能FLASH相关功能用户接口功能,8.3 Linux内核,Linux内核配置和编译的流程 Linux内核配置 Linux内核的编译,Linux内核配置和编译的流程,Linux内核从配置到安装大致有如下步骤:配置内核:最常见的命令为 make menuconfig建立依赖关系:最常见的命令为 make dep编译内核:最常见的命令为 make 或 make zImage编译内核模块:最常见的命令为 make modules安装内核模块:最常
5、见的命令为 make modules_install安装内核:最常见的命令为 make install,Linux内核配置和编译的流程,在内核源代码目录下输入“make XXXconfig”等命令之一就可以对内核进行配置:make config提供了一个命令行界面,然后对每一个内核选项依次询问用户的选择。make menuconfig提供了一个基于终端curses 的图形界面配置菜单。make xconfig提供了一个基于GTK 的X Window 图形界面配置菜单。make oldconfig和make config类似,不过它只提示用户设置之前没有配置过的选项。,8.4 根文件系统,Lin
6、ux内核配置和编译的流程 Linux内核配置 Linux内核的编译,Linux内核配置和编译的流程,在内核源代码目录下输入“make XXXconfig”等命令之一就可以对内核进行配置:make config提供了一个命令行界面,然后对每一个内核选项依次询问用户的选择。make menuconfig提供了一个基于终端curses 的图形界面配置菜单。make xconfig提供了一个基于GTK 的X Window 图形界面配置菜单。make oldconfig和make config类似,不过它只提示用户设置之前没有配置过的选项。,# make ARCH=arm CROSS_COMPILE=a
7、rm-linux- menuconfig,Linux内核配置,内核都会在配置完后生成一个.config文件,还会产生大量的符号连接和头文件,这些在其余的创建过程中会用到。.config 文件中保存了根据在menuconfig中的选择定义的相应变量,在Linux内核目录下的Makefile文件中将会包含这个文件。,重要的内核选项包括:Code maturity level options (内核成熟级别选项)Loadable module support (可加载模块支持)General setup (通用设置)Memory technology devices (内存技术设备)Block de
8、vices (块设备)Network device support (网络设备支持)Character devices (字符设备)Filesystems (文件系统)Console drivers (控制台驱动),Linux内核的编译,建立内核依赖关系(linux-2.6.x不再需要这个步骤): # make dep 编译内核: # make zImage 或者 # make 单独地编译内核模块: # make modules如果编译成功,所生成的内核映像文件将放置在arch/$ARCH/boot目录下,对于ARM 架构来说就是 arch/arm/boot 目录。,8.4 根文件系统,Lin
9、ux下的文件系统 嵌入式Linux的文件系统介绍 Linux的根文件系统,Linux下的文件系统,在UNIX系统中,文件系统是最基本的资源。在系统内核和文件系统之间制定一个标准的接口而实现的,不同文件结构之间可以通过该接口方便地交换数据。Linux正是使用这种方式,在系统内核和文件系统之间提供了一种标准接口VFS(virtual file system,虚拟文件系统)。 Linux下的文件系统,由虚拟文件系统和实际的文件系统两个层次组成。目前常用的有EXT2、CRAMFS、JFFS2、NFTL、NFS和RAM 磁盘文件系统等。,Linux下的文件系统,嵌入式Linux的文件系统介绍,在嵌入式L
10、inux中,常见的文件系统有以下几种:EXT2/3 (扩展文件系统2/3)ROMFS(Read Only Memory File System,只读文件系统)CRAMFS(Compress Read Access Memory File System,压缩只读文件系统)JFFS2(Jounaling FlashFilesystem 2,日志文件系统2)NFS(Net File System,网络文件系统)YAFFS(Yet Another FlashFile System,另一种FLASH文件系统),Linux的根文件系统,Linux 的根文件系统的主要目录: /bin:包含基本的用户命令工具程序 /sbin:包含基本的系统管理程序 /boot:包含内核映像及启动相关文件 /etc:(excutive time config)包含系统配置文件和脚本 /lib:包含系统库和内核模块 /usr:用户程序及库目录 /home:用户主目录 /root:root 用户主目录 /dev:设备文件目录,目录下的每个文件代表一个设备 /opt:额外软件包所在目录 /mnt:文件系统临时挂装目录 /var:包含运行时改变的文件,例如lock 和log 文件 /proc:内核创建和使用的虚拟文件系统,存放运行时系统信息 /tmp:临时文件目录,课程结束,