189 8069 5689

如何移植linuxkernel及含busybox的yaffs2文件系统镜像

这篇文章给大家介绍如何移植linux kernel及含busybox的yaffs2文件系统镜像,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

成都创新互联是专业的新乐网站建设公司,新乐接单;提供成都网站制作、成都做网站,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行新乐网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

一、建立根文件系统目录  

进入到/opt/studyarm目录,新建建立根文件系统目录的脚本文件create_rootfs_bash,使用命令chmod +x create_rootfs_bash改变文件的可执行权限,./create_rootfs_bash运行脚本,就完成了根文件系统目录的创建。

#!/bin/sh

echo "------Create rootfs directons start...--------"
mkdir rootfs
cd rootfs

echo "--------Create root,dev....----------"
mkdir root dev etc boot tmp var sys proc lib mnt home usr
mkdir etc/init.d etc/rc.d etc/sysconfig  
mkdir usr/sbin usr/bin usr/lib usr/modules

echo "make node in dev/console dev/null"
mknod -m 600 dev/console c 5 1
mknod -m 600 dev/null    c 1 3
mkdir mnt/etc mnt/jffs2 mnt/yaffs mnt/data mnt/temp
mkdir var/lib var/lock var/run var/tmp

chmod 1777 tmp
chmod 1777 var/tmp


echo "-------make direction done---------"

改变了tmp目录的使用权,让它开启sticky位,为tmp目录的使用权开启此位,可确保tmp目录底下建立的文件,只有建立它的用户有权删除。尽管嵌入式系统多半是单用户,不过有些嵌入式应用不一定用root的权限来执行,因此需要遵照根文件系统权限位的基本规定来设计。

二、建立动态链接库

