#!/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