首页 / 操作系统 / Linux / 使用busybox制作根文件系统的小脚本
翻出了很久很久以前使用busybox制作根文件系统的脚本程序,在此记录一下#!/bin/bashSHELL_DIR=$(cd $(dirname ${0});pwd)cd ${SHELL_DIR}if [ "" = "$1" ];thenecho "<Usage> CMD clean/nfs/ramdisk"exitfiCPU_NUM=$(grep processor /proc/cpuinfo | awk "{field=$NF};END{print field+1}")export ARCH=armexport CROSS_COMPILE=/opt/arm-cross-compile/arm-none-linux-gnueabi-2014-05/bin/arm-none-linux-gnueabi-COMPILE_DIR=/opt/arm-cross-compile/arm-none-linux-gnueabi-2014-05/bin/if [ "clean" = "$1" ];thenmake cleanexitfimake cleanmake menuconfigmake -j${CPU_NUM}make install cd ./_install/mkdir -p dev etc mnt proc var tmp sys root lib/modules/4.8.5#拷贝交叉编译工具的库文件,如果使用共享库编译,那么busybox运行的时候需要,这些库还可以支持运行编译器版本相差不多的应用程序cp -a /opt/arm-cross-compile/arm-none-linux-gnueabi-2014-05/arm-none-linux-gnueabi/libc/lib/ .rm -f lib/*.a#去除符号表,节省空间,但是不能反汇编了#${COMPILE_DIR}arm-none-linux-gnueabi-strip lib/*#创建sbin/init的配置文件/etc/inittabcat <<INITTAB_END >./etc/inittab# Boot-time system configuration/initialization script.# This is run first except when booting in single-user mode.#::sysinit:/etc/init.d/rcS# Start an "askfirst" shell on the console (whatever that may be)::askfirst:-/bin/sh #直接进shell#::askfirst:-/bin/login #需要登录,粗糙#::respawn:/sbin/getty -L ttySAC2 115200 vt100#需要登录,会调用上一句,更严谨# 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 -aINITTAB_ENDmkdir -p ./etc/init.d/cat <<RCS_END >./etc/init.d/rcS#!/bin/shmount -aecho /sbin/mdev > /proc/sys/kernel/hotplug/sbin/mdev -smkdir -p /dev/ptsmount -t devpts devpts /dev/ptsLIBDIR=/lib/modules/`uname -r`if [ ! -e $LIBDIR ] ; thenmkdir -p $LIBDIRfiecho -e " 33[0;31;1m #----------------------XJ tech------------------------# 33[0m" #关闭黑屏echo -e " 33[9;0]" > /dev/tty0#显示光标echo -e " 33[?25h" > /dev/tty0#隐藏光标echo -e " 33[?25l" > /dev/tty0echo -e " 33[0;31;1m #----------------------XJ tech------------------------# 33[0m" > /dev/tty0dmesg -n 1if [ -e /etc/init.d/ifconfig-eth0 ] ; then/etc/init.d/ifconfig-eth0elseecho "eth0 Not enable"fiRCS_ENDcat <<FSTAB_END >./etc/fstab#device mount-point typeoptions dumpfsckorderproc/proc procdefaults0 0sysfs /syssysfs defaults0 0mdev/devtmpfs defaults0 0none/tmptmpfs defaults0 0none/vartmpfs defaults0 0#for mmc/dev/mmcblk1p2 /mnt ext2defaults0 0FSTAB_ENDcat <<PROFILE_END >./etc/profile#!/bin/sh# No core files by defaultulimit -S -c 0 > /dev/null 2>&1PS1="u@h:w$ "PATH=$PATH:/sbin:/bin:/usr/bin:usr/sbinrunlevel=Sprevlevel=Numask 022export runlevel prevlevel PS1 PATHPROFILE_ENDchmod +x etc/init.d/rcSif [ "nfs" == "$1"];then #拷贝_install中的所有内容到nfs共享目录sudo cp -a* /nfselif [ "ramdisk" == "$1" ];then#创建ramdiskcd ../dd if=/dev/zero of=ramdisk bs=1k count=8192mkfs.ext2 -F ramdiskif [ ! -d /mnt/mnt_ramdisk ];thensudo mkdir /mnt/mnt_ramdiskfisudo mount -t ext2 ramdisk /mnt/mnt_ramdisk/sudo cp -a_install/* /mnt/mnt_ramdisk/sudo umount /mnt/mnt_ramdiskgzip --best -c ramdisk >ramdisk.gzmkimage -n "ramdisk" -A arm -O linux -T ramdisk -C gzip -d ramdisk.gz ramdisk.imgmv ramdisk.img /tftp##############################################################################需要配置内核与之配合#File system ---># <*>Second extended fs support#Device Drivers# SCSI device support ---># <*>SCSI disk support# Block devices ---># <*>RAM block device support# (16)Default number of RAM disks# (8192)Default RAM disk size(kbytes)#General setup ---># [*]Initial RAM filesystem and RAM disk (initramfs/initrd)support#############################################################################fi移植Busybox与构建根文件系统 http://www.linuxidc.com/Linux/2011-10/44886.htmBusyBox各版本下载 http://www.linuxidc.com/Linux/2011-08/40704.htm本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-01/139703.htm