#!/bin/bash
# $Id: linuxrc,v 1.18 2004/02/07 16:41:17 lioka Exp $

LABEL='.VERSION'

export PATH=/bin:/sbin
export TERM=linux

find_cdrom()
{
    local mountpoint="$1"
    shift

    local d i

    # search for IDE cd-rom
    for i in ide-cd iso9660; do modprobe $i >/dev/tty1 2>/dev/tty1; done
    echo -n "Searching for IDE CDROM: " > /dev/tty1
    for d in /dev/hd[a-h]; do
	[ -f "/proc/ide/${d##*/}/media" ] || continue
	read < /proc/ide/${d##*/}/media
	[ "$REPLY" = cdrom ] || continue
	mount -tiso9660 -o ro $d $mountpoint >/dev/null 2>&1 || continue
	if [ -f $mountpoint/$LABEL ]; then
	    echo " $d" > /dev/tty1
	    sed -e "s|^[[:space:]]\+${d##*hd} \(.\+\)$|\1|g" -e '/^[[:space:]]\+[a-h]/d' <<< "\
		a 0x0300
		b 0x0340
		c 0x1600
		d 0x1640
		e 0x2100
		f 0x2140
		g 0x2200
		h 0x2240"
	    return 0
	fi
	umount $mountpoint
	echo -n . > /dev/tty1
    done

    # not found
    echo > /dev/tty1
    echo "Couldn't find CDROM device, mount it by hand to $mountpoint" > /dev/tty1
    echo 'and type <exit> to continue.'  > /dev/tty1
    echo > /dev/tty1

    /bin/bash <> /dev/tty1

    # FIXME
    if [ -f $mountpoint/$LABEL ]; then
	set `grep -w $mountpoint < /proc/mounts`
	set `ls -l $1 |sed 's|^.\+ \([0-9]\+\), \+\( [0-9]\+\).\+$|\1\2|'`
	printf "0x%02x%02x" $1 $2
	return 0
    fi
}

mkdir /proc /mnt /tmp
mount -tproc proc /proc > /dev/tty2 2> /dev/tty3
find_cdrom /mnt > /proc/sys/kernel/real-root-dev
umount /mnt
umount /proc ||:
