千家信息网

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

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章给大家介绍如何移植linux kernel及含busybox的yaffs2文件系统镜像,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、建立根文件系统目录进入到/opt/
千家信息网最后更新 2025年12月02日如何移植linux kernel及含busybox的yaffs2文件系统镜像

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

一、建立根文件系统目录

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

#!/bin/shecho "------Create rootfs directons start...--------"mkdir rootfscd rootfsecho "--------Create root,dev....----------"mkdir root dev etc boot tmp var sys proc lib mnt home usrmkdir etc/init.d etc/rc.d etc/sysconfig  mkdir usr/sbin usr/bin usr/lib usr/modulesecho "make node in dev/console dev/null"mknod -m 600 dev/console c 5 1mknod -m 600 dev/null    c 1 3mkdir mnt/etc mnt/jffs2 mnt/yaffs mnt/data mnt/tempmkdir var/lib var/lock var/run var/tmpchmod 1777 tmpchmod 1777 var/tmpecho "-------make direction done---------"

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

二、建立动态链接库

cd rootfs/libcp -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/shPATH=/sbin:/bin:/usr/sbin:/usr/binrunlevel=Sprevlevel=Numask 022export PATH runlevel prevlevelecho "----------munt all----------------"mount -aecho /sbin/mdev>/proc/sys/kernel/hotplug mdev -secho "***********************************************"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   orderproc          /proc        proc     defaults    0        0none          /tmp        ramfs    defaults    0        0sysfs         /sys          sysfs    defaults    0        0mdev          /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>&1USER="id -un"LOGNAME=$USERPS1='[\u@\h]\$ 'PATH=$PATHHOSTNAME='/bin/hostname'export USER LOGNAME PS1 PATHalias ll="ls -l"mknod -m 600 /dev/console c 5 1mknod -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文件系统镜像就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

0