转载自: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) /*****************************************************************************************************************************/ 开始: 将源码解压到自定义一个目录下 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 $MDEVsd([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 &
|
AM335 busybox制作文件系统
最新推荐文章于 2022-08-12 16:46:56 发布