#!/bin/sh # $Id: linuxrc,v 1.1 2005-01-30 23:47:35 tim Exp $ exec /bin/sh setArg() { eval $1="$2"; } setCmd() { eval $1; } setCmd LN=/bin/ls setCmd MOUNT=/bin/mount setCmd UMOUNT=/bin/umount setCmd CAT=/bin/cat setCmd MKDIR=/bin/mkdir setCmd MODPROBE=/sbin/modprobe setCmd CP=/bin/cp setCmd LN=/bin/ln setCmd PIVOT_ROOT=/sbin/pivot_root setCmd CHROOT=/usr/sbin/chroot ${MOUNT} -nt proc proc /proc # Get the command line CMDLINE=$( ${CAT} /proc/cmdline ) #Set a default ramdisk_size ramdisk_size=16384 for Parameter in $CMDLINE; do case ${Parameter} in ramdisk_size=*) setArg $( IFS='='; echo ${Parameter} ) ;; esac done ${MOUNT} -nt tmpfs -o "size=${ramdisk_size}k" ramdisk newroot echo 256 >/proc/sys/kernel/real-root-dev SCSI_MODULES="aic7xxx" for i in cdrom devfs initrd mnt proc sys tmp var; do ${MKDIR} /newroot/$i done echo "Detecting CD. Please wait ..." ${MOUNT} -t devfs devfs /newroot/devfs ${MODPROBE} ide-cd ${MODPROBE} ide-detect ${MODPROBE} sr_mod for i in $SCSI_MODULES; do ${MODPROBE} $i; done for i in /newroot/devfs/ide/*/*/*/*/cd /newroot/devfs/scsi/*/*/*/*/cd; do if ( ${MOUNT} -n -o ro $i /newroot/cdrom >/dev/null 2>&1 ); then break fi done echo "Copying files. Please wait ..." ${CP} /stage2 /newroot for i in bin lib sbin usr; do ${LN} -s /cdrom/$i /newroot/$i done for i in dev etc root; do ${MKDIR} /newroot/$i ${CP} -dpR /newroot/cdrom/$i/. /newroot/$i done for i in lock lib lib/urandom log log/ksymoops log/mail log/news run run/sshd tmp; do ${MKDIR} /newroot/var/$i done for i in backups cache lib/apt lib/dhcp lib/dpkg lib/dumpdates lib/misc lib/setserial local mail opt spool; do ${LN} -s /cdrom/var/$i /newroot/var/$i done cd /newroot ${UMOUNT} -n /proc ${MOUNT} -nt proc proc /newroot/proc ${PIVOT_ROOT} . initrd exec ${CHROOT} . /bin/bash /stage2 dev/console 2>&1