《构建嵌入式Linux开发平台课件》由会员分享,可在线阅读,更多相关《构建嵌入式Linux开发平台课件(57页珍藏版)》请在金锄头文库上搜索。
1、重庆工商大学重庆工商大学 构建嵌入式Linux开发平台构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学嵌入式交叉编译环境搭建嵌入式交叉编译环境搭建 交叉编译交叉编译的含义:就是在一个平台上生成另一个平台的含义:就是在一个平台上生成另一个平台上可执行的目标代码。上可执行的目标代码。 平台平台的含义:的含义: 处理器的体系结构;处理器的体系结构; 运行的操作系统。运行的操作系统。说明:操作系统或处理器体系结构不同则是不同的平台说明:操作系统或处理器体系结构不同则是不同的平台 构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学嵌入式系统层次结构嵌入式系统层次结构CPUExternal
2、devicesEmbedded RTOSExtend 软软件件硬硬件件构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学嵌入式交叉编译环境模型嵌入式交叉编译环境模型构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学宿主机o安装Linux操作系统o配置好网络o配置TFTP服务 用于下载烧写o配置 NFS服务为交叉开发时下载所用o构建交叉编译环境 n确定目标平台n选择交叉编译工具 构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学目标机o一般采用flash存储器来保存软件nBootloadern启动参数n系统内核n根文件系统n应用程序o烧些方式n编程器(JTAG)bootload
3、ern串口n网络接口构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学 1 1)在)在/usr/local/usr/local/目录下新建目录下新建armarm目录,并进入该目录。目录,并进入该目录。rootvm-dev local#rootvm-dev local# mkdir arm mkdir armrootvm-dev local#rootvm-dev local# cd arm cd arm 2 2)使用)使用cpcp命令,把命令,把cross_3.3.2.tar.bz2cross_3.3.2.tar.bz2拷贝到新建立的拷贝到新建立的/usr/local/arm/usr/lo
4、cal/arm目录下。目录下。 3 3)解压交叉编译器安装文件()解压交叉编译器安装文件(cross_3.3.2.tar.bz2cross_3.3.2.tar.bz2)。)。 rootvm-dev arm#rootvm-dev arm# tar -jxvf cross_3.3.2.tar.bz2tar -jxvf cross_3.3.2.tar.bz2 交叉编译器的安装过程交叉编译器的安装过程构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学 4 4)增加编译器路径。)增加编译器路径。 rootvm-dev arm#rootvm-dev arm# vi /etc/profilevi /e
5、tc/profile#Path manipulation#Path manipulationif if id-u=0 ; thenid-u=0 ; thenpathmunge /sbinpathmunge /sbinpathmunge /usr/sbinpathmunge /usr/sbinpathmunge /usr/local/sbinpathmunge /usr/local/sbinpathmunge /usr/local/arm/3.3.2/binpathmunge /usr/local/arm/3.3.2/binfifi使用export命令增加环境变量:# export PATH=$
6、PATH:/usr/local/arm/2.95.3/bin 交叉编译器的安装过程交叉编译器的安装过程构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学o在“/”目录先建立安装ARM-Linux软件包目录软件包目录n软件包:linux-2.4.18-rmk7-pxa1-mz5-zhiyuan.tar.bz2n建立/zylinux目录,将ARM Linux源代码解压至该目录下交叉编译案例交叉编译案例编译编译ARM-Linux内核内核# mkdir /zylinux# tar xjvf linux-2.4.18-rmk7-pxa1-mz5-zhiyuan. tar.bz2 C /zylinu
7、x构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学编译ARM Linux内核o编译ARM Linux内核。进入主界面后,装载默认配置文件ZY2410x,然后建立依赖关系,最后编译即可。# cd /zylinux/kernel# make distclean# make menuconfig# make dep# make zImage构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学编译ARM Linux内核n#make menuconfig构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学编译ARM Linux内核构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学构
8、建嵌入式构建嵌入式Linux目标平台目标平台nBootloadern启动参数n系统内核n根文件系统n应用程序启动启动参数参数引导系统引导系统(Bootloader)系统内核系统内核(KernelKernel)根文件系统根文件系统(RootfsRootfs)应用程序flash构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学Bootloadero操作系统内核运行之前运行的一段小程序操作系统内核运行之前运行的一段小程序n初始化硬件设备初始化硬件设备n建立内存空间的映射图建立内存空间的映射图o大多数引导系统都分为大多数引导系统都分为stage1stage1和和stage2stage2两个阶段两
9、个阶段nStage1:Stage1:依赖于处理器体系结构和板级初始化的代码通依赖于处理器体系结构和板级初始化的代码通常都放在常都放在stage1stage1阶段,用汇编语言实现;阶段,用汇编语言实现;nStage2:Stage2:则通常用则通常用C C语言来实现,这样可以实现更复杂语言来实现,这样可以实现更复杂的功能,同时具有更好的可读性和可移植性。的功能,同时具有更好的可读性和可移植性。构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学n硬件设备初始化;硬件设备初始化;n为加载引导系统的为加载引导系统的stage2stage2准备准备RAMRAM空间;空间;n拷贝引导系统的拷贝引导系统
10、的stage2stage2程序到程序到RAMRAM空间中;空间中;n设置好堆栈;设置好堆栈;n跳转到跳转到stage2stage2的的C C程序入口点。程序入口点。引导系统引导系统stage1stage1实现的功能实现的功能构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学n初始化本阶段要用到的硬件设备;初始化本阶段要用到的硬件设备;n检测系统内存映射(检测系统内存映射(memory mapmemory map););n将操作系统内核映像和根文件系统映像从将操作系统内核映像和根文件系统映像从FlashFlash读到读到RAMRAM空间中;空间中;n为操作系统内核设置启动参数;为操作系统内
11、核设置启动参数;n调用操作系统内核。调用操作系统内核。引导系统引导系统stage2stage2实现的功能实现的功能构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学 由于引导系统是完全依赖于硬件实现的,不同类别的处理由于引导系统是完全依赖于硬件实现的,不同类别的处理器有不同的汇编语言,不同的开发平台有不同的硬件资源。因器有不同的汇编语言,不同的开发平台有不同的硬件资源。因此,在嵌入式世界里建立一个通用的此,在嵌入式世界里建立一个通用的BootloaderBootloader几乎是不可能几乎是不可能的。尽管如此,仍然可以对的。尽管如此,仍然可以对BootloaderBootloader归纳
12、出一些通用的概念归纳出一些通用的概念来指导特定的来指导特定的BootloaderBootloader设计与实现。设计与实现。Bootloader构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学BootloaderBootloader共性分析共性分析nCPUCPU体系结构:每一种体系结构的处理器都大量面世。体系结构:每一种体系结构的处理器都大量面世。nBootloaderBootloader的安装媒介:处理器的复位地址大多统一。的安装媒介:处理器的复位地址大多统一。nBootloaderBootloader的启动过程分为单阶段和多阶段两种。的启动过程分为单阶段和多阶段两种。nBootlo
13、ader Bootloader 的操作模式。的操作模式。启动加载模式启动加载模式下载模式下载模式nBootloaderBootloader的烧写加载:统一使用的烧写加载:统一使用JTAGJTAG接口。接口。构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学常用bootloaderoU-BootoBloboARMBootoRedBootovivi构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学 Linux Linux内核移植内核移植 cpuloaderflashOSmemoryOS嵌入式系统启动过程嵌入式系统启动过程 构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学 操作系
14、统作为一组管理软硬件资源的程序,它能够管理操作系统作为一组管理软硬件资源的程序,它能够管理内存、决定系统资源分配、控制输入内存、决定系统资源分配、控制输入/ /输出设备以及管理网络输出设备以及管理网络文件等,是系统软硬件之间的纽带,其典型存储地址结构如文件等,是系统软硬件之间的纽带,其典型存储地址结构如图所示。图所示。启动启动参数参数引导系统引导系统(U-BootU-Boot)内核内核(KernelKernel)根文件系统根文件系统(RootfsRootfs)典型的典型的FlashFlash存储空间分配存储空间分配构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学LinuxLinux内核
15、移植过程内核移植过程n获得获得LinuxLinux源码源码()将得到的将得到的LinuxLinux源码拷贝到对应的工作目录下,解压。源码拷贝到对应的工作目录下,解压。 rootvm-dev 2410-s#rootvm-dev 2410-s# tar -jxvf linux-2.6.24.4.tar.bz2 tar -jxvf linux-2.6.24.4.tar.bz2说明:这里以说明:这里以Linux-2.6.24.4Linux-2.6.24.4为示例,内核解压后,当前目录下自动新建为示例,内核解压后,当前目录下自动新建一个名为一个名为linux-2.6.24.4linux-2.6.24.4
16、的子目录,可进入该目录查看的子目录,可进入该目录查看LinuxLinux目录结构。目录结构。rootvm-dev 2410-s#rootvm-dev 2410-s# cd linux-2.6.24.4/ cd linux-2.6.24.4/rootvm-dev linux-2.6.24.4#rootvm-dev linux-2.6.24.4#lsls构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学n修改修改MakefileMakefile文件文件 Magic ARM2410 Magic ARM2410的主处理器是的主处理器是S3C2410XS3C2410X,属于,属于ARM920TAR
17、M920T,使用,使用交叉编译器交叉编译器arm-linux-arm-linux-,需修改内核的底层,需修改内核的底层MakefileMakefile文件。文件。rootvm-dev linux-2.6.24.4# vi Makefilerootvm-dev linux-2.6.24.4# vi Makefileu 修改前:修改前:ARCH ?= $(SUBARCH)ARCH ?= $(SUBARCH)CROSS_COMPILE ?=CROSS_COMPILE ?=u 修改后:修改后:ARCH ?= armARCH ?= armCROSS_COMPILE ?= arm-linux-CROSS_
18、COMPILE ?= arm-linux-LinuxLinux内核移植过程内核移植过程构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学n拷贝拷贝.config.config配置文件配置文件 由于由于Magic ARM2410Magic ARM2410的配置和的配置和SMDK2410SMDK2410开发板的类似,可开发板的类似,可以使用以使用SMDK2410SMDK2410的配置文件的配置文件s3c2410_defconfigs3c2410_defconfig,只需要,只需要把该文件拷贝成内核目录下的把该文件拷贝成内核目录下的.config.config文件即可:文件即可:rootvm-
19、dev linux-2.6.24.4#rootvm-dev linux-2.6.24.4# cp cp ./arch/arm/configs/s3c2410_defconfig ./.config./arch/arm/configs/s3c2410_defconfig ./.configLinuxLinux内核移植过程内核移植过程构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学n修改修改Nand FlashNand Flash分区分区 Linux Linux内核移植过程所使用的是内核移植过程所使用的是SMDK2410SMDK2410开发板原型,而开发板原型,而SMDK2410SMDK2
20、410开发板的开发板的NAND FlashNAND Flash和和Magic ARM2410Magic ARM2410开发板不开发板不一样,需修改。一样,需修改。 用用vivi打开打开arch/arm/plat-s3c24xx/common-smdk.carch/arm/plat-s3c24xx/common-smdk.c文件;文件; 找到关于找到关于Nand FlashNand Flash分区的结构体分区的结构体struct mtd_partition smdk_default_nand_partstruct mtd_partition smdk_default_nand_partrootv
21、m-dev linux-2.6.24.4#rootvm-dev linux-2.6.24.4# vi ./arch/arm/plat-s3c24xx/common-smdk.cvi ./arch/arm/plat-s3c24xx/common-smdk.cLinuxLinux内核移植过程内核移植过程构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学static struct mtd_partition smdk_default_nand_part = 0 = .name = Bootloader, .size = 0x80000, .offset = 0, ,1 = .name = Li
22、nux Kernel, .offset = 0x80000, .size = SZ_2M, ,2 = .name = Root , .offset = 0x280000, .size = SZ_4M, ,3 = .name = User Space, .offset = 0x680000, .size = 0x3980000, ,;结构体结构体struct mtd_partition smdk_default_nand_partstruct mtd_partition smdk_default_nand_part构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学n添加添加LCDLCD驱动
23、支持驱动支持 Magic ARM2410Magic ARM2410开发平台上配置有开发平台上配置有640480640480的的TFTTFT液晶屏,需要在液晶屏,需要在LinuxLinux内核部分添加对内核部分添加对LCDLCD的支持。的支持。LCDLCD驱动支持添加在驱动支持添加在/arch/arm/mach-s3c2410/arch/arm/mach-s3c2410/目录下目录下的的mach-smdk2410.cmach-smdk2410.c文件中;文件中;用用vivi编辑器打开该文件,并进行修改。编辑器打开该文件,并进行修改。rootvm-dev linux-2.6.24.4#rootvm
24、-dev linux-2.6.24.4# vi ./arch/arm/mach-s3c2410/mach-smdk2410.cvi ./arch/arm/mach-s3c2410/mach-smdk2410.cLinuxLinux内核移植过程内核移植过程构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学n修改修改mach-smdk2410.cmach-smdk2410.c文件文件 添加包含添加包含LCDLCD的数据结构的头文件:的数据结构的头文件:#include #include #include #include 添加与添加与LCDLCD点阵结构相关的程序代码:点阵结构相关的程序代码
25、: 找到找到smdk2410_initsmdk2410_init函数,在函数的末尾添加对函数,在函数的末尾添加对LCDLCD的数的数据进行设置。据进行设置。LinuxLinux内核移植过程内核移植过程构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学n添加网卡驱动支持添加网卡驱动支持 Magic ARM2410 Magic ARM2410开发板上配置了开发板上配置了DM9000ADM9000A网卡,网卡,LinuxLinux内核内核已经有网卡驱动的实现代码,需要添加相应的配置。已经有网卡驱动的实现代码,需要添加相应的配置。 配置方法配置方法: : 在在“./arch/arm/mach-s
26、3c2410/mach-smdk2410.c./arch/arm/mach-s3c2410/mach-smdk2410.c”文件文件中添加相应的内容(地址、中断号、网卡数据等)。中添加相应的内容(地址、中断号、网卡数据等)。 注意:具体地址、中断号要与实际的开发板对应。注意:具体地址、中断号要与实际的开发板对应。 把网卡数据加入把网卡数据加入smdk2410_devicessmdk2410_devices数组,数组,LinuxLinux内核移植过程内核移植过程构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学n添加添加YAFFSYAFFS文件系统支持文件系统支持 YAFFS YAFFS(
27、Yet Another Flash Filing SystemYet Another Flash Filing System)是第一个)是第一个专门为专门为Nand FlashNand Flash存储器设计的嵌入式文件系统,适用于存储器设计的嵌入式文件系统,适用于大容量的存储设备。大容量的存储设备。 从从免费获得源码文件免费获得源码文件yaffs2.tar.gzyaffs2.tar.gz。 将将YAFFSYAFFS的源代码的源代码yaffs2.tar.gzyaffs2.tar.gz拷贝到拷贝到linux-2.6.24.4linux-2.6.24.4的的同级目录下,解压该源码包,获得同级目录下,
28、解压该源码包,获得YAFFSYAFFS源码。源码。 进入进入yaffs2yaffs2目录,运行目录,运行./patch-ker.sh./patch-ker.sh给给LinuxLinux内核打上内核打上补丁。这样,补丁。这样,LinuxLinux内核就可以支持内核就可以支持YAFFSYAFFS文件系统了。文件系统了。LinuxLinux内核移植过程内核移植过程构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学n编译和配置编译和配置LinuxLinux内核内核n在内核源代码的根目录下运行在内核源代码的根目录下运行make menuconfigmake menuconfig命令命令LinuxL
29、inux内核移植过程内核移植过程构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学SystemTypeSystemType子项界面子项界面 LinuxLinux内核移植过程内核移植过程构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学n 编译内核编译内核:l 配置完成后,一个精简的配置完成后,一个精简的LinuxLinux就已经设置完成。可在就已经设置完成。可在LinuxLinux内核源文件的根目录下使用内核源文件的根目录下使用makemake命令编译内核。命令编译内核。rootvm-dev linux-2.6.24.4#rootvm-dev linux-2.6.24.4# mak
30、e makel 生成内核镜像:生成内核镜像: 编译完成后,在编译完成后,在Linux-2.6.24.4Linux-2.6.24.4内核的内核的/boot/arch/arm/boot/arch/arm目目录下生成内核的镜像文件录下生成内核的镜像文件zImagezImage。LinuxLinux内核移植过程内核移植过程构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学n加载加载LinuxLinux内核内核n使用交叉网线连接好宿主机和目标机;使用交叉网线连接好宿主机和目标机;n设置宿主机的设置宿主机的TCP/IPTCP/IP属性(必须保证宿主机与目标机属性(必须保证宿主机与目标机的的IPIP地
31、址处于同一网段)地址处于同一网段)n编译编译U-BootU-Boot时,在源代码时,在源代码toolstools目录下生成有一个目录下生成有一个mkimagemkimage可执行文件,用该文件可对刚编译可执行文件,用该文件可对刚编译LinuxLinux内核内核生成的生成的zImagezImage进行处理,以供进行处理,以供U-BootU-Boot启动。启动。n使用使用tftptftp下载内核映像文件。下载内核映像文件。LinuxLinux内核移植过程内核移植过程构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学根文件系统移植根文件系统移植 根文件系统一直以来都是所有类根文件系统一直以来都
32、是所有类UnixUnix操作系统的一个操作系统的一个重要组成部分,也可以认为是嵌入式重要组成部分,也可以认为是嵌入式LinuxLinux系统区别于系统区别于其他一些传统嵌入式操作系统的重要特征,它给其他一些传统嵌入式操作系统的重要特征,它给LinuxLinux带来了许多强大和灵活的功能,同时也带来了一些复杂带来了许多强大和灵活的功能,同时也带来了一些复杂性。性。构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学根文件系统概述根文件系统概述 简单的说,根文件系统就是一种目录结构。简单的说,根文件系统就是一种目录结构。 根文件系统就是要包括根文件系统就是要包括LinuxLinux启动时所必须
33、的目录和关启动时所必须的目录和关键性的文件。键性的文件。l Linux Linux启动时需要有启动时需要有initinit目录下的相关文件;目录下的相关文件;l 在在LinuxLinux挂载分区时挂载分区时LinuxLinux一定会找一定会找/etc/fstab/etc/fstab这个这个挂载文件;挂载文件;l 根文件系统中还包括了许多的应用程序根文件系统中还包括了许多的应用程序binbin目录等;目录等;l 任何包括这些任何包括这些LinuxLinux系统启动所必须的文件都可以称系统启动所必须的文件都可以称为根文件系统。为根文件系统。构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学L
34、inuxLinux根文件系统目录结构根文件系统目录结构LinuxLinux的根文件系统以树型结构组织,包含内核和系统管的根文件系统以树型结构组织,包含内核和系统管理所需要的各种文件和程序;理所需要的各种文件和程序;一般说来根目录一般说来根目录”/ /”下的顶层目录都有一些比较固定的下的顶层目录都有一些比较固定的命名和用途;命名和用途;linuxlinux根文件系统下一些主要目录的功用如下:根文件系统下一些主要目录的功用如下:l/bin/bin:二进制可执行命令;:二进制可执行命令;l/dev/dev:设备特殊文件;:设备特殊文件;l/etc/etc:系统管理和配置文件;:系统管理和配置文件;l
35、/etc/rc.d/etc/rc.d:启动的配置文件和脚本;:启动的配置文件和脚本;l/home/home:用户主目录的基点,比如用户:用户主目录的基点,比如用户useruser的主目录的主目录就是就是/home/user/home/user;构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学l /lib /lib:标准程序设计库,又叫动态链接共享库;:标准程序设计库,又叫动态链接共享库;l /sbin /sbin:系统管理命令,存放系统管理员使用的管理程序;:系统管理命令,存放系统管理员使用的管理程序;l /tmp /tmp:公用的临时文件存储点;:公用的临时文件存储点;l /root
36、 /root:系统管理员的主目录;:系统管理员的主目录;l /mnt /mnt:系统提供让用户临时挂载其他的文件系统;:系统提供让用户临时挂载其他的文件系统;l /lost+found /lost+found:这个目录平时是空的,用于存放系统非正常:这个目录平时是空的,用于存放系统非正常关机而留下关机而留下“无家可归无家可归”的文件;的文件;l /proc /proc:虚拟的目录,是系统内存的映射;:虚拟的目录,是系统内存的映射;l /var /var:某些大文件的溢出区,比如各种服务的日志文件;:某些大文件的溢出区,比如各种服务的日志文件;l /usr /usr:最庞大的目录,要用到的应用程
37、序和文件几乎都在:最庞大的目录,要用到的应用程序和文件几乎都在这个目录。其中主要包含:这个目录。其中主要包含: /usr/bin /usr/bin:众多的应用程序;:众多的应用程序; /usr/sbin /usr/sbin:超级用户的一些管理程序。:超级用户的一些管理程序。LinuxLinux根文件系统目录结构根文件系统目录结构构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学BusyBoxBusyBox的的initinit进程依次进行以下工作:进程依次进行以下工作:l 为为initinit设置信号处理进程;设置信号处理进程;l 初始化控制台;初始化控制台;l 剖析剖析inittabin
38、ittab、/etc/inittab/etc/inittab文件;文件;l 执行系统初始化的命令行。执行系统初始化的命令行。l 执行所有会导致执行所有会导致initinit暂停的暂停的inittabinittab命令;(告诉命令;(告诉initinit必须等到相应必须等到相应的进程完成之后才能继续执行。)的进程完成之后才能继续执行。)l 执行所有仅执行一次的执行所有仅执行一次的inittabinittab命令。(仅执行相应的进程一次,而命令。(仅执行相应的进程一次,而且不会等待它完成。)且不会等待它完成。)一旦完成以上工作,一旦完成以上工作,initinit进程便会循环执行以下工作:进程便会循
39、环执行以下工作:1 1执行所有终止时必须重新启动的执行所有终止时必须重新启动的inittabinittab命令;命令;2 2执行所有终止时必须重新启动但启动前必须先询问过用户的执行所有终止时必须重新启动但启动前必须先询问过用户的inittabinittab命令。命令。LinuxLinux根文件系统引导过程根文件系统引导过程构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学1 1获得获得BusyBoxBusyBox源码源码 从网站从网站下载。下载。 解压源码,得到完整的解压源码,得到完整的BusyBoxBusyBox源码包源码包. . rootvm-dev 2410-s# tar -vxj
40、f busybox-1.12.2.tar.bz2 rootvm-dev 2410-s# cd busybox-1.12.2 rootvm-dev busybox-1.12.2#ls说明:说明:BusyBoxBusyBox解压后,当前目录下自动新建一个名为解压后,当前目录下自动新建一个名为busybox-1.12.2busybox-1.12.2的子目录,可进入该目录查看的子目录,可进入该目录查看BusyBoxBusyBox目目录结构。录结构。BusyBoxBusyBox根文件系统移植过程根文件系统移植过程构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学2 2修改修改MakefileMak
41、efile文件文件 与与LinuxLinux内核移植原因相同,需要修改内核移植原因相同,需要修改MakefileMakefile中的中的ARCHARCH和和CROSS_COMPILECROSS_COMPILE与本机的路径一致。与本机的路径一致。 打开打开MakefileMakefile文件。文件。 rootvm-dev busybox-1.12.2# vi Makefile 将将MakefileMakefile文件的目标平台改为文件的目标平台改为armarm,交叉编译器前,交叉编译器前缀改为缀改为arm-linux-arm-linux-,修改如下:,修改如下:CROSS_COMPILE ?=
42、arm-linux-CROSS_COMPILE ?= arm-linux-.ARCH ?= armARCH ?= armBusyBoxBusyBox根文件系统移植过程根文件系统移植过程构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学3 3配置和编译配置和编译BusyBoxBusyBox 运行运行make munuconfigmake munuconfig命令,进入命令,进入BusyBoxBusyBox配置界面配置界面BusyBoxBusyBox根文件系统移植过程根文件系统移植过程构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学 将将BusyBoxBusyBox编译成静态库。编译
43、成静态库。BusyBoxBusyBox根文件系统移植过程根文件系统移植过程构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学添加转义字符识别添加转义字符识别BusyBoxBusyBox根文件系统移植过程根文件系统移植过程构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学选择选择shellshellBusyBoxBusyBox根文件系统移植过程根文件系统移植过程构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学 其他选项请用户根据自己的使用情况进行配置。其他选项请用户根据自己的使用情况进行配置。 配置好配置好BusyBoxBusyBox选项后,即可对选项后,即可对BusyBox
44、BusyBox进行编译。进行编译。BusyBoxBusyBox编译过程:编译过程:rootvm-dev busybox-1.12.2#rootvm-dev busybox-1.12.2# make makerootvm-dev busybox-1.12.2#rootvm-dev busybox-1.12.2# make install make installBusyBoxBusyBox根文件系统移植过程根文件系统移植过程构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学4 4创建根文件系统目录结构创建根文件系统目录结构 使用使用shellshell脚本创建根文件系统的目录结构,脚本创建
45、根文件系统的目录结构, 并在想要建立根文件系统的地方运行此脚本。并在想要建立根文件系统的地方运行此脚本。 创建创建shellshell脚本文件:脚本文件: rootvm-dev busybox-1.12.2# vi build_fs.sh BusyBoxBusyBox根文件系统移植过程根文件系统移植过程构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学#!/bin/shecho makeing rootdirmkdir rootfscd rootfsecho makeing dir: bin dev etc lib proc sbin sys usrmkdir bin dev etc l
46、ib proc sbin sys usr #8 dirsmkdir usr/bin usr/lib usr/sbin lib/modules#Dont use mknod, unless you run this Script as mknod -m 600 dev/console c 5 1mknod -m 666 dev/null c 1 3echo making dir: mnt tmp varmkdir mnt tmp varchmod 1777 tmpmkdir mnt/etc mnt/jiffs2 mnt/yaffs mnt/data mnt/tempmkdir var/lib v
47、ar/lock var/log var/run var/tmpchmod 1777 var/tmpecho making dir: home root bootmkdir home root bootecho donebuild_fs.sh程序清单程序清单构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学5 5拷贝拷贝etcetc目录目录 把把busyboxbusybox源码目录下的源码目录下的etcetc的内容拷贝到的内容拷贝到buildfs.shbuildfs.sh新建新建的的/rootfs/etc/rootfs/etc目录下。目录下。 具体操作过程:具体操作过程:rootvm-de
48、v busybox-1.12.2#cd rootfsrootvm-dev rootfs# lsbin boot dev etc home lib mnt proc root sbin sys tmp usr varrootvm-dev rootfs# cd etcrootvm-dev etc# cp -a /root/2410-s/busybox-1.12.2/examples/ bootfloppy/ etc/* ./rootvm-dev etc# lsfstab init.d inittab profileBusyBoxBusyBox根文件系统移植过程根文件系统移植过程构建嵌入式Linux
49、开发平台课件重庆工商大学重庆工商大学6 6修改修改profileprofile文件文件 /etc/profile/etc/profile是用户登录时的环境变量设置;是用户登录时的环境变量设置; 根据建立的根文件系统设置相应的环境变量;根据建立的根文件系统设置相应的环境变量; 使用使用vivi编辑器编辑并保存编辑器编辑并保存profileprofile文件。文件。 rootvm-dev etc# vi profile说明:说明:profileprofile文件的具体内容与用户建立的根文件系统文件的具体内容与用户建立的根文件系统相关。相关。BusyBoxBusyBox根文件系统移植过程根文件系统移
50、植过程构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学7修改初始化文件修改初始化文件inittab和和fstab inittab initilize table (定义了开机之后的(定义了开机之后的run-level以以及其他有关启动的设定及其他有关启动的设定 ) fstab table(让系统可以自动挂载的配置文件)(让系统可以自动挂载的配置文件) 1)根据目标板硬件平台修改)根据目标板硬件平台修改inittab文件文件2)根据目标板硬件平台和用途修改)根据目标板硬件平台和用途修改fstab文件文件BusyBoxBusyBox根文件系统移植过程根文件系统移植过程构建嵌入式Linux开
51、发平台课件重庆工商大学重庆工商大学8 8修改初始化脚本文件修改初始化脚本文件init.d/rcSinit.d/rcS脚本文件脚本文件init.d/rcS的主要功能的主要功能: 为启动环境设置必要的环境变量为启动环境设置必要的环境变量 设置目标机名称设置目标机名称 挂载挂载“虚拟虚拟”的文件系统的文件系统 创建设备节点创建设备节点 设置系统时间设置系统时间 设置启动提示信息设置启动提示信息 根据系统配置及硬件情况修改该文件。根据系统配置及硬件情况修改该文件。BusyBoxBusyBox根文件系统移植过程根文件系统移植过程构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学9 9用户和组文件创
52、建用户和组文件创建1 1)创建)创建passwdpasswd文件文件rootvm-dev etc#vi passwd passwd passwd一共由一共由7 7个字段组成,由个字段组成,由6 6个冒号将其隔开。其含义个冒号将其隔开。其含义分别为:用户名;是否有加密(分别为:用户名;是否有加密(x x表示有,不填表示无);用表示有,不填表示无);用户户IDID;组;组IDID;注释字段;登录目录;所使用的;注释字段;登录目录;所使用的shellshell程序。程序。 示例清单如下:示例清单如下:root:x:0:0:root:/root:/bin/ashroot:x:0:0:root:/roo
53、t:/bin/ash2 2)创建)创建groupgroup文件文件rootvm-dev etc#vi group group group共由共由4 4个字段组成。含义分别为:组名;是否有加密个字段组成。含义分别为:组名;是否有加密口令;组口令;组IDID;示例清单如下:;示例清单如下:rootroot:x x:0 0:BusyBoxBusyBox根文件系统移植过程根文件系统移植过程构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学1010创建创建mdev.confmdev.conf文件文件 用用touchtouch命令创建一个空的命令创建一个空的mdev.confmdev.conf文件,
54、用于文件,用于挂载根文件系统。挂载根文件系统。rootvm-dev etc# touch mdev.confBusyBoxBusyBox根文件系统移植过程根文件系统移植过程构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学1111复制安装目录复制安装目录_install_install把第三步把第三步“make installmake install”命令创建的命令创建的_install_install文件全文件全部拷贝到第四步创建的部拷贝到第四步创建的rootfsrootfs目录下。目录下。rootvm-dev etc#cd .rootvm-dev rootfs#cp -rfv /ro
55、ot/2410-s/busybox-1.12.2/_install/* ./说明:说明:busyboxbusybox默认安装目录中的文件全部复制到默认安装目录中的文件全部复制到rootfsrootfs后。后。会发现多了会发现多了linuxrc - bin/busyboxlinuxrc - bin/busybox文件,这是挂载文文件,这是挂载文件系统需要执行的。件系统需要执行的。BusyBoxBusyBox根文件系统移植过程根文件系统移植过程构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学1212制作制作cramfscramfs文件系统文件系统 使用使用mkcramfsmkcramfs命
56、令制作命令制作cramfscramfs根文件系统根文件系统 操作过程:操作过程:rootvm-dev rootfs# cd .rootvm-dev busybox-1.12.2# mkcramfs rootfs/ root.cramfsBusyBoxBusyBox根文件系统移植过程根文件系统移植过程构建嵌入式Linux开发平台课件重庆工商大学重庆工商大学1313根文件系统加载根文件系统加载加载过程如下:加载过程如下:使用交叉网线连接好宿主机和目标机;使用交叉网线连接好宿主机和目标机;设置宿主机的设置宿主机的IPIP地址,要求宿主机与目标机的地址,要求宿主机与目标机的IPIP地址为地址为同一网段。同一网段。把制作好的把制作好的root.cramfsroot.cramfs文件系统文件拷贝到宿主机的文件系统文件拷贝到宿主机的t t目录下;目录下;打开目标机电源,和超级终端软件,在启动提示符下使打开目标机电源,和超级终端软件,在启动提示符下使用用tftptftp命令从宿主机下载命令从宿主机下载root.cramfsroot.cramfs文件。并写入目文件。并写入目标板相应的标板相应的Nand FlashNand Flash地址单元。地址单元。BusyBoxBusyBox根文件系统移植过程根文件系统移植过程构建嵌入式Linux开发平台课件