OpenSDE Framework (without history before r20070)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

112 lines
2.9 KiB

#!/bin/sh
# --- T2-COPYRIGHT-NOTE-BEGIN ---
# This copyright note is auto-generated by ./scripts/Create-CopyPatch.
#
# T2 SDE: target/share/livecd/init
# Copyright (C) 2006 The T2 SDE Project
#
# More information can be found in the files COPYING and README.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License. A copy of the
# GNU General Public License can be found in the file COPYING.
# --- T2-COPYRIGHT-NOTE-END ---
echo "T2 early userspace ..."
PATH=/sbin:/bin
echo "Mounting /dev, /proc and /sys ..."
mount -t tmpfs none /dev
mount -t proc none /proc
mount -t usbfs none /proc/bus/usb
mount -t sysfs none /sys
ln -s /proc/self/fd /dev/fd
# later on we might reverse these, that is run udevstart first,
# and let udev add new ones as hotplug agents ...
echo "Running hotplug++ hardware detection ..."
/sbin/hotplug++ -synth
echo "/sbin/hotplug++" > /proc/sys/kernel/hotplug
echo "Loading additional subsystem and filesystem driver ..."
# hack to be removed
modprobe sbp2
# well some hardcoded help for now ...
modprobe ide-generic
modprobe ide-disk
modprobe ide-cd
modprobe sd_mod
modprobe sr_mod
modprobe sg
# the modular filesystems ...
for x in /lib/modules/*/kernel/fs/{*/,}*.*o ; do
x=${x##*/} ; x=${x%.*o}
modprobe $x
done
echo "Populating /dev (udev) ..."
/sbin/udevstart
echo "Searching for CD with Live file-system ..."
mkdir -p /media/cdrom /mnt/live
i=0
while [ $i -le 9 ]; do
for x in /sys/block/*/device; do
x=${x%/device}; x=${x#/sys/block/}
case "`ls -l /sys/block/$x/device`" in
*/usb*|*/ieee1394) : ;;
*) [ "`cat /sys/block/$x/removable`" = 1 ] || continue ;;
esac
x=/dev/$x
for x in ${x}* ; do
[ -e $x ] || continue
fs=`disktype $x 2>/dev/null |
sed -e '/file system/!d' -e 's/file system.*//' -e 's/ //g' \
-e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/' \
-e 's/fat32/vfat/'`
if mount -t $fs -o ro $x /media/cdrom 2>/dev/null; then
if [ -f /media/cdrom/live.squash ]; then
echo "Found the Live file-system ($x) ..."
losetup /dev/loop0 /media/cdrom/live.squash
mount -t squashfs -o ro /dev/loop0 /mnt/live
# create symlinks to the live content
mv /bin /bin-static
for x in /mnt/live/* ; do
x=${x#/mnt/live/}
case $x in
dev|proc|sys|media|mnt|tmp) continue ;;
esac
if [ -e /$x ]; then
# echo "Removing /$x ..."
/bin-static/rm -rf /$x
fi
# echo "Linking /mnt/live/$x /$x"
/bin-static/ln -s /mnt/live/$x /$x
done
# /bin-static/ls -l /
# echo "Removing /bin-static"
/bin-static/rm -rf /bin-static
exec /init2 $*
else
echo "No Live file-system found - unmounting."
umount /media/cdrom
fi
fi
done
done
: $(( i++ ))
sleep 1
done
echo "No Live CD found, giving up. Debug shell:"
exec /bin/sh