#!/bin/sh
export PATH=/bin:.

mount -t proc proc /proc

for i in aufs.ko unlzma.ko sqlzma.ko squashfs.ko ; do
  insmod /lib/modules/$i
done
insmod /lib/modules/2.6.27.4-plamoSMP/kernel/fs/nls/nls_iso8859-1.ko
insmod /lib/modules/2.6.27.4-plamoSMP/kernel/fs/nls/nls_ascii.ko
insmod /lib/modules/2.6.27.4-plamoSMP/kernel/fs/nls/nls_cp932.ko
insmod /lib/modules/2.6.27.4-plamoSMP/kernel/fs/nls/nls_euc-jp.ko
insmod /lib/modules/2.6.27.4-plamoSMP/kernel/drivers/cdrom/cdrom.ko
insmod /lib/modules/2.6.27.4-plamoSMP/kernel/drivers/ide/ide-cd_mod.ko
insmod /lib/modules/2.6.27.4-plamoSMP/kernel/drivers/block/loop.ko
insmod /lib/modules/2.6.27.4-plamoSMP/kernel/drivers/scsi/sr_mod.ko
insmod /lib/modules/2.6.27.4-plamoSMP/kernel/drivers/scsi/sg.ko
insmod /lib/modules/2.6.27.4-plamoSMP/kernel/fs/fat/fat.ko
insmod /lib/modules/2.6.27.4-plamoSMP/kernel/fs/vfat/vfat.ko
insmod /lib/modules/2.6.27.4-plamoSMP/kernel/fs/msdos/msdos.ko

sleep 10

mount_ok=0
for i in hdc hda hdb hdc sr0 sr1 sr2 ; do
  echo "trying CD device"
  mount -t iso9660 /dev/$i /cdrom -o ro 
  if [ $? = "0" ]; then
      if [ -f /cdrom/rootimg.squash ]; then
          echo "found cdrom on /dev/$i"
	  mount_ok=1
          break
      else
          umount /cdrom
      fi 
  fi
done

if [ "$mount_ok" == "0" ]; then
    partitions=`cat /proc/partitions | cut -b23-28 | grep sd`
    for i in $partitions ; do
	mount /dev/$i /cdrom 
        if [ $? = "0" ]; then
            if [ -f /cdrom/rootimg.squash ]; then
                echo "found cdrom on /dev/$i"
		mount_ok=1
		break
            else
		umount /cdrom
	    fi 
	fi
    done
fi
if [ "$mount_ok" == "0" ]; then
    echo "cannot find partition include squashfs"
    echo "cannot continue. exit"
    exec /bin/sh
fi

# mount -t squashfs /cdrom/rootimg.squash /loop -o loop
losetup /dev/loop0 /cdrom/rootimg.squash
mount -t squashfs /cdrom/rootimg.squash /loop

#umount /proc
#exec pivot_root loop put_old
#cd /loop
#mount -n --move . /
#exec /bin/switch_root . /sbin/init 3
#exec /bin/sh

mount -t tmpfs none /loop/tmp

mkdir -p /loop/tmp/var
mount -t aufs -o br:/loop/tmp/var:/loop/var none /loop/var
# mkdir -p /loop/var/lock/emacs
# mkdir -p /loop/var/lock/subsys
# mkdir -p /loop/var/log/initpkg
# mkdir -p /loop/var/log/packages
# mkdir -p /loop/var/log/removed_packages
# mkdir -p /loop/var/log/removed_scripts
# mkdir -p /loop/var/log/scripts

# mkdir -p /loop/var/preserve
# mkdir -p /loop/var/run
# mkdir -p /loop/var/spool/mail
# mkdir -p /loop/var/spool/tmp
# mkdir -p /loop/var/tmp
# mkdir -p /loop/var/X11R7
# mkdir -p /loop/var/state/dhcp
# mkdir -p /loop/var/empty

mkdir -p /loop/tmp/lib/modules
mount -t aufs -o br:/loop/tmp/lib/modules:/loop/lib/modules none /loop/lib/modules
echo "copying /lib/modules/2.6.27.4-plamoSMP to /loop/lib/modules"
cp -a /lib/modules/2.6.27.4-plamoSMP /loop/lib/modules

mkdir -p /loop/tmp/lib/firmware
mount -t aufs -o br:/loop/tmp/lib/firmware:/loop/lib/firmware none /loop/lib/firmware
echo "copying /lib/firmware to /loop/lib/firmware"
cp -a /lib/modules/firmware/* /loop/lib/firmware

mkdir -p /loop/tmp/etc
mount -t aufs -o br:/loop/tmp/etc:/loop/etc none /loop/etc
echo "copyinng modified rc.S to /etc/rc.d/rc.S"
cp /etc/rc.S.modified /loop/etc/rc.d/rc.S

#echo "copying modified inittab /etc/inittab"
#cp /etc/inittab /loop/etc/inittab
mkdir -p /loop/tmp/home
mount -t aufs -o br:/loop/tmp/home:/loop/home none /loop/home

# exec /bin/sh

echo "switch_root to /loop"
sleep 5
cd /loop
exec /bin/switch_root . /sbin/init

#cd /loop
#./lib/ld-2.7.so --library-path ./lib ./bin/mount -n --move . /
#exec ./lib/ld-2.7.so --library-path ./lib ./bin/chroot . /sbin/init

#exec /bin/sh

#umount /proc
#cd /loop
#pivot_root . put_old
#exec chroot . /sbin/init

#mount -n --move . /
#exec /bin/switch_root -c /dev/console . /sbin/init

#mount -t proc proc /loop/proc
#cd /
# mount --move /loop /
#find /proc/$$/cwd/ -mindepth 1 -maxdepth 1 -print0 \
#| xargs -0 rm -rf -- '{}' ';'
#cd /
#exec /bin/sh

#exec chroot /loop /bin/bash
#cd /loop
# exec chroot . /sbin/init
