install -v -m 0755 $(TOPDIR)/filesystem/{setup,crux} $(WORK)/mnt/usr/bin
/sbin/ldconfig -r $(WORK)/mnt
cd $(WORK)/mnt && \
- $(WORK)/gen_init_cpio $(WORK)/initramfs.lst | cpio -id && \
+ sed -e "s/#KERNEL_VERSION#/$(KERNEL_VERSION)/g; s/#BUSYBOX_VERSION#/$(BUSYBOX_VERSION)/g" \
+ $(WORK)/initramfs.lst > $(WORK)/initramfs.lst-sed && \
+ $(WORK)/gen_init_cpio $(WORK)/initramfs.lst-sed | cpio -id && \
find * | cpio -H newc -o > $(WORK)/initramfs.cpio && \
gzip -v9 $(WORK)/initramfs.cpio
mv $(WORK)/initramfs.cpio.gz{,-$(KERNEL_VERSION)}
- #rm -rf $(WORK)/mnt
+ rm -rf $(WORK)/mnt
initramfs: $(WORK)/initramfs.cpio.gz-$(KERNEL_VERSION)
#
# Automatically generated make config: don't edit
# Busybox version: 1.19.4
-# Tue Mar 6 12:35:21 2012
+# Mon Jul 2 21:32:06 2012
#
CONFIG_HAVE_DOT_CONFIG=y
CONFIG_SHOW_USAGE=y
CONFIG_FEATURE_VERBOSE_USAGE=y
# CONFIG_FEATURE_COMPRESS_USAGE is not set
-# CONFIG_FEATURE_INSTALLER is not set
+CONFIG_FEATURE_INSTALLER=y
# CONFIG_INSTALL_NO_USR is not set
# CONFIG_LOCALE_SUPPORT is not set
# CONFIG_UNICODE_SUPPORT is not set
fi
}
+/bin/busybox --install -s /bin
+
#
# main script
#
exec >/dev/console </dev/console 2>&1
-echo -e -n " ${BOLD}${BLUE}*${NORM} Mounting filesystems... "
-mount -a && \
-mount -o remount,rw /
-checkReturn
+echo -e -n " ${BOLD}${BLUE}*${NORM} Mounting "
+echo -e -n "${BOLD}${GREEN}/proc${NORM}"
+mount -t proc proc /proc
+
+PRINTK="`cat /proc/sys/kernel/printk`"
+echo "0" > /proc/sys/kernel/printk
+
+echo -e ", ${BOLD}${GREEN}/sys${NORM}."
+mount -t sysfs sysfs /sys
echo -e -n " ${BOLD}${BLUE}*${NORM} Populating /dev via mdev... "
mdev -s
dmesg > /var/log/boot
checkReturn
-echo -e " ${BOLD}${BLUE}*${NORM} Trying to find and mount the media installer..."
-find_and_mount_media
-
-echo
-echo "The system is coming up. Please wait."
-echo
+grep -q "devicetimeout=*" /proc/cmdline
+if [ $? -eq 0 ]
+then
+ for opt in `cat /proc/cmdline`
+ do
+ echo "$opt" | grep -q "devicetimeout="
+ if [ $? -eq 0 ]
+ then
+ DEVTIMEOUT=`echo $opt | cut -d'=' -f2`
+ fi
+ done
+else
+ DEVTIMEOUT=10
+fi
+echo -e " ${BOLD}${BLUE}*${NORM} Waiting $DEVTIMEOUT seconds for devices to settle..."
+sleep $DEVTIMEOUT
+
+# if root=/dev/XXX was specified on the command line, use that as the new root
+# instead of searching for the media and using it. if it fails, fall back to the media
+grep -q "root=/dev/*" /proc/cmdline
+if [ $? -eq 0 ]
+then
+ for opt in `cat /proc/cmdline`
+ do
+ echo "$opt" | grep -q "root="
+ if [ $? -eq 0 ]
+ then
+ ROOTDEV=`echo $opt | cut -d'=' -f2`
+ fi
+ done
+ mkdir -p /newroot
+ # check the specified root device to see if it has an init
+ mount $ROOTDEV /newroot
+ if [ $? -ne 0 ]
+ then
+ echo -e " ${BOLD}${RED}*${NORM} Unable to mount the specified root device! Falling back to the live media."
+ find_and_mount_media
+ else
+ if [ -x /newroot/sbin/init ]
+ then
+ echo -e " ${BOLD}${BLUE}*${NORM} Mounted root device $ROOTDEV."
+ else
+ echo -e " ${BOLD}${RED}*${NORM} The specified root device ($ROOTDEV) does not appear to be usable! Falling back to the live media."
+ umount /newroot
+ find_and_mount_media
+ fi
+ fi
+else
+ find_and_mount_media
+fi
+
+echo -e "${BOLD}${BLUE}*${NORM} Switching root.\n"
+echo "$PRINTK" > /proc/sys/kernel/printk
+echo > /proc/sys/kernel/hotplug
+umount /sys
+umount /proc
+exec /bin/switch_root /newroot /sbin/init
+
+echo "Something's broken, here's a shell."
+exec /bin/sh
# End of file
-dir / 755 0 0
-
-nod /dev/console 664 0 0 c 5 1
-
+# base directories/device nodes
+dir /proc 755 0 0
+dir /sys 755 0 0
+dir /lib 755 0 0
+dir /dev 755 0 0
+nod /dev/console 640 0 0 c 5 1
nod /dev/null 664 0 0 c 1 3
-nod /dev/tty 664 0 0 c 5 0
-
-nod /dev/tty0 644 0 0 c 4 0
-nod /dev/tty1 644 0 0 c 4 1
-nod /dev/tty2 644 0 0 c 4 2
-nod /dev/tty3 644 0 0 c 4 3
-nod /dev/tty4 644 0 0 c 4 4
-nod /dev/tty5 644 0 0 c 4 5
-nod /dev/tty6 644 0 0 c 4 6
-nod /dev/tty7 644 0 0 c 4 7
-
-nod /dev/rd/0 664 0 0 b 1 0
-
-nod /dev/ram0 664 0 0 b 1 0
-
-nod /dev/hda0 644 0 0 b 3 0
-nod /dev/hda1 644 0 0 b 3 1
-
-nod /dev/mmcblk0 664 0 0 b 179 0
-
-nod /dev/mmcblk0p0 644 0 0 b 179 0
-nod /dev/mmcblk0p1 644 0 0 b 179 1
-nod /dev/mmcblk0p2 644 0 0 b 179 2
-nod /dev/mmcblk0p3 644 0 0 b 179 3
-
-nod /dev/mtd0 644 0 0 c 90 0
-nod /dev/mtd1 644 0 0 c 90 1
-nod /dev/mtd2 644 0 0 c 90 2
-nod /dev/mtd3 644 0 0 c 90 3
+# init itself
+file /init init 755 0 0
-nod /dev/mtdblock0 644 0 0 c 31 0
-nod /dev/mtdblock1 644 0 0 c 31 1
-nod /dev/mtdblock2 644 0 0 c 31 2
-nod /dev/mtdblock3 644 0 0 c 31 3
+# busybox and links
+dir /bin 755 0 0
+file /bin/busybox ../busybox-#BUSYBOX_VERSION#/busybox 4755 0 0
+slink /bin/sh busybox 777 0 0