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 **