AM335 busybox制作文件系统

转载自:http://www.openedv.com/forum.php?mod=viewthread&tid=65947

busybox-1.24.0制作AM335X文件系统          第一天

平台说明

     busybox  版本:   busybox-1.24.0

Linux      版本:   ubuntu 15.04(编译主机)

GCC       版本:     gcc version 4.7.3 20130226 (prerelease)(crosstool-NG linaro-1.13.1-4.7-2013.03-20130313 - Linaro GCC 2013.03)
      硬   件   平  台:  自制硬件板子(VoipServer-V0.0.1)


/*****************************************************************************************************************************/
开始:
    将源码解压到自定义一个目录下         

    cd /home/am335x/app/
    tar xvjf busybox-1.24.0.tar.bz2
    cd busybox-1.24.0
    配置
    make  menuconfig    
    
   Busybox Setting ----->
      Build Options -----> 
        //1选择将busybox进行静态编译 
        [ * ]Build BusyBox as a static binary (no shared libs)
               
       //2.指定交叉编译器为
       (/usr/local/arm_linux_4.7.3/bin/arm-linux-gnueabihf-)Cross Compiler prefix

     Busybox Library Tuning---> 
        //3.编译出的busybox的shell命令解释器支持显示当前路径及主机信息
        [ * ]Username completion 
        [ * ]Fancy shell prompts 
        [ * ]Query  cursor  position  from  terminal 

     General Configuration---> 
        //4.去了Use the devpts filesystem for Unix98 PTYs
         [   ]Use the devpts filesystem for Unix98 PTYs
    Networking Utilities ----->
         //5.去了inetd

        [   ]inetd
    配置保存
   编译
   make
   编译完成后安装
   make install
   此时会在busybox的根目录下生成 _install目录,里面有/bin /sbin  /usr linuxrc 四个文件。




转载自:http://www.openedv.com/forum.php?mod=viewthread&tid=66366




busybox-1.24.0制作AM335X文件系统          第二天

/*****************************************************************************************************************************/
开始:

1、创建根文件系统目录,主要包括以下目录
    /dev  /etc /lib  /usr  /var /proc /tmp /home /root /mnt /bin  /sbin  /sys
    #mkdir rootfs
    #cd rootfs
    #mkdir  dev  etc  lib  usr  var  proc tmp  home  root  mnt   sys
    将第一天编译好的文件复制到 根文件系统目录(注意:复制的时候加上-rfa参数)
2、构建etc目录
    在etc目录下创建inittab文件
    文件内容:
# /etc/inittab init(8) configuration for BusyBox
#
# Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
#
#
# Note, BusyBox init doesn't support runlevels.  The runlevels field is
# completely ignored by BusyBox init. If you want runlevels, use sysvinit.
#
#
# Format for each entry: <id>:<runlevels>:<action>:<process>
#
# <id>: WARNING: This field has a non-traditional meaning for BusyBox init!
#
#        The id field is used by BusyBox init to specify the controlling tty for
#        the specified process to run on.  The contents of this field are
#        appended to "/dev/" and used as-is.  There is no need for this field to
#        be unique, although if it isn't you may have strange results.  If this
#        field is left blank, it is completely ignored.  Also note that if
#        BusyBox detects that a serial console is in use, then all entries
#        containing non-empty id fields will be ignored.  BusyBox init does
#        nothing with utmp.  We don't need no stinkin' utmp.
#
# <runlevels>: The runlevels field is completely ignored.
#
# <action>: Valid actions include: sysinit, respawn, askfirst, wait, once,
#                                  restart, ctrlaltdel, and shutdown.
#
#       Note: askfirst acts just like respawn, but before running the specified
#       process it displays the line "lease press Enter to activate this
#       console." and then waits for the user to press enter before starting
#       the specified process.
#
#       Note: unrecognised actions (like initdefault) will cause init to emit
#       an error message, and then go along with its business.
#
# <process>: Specifies the process to be executed and it's command line.
#
# Note: BusyBox init works just fine without an inittab. If no inittab is
# found, it has the following default behavior:
#         ::sysinit:/etc/init.d/rcS
#         ::askfirst:/bin/sh
#         ::ctrlaltdel:/sbin/reboot
#         ::shutdown:/sbin/swapoff -a
#         ::shutdown:/bin/umount -a -r
#         ::restart:/sbin/init
#
# if it detects that /dev/console is _not_ a serial console, it will
# also run:
#         tty2::askfirst:/bin/sh
#         tty3::askfirst:/bin/sh
#         tty4::askfirst:/bin/sh
#
# Boot-time system configuration/initialization script.
# This is run first except when booting in single-user mode.
#
::sysinit:/etc/init.d/rcS

# /bin/sh invocations on selected ttys
#
# Note below that we prefix the shell commands with a "-" to indicate to the
# shell that it is supposed to be a login shell.  Normally this is handled by
# login, but since we are bypassing login in this case, BusyBox lets you do
# this yourself...
#
# Start an "askfirst" shell on the console (whatever that may be)
:nce:-/bin/sh
# Start an "askfirst" shell on /dev/tty2-4
#tty2::askfirst:-/bin/sh
#tty3::askfirst:-/bin/sh
#tty4::askfirst:-/bin/sh
# /sbin/getty invocations for selected ttys
#tty4::respawn:/sbin/getty 38400 tty5
#tty5::respawn:/sbin/getty 38400 tty6
# Example of how to put a getty on a serial line (for a terminal)
#::respawn:/sbin/getty -L ttyS0 9600 vt100
#::respawn:/sbin/getty -L ttyS1 9600 vt100
#
# Example how to put a getty on a modem line.
#::respawn:/sbin/getty 57600 ttyS2
# Stuff to do when restarting the init process
::restart:/sbin/init
# Stuff to do before rebooting
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff -a
    在etc 目录下创建fstab文件
    文件内容:
