新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > Busybox制作嵌入式Linux的文件系统

Busybox制作嵌入式Linux的文件系统

作者: 时间:2016-10-08 来源:网络 收藏

lrwxrwxrwx 117 libcrypt.so.1 -> libcrypt-2.3.2.so

将其拷贝到$arm2410HOME/lib中。

(可以编写一个脚本:vi envCp,将下面的命令拷贝至脚本然后执行即可:执行chmod u+rx envCp,然后./envCp)

cp -l /usr/local/arm/3.4.1/arm-linux/lib/ld-2.3.2.so $arm2410HOME/lib

cp -l /usr/local/arm/3.4.1/arm-linux/lib/ld-linux.so.2 $arm2410HOME/lib

cp -l /usr/local/arm/3.4.1/arm-linux/lib/libc-2.3.2.so $arm2410HOME/lib

cp -l /usr/local/arm/3.4.1/arm-linux/lib/libc.so.6 $arm2410HOME/lib

cp -l /usr/local/arm/3.4.1/arm-linux/lib/libcrypt-2.3.2.so $arm2410HOME/lib

cp -l /usr/local/arm/3.4.1/arm-linux/lib/libcrypt.so.1 $arm2410HOME/lib

拷贝后检查一下:

ls -all $arm2410HOME/lib,应该和上面相同,包括文件及其链接。

4、设定etc,准备启动:

将busybox源代码 example/bootfloopy/etc目录中的文件拷贝过来到$arm2410HOME/etc。

cp -fr $BUSYBOXHOME/examples/bootfloppy/etc/* $arm2410HOME/etc

etc文件夹是许多系统配置文件保存的地方。这些文件非常重要,如果配置错误,就可能影响系统的启动。busybox源代码 example/bootfloopy/etc目录中的文件算是一个简单的例子,可以把其中的文件拷贝过来作为基础。(在 example/bootfloopy目录中的一些脚本和文档也很值得阅读)

首先inittab文件是系统启动后所访问的第一个脚本文件,后续启动的文件都由它指定。这个文件的格式和普通微机Linux上的inittab是有区别的,其具体含义可以参考busybox的文档。下面是一个比较简单的例子:

::sysinit:/etc/init.d/rcS

tty0::respawn:/sbin/getty 38400 tty0

tty2::askfirst:/bin/sh

::ctrlaltdel:/sbin/reboot

::shutdown:/bin/umount ar

::shutdown:/bin/mount / o remount,ro

其中第一行指定了系统的启动脚本为/etc/init.d/rcS;第二行指定在第一个虚拟终端打开一个登录会话;第三行指定在第三个虚拟终端打开一个无须登录验证的shell;第四行指定了当按下ctrl+alt+del组合键时的执行命令;最后两行指定了关机时执行的操作。

fstab文件定义了文件系统的各个“挂接点”,需要与实际的系统相配合。一个简单的fstab文件如下:proc/procprocdefaults00

/dev/hda1/ext2rw,noauto01

devpts/dev/ptsdevptsdefaults00

其中第三行是为UNIX PTYs准备的,telnetd要用到。

profile 文件是终端登录之后首先运行的脚本,这里可以不去管它。我们比较关心的是系统在无人登录的情况下有哪些程序要执行。从inittab文件可以看出系统启动之后要运行/etc/init.d/rcS脚本,需要启动的程序和需要进行的设置都可以写在这里面。一个可能的rcS文件如下:

#! /bin/sh

echo e 'Starting System'

ifconfig lo 127.0.0.1

ifconfig eth0 192.168.0.100

hostname F /etc/hostname

/bin/mount / o remount,rw

/bin/mount /proc

/bin/mount /dev/pts

/usr/sbin/telnetd

dmesg > /var/log/dmesg

为了满足终端登录用户验证的要求,etc目录下还需要有passwd、group和shadow (在编译busybox时如果不选择shadow功能将不需要这个文件)。这些文件至少要包含 root用户的定义,如下所示:

passwd:

root:x:0:0:root:/root:/bin/sh

group:

root:x:0:

shadow:

root::12179:0:99999:7:::

其中,如果shadow (对于不支持shadow的系统则是passwd )文件的第一个冒号和第二个冒号之间没有内容,表示这个用户登录不需要密码。如果需要设定密码或者增加新的登录用户,就可以参考开发主机上的相应文件,或者在目标系统启动之后用passwd命令和adduser命令完成。

最后还可以给目标机起一个名字,在/etc目录下建立文件hostname,将起好的名字写到里面。前面介绍的启动脚本rcS,通过hostname命令把文件的内容设置为机器名。

5、制作yaffs文件系统:

找到yaffs制作工具mkyaffsimage,将其拷贝到/bin目录下,以便于利用系统环境变量能找到,然后用下面的命令:

mkyaffsimage filesystem root.yaffs

就可以filesystem目录制作成一个名叫root.yaffs的映像。

6、用uboot将yaffs文件系统下载到目标板:

(1)准备tftp下载

将制作好的yaffs文件系统映像拷贝到/tftpboot下,修改其权限至少为755, 然后重新启动 xinetd 服务。

chmod 755 root.yaffs

/etc/init.d/xinetd restart

(2)下载到目标板

启动目标板到uboot,在minicom下输入以下命令:

tftp 33000000 root.yaffs

下载完成后uboot会返回文件的大小,假设为x

nand erase 230000 3dcc000(此处擦除的要比较大,因为内核要挂载一些文件)

nand write.yaffs 33000000 230000 x

重新启动目标板,如果能启动到busybox提示符即可。


上一页 1 2 下一页

关键词:

评论


相关推荐

技术专区

关闭