您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > 1.S5PV210的根文件系统制作
1制作根文件系统一、移植BusyBoxBusyBox是一个集成了一百多个最常用Linux命令和工具的软件。BusyBox包含了一些简单的工具,例如ls、cat和echo等等,还包含了一些更大、更复杂的工具,例如grep、find、mount以及telnet。有些人将BusyBox称为Linux工具里的瑞士军刀。简单的说BusyBox就好像是个大工具箱,它集成压缩了Linux的许多工具和命令,也包含了Android系统的自带的shell。BusyBox将许多具有共性的小版本的UNIX工具结合到一个单一的可执行文件。这样的集合可以替代大部分常用工具比如的GNUfileutils,shellutils等工具,BusyBox提供了一个比较完善的环境,可以适用于任何小的或嵌入式系统。BusyBox最初是由BrucePerens在1996年为DebianGNU/Linux安装盘编写的。其目标是在一张软盘上创建一个可引导的GNU/Linux系统,这可以用作安装盘和急救盘。1.下载BusyBox的源码包下载地址:,最新版本为busybox-1.21.1:2.解压并进入目录#tarjxvfbusybox-1.20.2.tar.bz2#cdbusybox-1.20.23.修改Makefile中的体系结构ARCH和交叉编译器前缀CROSS_COMPILE#vimMakefile把164行修改为:CROSS_COMPILE=/usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-把190行修改为:ARCH=arm24.配置BusyBoxBusyBox的配置程序和linux内核菜单配置方式简直一模一样。熟悉用makemenuconfig方式配置linux内核的朋友很容易上手。#makemenuconfig选上以下几项:BusyboxSettings---BuildOptions---[*]BuildBusyBoxasastaticbinary(nosharedlibs)这个选项是一定要选上,这样才能把BusyBox编译成静态链接的可执行文件,运行时才独立于其他函数库,否则需要其他库文件才能运行BusyBox。BusyboxLibraryTuning---[*]vi-stylelineeditingcommands选上VI风格的行编辑器命令。[*]FancyshellpromptsLinuxModuleUtilities---[]Simplifiedmodutils[*]insmod[*]rmmod[*]lsmod[*]modprobe[*]depmod取消选中Simplifiedmodutils,使用完整的模块工具命令:insmod、rmmod……确保支持mdev(mdev是udev设备文件系统的精简版),确保以下几项被选中:LinuxSystemUtilities---[*]mdev[*]Support/etc/mdev.conf[*]Supportsubdirs/symlinks[*]Supportregularexpressionssubstitutionswhenrenamingdev[*]Supportcommandexecutionatdeviceaddition/removal[*]Supportloadingoffirmwares其它选项都是一些linux基本命令选项,自己需要哪些命令就编译进去,一般用默认的就可以了,配置好后退出并保存。5.编译BusyBox#make-j26.安装#makeinstall在busybox-1.20.2目录下可以找到_install子目录,这就是刚才的安装目录。37.分析#ls-l/bin总用量7816-rwxr-xr-x1rootroot9166922011-05-1817:54bash-rwxr-xr-x3rootroot302162011-12-1400:23bunzip2-rwxr-xr-x1rootroot14909402011-09-0123:59busybox-rwxr-xr-x3rootroot302162011-12-1400:23bzcatlrwxrwxrwx1rootroot62011-12-1400:23bzcmp-bzdiff-rwxr-xr-x1rootroot21402011-12-1400:23bzdifflrwxrwxrwx1rootroot62011-12-1400:23bzegrep-bzgrep-rwxr-xr-x1rootroot48772011-12-1400:23bzexelrwxrwxrwx1rootroot62011-12-1400:23bzfgrep-bzgrep-rwxr-xr-x1rootroot36422011-12-1400:23bzgrep-rwxr-xr-x3rootroot302162011-12-1400:23bzip2-rwxr-xr-x1rootroot95962011-12-1400:23bzip2recoverlrwxrwxrwx1rootroot62011-12-1400:23bzless-bzmore-rwxr-xr-x1rootroot12972011-12-1400:23bzmore-rwxr-xr-x1rootroot384842011-02-2321:22cat可以看到主机/bin目录下的大部分命令都是可执行程序。#ls-l_install/bin总用量1892lrwxrwxrwx1rootroot72012-12-2111:41addgroup-busyboxlrwxrwxrwx1rootroot72012-12-2111:41adduser-busyboxlrwxrwxrwx1rootroot72012-12-2111:41ash-busyboxlrwxrwxrwx1rootroot72012-12-2111:41base64-busybox-rwxr-xr-x1rootroot19371122012-12-2111:41busyboxlrwxrwxrwx1rootroot72012-12-2111:41cat-busyboxlrwxrwxrwx1rootroot72012-12-2111:41catv-busyboxlrwxrwxrwx1rootroot72012-12-2111:41chattr-busybox可以看到_install/bin目录下的命令都是指向busybox可执行程序的软链接,这样做出来的文件系统会比较很小,一般只有几MB,很适合只有几十MBFlash空间的嵌入式系统。二、加入必要的目录与文件1.改_install为mini_rootfs#mv_installmini_rootfs#cdmini_rootfs下面的操作都是在mini_rootfs目录里进行的!2.创建必要的目录和文件建立一个名为create_rootfs.sh的脚本文件:#vimcreate_rootfs.sh内容如下:#!/bin/shecho------1.Createrootdirectonsstarting--------#mkdirbinsbinusrmkdirlibetcdevsysproctmpvaroptmnthomerootmediamkdirhome/gec4echo------2.Createusrsub-directonsstarting--------cdusr#mkdirbinsbinmkdirliblocalecho------3.Createusr/localsub-directonsstarting--------cdlocalmkdirbinsbinlibcd../..echo------4.Createetcsub-directonsfilestarting--------cdetctouchinittabtouchfstabtouchprofiletouchpasswdtouchgrouptouchshadowtouchresolv.conftouchmdev.conftouchinetd.confmkdirrc.dmkdirinit.dtouchinit.d/rcSchmod+xinit.d/rcSmkdirsysconfigtouchsysconfig/HOSTNAMEcd..echo------5.Createdevinodestarting--------cddevmknodconsolec51chmod777consolemknodnullc135chmod777nullcd..echo------6.Createvarsub-directonsstarting--------cdvarmkdirlogcd..echo------7.Createetcsub-directonsfilestarting--------mkdiretc/hotplug/usb-pmkdiretc/hotplug/sd-ptouchetc/hotplug/usb/udisk_inserttouchetc/hotplug/usb/udisk_removetouchetc/hotplug/sd/sd_inserttouchetc/hotplug/sd/sd_removechmod+xetc/hotplug/usb/udisk_insertchmod+xetc/hotplug/usb/udisk_removechmod+xetc/hotplug/sd/sd_insertchmod+xetc/hotplug/sd/sd_remove执行该脚本以生成必要的目录与文件:#sourcecreate_rootfs.sh#rmcreate_rootfs.sh3.拷贝交叉编译器里的动态链接库到lib目录只需要拷贝交叉编译器里的动态链接库及其软链接到lib目录就好了,静态链接库不用拷贝:#cp/usr/local/arm/arm-2009q3/arm-none-linux-gnueabi/libc/armv4t/lib/*so*lib-rdf4.对lib目录下的动态链接库进行裁减动态链接库包括了符号信息,可以去掉不必要的符号信息,使用动态链接库变得更小巧:#arm-none-linux-gnueabi-striplib/*so*5.修改脚本文件etc/inittab文件是启动流程文件,它的内容为:::sysinit:/etc/init.d/rcS::askfirst:-/bin/sh::ctrlaltdel:-/sbin/reboot6::shutdown:/bin/umount-a-r::restart:/sbin/init可以看到它会执行/etc/init.d/rcS脚本,并启动shell程序/bin/sh。etc/init.d/rcS文件的内容为:#!/bin/shPATH=/sbin:/bin:/usr/sbin:/usr/binrunlevel=Sprevlevel=Numask022exportPATHrunlevelprevlevelmount-aecho/sbin/mdev/proc/sys/kernel/hotplugmdev-s/bin/hostname-F/etc/sysconfig/HOSTNAMEifconfigeth0192.168.0.80inetd&telnetd&设置变量PATHS,sSingleusermode设置文件权限掩码umask=022导出环境环境PATHrunlevelprevlevelmount-a会读取etc/fstab完成文件系统挂载当内核有热插拨事件时调用/sbin/mdev启动mdev将HOSTNAME设置为/etc/sysconfig/HOSTNAME的内容配置以太网接口0的IP地址启动inetd
本文标题:1.S5PV210的根文件系统制作
链接地址:https://www.777doc.com/doc-3054990 .html