#!/bin/ash # SYS Install / Rescue Programm. # W.Landgraf 2007-2010 ff. # Lizenz: GPL # Zugehoerige Hilfs- oder Erweiterungsprogramme z.Zt: # mkdev, mkpart, copysys, chkuserconf, mkuserconf, mountsysfs, installiso if test $PWD != / ; then chroot . ./init ; exit ; fi ; # immer unter chroot laufen, damit alle System-Programme vhd . sleep 5 SERIAL=` /bin/date -u +%d:%m:%y-%X ` # %s ./mountsysfs > /dev/zero 2>&1 # macht /proc , device-nodes usw /bin/setterm -powersave off -blank 0 # auf Konsole schicken, nicht umleiten sleep 5 # USB-Geraete dauern # Uebergabe der Parameter ueber Dateien wie /devs , /parts, /installinfo # /installinfo nicht initialisieren, bei ggf. noetigem reboot # - etwa falls auf boot/root-Geraet vom lfnd System installiert wird - # werden dort Informationen wie Ziel-Partition aufgehoben und weiterverwendet TST=0 # normaler Betrieb REBOOT=0 # =0 normalerweise bzw vor reboot, =1 nach reboot mit neuer Partitions-Tabelle #TST=1 # test SIZE=40000000 # Sektoren , V. 0.20 Wird in mkpart genauer bestimmt DEVZERO="if=/dev/zero" # ash interpretiert nicht richtig das if in dd #REDIRECT=" >> logfile 2>&1 " # Ersetzt nicht richtig ###### max. 2 Versuche von Installation und/oder Rescue vor abschalten des Rechners # Beim 1. Durchlauf von RESCUE koennen u.a. fehlende Sachen fuer eine Installation korrigiert werden, # zBsp Install-DVD einlegen oder SYS_Linux.iso Datei kopieren, Partitionen aendern, usw, danach rescue mit # exit verlassen. Stattdessen kann man freilich auch neu booten, daher Konzept inzwischen ueberfluessig for DURCHLAUF in 1 2 ; do echo " == DURCHLAUF : " $DURCHLAUF " === " >> logfile 2>&1 RESCUE=0 # default: Installation (bei REBOOT>0 stets). RESCUE > 0 ist Rescue-System statt Installation # RESCUE=1: direkt/schnell in rescue gehen , =20 vorher eine Meldung anzeigen (bei fehlgeschlagener Installation) NACH=- ; NACH0=- ; VON=- ; KLEINER=- ; OLDSYS=- ; WINDOWS=- echo $TST $SIZE $NACH0 $NACH $VON $KLEINER $OLDSYS $WINDOWS >> installinfo # anhaengen, falls /installinfo schon da / reboot werden alte, sonst obige Werte genommen read TST SIZE NACH0 NACH VON KLEINER OLDSYS WINDOWS REST < installinfo > /dev/zero 2>&1 if test $NACH != - > /dev/zero 2>&1 ; then REBOOT=1 ; fi ; # Test ob Fortsetzung nach reboot if test $REBOOT = 0 ; then echo " " > logfile 2>&1 ; fi ; if test $REBOOT = 0 ; then echo " ======= Linux SYS Install-Programm ---- Anfang logfile von Installation: " $SERIAL " ====== " >> logfile 2>&1 ; fi ; if test $REBOOT != 0 ; then echo " ======= Linux SYS Install-Programm ---- Fortsetzung nach Reboot logfile von Installation: " $SERIAL " ====== " >> logfile 2>&1 ; fi ; echo " Falls Installation von lfnd. System aus, zBsp mit .iso-Datei, im äußeren System vor chroot möglichst viele Partitionen " >> logfile 2>&1 echo " unmounten, da dort gemountete Probleme im inneren System/Installer beim mounten und Erkennen zu Problemen führen" >> logfile 2>&1 echo " Irgndwo gemountete Dateisysteme / Partitionen sind im chroot-Bereich insbesondere nicht redimensionierbar" >> logfile 2>&1 date >> logfile 2>&1 PROBLEM=0 # schwere/leichte Probleme: > 10: Abbruch , < 10 versuchen weiterzumachen echo $PROBLEM > problem echo " Vorgabe: TST SIZE NACH0 NACH VON KLEINER OLDSYS WINDOWS: " >> logfile 2>&1 echo $TST $SIZE $NACH0 $NACH $VON $KLEINER $OLDSYS $WINDOWS >> logfile 2>&1 # 0.0. Feststellung der Geraete (endgueltig und Ablauf der Installation regelnd), # nicht der Partitionen (waehrend der Installation veraenderbar) echo $TST $SIZE $NACH0 $NACH $VON $KLEINER $OLDSYS $WINDOWS > installinfo mkdir -p /von >> logfile 2>&1 # dorthin werden u.a. .iso-Dateien gemountet, auch fuer rescue-System ./mkdev >> logfile 2>&1 read PROBLEM REST < problem #if test $PROBLEM = 11 ; then #dialog --title "no space for install (needs $SIZEGB GB)" --no-collapse --colors --msgbox " # \Z1 ESPACO INSUFI- ZUWENIG PLATZ # CIENTE P/INSTALAR FÃR INSTALATION # NECESSARIO : NÃTIG : \Zn # \Z4 $SIZEGB GB \Zn #" 9 42 #fi ; # Nachfolgendes dürft bei Installer vom CD aus gestartete eigentlich nicht passieren, nur falls hier nicht vorgesehene dev-Namen: #if test $PROBLEM = 12 ; then #dialog --title "install-DVD $VON could not found/read .." --no-collapse --colors --msgbox " # \Z1 DVD DA INSTALACAO INSTAL-DVD NICHT # NAO LEGIVEL AUFFINDBAR / LESBAR \Zn # \Z4 $VON \Zn #" 9 46 #fi ; #if test $PROBLEM = 13 ; then #dialog --title "destination disk $NACH not found/writeable .." --no-collapse --colors --msgbox " # \Z1 DISCO AONDE INSTALAR ZIEL-FESTPLATTE NICHT # NAO ACHADO / C PROBLEM AUFFINDBAR / SCHREIBBAR \Zn # \Z4 $NACH \Zn #" 9 53 #fi ; if test $PROBLEM -gt 10 ; then RESCUE=1 ; fi ; # PROBLEM > 10 so schwerwiegend dass keine Installation moeglich. Schnell nach rescue gehen read TST SIZE NACH0 NACH VON KLEINER OLDSYS WINDOWS REST < installinfo >> logfile 2>&1 echo " nach mkdev: TST SIZE NACH0 NACH VON KLEINER OLDSYS WINDOWS: " >> logfile 2>&1 echo $TST $SIZE $NACH0 $NACH $VON $KLEINER $OLDSYS $WINDOWS >> logfile 2>&1 read FESTPLATTEN < festplatten ; read USBKEYS < usbkeys ; read CDS < cds ; read LEEREGERAETE < leeregeraete # haben alle /dev if test $RESCUE = 0 ; then echo " Geraete-Kurzbezeichnungen fuer Eingabe : " >> logfile 2>&1 VON000=${VON#/dev/} ; VON00=${VON000%/SYS_Linux.iso} VON000=${VON00%[1-9]} ; if test $VON00 = $VON000 ; then VON00=- ; fi ; # VON00 = - falls Install-DVD , sonst Name der Partition mit .iso -Datei echo " Eingabe /von gemountet VON: " $VON " auf Part. VON00: " $VON00 " auf Geraet VON000: " $VON000 >> logfile 2>&1 fi ; ### Altes System suchen und user-config uebernehmen # alte user-config nicht mehr nach ggf reboot kopieren noch neu initialisieren sondern zuletzt gefundene Werte verwenden, # da alte Partition ggf nicht mehr da if test $REBOOT = 0 ; then OLDSYS=- LANG0="-" ; KBD0="-" ; LANG="pt_BR" ; KBD="br-abnt2" ; USER00=- ; USER=- # LANG ist Systemvariable, kann nicht - gesetzt wd CHAP1=- ; PAP1=$CHAP1 ; CHAP2=- ; PAP2=$CHAP2 echo $OLDSYS $KBD $KBD0 $LANG $LANG0 $USER00 $USER0 $CHAP1 $CHAP2 $PAP1 $PAP2 > userconf echo $OLDSYS $KBD $KBD0 $LANG $LANG0 $USER00 $USER0 $CHAP1 $CHAP2 $PAP1 $PAP2 >> logfile 2>&1 ./chkuserconf >> logfile 2>&1 fi ; # REBOOT = 0 # ... aber alte Werte neu einlesen nach evtl. reboot mit neuen Partitionen (NACH -ne 0) read OLDSYS KBD KBD0 LANG LANG0 USER00 USER0 CHAP1 CHAP2 PAP1 PAP2 REST < userconf echo "nach chkuserconf: " OLDSYS KBD KBD0 LANG LANG0 USER00 USER0 CHAP1 CHAP2 PAP1 PAP2 >> logfile 2>&1 echo $OLDSYS $KBD $KBD0 $LANG $LANG0 $USER00 $USER0 $CHAP1 $CHAP2 $PAP1 $PAP2 >> logfile 2>&1 echo " keyboard und Sprache fuer Install/Rescue setzen: KBD: " $KBD " LANG: " $LANG >> logfile 2>&1 loadkeys $KBD >> logfile 2>&1 LANG=$LANG # In der initrd unter ash funktioniert alles nur halb, sollte dadurch global werden if test $RESCUE = 0 ; then echo " erfolgter REBOOT = " $REBOOT " , Install nach: " $NACH >> logfile 2>&1 if test $REBOOT = 0 ; then DEFAULTMACHEN=" " ; if test $DURCHLAUF = 2 ; then DEFAULTMACHEN="--defaultno" ; echo -e "\a" ; fi ; clear dialog --title " S Y S " --yes-label "INSTAL" --no-label "RESCUE" $DEFAULTMACHEN --timeout 6 --colors --no-collapse --yesno " \Zb\Z1 SYS \Zn \Z3 Instalacao Installierung\Zn \Z3 Socorro Rescue \Zn Versao 0.23-r4+ 1/2/10 \Z4 ftp://guyane.dyn-o-saur.com \Zn " 21 34 RESCUE=$? echo -e "\a" VERBOTEN=" France USA Israel " dialog --title "afirm if you are citizen of, or living at .." --yes-label "NAO / NEIN" --no-label "SIM / JA" --timeout 6 --colors --no-collapse --yesno " \Z3 Afirma se voce Bestaetigen falls Sie e cidadao de ... , Buerger von ... sind ou viva em ... : oder in ... wohnen :\Zn $VERBOTEN " 16 54 VERBOTEN0=$? if test $VERBOTEN0 = 1 ; then dialog --title "not permitted you use SYS or its install tool .." --no-collapse --colors --infobox " Em $VERBOTEN ou para seus citadoes podem ter limitacoes legais usar software livre, e inclusive para nossa protecao nao concordamos com o uso de SYS por tais pessoas e nao e permitido eles usarem os utilitarios de instalacao e administracao do SYS. In $VERBOTEN oder fuer dessen Buerger koennen rechtliche Einschraenkungen fuer open Software bestehen, und, einschliesslich zu unserem Schutz, stimmen wir der Benutzung von SYS durch solche Personen nicht zu, und erlauben nicht den Gebrauch der SYS Install- und Verwaltungsprogramme durch sie. " 0 0 sleep 18 reboot -f exit fi ; if test $VERBOTEN0 = 255 ; then # um waehrend nachfolgender Dauer die timeout-Meldung loszuwerden ... dialog --title " wait .. " --no-collapse --colors --infobox " . . . " 4 14 fi ; # 0 : Install 1 : rescue 255 : timeout --> 0 # Wird nichts eingegeben, installieren falls SYS_SCHON_DA = 0 , rescue falls SYS_SCHON_DA = 1 # Incl. damit zweite Installation nur falls ausdr. verlangt (falls jemand geschlafen hat Install-CD rauszunehmen und restart) echo " RESCUE, SYSSCHONDA 1: " $RESCUE $SYSSCHONDA >> logfile 2>&1 sync RESCUE1=$RESCUE # siehe auch DEFAULTMACHEN in Abfrage-Fenster if test $RESCUE = 255 ; then RESCUE=0 ; fi ; # normalerweise default = installieren # beim 2. Durchlauf default = rescue : if test $DURCHLAUF != 1 ; then if test $RESCUE != 0 ; then RESCUE=20 #clear ; mv -f installinfo installinfo.log > /dev/zero 2>&1 ; cat rescue.txt ; /bin/bash -li ; sync ; /sbin/reboot -f > /dev/zero 2>&1 fi ; fi ; fi ; # if RESCUE = 0 vor Begruessungs-Fenster # Ausgabegeraet NACH0 abfragen falls mehr als 1 vhd if test $RESCUE = 0 ; then read NTARGETS TARGETS < targets # read UNW NACH0 REST < targets # aber per installinfo uebergeben #read UNW NACH0 REST < targets # weg da bestes NACH0 in mkdev vorgeschlagen echo $TARGETS > scr0 if test $NTARGETS -gt 1 ; then dialog --title " install DEVICE : size, unpartitioned, empty " --default-item $NACH0 --timeout 7 --no-collapse --colors --menu " \Z1 AONDE INSTALAR WOHIN INSTALLIEREN \Zn ( \Z4 $SIZEGB G \Zn ) DISCO Tamanho nao-particionado desocupado GERAET Groesse unpartitioniert leer " 0 0 0 --file scr0 2> scr if test $? = 0 ; then read NACH0 UNW < scr fi ; fi ; grep "$NACH0" devices > scr read NACH0 UNW DISKSIZE REST < scr # erste HD mit Groesse .ne. 0 als Install-Platte NACH0 angesehen echo $TST $SIZE $NACH0 $NACH $VON $KLEINER $OLDSYS $WINDOWS > installinfo echo $DISKSIZE > disksize echo "### Installation nach Geraet: " $NACH0 " Groesse: " $DISKSIZE " Sektoren" >> logfile 2>&1 echo " Geraete-Kurzbezeichnungen fuer Ausgabe : " >> logfile 2>&1 NACH000=${NACH0#/dev/} # NACH00=${NACH#/dev/} , NACH hier noch unbekannt echo " Ausgabe /nach auf Geraet NACH000: " $NACH000 >> logfile 2>&1 fi ; ### 0.1. Ob von vornherein alle Disks oder NACH0 ganz loeschen (zBsp bei voellig vermurkstem alten System) # falls (nur) beim 1. Durchlauf fragen ob alles loeschen : # if test $DURCHLAUF = 1 ; then if test $RESCUE = 0 ; then dialog --title "erase everything ??" --yes-label "NAO / NEIN" --no-label "SIM / JA" --timeout 7 --colors --no-collapse --yesno " \Z1 APAGAR TODO ? ALLES LOESCHEN ? \Zn " 8 46 LOESCHEN=$? dialog --title " wait .. " --no-collapse --colors --infobox " . . . " 4 14 if test $LOESCHEN = 1 ; then # SYSSCHONDA=0 # falls nur 1.Durchlauf relevant # echo -e "o \nw " > fdisk.machen for J in $NACH000 ; do # Nur Install-Geraet loeschen #for J in hda hdb hdc hdd sda sdb sdc sdd uba ubb ubc ubd ; do # falls alle Platten loeschen echo " falls " $VON00 " Partition, nicht loeschen da dort .iso -Datei ist" >> logfile 2>&1 for K in 1 2 3 4 5 ; do if test $J$K != $VON00 ; then # VON= /$J$K/SYS_Linux.iso oder - # root-Disk ausnehmen !! Ebenso ggf. usb-keys echo " loeschen: " /dev/$J$K >> logfile 2>&1 #dialog --title " delete .. " --no-collapse --colors --infobox " # apagar loeschen: /dev/$J #" 6 36 ### ( dd $DEVZERO of=/dev/$J bs=1k count=1 > /dev/zero 2>&1 ) umount /$J$K # Aenderungen wd. effektiv erst nachdem ALLE Partitionen auf NACH000 ungemountet wurden oder reboot echo -e "d \n"$K" \nw " > fdisk.machen /sbin/fdisk /dev/$J < fdisk.machen >> logfile 2>&1 fi ; done ; done sync /dev/makedevs.sh >> logfile 2>&1 /sbin/fdisk -l >> logfile 2>&1 sync fi ; # LOESCHEN = 1 fi ; # RESCUE = 0 # fi ; falls nur beim 1. Durchlauf alles loeschen echo " MACHEN 2: " $RESCUE >> logfile 2>&1 ### 0.2. Ggf. schon vhd. Installationen von SYS loeschen oder ueberschreiben SYSSCHONDA=0 ; OBSCHONDA=0 # grobe Suche ob selbe Version von SYS schon irgendwo installiert ist . # Genommen wird erste gefundene Instalation # verbessern: fuer jede gefundene Installation / Partition abfragen ob loeschen, # bis zum ersten Mal nein = default gewaehlt wurde # Veraenderbar, da solche Partitionen geloescht wd. koennen, und da sich ggf # bei Problemen/Platzmangel Meinung des Benutzers aendert ob loeschen for J in $NACH000 ; do #for J in sda hda sdb hdb sdc hdc sdd hdd uba ubb ubc ubd ; do for I in 1 2 3 4 ; do if test $SYSSCHONDA = 0 ; then mkdir -p /$J$I >> logfile 2>&1 umount /dev/$J$I >> logfile 2>&1 # umount /dev/... nötig sonst stets Fehlschlag mit $? mount /dev/$J$I /$J$I >> logfile 2>&1 ; IFMOUNT=$? # nicht mount -o ro da immer Fehlschlag falls schon rw gemountet echo "Suche nach vhd SYS Installation auf Partition: " /dev/$J$I " Versuch mount nach: " /$J$I " IFMOUNT: " $IFMOUNT >> logfile 2>&1 if test $IFMOUNT -eq 32 ; then rmdir /$J$I >> logfile 2>&1 ; fi ; # nicht rm -r sonst wird ganzes System gelöscht falls gemountet aber IFMOUNT falsch positiv ( cat /$J$I/etc/SYS-version > scr0 ) >> logfile 2>&1 read OBSCHONDA REST < scr0 >> logfile 2>&1 # wird bei erfolgreicher Installation am Ende von copysys hineingeschrieben if test "$OBSCHONDA" = SYS >> logfile 2>&1 ; then SYSSCHONDA=1 ; DEVSCHONDA0=/$J$I ; DEVSCHONDA00=/dev/$J echo " SYS schon da auf Partition: " /dev/$J$I >> logfile 2>&1 fi ; # OBSCHONDA umount /$J$I >> logfile 2>&1 # noetig umount sonst Probleme mit fdisk und Einlesen neuer Part.Tab. fi ; # end SYSSCHONDA=0 done done if test $SYSSCHONDA = 1 ; then DEFAULTMACHEN=" " ; if test $RESCUE1 != 0 ; then DEFAULTMACHEN="--defaultno" ; echo -e "\a" ; fi ; if test $RESCUE = 0 ; then echo -e "\a" dialog --title "SYS is already instaled, affirm a 2nd installation" --yes-label "INSTAL" --no-label "RESCUE" $DEFAULTMACHEN --timeout 9 --colors --no-collapse --yesno " \Z1 SYS JA E INSTALLADO SYS IST SCHON INSTALLIERT \Zn \Z3 /dev$DEVSCHONDA0 \Zn Afirmar se deve ser Bestaetigen falls es instalado outra vez zusaetzlich nochmal adicionalmente installiert werden soll (se nao -> rescue) (sonst -> rescue) \Zn " 14 52 RESCUE=$? dialog --title " wait .. " --no-collapse --colors --infobox " . . . " 4 14 echo " MACHEN 3: " $RESCUE >> logfile 2>&1 if test $RESCUE = 255 ; then if test $RESCUE1 = 0 ; then RESCUE=0 else RESCUE=1 ; fi ; fi ; # Wenn beim 1.mal ausdruecklich (kein Zeitlimit) instal gewaehlt, ist das beim 2.mal default # falls schon ein SYS installiert, default = rescue / lilo reparieren echo " MACHEN 4: " $RESCUE >> logfile 2>&1 if test $DURCHLAUF != 1 ; then if test $RESCUE != 0 ; then RESCUE=20 #clear ; mv -f installinfo installinfo.log > /dev/zero 2>&1 ; cat rescue.txt ; /bin/bash -li ; sync ; /sbin/reboot -f > /dev/zero 2>&1 fi ; fi ; if test $RESCUE = 1 ; then echo " lilo von SYS -Installierung auf Partition" /dev$DEVSCHONDA0 " reparieren, in MBR von Festplatte " $DEVSCHONDA00 " installieren: " >> logfile 2>&1 # Falls nach rescue statt install weil Instalation schon da, wenigstens bootloader der ersten Installation von SYS erneuern mkdir -p $DEVSCHONDA0 >> logfile 2>&1 mount /dev$DEVSCHONDA0 $DEVSCHONDA0 >> logfile 2>&1 chroot $DEVSCHONDA0 /sbin/lilo -b $DEVSCHONDA00 >> logfile 2>&1 umount /dev$DEVSCHONDA0 >> logfile 2>&1 fi ; # end RESCUE=1 = lilo reparieren fi ; # end RESCUE=0 = installieren fi ; # end SYSSCHONDA=1 fi ; # REBOOT = 0 #RESCUE=$MACHEN echo " MACHEN 5 (0=install, 1=rescue): " $RESCUE >> logfile 2>&1 #echo $RESCUE > rescue #read RESCUE REST < rescue if test $RESCUE = 0 ; then ### 1. Instalation ######################################################################################## #RESCUE=1 ; echo "1 Anfang init " > rescue # wenn Installierung klappt, dann am Ende derselben =0 setzen, wenn was schieflaeuft, =1 lassen read TST SIZE NACH0 NACH VON KLEINER OLDSYS WINDOWS REST < installinfo >> logfile 2>&1 # Hier ggf Dialog z. Auswahl einer Partition einbauen echo " vor mkpart: TST SIZE NACH0 NACH VON KLEINER OLDSYS WINDOWS: " >> logfile 2>&1 echo $TST $SIZE $NACH0 $NACH $VON $KLEINER $OLDSYS $WINDOWS >> logfile 2>&1 echo $TST $SIZE $NACH0 $NACH $VON $KLEINER $OLDSYS $WINDOWS > installinfo ##### 1.1. Partitionen machen ########################################################################################### if test $REBOOT = 0 ; then echo " REBOOT " $REBOOT >> logfile 2>&1 ( dialog --title "verifying & optimizing the computer .." --no-collapse --colors --infobox " \Z1 VERIFICACAO UEBERPRUEFUNG E APERFEICOACAO UND REORGANISATION DO COMPUTADOR DES COMPUTERS \Zn ... \Z3 Aguarde ! Warten !\Zn (5 - 15 min.) \Z3 Se o monitor Falls Bildschirm ou as mensagens oder Schrift vorher ficam pretos schwarz werden, antes, aperta druecken: \Zn \Z4 CTRL \Zn " 22 41 sleep 40 # noetig damit dieser Text einige Zeit lang angezeigt wird, /resize.txt gemacht wird # Vielleicht ist resize auch nicht noetig oder sehr schnell, falls im Hintergrund mkpart vorher fertig, wird das hier ueberschrieben while [ -e rs ] ; do dialog --title "resizing .." --no-collapse --colors --infobox "`cat rs | sed 's/-//g' | sed 's///g'`" 20 72 sleep 15 done ) & touch rs >> logfile 2>&1 echo $TST $SIZE $NACH0 $NACH $VON $KLEINER $OLDSYS $WINDOWS > installinfo mkdir -p /nach >> logfile 2>&1 ./mkpart >> logfile 2>&1 # schreibt Install-Device und Install-Partition in installdevice read TST SIZE NACH0 NACH VON KLEINER OLDSYS WINDOWS REST < installinfo >> logfile 2>&1 echo " nach mkpart: TST SIZE NACH0 NACH VON KLEINER OLDSYS WINDOWS: " >> logfile 2>&1 echo $TST $SIZE $NACH0 $NACH $VON $KLEINER $OLDSYS $WINDOWS >> logfile 2>&1 NACH00=${NACH#/dev/} ; echo " NACH00 : " $NACH00 >> logfile 2>&1 #cat rs | sed 's/-//g' | sed 's///g' >> logfile 2>&1 #echo " komisch, ich sollte schon geloescht sein ... " >> rs ; sync ; rm -f rs >> logfile 2>&1 mv rs tmp >> logfile 2>&1 # falls rs immer noch da ist, manchmal ist es sehr hartnaeckig, dann geht obige Schleife weiter, selbst wenn wir laengst in rescue sind ... #dialog --clear --infobox " " 0 0 # Versuch damit abzufangen dass Text nach Monitor-Timeout schwarz wird read PROBLEM REST < problem SIZEGB=$(( $SIZE / 2000000 + 1)) if test $PROBLEM = 5 ; then dialog --title "need to delete partition $KLEINER" --yes-label "OK" --no-label "PARAR/HALT" --timeout 7 --no-collapse --colors --yesno " \Z1 NECESSARIO APAGAR NOETIG PARTITION A PARTICAO : ZU LOESCHEN : \Zn \Z4 $KLEINER \Zn " 9 42 MACHEN=$? # 0 : continue 1 : stop 255 : timeout --> 0 if test $MACHEN != 1 ; then MACHEN=0 ; fi ; if test $MACHEN = 1 ; then PROBLEM=15 ; fi ; # Hier ggf. in einer ntfs/vfat Partition viel loeschen wie Programme usw und dann mkpart nochmal aufrufen fi ; # end PROBLEM=5 if test $PROBLEM -le 10 ; then # Hierfuer wird inzwischen detailliertes Protokoll waehrend dem resize ausgegeben #if test $KLEINER != - ; then #dialog --title "shrinking a partition .." --no-collapse --colors --infobox " # # \Z1 REDIMENSIONAR VERKLEINERN # A PARTICAO DER PARTITION \Zn # \Z4 $KLEINER \Zn # #" 8 40 # #sleep 6 # #fi ; if test $PROBLEM = 6 ; then dialog --title "After installation, save your files from the unpartitioned space .." --no-collapse --colors --infobox " \Z1 DEPOIS DA INSTALACAO SALVA OS NACH DER INSTALATION DATEN VOM DADOS DO ESPACO NAO-PARTICIONADO NICHT-PARTITIONERTEN BEREICH QUE ERA ANTES A PARTICAO RETTEN, WAR ZUVOR PARTITION \Zn \Z4 $NACH \Zn " 8 74 sleep 12 fi ; # Ueberfluessig da Name der Partition auch in naechstem Fenster steht #dialog --title "making a new partition $NACH .." --no-collapse --colors --infobox " #\Z1 NOVA PARTICAO: NEUE PARTITION: \Zn # \Z4 $NACH \Zn #" 8 40 #sleep 6 ##echo " lsof" $NACH " vor fdisk:" >> logfile 2>&1 ##echo " Neue Partition benutzt von: " >> logfile 2>&1 ; lsof $NACH >> logfile 2>&1 echo " ###### " >> logfile 2>&1 echo " ###### HIER JETZT ALLE AUSGEFUEHRTEN FDISK -OPERATIONEN WIRKLICH DURCHFUEHREN : " >> logfile 2>&1 echo " ###### " >> logfile 2>&1 echo " Eingabe /von gemountet VON: " $VON " auf Part. VON00: " $VON00 " auf Geraet VON000: " $VON000 >> logfile 2>&1 echo " Ausgabe /nach Geraet NACH0 : " $NACH0 " bzw. /dev/NACH000 : /dev/"$NACH000 >> logfile 2>&1 # Bsp: NACH000 = sda echo " Install- Partition NACH : " $NACH , " NACH00 : " $NACH00 >> logfile 2>&1 # ALLE Partitionen auf NACH0 muessen entmountet werden, auch /von falls .iso dort, sonst wird neue Part.Tafel nicht eingelesen echo " VON000 , /NACH000 : " $VON000 /$NACH000 >> logfile 2>&1 if test $VON000 = /$NACH000 ; then # if test $VON00 != - ; then # falls .iso ist sowieso VON000 = " " != NACH00 umount -d /von >> logfile 2>&1 ; echo " /von ungemountet, da auf Zieldisk mit /nach " >> logfile 2>&1 ; fi ; # fi ; umount $NACH0* >> logfile 2>&1 ; umount /$NACH00* >> logfile 2>&1 echo " Alle Partitionen auf " $NACH0 " sollten nun ungemountet sein, auch /von falls dort: " >> logfile 2>&1 ; df >> logfile 2>&1 cat fdisk.machen >> logfile 2>&1 /sbin/fdisk $NACH0 < fdisk.machen >> logfile 2>&1 ; FDISKERR=$? ; echo " FDISK Fehler ? :" $FDISKERR >> logfile 2>&1 /dev/makedevs.sh >> logfile 2>&1 ls -l $NACH >> logfile 2>&1 sync echo " *** neue Partitionen : " >> logfile 2>&1 /sbin/fdisk -lu $NACH0 >> logfile 2>&1 if test $VON000 = /$NACH000 ; then echo "VON00 VON" : $VON00 $VON >> logfile 2>&1 # if test $VON00 != - ; then echo " Install .iso unter /von mounten" >> logfile 2>&1 mount /dev$VON00 $VON00 >> logfile 2>&1 ; ls -l $VON00/SYS_Linux.iso >> logfile 2>&1 mount $VON /von -t udf -o ro,unhide,loop >> logfile 2>&1 ; ls -l /von >> logfile 2>&1 echo " /von gemountet" >> logfile 2>&1 ; fi ; # fi ; df >> logfile 2>&1 if test $VON00 != - ; then # falls kein Install-DVD sondern .iso-Datei # Ausser vielleicht bei der root-Partition, besteht kein echter Grund, dass Geraete oder Partitionen nach Aenderungen #nicht SOFORT upgedated, oder gar bzgl der normalen Benutzung blockiert werden. Noch mehr, wenn das Geraet nicht #das root-Geraet ist; wenn root auf einer initrd ist; wenn eine neue Partition in bisher unpartitioniertem Bereich #angelegt wird. #Aber in Linux ist ja alles total bescheuert. Selbst wenn der Installer von einer initrd aus laeuft, und man eine neue #Partition im bisher unpartitioniertem Bereich einer Festplatte anlegt, wird nach fdisk die Partitionstabelle erst #nach dem naechsten boot upgedatet ... #Bis dahin funktionieren diverse Programme nicht, andere doch, andere gelegentlich oder nicht. Totale Unsicherheit ... #dd geht meist nicht, lzcat entpackt zwar aber oft 'irgendwo' hin (Daten hinterher nicht auffindbar), resize2fs geht #manchmal, manchmal auch nicht. Nach Aufruf von parted geht manches besser ... # Insbesondere wenn mit installiso ein .iso installiert wird, und per chroot in die entpackte initrd als Installer # gegangen wird, geht umount der aussen gemounteten Partitionen nicht, usw # Test ob neue Partition effektiv da und beschreibbar ist. ### Geanderte Partitionen muessen innerhalb und ausserhalb von chroot ungemountet sein. ### # Bescheuerterweise liest mit fdisk der Kernel die neue Part-Tafel vom Geraet mit gemountetem / nicht ein, ioctl Fehler. # parted macht dies korrekt. Als Minimal-Anwendung formatieren wir damit die neue Partition (normalerweise nicht noetig) # oder mit partprobe ( DDERR=0 ; PARTEDERR=0 ; REST=0 ; FORMATERR=0 ; RESIZERR=0 ls -l $NACH >> logfile 2>&1 ; LSERR=$? ; echo " LSERR: " $LSERR >> logfile 2>&1 dd $DEVZERO of=$NACH bs=1024 count=1 >> logfile 2>&1 ; DDERR=$? ; echo $DDERR 0 > /scr ; echo " DDERR: " $DDERR >> logfile 2>&1 if test $DDERR != 0 ; then hdparm -fF $NACH0 >> logfile 2>&1 ; hdparm -z $NACH0 >> logfile 2>&1 ; sync dd $DEVZERO of=$NACH bs=1024 count=1 >> logfile 2>&1 ; DDERR=$? ; echo $DDERR 0 > /scr ; echo " DDERR: " $DDERR >> logfile 2>&1 fi ; if test $DDERR != 0 ; then for J in 1 2 3 4 ; do if test $NACH0$J = $NACH ; then NACHNR=$J ; echo " Ziel-Partition-NR: " $NACHNR >> logfile 2>&1 ; fi ; done #sync ; kill -HUP `lsof -t $NACH` >> logfile 2>&1 #hdparm -fF $NACH0 >> logfile 2>&1 ; hdparm -z $NACH0 >> logfile 2>&1 echo " parted : " >> logfile 2>&1 dialog --title " formating .." --no-collapse --colors --infobox " . . . " 4 16 date >> logfile 2>&1 parted $NACH0 mkfs yes $NACHNR ext2 quit i >> logfile 2>&1 ; PARTEDERR=$? ; echo " PARTEDERR: " $PARTEDERR >> logfile 2>&1 date >> logfile 2>&1 sync # ls -l $NACH >> logfile 2>&1 ; LSERR=$? ; echo " LSERR: " $LSERR >> logfile 2>&1 dd $DEVZERO of=$NACH bs=1024 count=1 >> logfile 2>&1 ; DDERR=$? ; echo " DDERR: " $DDERR >> logfile 2>&1 # Formatieren der Ziel-Partition ist zwar nicht noetig, machen wir aber, um zu testen ob resize effektiv geht dialog --title " resizing .." --no-collapse --colors --infobox " . . . " 4 16 date >> logfile 2>&1 mke2fs $NACH >> logfile 2>&1 ; FORMATERR=$? # hat schon parted gemacht resize2fs -fFM $NACH >> logfile 2>&1 ; resize2fs -fF $NACH >> logfile 2>&1 ; RESIZERR=$? date >> logfile 2>&1 echo " FORMATERR , RESIZERR: " $FORMATERR , $RESIZERR >> logfile 2>&1 fi ; # DDERR -ne 0 echo $DDERR $PARTEDERR $FORMATERR $RESIZERR > /scr ; ) read DDERR PARTEDERR FORMATERR RESIZERR REST < /scr echo " ### DDERR PARTEDERR REST FORMATERR RESIZERR : " $DDERR $PARTEDERR $FORMATERR $RESIZERR >> logfile 2>&1 # REBOOT=1 Abfrage, default reboot , REBOOT=0 kein reboot , REBOOT=-1 in jedem Fall KEIN reboot (zBsp wir sind in ramfs) REBOOT=0 if test $DDERR != 0 ; then REBOOT=1 ; fi ; # Ziel-Partition muss beschreibbar sein, sonst reboot # Abfrage ob jetzt rebooten. Hier sollte man nur mit REBOOT=0 (vor ggf. reboot) und RESCUE=0 (Installation) hinkommen # if test $FDISKERR = 1 ; then REBOOT=1 ; fi ; ### Gegenwaertig besser IMMER reboot, wenn auf das root-Geraet / von einer .iso-Datei installiert wird, denn ansonsten ### zu viele Probleme, besonders falls Partitionen geaendert wurden, aber auch mit resize des installierten Systemes ## ACHTUNG: nicht rebooten falls / auf einer initrd ist ## if test $RESIZERR != 0 ; then REBOOT=1 ; fi ; # Hier Bedingungen dass jedenfalls KEIN reboot zBsp da / nicht auf Geraet sondern initrd : RAMFS=0 ; df / >> logfile 2>&1 ; if test $? != 0 ; then RAMFS=1 ; fi ; echo " / : 0 = auf Geraet , 1 = initrd: " $RAMFS >> logfile 2>&1 # ... # if test $REBOOT != 0 ; then # falls eigentlich reboot gemacht werden muesste ... dialog --title "reboot ??" --yes-label "AUTO" --no-label "SIM / JA" --timeout 7 --colors --no-collapse --yesno " A particao nova Die Neue Partition tem problemas com: hat Probleme mit: formatar / formatieren : $FORMATERR copiar / beschreiben : $DDERR parted / parted : $PARTEDERR redimensionar / resize : $RESIZERR reboot recommendado / reboot empfohlen impedimentos: Hinderungsgruende: ramfs : $RAMFS \Z1 REBOOT PARA REBOOT ZUM ? ATUALIZAR PARTICOES ? PARTITIONEN ERNEUERN ? \Zn " 26 58 REBOOT0=$? #sleep 1 if test $REBOOT0 = 0 ; then REBOOT=0 ; fi ; if test $REBOOT0 = 1 ; then REBOOT=1 ; fi ; if test $REBOOT0 = 255 ; then REBOOT=1 ; fi ; fi ; if test $RAMFS != 0 ; then REBOOT=0 ; fi ; if test $TST -eq 1 ; then exit ; fi ; # reboot falls von .iso -Datei installiert wurde # oder anderswie Ziel- Partion (insbes. auf dem root-Geraet) nicht richtig vom # Kernel upgedated / erkannt wird ####grep "SYS_Linux.iso" installinfo >> logfile 2>&1 ; VONISOFILE=$? # grep -w "d " fdisk.machen >> logfile 2>&1 ; PARTGELOESCHT=$? ####echo " VONISOFILE: " $VONISOFILE # " , PARTGELOESCHT: " $PARTGELOESCHT >> logfile 2>&1 ####if test $VONISOFILE = 0 ; then #if test $PARTGELOESCHT = 0 ; then ####echo " REBOOT da von .iso Datei installiert " >> logfile 2>&1 if test $REBOOT != 0 ; then # was effektiv zaehlt ist ob NACH beschreibbar ist dialog --title "reboot for update partitions" --no-collapse --colors --infobox " \Z1 APOS RELANCAR COM AS NACH REBOOT MIT GEAENDERTEN PARTICOES REDIMENSIONADAS, PARTITIONEN, INSTALLER LANCA INSTALADOR OUTRA VEZ ERNEUT AUFRUFEN \Zn " 7 66 sync sleep 6 echo " init erster Aufruf, vor reboot: TST SIZE NACH0 NACH VON KLEINER OLDSYS WINDOWS: " >> logfile 2>&1 echo $TST $SIZE $NACH0 $NACH $VON $KLEINER $OLDSYS $WINDOWS > installinfo echo $TST $SIZE $NACH0 $NACH $VON $KLEINER $OLDSYS $WINDOWS >> logfile 2>&1 echo "installinfo aufheben, nicht loeschen, Installation geht nach reboot weiter" >> logfile 2>&1 cp -f logfile logfile.0 > dev/zero 2>&1 /sbin/reboot -f > /dev/zero 2>&1 fi ; # REBOOT = 0 fi ; # VON00 -ne 0 also Install-DVD echo " ###### " >> logfile 2>&1 echo " ###### INSTALL-PARTITION SOLLTE JETZT DA SEIN, UND FUNKTIONIEREN ODER REBOOT " >> logfile 2>&1 echo " ###### " >> logfile 2>&1 fi ; # PROBLEM -le 10 fi ; # REBOOT = 0 echo " Ob bereits REBOOT erfolgte vor Kopieren vom System: REBOOT = " $REBOOT >> logfile 2>&1 echo " Installieren nach: " $NACH >> logfile 2>&1 ##### 1.2. System instalieren ################################################################## #LOGDEV=$NACH0"2" ; if test $NACH = $NACH0"2" ; then LOGDEV=$NACH0"1" ; fi ; #mkdir /log ; mount >> logfile 2>&1 DEV /log ; cat logfile > /log/logfile VON1="" ; NV="SYS_Linux.ext3" # ggf an copysys anpassen echo " === Info auf dem DVD ueber gepacktes / ungepacktes SYStem === " >> logfile 2>&1 cat /von$VON1/$NV.lzma.md5 >> logfile 2>&1 cat /von$VON1/$NV.md5 >> logfile 2>&1 ls -s /von$VON1/$NV.lzma > scr ; read SIZELZMA REST < scr if test $? != 0 ; then SIZELZMA=4300000 ; fi ; SIZELZMAMB=$(( $SIZELZMA / 1024 )) ; SIZELZMA=$(( $SIZELZMA * 1024 )) ; SIZEGB=$(( $SIZE / 2000000 + 1)) SIZE100=$(( $SIZELZMA / 100 )) ; SIZE60=$(( $SIZELZMA / 60 )) ; DAUERNOCHMIN="10 - 50" echo " System lesen von: " /von$VON1/$NV.lzma " Groesse: " $SIZELZMAMB " MB " >> logfile 2>&1 IOPOS=fdinfo/0 # IOPOS=io # wo in /proc/$PSID die Eingabeposition lesen sync ( ( sleep 29 ; DAUERSCHON=30 # Dies vor Abfrage der ps-id damit lzma im Vordergrund Zeit hat zu starten PSID=nil ; while ! [ -e /proc/$PSID/$IOPOS ] ; do sleep 1 ; ps -e | grep lzcat > scr0 ; read PSID REST < scr0 ; done while [ -e /proc/$PSID/$IOPOS ] ; do read UNW GELESEN REST < /proc/$PSID/$IOPOS PROZENT=$(( $GELESEN / $SIZE100 )) ; if test $PROZENT -gt 98 ; then PROZENT=99 ; fi ; # DAUERTOTALMIN=$(( $SIZE60 * $DAUERSCHON )) ; DAUERTOTALMIN=$(( $DAUERTOTALMIN / $GELESEN)) # DAUERSCHONMIN=$(( $DAUERSCHON / 60 )) ; DAUERNOCHMIN=$(( $DAUERTOTALMIN - $DAUERSCHONMIN )) # if test $DAUERSCHONMIN -le 2 ; then DAUERNOCHMIN="10 - 50" ; fi ; # DAUERSCHON=$(( $DAUERSCHON + 30 )) # echo " schon : " $DAUERSCHON $DAUERSCHONMIN " noch : " $DAUERNOCHMIN " total : " $DAUERTOTALMIN # echo " lzma laeuft: " $PSID >> logfile 2>&1 #echo "Prozent: " $PROZENT " Zeit: " $DAUERSCHONMIN " Dauer total min: " $DAUERTOTALMIN " Dauer Noch min: " $DAUERNOCHMIN >> logfile 2>&1 #cp -f logfile /log/logfile ; sync # um genau festzustellen wo Absturz erfolgte, falls der Fall. cat nicht schachteln # Ausdruck ; echo "XXX" ; echo " -- ainda / noch : " $DAUERNOCHMIN " min." ; echo "XXX" geht nicht sleep 30 # echo $PROZENT >> logfile 2>&1 echo $PROZENT done # echo " CD lesen Fortschrittanzeiger fertig" >> logfile 2>&1 ) | dialog --title "installing SYS to $NACH ..." --no-collapse --colors --gauge " \Zb\Z1 INSTALACAO INSTALLIERUNG\Zn \Z4 $SIZEGB GB \Zn para nach \Z4 $NACH \Zn ($DAUERNOCHMIN min) ... \Z3 Aguarde, Abwarten, ate sair o CD, bis CD rauskommt, nao cancela ! nicht abbrechen ! \Zn Se letras ou Wenn Schrift oder monitor ficarem Bildschirm schwarz preto, tecla: werden, druecken: \Z4 CTRL \Zn " 24 40 0 # & #dialog --title "resize partition, and configuration .." --no-collapse --colors --infobox " # Attribuir todo espaco Allen freien Platz #vazio (pode demorar zuordnen (kann dauern # num computador lento bei langsamem Rechner mit # com disco grande), e grosser Festplatte), und # configuracao Konfigurierung # ... #" 10 58 #sleep 5 # Um jeden Dialog zu sehen, muesste man in /copysys bei Ende des jeweils zugehoerigen Prozesses sofort killall -HUP while # machen und/oder rs loeschen. Andererseits brauchen nicht unbedingt alle Dialoge angezeigt werden, nur die langdauernder # Prozesse. Fuer resize loeschen wir rs sobald fertig, aber nicht while der vorigen Anzeige, der Dialog fuer resize wird # also nur angezeigt wenn er laenger dauert als das letzte while von vorigem Dialog + 5 sek . # Andererseits sollen bei schnell ablaufender Installierung, die Dialoge unten in /init nicht durch nachtropfende obige # Dialoge vom Hintergrund gestoert werden, sodass wir diese nach Rueckkehr von copysys stoppen. sleep 5 # Vielleicht ist resize nicht noetig oder sehr schnell while [ -e rs ] ; do dialog --title "resizing .." --no-collapse --colors --infobox "`cat rs | sed 's/-//g' | sed 's///g'`" 20 72 sleep 15 done dialog --title "configuration .." --no-collapse --colors --infobox " \Z3 CONFIGURACAO KONFIGURIERUNG \Zn ... " 6 38 ) & # Fortschrittbalken laeuft im Hintergrund und zeigt Fortschritt von lzma an #echo " Kopieren System / Progressbar fertig" >> logfile # ; cat logfile > /log/logfile ; sync ; umount /log echo " Ziel-Device vor copysys: " >> logfile 2>&1 ; ls -l $NACH >> logfile 2>&1 echo $TST $SIZE $NACH0 $NACH $VON $KLEINER $OLDSYS $WINDOWS > installinfo ./copysys >> logfile 2>&1 read TST SIZE NACH0 NACH VON KLEINER OLDSYS WINDOWS REST < installinfo >> logfile 2>&1 echo " nach copysys: TST SIZE NACH0 NACH VON KLEINER OLDSYS WINDOWS: " >> logfile 2>&1 echo $TST $SIZE $NACH0 $NACH $VON $KLEINER $OLDSYS $WINDOWS >> logfile 2>&1 #( killall -HUP sleep ; rm -f rs ; killall -HUP sleep ) >> logfile 2>&1 # um obigen 1. Dialog zu beenden falls er noch weiterlaeuft rm -f rs >> logfile 2>&1 echo " Ggf. in einem alten System " $OLDSYS0 " gefundene Sprache, Tastatur-Sprache, Benutzername uebernehmen" >> logfile 2>&1 #read OLDSYS0 KBD KBD0 LANG LANG0 USER00 USER0 < userconf >> logfile 2>&1 # Falls in einem Unterprogramm ./mkuserconf >> logfile 2>&1 echo "System installiert. Weitere Konfiguration im System selbst machen." >> logfile 2>&1 mkdir -p /nach/var/log >> logfile 2>&1 cp -f logfile /nach/var/log/SYS_Linux.install.$SERIAL.log >> /dev/zero 2>&1 # ; cp -f logfile /nach/SYS_Linux.install.$SERIAL.log cp -f logfile /nach/var/log/SYS_Linux.install.log >> /dev/zero 2>&1 ; cp -f logfile /nach/logfile >> /dev/zero 2>&1 # speater weg read PROBLEM REST < problem if test $PROBLEM = 1 ; then dialog --title "instalation ready but has any small problem .." --no-collapse --colors --msgbox " \Z1 INSTALACAO FEITA MAS INSTALLATION ERFOLGT ESTA COM ALGUM PROBLEMA ABER HAT KLEINE FEHLER \Zn " 9 50 sleep 6 # PROBLEM=21 # falls man Probleme beim mounten des installierten Systemes als 'grosses Problem' machen will und -> rescue fi ; if test $PROBLEM = 20 ; then dialog --title "Install-CD defect (md5 wrong)" --no-collapse --colors --msgbox " \Z1 DVD DA INSTALACAO CORUMPIDO, INSTALL-CD FEHLERHAFT, A TELECARREGAR / COPIAR OUTRA VEZ NOCHMAL DOWNLOADEN / KOPIEREN \Zn " 9 65 sleep 6 fi ; date >> logfile 2>&1 if test $TST -eq 2 ; then exit ; fi ; if test $PROBLEM -le 10 ; then ### 1.3. fertig falls Installation und diese erfolgreich war ##################################################################### echo -e "\a" dialog --title "remove the CD and press RESET for reboot !!" --no-collapse --colors --infobox " \Z1 RELANCAR O COMPUTADOR NEUSTART DES RECHNERS \Zn \Z4\Zb Favor tira Bitte das CD aus o CD do drive ! dem Laufwerk nehmen !\Zn *** \Z3 Relanca c/o butao \Zn *** \Z3 Zum neustarten \Z4 RESET \Zn *** \Z3 Knopf \Zn \Z4 RESET \Z3 druecken\Zn Mais tarde, digita como Spaeter als Benutzer usuario =\Zn \Z4 root \Zn ! *** = \Z4 root \Z3 eingeben \Zn ! *** Lingua, Teclado, Video, Sprache, Tastatur, Monitor, Som, Internet, Aparencia: Sound, Internet, Verhalten: Qualquer \Z3 configuracao \Zn Alle \Z3 Konfigurierung \Zn ja\Z1 se faz no sistema erfolgt im istallierten instalado: System: \Zn \Z4 Centro de Controle \Zn , \Z4 Kontrollzentrum \Zn , \Z4 sound config \Zn , \Z4 sound config \Zn , \Z4 ADSL config \Zn\Z4 ADSL config \Zn ... " 28 60 sleep 14 read TST SIZE NACH0 NACH VON KLEINER OLDSYS WINDOWS REST < installinfo #read FESTPLATTEN < festplatten #I00=0 #for I0 in $FESTPLATTEN ; do I00=$(( $I00 + 1 )) ; done #echo $I00 " Festplatten vhd " #if test $I00 -gt 1 ; then #hdparm -I $NACH0 | grep "Model Number " ... # Falls mehrere Festplatten vhd, sieht BIOS meist als erste 0x80 diejenige, # die im BIOS als erste eingestelt ist, oder die per F8, F11 im Boot-Menue # gewaehlt wurde, und die es bleibt auch wenn anschliessend mit SYS root=/dev/... # auf eine andere gewechselt wird. ./boot/map muss beim booten vhd sein, # auch bei other=... , wird aber oft nicht gefunden, dann wird bootlader # oder Kernel nicht gefunden. Zwar versucht das copysys zu konfigurieren, # es bleibt aber immer unsicher. Nachfolgend eine maximal allgemein gehaltene # Hilfe falls es nicht bootet. echo -e "\a" dialog --title " if it dont boot ..." --no-collapse --colors --infobox " \Zb\Z1 ATENCAO ACHTUNG \Zn Se o systema nao lanca, Falls das System nicht repita, apertando \Z4 DEL \Zn startet, wiederholen, varias vezes, e em oft\Z4 DEL\Zn druecken, und in \Z3 BIOS > BOOT > DEVICE PRIORITY > HARDDISKS \Zn colocar um outro disco eine andere Disk als como o 1.o para cima. 1. nach oben tun. Se tiver um so disco. Falls nur eine Harddisk ou se nada adiantou, vorhanden, oder falls es lancar o DVD da nichts nuetzte, Install- instalacao e digita DVD starten und schnell rapidamente eingeben \Z4 i root=$NACH \Zn ou a chave-USB com bzw. den USB-key mit \Z4 SYS root=$NACH \Zn \Zn " 20 60 sleep 6 #fi ; # Nicht reboot mit CD im Laufwerk, sonst erneute Instalierung umount $VON >> logfile 2>&1 ; eject $VON >> logfile 2>&1 sleep 15 mount $VON /von >> logfile 2>&1 ; OBCDDRAUSSEN=$? # schlägt bei .iso -Datei wg. loop fehl, also OK if test $OBCDDRAUSSEN != 32 ; then umount $VON >> logfile 2>&1 ; eject $VON >> logfile 2>&1 cp -f logfile /nach/var/log/SYS_Linux.install.$SERIAL.log >> /dev/zero 2>&1 #cp -f logfile /nach/SYS_Linux.install.$SERIAL.log >> /dev/zero 2>&1 cp -f logfile /nach/var/log/SYS_Linux.install.log >> /dev/zero 2>&1 cp -f logfile /nach/logfile >> /dev/zero 2>&1 dialog --title "remove CD , then press ENTER or RESET !!" --timeout 7 --no-collapse --colors --msgbox " \Z1 Tira o CD, e depois CD rausnehmen, danach aperta \Zn \Z4 ENTER \Zn \Z1 !!! \Zn \Z4 ENTER \Zn \Z1 druecken !!! \Zn " 10 52 fi ; # end OBCDDRAUSSEN = 0 #/sbin/brc ; /sbin/reboot -f # spaeter raus um nachfolgenden Weg zu durchlaufen fi ; # end PROBLEM -le 10 #read RESCUE REST < /rescue # rescue kann waehrend der Installierung geaendert werden, zBsp bei Fehlern if test $PROBLEM -gt 10 ; then RESCUE=20 ; fi ; # Falls irgendein Problem bei der Instalation, ins rescue-System gehen fi ; # end RESCUE -eq 0 echo $RESCUE " = RESCUE in init , " $PROBLEM " = PROBLEM in init " >> logfile 2>&1 echo " Alle Partitionen mounten um logfile zu dumpen und/oder um sie in rescue gemountet zu haben " >> logfile 2>&1 #### Alle Partitionen mounten Spaeter ggf verbessern und Ergebnisse von mkpart nutzen # falls Installation also PROBLEM >0, oder aber unbedingt, auf alle Partitionen auch logfile sichern (spaeter ggf weg) #for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ; do for J in sda hda sdb hdb sdc hdc sdd hdd uba ubb ubc ubd ; do ls /dev/$J > /dev/zero 2>&1 ; if test $? = 0 ; then # nur wenn Geraet ueberhaupt da; unklar ob sicher ohne udevd / in initrd, ggf. weg for I in 1 2 3 4 5 ; do ls /dev/$J$I > /dev/zero 2>&1 ; if test $? = 0 ; then # nur wenn Geraet ueberhaupt da; unklar ob sicher ohne udevd / in initrd, ggf. weg mkdir -p /$J$I > /dev/zero 2>&1 IFMOUNT=32 umount /$J$I >> logfile 2>&1 # falls schon gemountet, und daher mounten nicht geht, kommt auch 32 zurueck # Vorsicht bei fehlerhaftem mount von NTFS kann ganze Installation abstuerzen. Ausserdem als ntfs-3g... , als mount ... nicht bekannt # Nicht -o ro falls im äußeren System rw if test $IFMOUNT -ne 0 ; then mount /dev/$J$I /$J$I -t ntfs -o ro >> logfile 2>&1 ; if test $? -eq 0 ; then umount /$J$I >> logfile 2>&1 echo $J$I " ifmount: " $IFMOUNT " Versuch als ntfs zu mounten: " >> logfile 2>&1 ntfs-3g /dev/$J$I /$J$I -o force,rw,remove_hiberfile,show_sys_files >> logfile 2>&1 ; IFMOUNT=$? if test $IFMOUNT -ne 0 ; then ntfsfix /dev/$J$I >> logfile 2>&1 ntfs-3g /dev/$J$I /$J$I -o force,rw,remove_hiberfile,show_sys_files >> logfile 2>&1 ; IFMOUNT1=$? if test $IFMOUNT1 = 0 ; then dialog --title "Windows repaired !" --no-collapse --colors --infobox " O Windows foi consertado. Windows wurde repariert. " 6 30 sleep 6 fi if test $IFMOUNT1 != 0 ; then mount /dev/$J$I /$J$I -t ntfs -o ro >> logfile 2>&1 fi ; fi ; ln -s /$J$I Windows >> logfile 2>&1 # falls 2. Windows -Partition, nur Fehlermeldung fi; fi ; if test $IFMOUNT -ne 0 ; then mount /dev/$J$I /$J$I >> logfile 2>&1 ; IFMOUNT=$?; fi ; echo $J$I " ifmount: " $IFMOUNT " gemountet " >> logfile 2>&1 if test $IFMOUNT -ne 32 ; then #if test $PROBLEM -gt 0 ; then mkdir -p /$J$I/var/log >> logfile 2>&1 cp -f logfile /$J$I/var/log/SYS_Linux.install.$SERIAL.log >> /dev/zero 2>&1 #cp -f logfile /$J$I/SYS_Linux.install.$SERIAL.log >> /dev/zero 2>&1 #cp -f logfile /$J$I/var/log/SYS_Linux.install.log >> /dev/zero 2>&1 cp -f logfile /$J$I/logfile >> /dev/zero 2>&1 #fi ; fi ; if test $IFMOUNT -eq 32 ; then rmdir /$J$I >> logfile 2>&1 ; fi ; # Falls mounten erfolglos, leeren Ordner loeschen Nicht rm -r # sync ; umount /dev/$J$I ; rmdir /$J$I # falls nur temporaeres mounten, etwa um was zu schreiben fi ; done # I = 1 2 3 4 5 Part.-Nr fi ; done # J = sda sdb ...Geraet sync echo "logfile nach ueberall gedumpt, loeschen temporaerer Dateien, in RESCUE gehen" >> logfile 2>&1 echo "Alle temp. Dateien zur Inspektion nach tmp" >> logfile 2>&1 mv devcdrom devices* devs df0 disksize fdisk* part* problem rescue scr* rs userconf tmp >> logfile 2>&1 mv partitionen festplatten usbkeys cds targets leeregeraete tmp >> logfile 2>&1 if test $RESCUE -eq 20 ; then cp -f installinfo installinfo.log >> logfile 2>&1 ; fi ; mv installinfo tmp >> logfile 2>&1 #### 2. Rescue-System (falls gewählt oder falls fehlgeschlagene Installation) ###################################################### if test $RESCUE -eq 20 ; then # RESCUE=0 nur bei fehlerfreier Instalation, falls auch dann ins RRESCUE-System # gegangen werden soll (etwa weil reboot nicht funktioniert), diese Abfrage raus clear echo -e "\a" dialog --title "RESCUE -- for leave press CTRL-ALT-DEL" --no-collapse --colors --infobox " \Zb\Z1 SOCORRO \Zn \Zb\Z1 RESCUE \Zn \Z5 Sistema para tarefas System fuer kleine pequenas e consertos Arbeiten und Notfaelle\Zn \Z3 Para terminar, Zum Beenden, juntos ou digita: druecken oder eingeben:\Zn \Z4 exit \Zn \Z3 Para re-boot, Zum neu booten, aperta os butoes zusammen die Tasten \Zn \Z4 CTRL ALT DEL \Zn \Z3 " 15 54 sleep 6 MCDIR1="/" ; MCDIR2="/" # mc mit / = Installer oeffnen falls wir durch eine fehlgeschlagene Installation hierhin kamen fi ; if test $RESCUE -gt 0 ; then # RESCUE=0 nur bei fehlerfreier Instalation, falls auch dann ins RRESCUE-System # Partitionen die als default im mc geoeffnet werden: altes System , und USB-key Demnaechst das mal in mkdev tun MCDIR2="/" # Eine Partition des Geraetes von dem wir den Installer gestartet haben, meist USB-key read USBKEYS < tmp/usbkeys >> logfile 2>&1 ; echo " usbkeys:" $USBKEYS >> logfile 2>&1 if test $USBKEYS != "" ; then read USBKEY1 REST < tmp/usbkeys >> logfile 2>&1 ; echo "USBKEY: " $USBKEY1 >> logfile 2>&1 df | grep "/dev/" | grep "$USBKEY1" > tmp/scr ; read U1 U2 U3 U4 U5 MCDIR2 REST < tmp/scr if test $MCDIR2 != "/" ; then echo "USB-key/Geraet: " $MCDIR2 >> logfile 2>&1 rm -f USB >> logfile 2>&1 ; ln -s $MCDIR2 USB ; fi ; # Man weiss nicht was es fuer ein Geraet ist, daher als USB zeigen fi ; if test $MCDIR2 = "" ; then MCDIR2="/" ; fi ; if test $MCDIR2 = "Mounted" ; then MCDIR2="/" ; fi ; MCDIR1="/" read FESTPLATTEN < tmp/festplatten >> logfile 2>&1 ; echo " festplatten: " $FESTPLATTEN >> logfile 2>&1 if test $FESTPLATTEN != "" ; then read FESTPLATTEN1 FESTPLATTEN2 REST < tmp/festplatten >> logfile 2>&1 ; echo "FP: " $FESTPLATTEN1 $FESTPLATTEN2 >> logfile 2>&1 df | grep "/dev/" | grep "$FESTPLATTEN1" > tmp/scr ; df | grep "$FESTPLATTEN2" >> tmp/scr ; read U1 U2 U3 U4 U5 MCDIR1 REST < tmp/scr if test $WINDOWS != "-" ; then MCDIR1=${WINDOWS#/dev} ; echo "Windows: " $WINDOWS >> logfile 2>&1 rm -f Windows >> logfile 2>&1 ; ln -s $MCDIR1 Windows ; fi ; fi ; if test $MCDIR1 = "" ; then MCDIR1="/" ; fi ; if test $MCDIR1 = "Mounted" ; then MCDIR1="/" ; fi ; if test $OLDSYS != "-" ; then MCDIR1=${OLDSYS#/dev} ; echo "altes System: " $OLDSYS >> logfile 2>&1 rm -f OldSystem >> logfile 2>&1 ; ln -s $MCDIR1 OldSystem ; fi ; # Hoechste Prioritaet hat Altes System OLDSYS, hilfsweise WINDOWS (da am haeufigsten Dateien von kaputtem Windows zu retten sind) echo "mc oeffnen mit dirs: " $MCDIR1 $MCDIR2 >> logfile 2>&1 if test $RESCUE -ne 20 ; then mv logfile tmp ; fi ; clear /bin/bash -li -c "mc $MCDIR1 $MCDIR2 ; clear ; cat rescue.txt" /bin/bash -li clear fi ; # end RESCUE -gt 0 ### 3. Reboot . ############################################################################# #if test $RESCUE = 0 ; then # Um mit RESCUE>0 hierhin zu kommen und einen 2. Durchlauf der Installierung zu haben, muss man gerade eben das # rescue-System mit exit verlassen haben #cp -f logfile /nach/logfile >> /dev/zero 2>&1 #mv logfile tmp dialog --title "rebooting ..." --no-collapse --colors --infobox " \Z1 relancando ... neu starten ... \Zn " 6 38 sync /sbin/brc > /dev/zero 2>&1 /sbin/reboot -f > /dev/zero 2>&1 #fi ; if test $TST = 0 ; then dialog --title "press CTRL-ALT-DEL for reboot !!" --no-collapse --colors --infobox " \Z1Se quiser reboot Falls reboot \Zn \Z1APERTA juntos : gleichzeitig druecken: \Zn \Z4 CTRL ALT DEL \Zn " 9 44 #chroot /nach reboot -fph # wenn eject nicht geht, halt statt reboot sleep 6 fi ; done # DURCHLAUF . Also falls wir WEGEN PROBLEMEN BEI DER INSTALLATION hierher nach rescue geraten sind, dann erst # nach dem 2. Durchlauf rebooten, um ggf. das Problem zu beheben sleep 20 sync /sbin/halt -fn # sicherheitshalber :| echo "Halt" #