您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 资本运营 > 嵌入式linux根文件系统制作(经典)
嵌入式linux根文件系统制作(经典)1.准备工作下载busybox工具说明:用于制作可执行命令工具集2.开发环境1)主机:RedHat92)交叉编译工具路径:/usr/local/arm/3.3.2/(用于编译busybox1.2.0)把/usr/local/arm/3.3.2/bin路径添加到/etc/profile文件中3)开发板:友善之臂SBC24104)开发板分别使用的Linux2.4.18内核和Linux2.6.14内核验证文件系统3.建立目标板空根目录文件夹及根目录下的文件夹[root@190friendly-arm]#mkdirmyroots[root@190friendly-arm]#pwd/friendly-arm/myroots[root@190friendly-arm]#cdmyroots[root@190myroots]#[root@190myroots]#mkdirbinsbinusrlibdevmntoptrootetchomeproctmpvar[root@190myroots]#mkdiretc/init.d进入etc/init.d目录下,建立一个脚本文件,并命名为rcS,用gedit打开,添加如下内容:#!/bin/shPATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:runlevel=Sprevlevel=Numask022exportPATHrunlevelprevlevel##TrapCTRL-C&conlyinthisshellsowecaninterruptsubprocesses.#trap:INTQUITTSTP[root@190myroots]#cd../lib也就是进入lib目录,添加相应的库文件,具体操作略。4.移植Busybox进入到压缩文件存放的目录下,并解压。然后进入解压后的busybox目录文件夹,随后配置busybox。[root@190busybox-1.2.0]#makemenuconfig执行之后,将出现如下图所示的配置界面:由于每个版本的配置选项组织有所不同。不管怎样,我们注意以下选项就行了:1)Supportfordevfs2)BuildBusyBoxasastaticbinary(nosharedlibs)//将busybox编译成静态链接3)DoyouwanttobuildbusyboxwithaCrossCompile?(/usr/local/arm/3.3.2/bin/arm-linux-)CrossCompileprefix//指定交叉编译器4)init5)Supportreadinganinittabfile//支持init读取/etc/inittab配置文件6)(X)ash选中ash//建立的rcS脚本才能执行7)ash8)cpcatlsmkdirmv//可执行命令工具的选择,自己看着办吧,需要用到的就选上9)mount10)umount11)Supportloopbackmounts12)Supportfortheold/etc/mtabfile13)insmod14)Supportversion2.2.xto2.4.xLinuxkernels15)Supportversion2.6.xLinuxkernels16)vi以上内容必须选上,其他可按默认值;如果要支持其他功能,如网络支持等,可按需选择,英语不是很烂的话,这些都没有问题。配置好之后,保存退出。然后对其编译和安装到刚才建立的根文件系统目录下:[root@190busybox-1.2.0]makeTARGET_ARCH=armCROSS=arm-linux-\PREFIX=/friendly-arm/myroots/allinstall安装好之后,将相应的二进制文件拷贝到根文件系统相应的目录下。5.制作yaffs文件系统包[root@190friendly-arm]#mkyaffsimagemyrootsmyroots.img6.下载根文件系统包到开发板上,并运行,其结果如图所示7.补充首先,本文档制作的根文件系统,是用mkyaffsimage打包成了yaffs镜像文件,也可以使用其他打包工具制作成其他形式的根文件系统,但必须是内核要有相应文件系统的支持,否则,将无法挂上根文件系统。其次,我们可以根据项目需要,在相应的目录下,添加相应的文件,并配置相应的服务。如内核动态加载模块可放在lib下,在启动脚本里挂载相应的模块;在etc目录下,可移植tinyligin登录界面应用程序,等等用Busybox创建文件系统编译busybox的组合:busybox-1.0.0arm-linux-gcc-2.95.3(sbc2410等开发板)busybox-1.1.3arm-linux-gcc-3.3.2buxybox-1.7.3arm-linux-gcc-3.4.1经典参考:下载busybox文件系统制作移植基本过程:1.到下载busybox;2.解压busybox1.7.3tarjxvfbusybox-1.7.3.tar.bz23.makedefconfig4.makemenuconfig在[buildoptions]中选择[Buildbusyboxasastaticbinary]主要是C库的连接方式,安装目录等。5.make6.创建rootfs目录7.makeinstall配置可参考:(小寿制作)busybox-1.1.3制作根文件系统!的编译1.4.2和1.5.1(根文件系统制作)文件系统的制作luofuchong可能会出现的错误:1.出现如下错误CCmiscutils/taskset.omiscutils/taskset.c:17:error:parseerrorbefore'*'tokenmiscutils/taskset.c:18:warning:functiondeclarationisn'taprototypemiscutils/taskset.c:Infunction`__from_cpuset':miscutils/taskset.c:22:error:`CPU_SETSIZE'undeclared(firstuseinthisfunction)miscutils/taskset.c:22:error:(Eachundeclaredidentifierisreportedonlyoncemiscutils/taskset.c:22:error:foreachfunctionitappearsin.)miscutils/taskset.c:26:warning:implicitdeclarationoffunction`CPU_ISSET'miscutils/taskset.c:26:error:`mask'undeclared(firstuseinthisfunction)miscutils/taskset.c:Infunction`taskset_main':miscutils/taskset.c:47:error:`cpu_set_t'undeclared(firstuseinthisfunction)miscutils/taskset.c:47:error:parseerrorbeforemaskmiscutils/taskset.c:68:warning:implicitdeclarationoffunction`CPU_ZERO'miscutils/taskset.c:68:error:`new_mask'undeclared(firstuseinthisfunction)miscutils/taskset.c:69:error:`CPU_SETSIZE'undeclared(firstuseinthisfunction)miscutils/taskset.c:71:warning:implicitdeclarationoffunction`CPU_SET'miscutils/taskset.c:78:error:`mask'undeclared(firstuseinthisfunction)make[1]:***[miscutils/taskset.o]Error1make:***[miscutils]Error2makemenuconfig找到[MiscellaneousUtilities],去掉[taskset]2.time.clibbb/time.c:20:error:CLOCK_MONOTONICundeclared(firstuseinthisfunction)makemenuconfig去掉BusyboxSettings-BusyboxLibraryTuning-[]Useclock_gettie(CLOCK_MONOTONIC)syscall相关问题可参考:交叉编译busybox的编译过程=1351475&PostID=12381125建立rootfs目录,可以使用如下脚本文件:#!/bin/bashmkdirrootfscdrootfsmkdirbindevetclibprocsbinsysusrmnttmpvarchmod1777tmpmkdirusr/binusr/libusr/sbinlib/modulesmkdirvar/lockvar/libvar/logvar/runvar/tmpchmod1777var/tmpcddev/mknod-m666consolec51mknod-m666nullc13cd../注意:执行脚本时,要切换到root用户。在内核目录执行:$cdhome/arm/linux-2.6.14.1/$makemodules$makemodules_installINSTALL_MOD_PATH=/nfs/rootfs/有关linuxrc、rcS等文件的编写,可参考:用BusyBox制作根文件系统=17&topicid=236&go=prevlinux2.6.22.1内核在s3c2410平台的移植(完美版)四:文件系统的制作部分例如linuxrc内容如下:$vimrootfs/linuxrc#!/bin/shechoHellolinux,ggggggexec/sbin/init然后修改权限:chmod775linuxrc用密码登录可参考:用busybox制作嵌入式Linux的文件系统:启动busybox文件系统后怎么主动提示用户登陆认证?在配置BusyBo
本文标题:嵌入式linux根文件系统制作(经典)
链接地址:https://www.777doc.com/doc-6465517 .html