#!/bin/busybox ash #Framework, welches ein komplettes Linux System aus den Sourcen erstellt #dieses Framework wird im CVS Repository #:pserver:cvs.tramp-bbs.de:/opt/cvs zur Verfügung gestellt # #Lage dieser Datei im Archiv: $Source$ # #(c) 2003 Harald Kueller, Germany #This program is free software; you can redistribute it and/or #modify ist under the terms of the GNU General Public License #as published by the Free Software Foundation; either version #2 of the License, or (at your option) any later version. # #This program is distributed in the hope that it will be useful, #but WITHOUT ANY WARRANTY; without even the implied warranty of #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. #See the GNU General Public License for more details. # #You should have received a copy of the GNU General Public License #along with this program; if not write to the Free Software Foundation, #Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # #Beschreibung:linuxrc initrd script #Starup Script fuer initrd betrieb von einer CDROM # #Aufrufparameter: # #Letzte Änderung von: $Author: kueller $ #Datum der letzten Änderung: $Date: 2008-03-31 14:59:18 +0200 (Mo, 31 Mär 2008) $ #Version der Datei: $Revision: 4152 $ # #$Log$ #Revision 1.6 2007/04/30 21:29:26 kueller #Probleme mit neuer Version von udev korrigiert # #Revision 1.5 2007/04/12 22:04:52 segler #S0 added at getty starts for enabling serial console for monitorless installation # #Revision 1.4 2006/07/07 21:29:50 kueller #Anpassung von devicenamen an udev. abschaltung von devfs # #Revision 1.3 2006/07/06 18:47:16 kueller #Boot vorgang verbessert. startup wird mittels /etc/init.d/rc scripten #gemacht. Ausserdem werden Gettys auf console 1-6 gestartet. Start #ist von normalem boot fast nicht mehr zu unterscheiden, auch wenn ich #den init immer noch nicht zum laufen bekommen hab. # #Revision 1.2 2006/01/13 16:57:04 kueller #Vorbereitung fuer Viitor_Setup. Bugfix beim vgchange kommando. # #Revision 1.1.1.1 2006/01/12 13:20:21 kueller #New added for cdrom bootup # # cd /bin ./busybox ln -s busybox ln cd /bin ./busybox echo "Generating links in /bin for busybox" for i in [ [[ addgroup adduser ar ash awk basename bunzip2 \ bzcat cat chgrp chmod chown chvt clear cp cpio cut date dc \ dd deallocvt delgroup deluser df diff dirname dmesg du echo \ ed egrep env expr false fgrep find free fuser getopt grep \ gunzip gzip head hostname id insmod ip ipaddr iplink iproute \ iptunnel kill killall last less logger login ls md5sum mesg \ mkdir mknod mktemp more mount mountpoint mt mv netstat newlink \ nslookup passwd patch pidof ping printf ps pwd realpath renice \ reset rm rmdir sed sh sleep sort stat strings stty su sync tail \ tar tee telnet test tftp top touch traceroute true tty umount \ uname uncompress uniq unzip uptime vi wc wget which who whoami \ xargs yes zcat; do ln -s busybox $i done cd - 2>&1 >/dev/null cd /sbin echo "Generating linknames in /sbin for busybox" for i in chroot fbset fdisk getty halt hdparm hwclock ifconfig \ init insmod losetup lsmod mkswap modprobe nameif pivot_root \ poweroff reboot rmmod route runlevel sulogin swapoff swapon \ switch_root sysctl udevstart; do ln -s /bin/busybox $i done cd - 2>&1 >/dev/null runlevel=S prevlevel=N umask 022 export runlevel prevlevel trap ":" INT QUIT TSTP for i in /proc /sys /mnt; do if [ ! -d $i ]; then mkdir $i fi done for i in /etc/init.d/rcS.d/S??*; do [ ! -f "$i" ] && continue; $i start done mount -t proc none /proc echo "0" >/proc/sys/kernel/printk mount -t sysfs none /sys if [ -d /proc/bus/usb ]; then mount -t usbfs none /proc/bus/usb fi cd /lib/modules/* for i in `find . -name "*.ko"`; do MODNAME=`basename $i` MODNAME=`echo $MODNAME|sed -e "s/\.ko$//"` echo "Trying to load $MODNAME" modprobe -q -s $MODNAME 2>&1 >/dev/null done mount -t tmpfs none /dev udevstart echo "7" >/proc/sys/kernel/printk for i in `cat /proc/cmdline`; do DEVNAME=$DEVNAME`echo $i|awk -F "=" '{ if ($1 == "root" ) print $2 }'` done MAJOR=`echo $DEVNAME|cut -d"0" -f 1` MINOR=`echo $DEVNAME|cut -d"0" -f 2` for i in /sys/block/[hs]d?; do if [ -d $i ]; then for j in $i/`basename $i`?; do if [ -d $j ] && [ "`cat $j/dev`" == "$MAJOR:$MINOR" ]; then ROOTDEV=`basename $j` fi done fi done if [ ${ROOTDEV} ]; then mount /dev/$ROOTDEV /mnt exec /sbin/switch_root /mnt /sbin/init else exec /bin/ash fi