home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1997 August / PCO0897.ISO / delix / initrd / initrd-fixes.30.06.97 / linuxrc
Encoding:
Text File  |  1997-06-25  |  4.0 KB  |  225 lines

  1. #!/bin/sh
  2. #
  3. # Authors:    Niels Mache, Ngo Than
  4. # Last change:    26/06/97
  5. #
  6.  
  7. PATH=/sbin:/bin:/usr/bin:/usr/adm/setup
  8. RootPath="/dest"
  9. InstallRoot="/mnt"
  10. IPath=$RootPath
  11. ipath=$IPath
  12. sema=""
  13. clear="H"
  14.  
  15. export DLDVersion="5.2"
  16. DIALOGTITLE=" DLD $DLDVersion (C) 1993-1997 by delix GmbH, Schloâ–€str. 98, 70176 Stuttgart, Germany"
  17.  
  18. mydialog() { 
  19.     dialog --backtitle "$DIALOGTITLE" "$@"
  20.  
  21. ScreenSave() {
  22.     case "$1" in
  23.         on) echo -ne "\033[9;5]" ;;
  24.         off) echo -ne "\033[9;0]" ;;
  25.     esac
  26. }
  27.  
  28. setRootDev() {
  29.     rdev=`grep "$1 " < /etc/devtable`
  30.     for i in $rdev; do
  31.         rootdev=$i
  32.     done
  33.     echo $rootdev >/proc/sys/kernel/real-root-dev 2>/dev/null
  34. }
  35.  
  36. UmountAll() {
  37.     fdisk -l >/tmp/.fdisk.out 2>/dev/null
  38.  
  39.     for f in `grep swap /tmp/.fdisk.out | cut -c1-10` ; do
  40.         swapoff $f >/dev/null 2>&1
  41.     done
  42.  
  43.     if [ -f $ipath/dev/swapfile ] ; then
  44.         swapoff $ipath/dev/swapfile >/dev/null 2>&1
  45.     fi
  46.  
  47.     for f in `mount | grep dev | cut -c1-10` ; do
  48.         if [ "$sema" = "y" ]; then
  49.             umount $f >/dev/null 2>&1
  50.         fi
  51.         sema="y"
  52.     done
  53. }
  54.  
  55. kdaemon() {
  56.     UmountAll
  57.     /sbin/rc.pcmcia stop >/dev/null 2>&1
  58.  
  59.     for i in `cat /proc/net/dev 2>/dev/null | grep ":" | cut -c1-6` ; do
  60.         ifconfig $i down >/dev/null 2>&1
  61.     done
  62.  
  63.     for i in update bash inetd portmap syslogd klogd ; do
  64.         kill -9 `pidof $i` >/dev/null 2>&1
  65.     done
  66. }
  67.  
  68. choosePart()  {
  69.     local Anz
  70.     local Flag
  71.     local Dev
  72.     local Groesse
  73.  
  74.     cat /tmp/tmpmsg | tr -d "*" >/tmp/tmpmsg.new
  75.     mv -f /tmp/tmpmsg.new /tmp/tmpmsg
  76.     for i in `wc /tmp/tmpmsg`; do
  77.         Anz=$i+1
  78.         break
  79.     done
  80.  
  81.     let Anz1=$Anz+8
  82.     cat << EOF >/tmp/exec
  83. #!/bin/sh
  84. dialog --backtitle "$DIALOGTITLE" --title "$1" --menu "$2" $Anz1 60 $Anz \\
  85. EOF
  86.  
  87.     Flag="0"
  88.     for i in `cat /tmp/tmpmsg`; do
  89.         if [ "`echo $i | grep /dev/`" ] ; then
  90.             Dev=$i
  91.             Flag="1"
  92.          fi
  93.  
  94.         if [ "$Flag" -gt "0" -a "$Flag" -lt "6" ] ; then
  95.             let Flag=$Flag+1
  96.         fi
  97.  
  98.         if [ "$Flag" = "6" ]; then
  99.             Groesse=${i%+}
  100.             Flag="0"
  101.  
  102.             cat << EOF >> /tmp/exec 
  103. "$Dev" "$Groesse KByte" \\
  104. EOF
  105.         fi
  106.     done
  107.  
  108.     cat << EOF >> /tmp/exec
  109. "e" "Partitionsbezeichner eingeben" \\
  110. EOF
  111.  
  112.     cat << EOF >> /tmp/exec
  113. 2> /tmp/ret
  114. EOF
  115.  
  116.     chmod 755 /tmp/exec
  117.     /tmp/exec
  118.     if [ $? != 0 ]; then
  119.         rm /tmp/exec
  120.         rm /tmp/tmpmsg
  121.         rm /tmp/ret
  122.         LINUX_PART=
  123.     fi
  124.  
  125.     rm -f /tmp/exec
  126.     rm -f /tmp/tmpmsg
  127.  
  128.     if [ -s /tmp/ret ]; then
  129.         LINUX_PART="`cat /tmp/ret`"
  130.         rm -f /tmp/ret
  131.     else
  132.         LINUX_PART=
  133.     fi
  134.  
  135.     if [ "$LINUX_PART" = "e" ]; then
  136.         mydialog --title "Partitionsbezeichner" --inputbox \
  137. "Geben Sie den Partitionsbezeichner ein:" 9 50 2> /tmp/ret
  138.         if [ $? != 0 ]; then
  139.             LINUX_PART=
  140.         else
  141.             LINUX_PART=`cat /tmp/ret`
  142.         fi
  143.         rm -f /tmp/ret
  144.     fi
  145. }
  146.  
  147. shell() {
  148.     echo $clear
  149.     echo 'Zum Laden der Kernelmodule "hwsetup" verwenden.'  
  150.     echo 'Beenden der Shell und reboot mit "exit".'
  151.     sh -login
  152.  
  153.     mydialog --title "DLD Bootdisk" --yesno \
  154. "\nWollen Sie Linux von Festplatte starten?\n" 7 46
  155.  
  156.     if [ $? = "0" ]; then
  157.         fdisk -l > /tmp/fdisk.out 2>/dev/null
  158.         cat /tmp/fdisk.out | grep "Linux native" > /tmp/tmpmsg
  159.  
  160.         if [ "`cat /tmp/tmpmsg`" = "" ] ; then
  161.             mydialog --title "Fehler" --msgbox \
  162. "\nEs wurde keine Linux Parttition (EXT2-Format) gefunden.\n\
  163. Der Rechner wird jetzt rebootet.\n" 8 60
  164.             kdaemon
  165.             echo $clear        
  166.             reboot
  167.          else
  168.             choosePart "Linux booten" "Von welcher Festplatte/Partition soll gebootet werden?"
  169.          fi
  170.  
  171.          if [ -n "$LINUX_PART" ] ; then
  172.             setRootDev $LINUX_PART
  173.             kdaemon
  174.             echo $clear
  175.             umount -a 2>/dev/null
  176.             exit
  177.          fi
  178.  
  179.     fi
  180.  
  181.     kdaemon
  182.     echo $clear
  183.     reboot
  184.     exit
  185. }
  186.  
  187.  
  188. mount -a >/dev/null 2>&1
  189. update
  190. doprog /dev/tty2 bash -login
  191. hostname dld
  192. syslogd -n & 
  193. klogd -c 1
  194.  
  195. (gzip -cd | loadkeys) </etc/gr.map.gz
  196. [ "$?" = "0" ] && rm -f /sbin/loadkeys /etc/gr.map.gz
  197.  
  198. ScreenSave off
  199.  
  200. /usr/adm/setup/doinst1
  201.  
  202. if [ -f /tmp/ROOTDEV ]; then
  203.     rootdev=`/bin/cat /tmp/ROOTDEV`
  204.     setRootDev $rootdev
  205.     kdaemon
  206.     umount -a >/dev/null 2>&1
  207.     echo $clear
  208.     echo "Boote von Festplatte/Partition $rootdev."
  209.     exit
  210. else
  211.     mydialog --title "Installation abgebrochen" --yesno \
  212. "\nWollen Sie das System neu booten ?\n" 7 40
  213.     if [ "$?" = "0" ] ; then
  214.         kdaemon
  215.         reboot
  216.         exit
  217.     else
  218.         mydialog --infobox "\nDas System wird nicht gebootet. Starte shell...\n" 5 52
  219.         sleep 2
  220.     fi
  221.  
  222.     shell
  223. fi
  224.