diff --git a/package/busybox/Config.in b/package/busybox/Config.in index f832d7121f..9d9c1a1e91 100644 --- a/package/busybox/Config.in +++ b/package/busybox/Config.in @@ -74,3 +74,11 @@ config BR2_PACKAGE_BUSYBOX_HIDE_OTHERS Do not show packages in menuconfig that are potentially provided by busybox. +config BR2_PACKAGE_BUSYBOX_SKELETON + bool "use minimal target skeleton" + depends on BR2_PACKAGE_BUSYBOX + depends on !BR2_BUSYBOX_VERSION_1_0_1 + help + Use a minimal target skeleton. Make sure to select mdev + which is used to populate /dev/. + diff --git a/package/busybox/busybox.mk b/package/busybox/busybox.mk index 4fb3c16aa2..dd2a5f62f9 100644 --- a/package/busybox/busybox.mk +++ b/package/busybox/busybox.mk @@ -97,6 +97,10 @@ ifeq ($(BR2_LARGEFILE),y) else $(SED) "s/^.*CONFIG_LFS.*/CONFIG_LFS=n/;" $(BUSYBOX_DIR)/.config $(SED) "s/^.*FDISK_SUPPORT_LARGE_DISKS.*/FDISK_SUPPORT_LARGE_DISKS=n/;" $(BUSYBOX_DIR)/.config +endif +ifeq ($(BR2_PACKAGE_BUSYBOX_SKELETON),y) + # force mdev on + $(SED) "s/^.*CONFIG_MDEV.*/CONFIG_MDEV=y/" $(BUSYBOX_DIR)/.config endif yes "" | $(MAKE) CC=$(TARGET_CC) CROSS_COMPILE="$(TARGET_CROSS)" \ CROSS="$(TARGET_CROSS)" -C $(BUSYBOX_DIR) oldconfig diff --git a/target/device/x86/i386/busybox.config b/target/device/x86/i386/busybox.config index ab36a2ae87..75f3f919f5 100644 --- a/target/device/x86/i386/busybox.config +++ b/target/device/x86/i386/busybox.config @@ -638,7 +638,7 @@ CONFIG_ASH_CMDCMD=y # CONFIG_ASH_MAIL is not set CONFIG_ASH_OPTIMIZE_FOR_SIZE=y # CONFIG_ASH_RANDOM_SUPPORT is not set -# CONFIG_ASH_EXPAND_PRMT is not set +CONFIG_ASH_EXPAND_PRMT=y # CONFIG_HUSH is not set # CONFIG_LASH is not set # CONFIG_MSH is not set diff --git a/target/generic/Makefile.in b/target/generic/Makefile.in index 9fa7a6be8d..4ea0b6a6be 100644 --- a/target/generic/Makefile.in +++ b/target/generic/Makefile.in @@ -4,6 +4,6 @@ TARGET_DEVICE_TABLE=target/generic/device_table.txt ifeq ($(BR2_PACKAGE_BUSYBOX_SKELETON),y) TARGET_SKELETON=target/generic/target_busybox_skeleton -TARGET_DEVICE_TABLE= +TARGET_DEVICE_TABLE=target/generic/mini_device_table.txt endif diff --git a/target/generic/mini_device_table.txt b/target/generic/mini_device_table.txt new file mode 100644 index 0000000000..5be00cac36 --- /dev/null +++ b/target/generic/mini_device_table.txt @@ -0,0 +1,174 @@ +# When building a target filesystem, it is desirable to not have to +# become root and then run 'mknod' a thousand times. Using a device +# table you can create device nodes and directories "on the fly". +# +# This is a sample device table file for use with genext2fs. You can +# do all sorts of interesting things with a device table file. For +# example, if you want to adjust the permissions on a particular file +# you can just add an entry like: +# /sbin/foobar f 2755 0 0 - - - - - +# and (assuming the file /sbin/foobar exists) it will be made setuid +# root (regardless of what its permissions are on the host filesystem. +# Furthermore, you can use a single table entry to create a many device +# minors. For example, if I wanted to create /dev/hda and /dev/hda[0-15] +# I could just use the following two table entries: +# /dev/hda b 640 0 0 3 0 0 0 - +# /dev/hda b 640 0 0 3 1 1 1 15 +# +# Device table entries take the form of: +# +# where name is the file name, type can be one of: +# f A regular file +# d Directory +# c Character special device file +# b Block special device file +# p Fifo (named pipe) +# uid is the user id for the target file, gid is the group id for the +# target file. The rest of the entries (major, minor, etc) apply only +# to device special files. + +# Have fun +# -Erik Andersen +# + +# +/dev d 755 0 0 - - - - - +#/dev/pts d 755 0 0 - - - - - +#/dev/shm d 755 0 0 - - - - - +/tmp d 1777 0 0 - - - - - +/etc d 755 0 0 - - - - - +/sys d 755 0 0 - - - - - +/config d 755 0 0 - - - - - +/proc d 755 0 0 - - - - - +/home/default d 2755 1000 1000 - - - - - +# +/bin/busybox f 4755 0 0 - - - - - +/etc/shadow f 600 0 0 - - - - - +/etc/passwd f 644 0 0 - - - - - +/etc/network/if-up.d d 755 0 0 - - - - - +/etc/network/if-pre-up.d d 755 0 0 - - - - - +/etc/network/if-down.d d 755 0 0 - - - - - +/etc/network/if-post-down.d d 755 0 0 - - - - - +/usr/share/udhcpc/default.script f 755 0 0 - - - - - +# uncomment this to allow starting x as non-root +#/usr/X11R6/bin/Xfbdev f 4755 0 0 - - - - - +# Normal system devices +#/dev/mem c 640 0 0 1 1 0 0 - +#/dev/kmem c 640 0 0 1 2 0 0 - +#/dev/null c 666 0 0 1 3 0 0 - +#/dev/zero c 666 0 0 1 5 0 0 - +#/dev/random c 666 0 0 1 8 0 0 - +#/dev/urandom c 666 0 0 1 9 0 0 - +#/dev/ram b 640 0 0 1 1 0 0 - +#/dev/ram b 640 0 0 1 0 0 1 4 +#/dev/loop b 640 0 0 7 0 0 1 2 +#/dev/rtc c 640 0 0 10 135 - - - +/dev/console c 666 0 0 5 1 - - - +#/dev/tty c 666 0 0 5 0 - - - +#/dev/tty c 666 0 0 4 0 0 1 8 +#/dev/ttyp c 666 0 0 3 0 0 1 10 +#/dev/ptyp c 666 0 0 2 0 0 1 10 +#/dev/ptmx c 666 0 0 5 2 - - - +#/dev/ttyP c 666 0 0 57 0 0 1 4 +#/dev/ttyS c 666 0 0 4 64 0 1 4 +#/dev/fb c 640 0 5 29 0 0 32 4 +#/dev/ttySA c 666 0 0 204 5 0 1 3 +#/dev/psaux c 666 0 0 10 1 0 0 - +#/dev/ppp c 666 0 0 108 0 - - - + +# Input stuff +#/dev/input d 755 0 0 - - - - - +#/dev/input/mice c 640 0 0 13 63 0 0 - +#/dev/input/mouse c 660 0 0 13 32 0 1 4 +#/dev/input/event c 660 0 0 13 64 0 1 4 +#/dev/input/js c 660 0 0 13 0 0 1 4 + + +# MTD stuff +#/dev/mtd c 640 0 0 90 0 0 2 4 +#/dev/mtdblock b 640 0 0 31 0 0 1 4 + +#Tun/tap driver +#/dev/net d 755 0 0 - - - - - +#/dev/net/tun c 660 0 0 10 200 - - - + +# Audio stuff +#/dev/audio c 666 0 29 14 4 - - - +#/dev/audio1 c 666 0 29 14 20 - - - +#/dev/dsp c 666 0 29 14 3 - - - +#/dev/dsp1 c 666 0 29 14 19 - - - +#/dev/sndstat c 666 0 29 14 6 - - - + +# User-mode Linux stuff +#/dev/ubda b 640 0 0 98 0 0 0 - +#/dev/ubda b 640 0 0 98 1 1 1 15 + +# IDE Devices +#/dev/hda b 640 0 0 3 0 0 0 - +#/dev/hda b 640 0 0 3 1 1 1 15 +#/dev/hdb b 640 0 0 3 64 0 0 - +#/dev/hdb b 640 0 0 3 65 1 1 15 +#/dev/hdc b 640 0 0 22 0 0 0 - +#/dev/hdc b 640 0 0 22 1 1 1 15 +#/dev/hdd b 640 0 0 22 64 0 0 - +#/dev/hdd b 640 0 0 22 65 1 1 15 +#/dev/hde b 640 0 0 33 0 0 0 - +#/dev/hde b 640 0 0 33 1 1 1 15 +#/dev/hdf b 640 0 0 33 64 0 0 - +#/dev/hdf b 640 0 0 33 65 1 1 15 +#/dev/hdg b 640 0 0 34 0 0 0 - +#/dev/hdg b 640 0 0 34 1 1 1 15 +#/dev/hdh b 640 0 0 34 64 0 0 - +#/dev/hdh b 640 0 0 34 65 1 1 15 + +# SCSI Devices +#/dev/sda b 640 0 0 8 0 0 0 - +#/dev/sda b 640 0 0 8 1 1 1 15 +#/dev/sdb b 640 0 0 8 16 0 0 - +#/dev/sdb b 640 0 0 8 17 1 1 15 +#/dev/sdc b 640 0 0 8 32 0 0 - +#/dev/sdc b 640 0 0 8 33 1 1 15 +#/dev/sdd b 640 0 0 8 48 0 0 - +#/dev/sdd b 640 0 0 8 49 1 1 15 +#/dev/sde b 640 0 0 8 64 0 0 - +#/dev/sde b 640 0 0 8 65 1 1 15 +#/dev/sdf b 640 0 0 8 80 0 0 - +#/dev/sdf b 640 0 0 8 81 1 1 15 +#/dev/sdg b 640 0 0 8 96 0 0 - +#/dev/sdg b 640 0 0 8 97 1 1 15 +#/dev/sdh b 640 0 0 8 112 0 0 - +#/dev/sdh b 640 0 0 8 113 1 1 15 +#/dev/sg c 640 0 0 21 0 0 1 15 +#/dev/scd b 640 0 0 11 0 0 1 15 +#/dev/st c 640 0 0 9 0 0 1 8 +#/dev/nst c 640 0 0 9 128 0 1 8 +#/dev/st c 640 0 0 9 32 1 1 4 +#/dev/st c 640 0 0 9 64 1 1 4 +#/dev/st c 640 0 0 9 96 1 1 4 + +# Floppy disk devices +#/dev/fd b 640 0 0 2 0 0 1 2 +#/dev/fd0d360 b 640 0 0 2 4 0 0 - +#/dev/fd1d360 b 640 0 0 2 5 0 0 - +#/dev/fd0h1200 b 640 0 0 2 8 0 0 - +#/dev/fd1h1200 b 640 0 0 2 9 0 0 - +#/dev/fd0u1440 b 640 0 0 2 28 0 0 - +#/dev/fd1u1440 b 640 0 0 2 29 0 0 - +#/dev/fd0u2880 b 640 0 0 2 32 0 0 - +#/dev/fd1u2880 b 640 0 0 2 33 0 0 - + +# All the proprietary cdrom devices in the world +#/dev/aztcd b 640 0 0 29 0 0 0 - +#/dev/bpcd b 640 0 0 41 0 0 0 - +#/dev/capi20 c 640 0 0 68 0 0 1 2 +#/dev/cdu31a b 640 0 0 15 0 0 0 - +#/dev/cdu535 b 640 0 0 24 0 0 0 - +#/dev/cm206cd b 640 0 0 32 0 0 0 - +#/dev/sjcd b 640 0 0 18 0 0 0 - +#/dev/sonycd b 640 0 0 15 0 0 0 - +#/dev/gscd b 640 0 0 16 0 0 0 - +#/dev/sbpcd b 640 0 0 25 0 0 0 - +#/dev/sbpcd b 640 0 0 25 0 0 1 4 +#/dev/mcd b 640 0 0 23 0 0 0 - +#/dev/optcd b 640 0 0 17 0 0 0 - + diff --git a/target/generic/target_busybox_skeleton/etc/fstab b/target/generic/target_busybox_skeleton/etc/fstab index 6d33629a7b..5a351e2b18 100644 --- a/target/generic/target_busybox_skeleton/etc/fstab +++ b/target/generic/target_busybox_skeleton/etc/fstab @@ -5,4 +5,5 @@ proc /proc proc defaults 0 0 devpts /dev/pts devpts defaults,gid=5,mode=620 0 0 tmpfs /tmp tmpfs defaults 0 0 - +configfs /config configfs defaults 0 0 +sysfs /sys sysfs defaults 0 0 diff --git a/target/generic/target_busybox_skeleton/etc/inittab b/target/generic/target_busybox_skeleton/etc/inittab index a6c014e751..aff1fdfd3c 100644 --- a/target/generic/target_busybox_skeleton/etc/inittab +++ b/target/generic/target_busybox_skeleton/etc/inittab @@ -14,8 +14,14 @@ # process == program to run # Startup the system +null::sysinit:/bin/mount -t proc none /proc +null::sysinit:/bin/mount -t sysfs none /sys +null::sysinit:/bin/mount -t tmpfs -o size=512k,mode=0755 none /dev +null::sysinit:/bin/mkdir /dev/pts +null::sysinit:/bin/mount -t devpts devpts /dev/pts +null::sysinit:/bin/echo /sbin/mdev > /proc/sys/kernel/hotplug +null::sysinit:/sbin/mdev -s null::sysinit:/bin/mount -o remount,rw / -null::sysinit:/bin/mount -t proc proc /proc null::sysinit:/bin/mount -a null::sysinit:/bin/hostname -F /etc/hostname null::sysinit:/sbin/ifconfig lo 127.0.0.1 up @@ -32,7 +38,7 @@ tty2::respawn:/sbin/getty 38400 tty2 # Logging junk null::sysinit:/bin/touch /var/log/messages -null::respawn:/sbin/syslogd -n -m 0 +null::respawn:/sbin/syslogd -n null::respawn:/sbin/klogd -n tty3::respawn:/usr/bin/tail -f /var/log/messages