#device     mount-point     type        options         dump     fsck order
proc        /proc                 proc        defaults       0          0
tmpfs    /tmp                 tmpfs       defaults        0          0
sysfs       /sys                  sysfs       defaults        0          0
tmpfs       /dev                  tmpfs       defaults        0          0
    在etc 目录下创建mdev.conf文件
    文件内容:
mmcblk([0-9]+)p([1]+)                  0:0 660 */etc/sd_automount.sh                         $MDEV
sd([a-z]+)([0-9]+)      0:0 660 @/etc/usbdisk_inserting.sh                 $MDEV
sd([a-z]+)              0:0 660 $/etc/usbdisk_removing.sh                 $MDEV
    在etc目录下创建profile文件
    文件内容:
#!/bin/sh
export HOSTNAME=VoipBoxServer-V0.0.1
export USER=root
export HOME=root
#export PS1="\[\u@\h \W\]\$ "
export PS1="[$USER@$HOSTNAME \W]\# "
PATH=/bin:/sbin:/usr/bin:/usr/sbin
LD_LIBRARY_PATH=/lib:/usr/lib LD_LIBRARY_PATH
export PATH LD_LIBRARY_PATH
echo "************************************************************************"
echo "================= Welcome to VoipBoxServer Console ^_^ ================="
echo "************************************************************************"
     拷贝虚拟机上的/etc/passwd, /etc/group到rootfs/etc下
    在etc目录下创建NetConfig.ini文件
    文件内容:
[NetConfig]
NetCardType=LAN
AddrConfigType=MANUAL
IpAddr=192.168.1.114
Netmask=255.255.255.0
Gateway=192.168.1.1
MacAddr=00:02:AC:55:88:A8
    在etc目录下创建sd_automount.sh文件
    文件内容:
#! /bin/sh
echo "sd_automount*************$1****************" > /dev/console
if [ "$1" == "" ]; then
        echo "parameter is none" > /dev/console
        exit 1
fi
MNT=$1
if echo "$1" | grep mmcblk; then
        MNT=sdcard
else
        echo "is not SD" > /dev/console
        exit 1        
fi
mounted=`mount | grep $MNT | wc -l`
if [ $mounted -ge 1 ]; then
        umount -l "/mnt/$MNT"
        rm -rf "/mnt/$MNT"
        echo "[Umount FS]: /dev/$1 -X-> /mnt/$MNT" > /dev/console
else
        mkdir -p "/mnt/$MNT"
        mount -t vfat -o noatime,shortname=mixed,utf8 "/dev/$1" "/mnt/$MNT"
        echo "[Mount VFAT]: /dev/$1 --> /mnt/$MNT" > /dev/console        
fi
    在etc目录下创建usbdisk_inserting.sh文件
    文件内容:
#! /bin/sh
echo "usb_inserting*************$1****************" > /dev/console
if [ "$1" == "" ]; then
        echo "parameter is none" > /dev/console
        exit 1
fi
MNT=$1
if echo "$1" | grep sd; then
        MNT=UsbDisk
else
        echo "is not UsbDisk" > /dev/console
        exit 1        
fi
mounted=`mount | grep $MNT | wc -l`
if [ $mounted -ge 1 ]; then
        echo "/mnt/$MNT used!!!!!!!!!!!" > /dev/console
else
        mkdir -p "/mnt/$MNT"
        mount -t vfat -o noatime,shortname=mixed,utf8 "/dev/$1" "/mnt/$MNT"
        echo "[Mount VFAT]: /dev/$1 --> /mnt/$MNT" > /dev/console        
fi
    在etc目录下创建usbdisk_removing.sh文件
    文件内容:
#! /bin/sh
echo "usb_removing*************$1****************" > /dev/console
if [ "$1" == "" ]; then
        echo "parameter is none" > /dev/console
        exit 1
fi
MNT=$1
if echo "$1" | grep sd; then
        MNT=UsbDisk
else
        echo "is not UsbDisk" > /dev/console
        exit 1        
fi
mounted=`mount | grep $MNT | wc -l`
if [ $mounted -ge 1 ]; then
        umount -l "/mnt/$MNT"
        rm -rf "/mnt/$MNT"
        echo "[Umount FS]: /dev/$1 -X-> /mnt/$MNT" > /dev/console
else
        echo "/mnt/$MNT not found!!!!!!!!!!!" > /dev/console
fi  
    在etc目录下创建init.d目录
    #mkdir init.d
    #cd init.d
     在etc/init.d目录下创建rcS文件
    文件内容:
#!/bin/sh
##设置机器名字;
/bin/hostname VoipBoxServer-V0.0.1   
echo "#mount all.........."
mount -a
mkdir /dev/pts
/bin/mknod /dev/pts/0 c 136 0
/bin/mknod /dev/pts/1 c 136 1
/bin/mknod /dev/pts/2 c 136 2
/bin/mknod /dev/pts/3 c 136 3
/bin/mknod /dev/pts/4 c 136 4
/bin/mknod /dev/pts/5 c 136 5
/bin/mount -t devpts devpts /dev/pts
mount -o remount,rw /dev/root
echo /sbin/mdev > /proc/sys/kernel/hotplug  
mdev -s
echo "#StarNet.........."
StartNetwork.sh &

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值