FOUND_ISO= #RAMSIZE=100000 -o "size=${RAMSIZE}k" msg ":: Creating new root ramdisk (dinamic size=${RAMSIZE}k) on /dev/shm..." mkdir -p /flash /cdrom /squashfs ${NEWROOT} # # findiso(): looks for ISO9660 images stored in flash root # findiso(){ msg ":: Looking for openmamba ISO cdrom images" # try removable devices only for i in /flash/openmamba-*.iso; do /bin/losetup /dev/loop0 $i if mount -r -t iso9660 /dev/loop0 /cdrom >/dev/null 2>&1; then if test -r /cdrom/rootfs.compressed; then msg ":: Valid ISO image $i found..." FOUND_ISO="$i" return 0 fi umount /cdrom fi /bin/losetup /dev/loop0 done return 1 } #/sbin/splash_util -c repaint ${splash_add} -t default --mesg="Looking for cdrom device" --progress="4444" while true; do msg ":: root device is ${root}" if ! mount -t ext3 ${root} /flash >/dev/null 2>&1; then if ! mount -t ext2 ${root} /flash >/dev/null 2>&1; then err ":: Unable to mount USB rootfs. Supported filesystems are ext2 and ext3." fi fi findiso if [ "$FOUND_ISO" ]; then # /sbin/splash_util -c repaint ${splash_add} -t default --mesg="Mounting compressed filesystem" --progress="5555" msg ":: Mounting compressed filesystem" /bin/losetup /dev/loop1 /cdrom/rootfs.compressed mount -r -t squashfs /dev/loop1 /squashfs if [ "${unionfs}" != "off" -a "${unionfs}" != "OFF" ]; then [ "${unionfs}" = "reset" ] && { msg ":: Resetting unionfs data in rwroot" mkdir -p /flash/old mv /flash/rwroot /flash/old/ } msg ":: Mounting unionfs" mkdir -p /flash/rwroot mount -t unionfs -o dirs=/flash/rwroot=rw:/squashfs=ro unionfs ${NEWROOT} mkdir -p ${NEWROOT}/squashfs ${NEWROOT}/flash ${NEWROOT}/cdrom mount -n -o move /squashfs ${NEWROOT}/squashfs mount -n -o move /flash ${NEWROOT}/flash mount -n -o move /cdrom ${NEWROOT}/cdrom else msg ":: Creating directories and symlinks on ramdisk..." /bin/mount -t tmpfs /dev/shm ${NEWROOT} mkdir -p \ ${NEWROOT}/tmp ${NEWROOT}/proc ${NEWROOT}/sys \ ${NEWROOT}/initrd ${NEWROOT}/mnt ${NEWROOT}/media \ ${NEWROOT}/oldroot ${NEWROOT}/squashfs ${NEWROOT}/flash \ ${NEWROOT}/cdrom mount -n -o move /squashfs ${NEWROOT}/squashfs mount -n -o move /flash ${NEWROOT}/flash mount -n -o move /cdrom ${NEWROOT}/cdrom ln -s squashfs/bin ${NEWROOT}/bin ln -s squashfs/boot ${NEWROOT}/boot ln -s squashfs/lib ${NEWROOT}/lib ln -s squashfs/opt ${NEWROOT}/opt ln -s squashfs/sbin ${NEWROOT}/sbin ln -s squashfs/srv ${NEWROOT}/srv ln -s squashfs/usr ${NEWROOT}/usr chroot ${NEWROOT} /bin/cp -a \ /squashfs/dev /squashfs/home /squashfs/var \ /squashfs/etc /squashfs/root / fi # Create empty utmp and wtmp #:> ${NEWROOT}/var/run/utmp #:> ${NEWROOT}/var/run/wtmp # [ "${init}" ] || init=/sbin/init # msg ":: Running init, runlevel:${runlevel}" # exec run-init ${NEWROOT} ${init} ${runlevel} # msg ":: Could not run init; opening a command prompt." # /bin/sh.shared else msg ":: FATAL ERROR: could not find a valid ISO image." # /bin/sh.shared fi done