关闭

嵌入式 使用busybox制作完全属于自己的文件系统

637人阅读 评论(0) 收藏 举报
分类:

make ARCH=arm CROSS_COMPILE=arm-hisi100ntpl-linux-

用busybox制作文件系统

busybox-1.15.2

编译器:arm-linux-gcc 4.3.2

平台:某开发板(s3c2440)

宿主:redhat 9.0

得到源码 busybox-1.15.2.tar.bz2

在任意目录解压源码,在任意目录制作文件系统框架~!~!~!

我是在用户模式下家目录中解压的源码和制作的文件系统框架~!~!如图:

这里你能看到我是在家目录 kevin下的源码 busybox-1.15.2.tar.bz2 和制作的文件系统框架 rootfs。。

进入rootfs中你看到:

其中 linuxrc 是后期编译busybox得到的。。

好了,基本的前期任务算是完成了。

下面开始源码的编译:

#cd #vi Makefile

ARCH ?= arm 164行

CROSS_COMPILE ?= arm-linux- 190行

# make menuconfig

展示如下图:

其中的选项大部分是默认的:

这里我们只需该Busybox Setting 目录下的内容。(若需要可以根据自己的情况选配其他选项)

进入 Busybox Setting :

这里第一项保持默认(再次申明 若需要可以根据自己的情况选配)

进入第二项:(Build Options):

按照图中选择 退出配置下一项:

进入Busybox Library Tuning 选项:

其他默认 选上 vi-style line deiting commands

        Fancy shell prompts

这两项,从名字上您也能才到这两项是干什么的吧,,不明白的自己百度吧。。。。

配置完毕::退出保存。。。。

执行 #make

make完毕 接着执行 #make install

ok,,你会在busybox-1.15.2目录中看到_intall 目录。。

这个目录(_intall)中就是我们要用到的内容。。把这个目录的内容完全复制到你做的根文件系统框架中去。。在这里我的是rootfs。。

开始制作文件系统::

进入rooffs/dev目录,创建两个设备节点:

#mknod console c 5 1

#mknod null c 1 3

进入rootfs/etc目录,复制 busybox-1.15.2/example/bootfloop/etc/下的全部文件到此目录下。。

cp -r

复制宿主机下的 /etc/passwd grop shadow 到 此目录下。。

把passwd中的第一行:root:x:0:0:root:/root:/bin/bash中的bash改为ash

修改inittab文件:

::sysinit:/etc/init.d/rcS
console::askfirst:-/bin/sh
::once:/usr/sbin/telnetd -l /bin/login
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r

修改fstab 文件 :

proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0
var /dev tmpfs defaults 0 0
修改/init/rcS文件:

#!/bin/sh

PATH=/bin:/sbin:/usr/bin:/usr/sbin
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel
mount -a
mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
mkdir -p /var/lock

/bin/hostname -F /etc/sysconfig/HOSTNAME
修改 profile文件:
#Ash profile
#vim : syntax=sh

#No core files by default
#ulimit -S -c 0 > /dev/null 2>&1

USER="`id -un`"
LOGNAME=$USER
PS1='[\u@\h \W]#'
PATH=$PATH

HOSTNAME=`/bin/hostname`

echo "hello kevin ...."

echo "Done"

export USER LOGNAME PS1 PATH

在此目录下新建sysconfig目录。。新建HOSTNAME文件内容自定。将来作为主机名。。

注意以上都在/etc目录操作的。。。

现在该目录

到/usr下建立share目录复制主机相应目录下的zoneinfo到此目录。。

在/etc下建立localtime 并建立软链接。。。。

ln -s /usr/share/zoneinfo/Asia/Hong_Kong /etc/localtime

改目录到/lib下,

这个很重要,因为应用程序会用到库文件。所以自己想吧。。。。。

复制编译器中的lib目录下的内容。。

这里我复制两处的内容。给出目录。

toolchian/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib

toolchian/4.3.2/arm-none-linux-gnueabi/libc/lib

不过有的不需要,我也不知道哪几个不需要所以就都复制过来了。。。

ok 大功告成用mkyaffs2image工具制作吧,,

mkyaffs2image rootfs roofs.bin

最终,烧到nandflash后文件系统虽挂载上了,但就是进步了文件系统。。呵呵。。

这里注意一下这几个文件

/etc 下的 inittab profile 和/etc/init.d/下的rcS 还有 根目录下的 linuxrc文件 等的权限为了方便都chmod 777 **

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1043036次
    • 积分:18238
    • 等级:
    • 排名:第522名
    • 原创:741篇
    • 转载:523篇
    • 译文:0篇
    • 评论:105条
    最新评论