现在的位置: 首页 > 综合 > 正文

自动编译busybox文件系统脚本

2013年10月10日 ⁄ 综合 ⁄ 共 2260字 ⁄ 字号 评论关闭

#!/bin/bash

#created by shuinieh 2009.10.6
#http://blog.csdn.net/shuinieh/archive/2009/10/06/4635046.aspx
#总是把根文件系统搞的很乱,这回好了,解压busybox,扔到里面执行下---一切OK!

#BusyBox 1.13.4 ,Kernel 2.6.10 下测试成功

rootfs=$(pwd)/rootfs
rlibdir="/usr/local/arm/4.3.1-eabi-armv6/lib"
#libdir="/home/work/s3c6410/source/tar_file/buildroot-2009.11/output/staging/usr/lib"
CROSS_COMPILE="arm-linux-"

BuildBusyBox()
{
    sed -e "s/CROSS_COMPILE ?=/CROSS_COMPILE=${CROSS_COMPILE}/" /
        -e 's/ARCH ?= $(SUBARCH)/ARCH=arm/' /
         Makefile> makefile && /
    mv -f makefile Makefile && /
    make ARCH=arm CROSS_COMPILE=${CROSS_COMPILE} defconfig && /
    make ARCH=arm CROSS_COMPILE=${CROSS_COMPILE} CONFIG_PREFIX=${rootfs} install || exit 1
    return 0
}
 
BuildBusyBox ||exit 1

echo "准备创建系统目录!"
cd $rootfs && echo "当前目录:`pwd`" || exit 1

for dir in dev etc lib mnt proc var tmp sys root
do
    test ! -d ${dir} && mkdir ${dir}
done
echo "系统目录创建成功!"

echo "准备拷贝相关库文件!"
cp ${libdir}/libm.so.6 lib/ || (echo "拷贝libm.so.6库失败!" ; exit 1)
cp ${libdir}/libc.so.6 lib/ || (echo "拷贝libm.so.6库失败!" ; exit 1)
cp ${libdir}/ld-linux.so.3 lib/    || (echo "拷贝ld-linux.so.2库失败!" ; exit 1 )
echo "相关库文件拷贝成功!"

echo "准备创建/etc/inittab文件!"
cat >${rootfs}/etc/inittab <<END
::sysinit:/etc/init.d/rcS
::askfirst:-/bin/sh
::restart:/sbin/init
::ctrlaltdel:/sbin/reboot
::shutdown:/sbin/swapoff -a
::shutdown:/bin/umount -a -r
END
echo "创建/etc/inittab文件成功!"

mkdir -p ${rootfs}/etc/init.d ||exit 1

echo "准备创建/etc/init.d/rcS文件!"
cat >${rootfs}/etc/init.d/rcS <<END
#!/bin/sh
# This is the first script called by init process
/bin/mount -a
#/bin/echo /sbin/mdev > /proc/sys/kernel/hotplug
#/sbin/mdev -s

test -d /dev/pts || mkdir /dev/pts
/bin/mount -t devpts devpts /dev/pts

#/sbin/ifconfig lo 127.0.0.1
#/sbin/ifconfig eth0 192.168.1.65
END
echo "创建/etc/init.d/rcS文件成功!"

chmod 755 ${rootfs}/etc/init.d/rcS || exit 1

echo "准备创建/etc/fstab文件!"
cat >${rootfs}/etc/fstab <<END
proc        /proc        proc        defaults        0 0
sysfs        /sys        sysfs        defaults        0 0
END
echo "创建/etc/fstab文件成功!"

echo "准备创建相关设备节点!"
if [ ! -c ${rootfs}/dev/console ];then
    if [ ${USER} = root ]; then
        mknod ${rootfs}/dev/console c 5 1 || exit 1
    else
        echo "请输入口令用以创建console设备节点:"
        sudo mknod ${rootfs}/dev/console c 5 1 || exit 1
    fi
fi

if [ ! -c ${rootfs}/dev/null ];then
    if [ ${USER} = root ]; then
        mknod ${rootfs}/dev/console c 5 1 || exit 1
    else
        echo "请输入口令用以创建null设备节点:"
        sudo mknod ${rootfs}/dev/null c 1 3 || exit 1
    fi
fi
echo "相关设备节点创建成功!"

 

抱歉!评论已关闭.