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 ":: Could not find a valid ISO image; opening a command prompt." /bin/sh.shared fi done