cd rootfs/lib
cp -fr /home/working/arm-linux-gcc/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib/* ./

将交叉编译器下的:相应库文件,拷贝到 rootfs/lib 下

注:本用的交叉编译器是:arm-linux-gcc 4.3.2

三、交叉编译Bosybox

Bosybox是一个遵循GPL v2协议的开源项目,它在编写过程总对文件大小进行优化,并考虑了系统资源有限(比如内存等)的情况,使用Busybox可以自动生成根文件系统所需的bin、sbin、usr目录和linuxrc文件.

1、解压busybox cd /mnt/hgfs/share 

tar –zxvf busybox-1.13.3.tar.tgz –C /opt/studyarm 2、进入源码,修改Makefile文件: cd /opt/studyarm/busybox-1.13.3 修改:  CROSS_COMPILE ?=arm-linux-   //第164行  ARCH    ?=arm   //第189行 3、配置busybox

输入make menuconfig进行配置

 (1)、Busybox Settings--->    

    General Configuration--->    

         [*] Show verbose applet usage messages 

         [*] Store applet usage messages in compressed form    

         [*] Support –install [-s] to install applet links at runtime    

         [*] Enable locale support(system needs locale for this to work)    

         [*] Support for –long-options    

         [*] Use the devpts filesystem for unix98 PTYs     

         [*] Support writing pidfiles    

         [*] Runtime SUID/SGID configuration via /etc/busybox.config    

         [*]  Suppress warning message if /etc/busybox.conf is not readable 

    Build Options--->

         [*] Build BusyBox as a static binary(no shared libs)     

         [*] Build with Large File Support(for accessing files>2GB)

    Installation Options->

        Applets links (as soft-links) --->      

          (./_install) BusyBox installation prefix

   Busybox Library Tuning --->

         (6)Minimum password legth     

          (2)MD5:Trade Bytes for Speed     

          [*]Fsater /proc scanning code(+100bytes)     

         [*]Command line editing     

         (1024)Maximum length of input     

         [*] vi-style line editing commands

         (15) History size     

         [*] History saving     

          [*] Tab completion     

         [*]Fancy shell prompts     

         (4) Copy buffer size ,in kilobytes  

         [*]Use ioctl names rather than hex values in error messages 

         [*]Support infiniband HW

 (2)、Linux Module Utilities--->

         (/lib/modules)Default directory containing modules    

         (modules.dep)Default name of modules.dep 

          [*] insmod 

          [*] rmmod 

          [*] lsmod 

          [*] modprobe 

          -----options common to multiple modutils [ ] support version 2.2/2.4 Linux kernels 

          [*]Support tainted module checking with new kernels 

          [*]Support for module .aliases file 

          [*] support for modules.symbols file

(3)、在busybox中配置对dev下设备类型的支持

dev的创建有三种方法: 

手动创建:在制作根文件系统的时候,就在dev目录下创建好要使用的设备文件,系统挂接根文件系统后,就可以使用dev目录下的设备文件了。 使用devfs文件系统:这种方法已经过时,具有不确定的设备映射、没有足够的主/次设备号、devfs消耗大量的内存。 

udev:它是个用户程序,能根据系统中硬件设备的状态动态的更新设备文件,包括设备文件的创建、删除等。它的操作相对复杂,但灵活性很高 

mdev是busybox自带的一个简化版的udev,适合于嵌入式的应用埸合。其具有使用简单的特点。它的作用,就是在系统启动和热插拔或动态加载驱动程序时,自动产生驱动程序所需的节点文件。在以busybox为基础构建嵌入式linux的根文件系统时,使用它是最优的选择。下面的选项将增加对mdev的支持。

Linux System Utilities  --->                     

          [*]Support /etc/mdev.conf               

         [*]Support command execution at device addition/removal 

4、 编译busybox 

编译busybox到指定目录: cd /opt/studyarm/busybox-1.13.3 

make CONFIG_PREFIX=/opt/studyarm/rootfs install 

在rootfs目录下会生成目录bin、sbin、usr和文件linuxrc的内容。

四、建立etc目录下的配置文件

1、etc/mdev.conf文件,内容为空。 

2、拷贝主机etc目录下的passwd、group、shadow文件到rootfs/etc目录下。 

3、etc/sysconfig目录下新建文件HOSTNAME,内容为”MrFeng”。 

4、etc/inittab文件:

#etc/inittab
::sysinit:/etc/init.d/rcS
::askfirst:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r

5、etc/init.d/rcS文件:

#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel
echo "----------munt all----------------"
mount -a
echo /sbin/mdev>/proc/sys/kernel/hotplug mdev -s
echo "***********************************************"
echo "****************BENJAMIN ARM*********************"
echo "Kernel version:linux-2.6.32.2"
echo "Student:Benjamin"
echo "Date:2015.12.02"
echo "***********************************************"
/bin/hostname -F /etc/sysconfig/HOSTNAME

使用以下命令改变rcS的执行权限: Chmod +x rcS

6、etc/fstab文件:

#device    mount-point     type     option     dump   fsck   order
proc          /proc        proc     defaults    0        0
none          /tmp        ramfs    defaults    0        0
sysfs         /sys          sysfs    defaults    0        0
mdev          /dev        ramfs    defaults    0        0

7、 etc/profile文件:

#Ash profile
#vim:syntax=sh
#No core file by defaults
#ulimit -S -c 0>/dev/null 2>&1
USER="id -un"
LOGNAME=$USER
PS1='[\u@\h]\$ '
PATH=$PATH
HOSTNAME='/bin/hostname'
export USER LOGNAME PS1 PATH
alias ll="ls -l"
mknod -m 600 /dev/console c 5 1
mknod -m 600 /dev/null    c 1 3

五、制作根文件系统映像文件 

使用以下命令安装好yaffs文件系统制作工具:  cd /mnt/hgfs/share 

tar –zxvf mkyaffs2image.tgz –C / 

在/opt/studyarm目录下,使用命令mkyaffs2image rootfs rootfs.img生成根文件系统映像文件

注:本人用的 mkyaffs2image-128M 工具

关于如何移植linux kernel及含busybox的yaffs2文件系统镜像就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


网站题目:如何移植linuxkernel及含busybox的yaffs2文件系统镜像
链接分享:http://cdxtjz.cn/article/igeeoe.html

其他资讯