Update 12/08/2010: in de procedure voor het maken en dus ook het terugzetten van de backup van Linux wordt nu partclone gebruikt. Door het gebruik van partclone verloopt het maken en terugzetten van een backup veel sneller.
Naast het gebruik van de recente SystemRescueCd versie (met recente stuurprogramma's voor nieuwe hardware) is PinBack een modulair systeem geworden. Door het menu te verhuizen van een centraal script naar de bootmanager kunnen modules toegevoegd of verwijderd worden. De bootmanager is dan ook in PinBack opgenomen en is dus niet meer afhankelijk van een Linux besturingssysteem. Pinback wordt nu gestart vanaf USB-stick. Dit zorgt voor een flexibelere en snellere ontwikkeling, daar USB-sticks steeds beschrijfbaar zijn, kan je de scripts rechtstreeks aanpassen zonder telkens een nieuwe CD te moeten branden. Daarnaast starten en werken USB-sticks sneller dan CD's. PinBack werkt op 64 bits processors met een 64 bits besturingssysteem en maakt intensiever gebruik van de de aanwezige processor-cores.
Deze tekst beschrijft hoe je SystemRescueCd 1.5.6 verandert in een allround backupsysteem. Dit backup systeem (laten we het PinBack noemen) kan ingezet worden op zowel Windows als Linux systemen, of een combinatie van beiden. Dit project is ontstaan uit noodzaak en wordt in de praktijk gebruikt in een schoolomgeving (SNT-Brugge). PinBack is enkel bruikbaar als de formattering van de harde schijf aan bepaalde eisen voldoet. Zo hebben de computers in klas de volgende harde schijfstructuur:
Mensen die in het bezit zijn van Acronis True Image kunnen deze software integreren (opstarten) via PinBack.
Indeling harde schijf: (BR = Beschikbare Ruimte)Primair | Windows XP | NTFS | 5% BR | sda1 |
Primair | Windows 7 | NTFS | 20% BR | sda2 |
Primair | Backup | Linux Ext4 | 25% BR | sda3 |
Uitgebreide | Overblijvende ruimte | sda4 | ||
Logisch | Werkschijf | NTFS | 25% BR | sda5 |
Logisch | Swap partitie | Swap | Even groot als RAM geheugen | sda6 |
Logisch | Linux | Linux Ext4 | Overblijvende ruimte | sda7 |
Deze indeling kan aangepast worden naargelang de noden van een klas. De hier voor Windows XP voorziene ruimte wordt bij een klassieke Windows 7 installatie vervangen door een bootpartitie van 100 MB. M.a.w. voor Windows 7 zonder Windows XP blijft de structuur gelijkaardig. Als de computer start en werkt met SystemRescueCd 1.5.6, werkt hij ook met PinBack 10.6.
Deze handleiding wordt in de praktijk gebruikt op de school SNT-Brugge.
Waarschuwing: Bij het partitioneren van een harde schijf worden alle gegevens op de schijf gewist.
Herstart de computer vanaf de PinBack USB-stick.
Bij het keuzemenu mag je de voorgestelde keuze bevestigen met Return.
Let daarna op het instellen van het toetsenbord (2 of be voor een belgisch toetsenbord).
Indien de harde schijf op de computer geen derde primaire partitie bevat, krijg je een melding, die je met Return bevestigt.
Daarna druk je Enter om het autorun script af te sluiten.
Wacht tot de prompt verschijnt en start de volgende opdracht:
sh /livemnt/boot/pindapartitioneer.sh
Bij de waarschuwing dat alle gegevens op de schijf vernietigd worden, druk je Return om de schijf te partitioneren (Doorgaan).
Na het partitioneren van de harde schijf zal de computer automatisch herstarten.
Opmerking: De manier van partitioneren kan aangepast worden in het script.
Laat de computer herstarten vanaf de PinBack USB-stick.
Zorg dat je de prompt ziet en voer de volgende opdracht uit:
sh /livemnt/boot/pindaformat.sh
Na het formatteren van de harde schijf zal de computer afgesloten worden.
Dit laat je toe de PinBack USB-stick veilig te verwijderen.
Opmerking: De manier van formatteren kan aangepast worden in het script.
Na het formatteren kan je Windows XP op de eerste partitie installeren.
Herstart de computer vanaf de PinBack USB-stick.
Zorg dat je de prompt ziet en voer de volgende opdracht uit:
sh /livemnt/boot/pindarescue.sh
Na het installeren van PinBack op de harde schijf zal de computer afgesloten worden.
Dit laat je toe de PinBack USB-stick veilig te verwijderen.
Opmerking: De manier van installeren kan aangepast worden in het script.
Nu kan je via de pas geïnstalleerde bootmanager een backup maken van de Windows XP partitie (SystemRescueCD > Windows XP backuppen).
Om te voorkomen dat iemand van een beschadigd systeem een backup kan maken, kan je het submenu SystemRescueCD met een wachtwoord beveiligen.
Na het maken van de Windows XP backup, laat je de computer herstarten.
Probeer daarbij Windows 7 te starten. De computer loopt vast met de foutmelding BOOTMGR is missing.
Deze stap is echter nodig om tijdens de installatie van Windows 7 de Windows XP partitie tijdelijk te verbergen.
Herstart de computer met de toetscombinatie Ctrl+Alt+Del en installeer Windows 7 op de tweede partitie van de harde schijf.
Bij de installatie van Windows (zowel XP, Vista als 7) worden alle bootmanagers van de harde schijf verwijderd.
In ons geval moeten we de bootmanager na de installatie van Windows 7 als volgt heractiveren:
Herstart de computer vanaf de PinBack USB-stick.
Zorg dat je de prompt ziet en voer de volgende opdracht uit:
sh /livemnt/boot/pindaboot.sh
Na het activeren van de bootmanager zal de computer afgesloten worden.
Dit laat je toe de PinBack USB-stick veilig te verwijderen.
Opmerking: De manier waarop de bootmanager geactiveerd wordt, kan aangepast worden in het script.
Nu kan je via de geactiveerde bootmanager een backup maken van de Windows 7 partitie (SystemRescueCD > Windows 7 backuppen).
Linux kan zonder problemen naast PinBack en andere besturingssystemen geïnstalleerd worden. Let bij de installatie van openSUSE op de partitie-instellingen: sda6 wordt als swap gebruikt en sda7 wordt als / gebruikt. Daarmee volgen we niet de algemeen geldende regel dat het systeem gescheiden wordt van gebruikers gegevens, maar op een school is deze werkwijze eenvoudiger te onderhouden. Tijdens de installatieprocedure moet je opgeven geen bootmanager te gebruiken. M.a.w. we gebruiken niet de bootmanager van het te installeren Linux systeem, maar van het backupsysteem PinBack.
Na de installatie van openSUSE 11.3 maak je een backup van de Linux partitie.
Herstart de computer en start via de bootmanager openSUSE terugzetten of Windows 7 terugzetten of Windows XP terugzetten.
Wacht tot het herstellen voltooid is.
Na het herstellen van de partitie kan je kiezen tussen de computer uitschakelen of herstarten. Aan jouw de keuze.
PinBack heeft in het bootmenu nog enkele extra opdrachten (sommige werken alleen indien het netwerk automatisch met DHCP geconfigureerd werd), Rsync server starten (verzenden van rsync backups), een HTTP server starten om de repositories (softwarebronnen) die op de backup partitie opgeslagen werden ter beschikking te stellen voor andere computers (handig voor het installeren van meerdere computers in een klas), een Reverse SSH server starten zodat de computer bereikbaar wordt via het internet (ook indien deze achter een firewall en/of proxy zit). Indien je het bootmenu SystemRescueCD > SystemRescueCD start, start SystemRescueCd zelf, Acronis True Image starten.
De commentaar in de scripts zorgt voor verdere tips en moet ervoor zorgen dat je ze kunt aanpassen naar een eigen flexibel systeem.
Download het SystemRescueCd 1.5.6 (of recenter) ISO bestand van de download pagina.
Brand het ISO bestand op een CD en start de computer vanaf de SystemRescueCd (of werk met een virtuele computer). Let daarbij op de keuze van het toetsenbord (2 of be voor een belgisch toetsenbord).
Steek de USB-stick in de computer en wacht tot het systeem de USB-stick gevonden heeft.
De opgestarte SystemRescueCd bevat een script om de USB-stick op te sporen en SystemRescueCd erop te installeren.
Daarbij worden alle gegevens op de USB-stick verwijderd, zorg desnoods voor een backup.
Start het installatie script met de opdracht
sysresccd-usbstick dialog
Selecteer met de pijltoetsen de USB-stick, activeer de USB-stick met Spatie en bevestig uw keuze met Return.
Indien het script de installatie niet correct kan uitvoeren (geen Installation successfully completed
tekst gezien), maak je met de volgende opdrachten de USB-stick eerst manueel volledig leeg
(pas daarbij /dev/sdx
aan naar het apparaat van de USB-stick):
fdisk /dev/sdx
en start het installatie script opnieuw.
o Return
w Return
Kopieer indien gewenst de map Recovery Manager van de Acronis True Image CD naar de USB-stick. Hernoem de map Recovery Manager naar acronis.
Download het bestand pinback.tar.gz en pak het uit op de USB-stick. Dit tar.gz bestand bevat de map boot met daarin de bootmanager en de hieronder gepubliceerde scripts.
Tip: Test of de SystemRescueCd nu vanaf USB-stick start. Virtuele computers kunnen voorlopig nog niet starten vanaf een USB-stick. Met de bootmanager van PLoP kan de virtuele machine toch vanaf USB-stick starten.
De PinBack USB-stick is klaar.
Bij het testen en ontwikkelen van systemen zoals PinBack kan je bijna niet zonder een virtuele computer zoals VMware of Virtualbox.
Op een computer waarop PinBack geïnstalleerd is, kan je de scripts op de volgende manier aanpassen:
Start via de bootmanager SystemRescueCD > SystemRescueCD en voer de volgende opdrachten uit:
mount /dev/sda3 /livemnt/boot -o rw,remount
De eerste opdracht maakt de backup partitie beschrijfbaar en met de tweede opdracht pas je met de editor joe het script autorun aan.
joe /livemnt/boot/autorun
#!/bin/bash # pindapartitioneer.sh snt="(C) Stedelijke Nijverheids- & Taalleergangen, Brugge, Dany Pinoy, `date -r $0 +'%d %B %Y'`" titel="Harde schijf partitioneren" # part bevat het harde schijf apparaat (sda = eerste niet ide harde schijf) part=sda keuze=$(dialog --backtitle "$snt" \ --title "$titel" \ --menu "Alle gegevens op de schijf worden door het partitioneren vernietigd?" 0 0 0 \ "1" "Doorgaan" \ "2" "Afbreken" \ 2>&1 1>$(tty)) case "$keuze" in "2" ) exit;; esac # koppel alle partities op de schijf af swapoff -a umount /dev/"$part"* echo ";" > /tmp/partitioneer # initialiseer partitietabel sfdisk /dev/"$part" < /tmp/partitioneer CYLINDERS=`sfdisk -g /dev/"$part" | cut --field=2 --delimiter=' ' ` BYTESCYLINDER=`sfdisk -l /dev/"$part" 2> /dev/null | head -3 | tail -1 | cut --field=5 --delimiter=' '` # hier kan je het partitioneren aanpassen echo "0,"$[ $CYLINDERS * 5 / 100]",7,*" > /tmp/partitioneer # 5% voor Windows XP echo ","$[ $CYLINDERS * 20 / 100]",7" >> /tmp/partitioneer # 20% Windows 7 echo ","$[ $CYLINDERS * 25 / 100] >> /tmp/partitioneer # 25% voor Backup echo ",,E" >> /tmp/partitioneer # Extended partition echo ","$[ $CYLINDERS * 25 / 100]",7" >> /tmp/partitioneer # 25% voor NTFS Werkschijf echo ","$[ 2 * 1024 * 1024 * 1024 / $BYTESCYLINDER]",S" >> /tmp/partitioneer # 2GB Swap partitie echo ",,L" >> /tmp/partitioneer # (rest) voor Linux sfdisk /dev/"$part" < /tmp/partitioneer reboot # herstart de computer
#!/bin/bash # pindaformat.sh snt="(C) Stedelijke Nijverheids- & Taalleergangen, Brugge, Dany Pinoy, `date -r $0 +'%d %B %Y'`" titel="Harde schijf formatteren" # part bevat het harde schijf apparaat (sda = eerste niet ide harde schijf) part=sda # koppel de swap partitie af swapoff -a mkntfs -fQ /dev/"$part"1 mkntfs -fQ /dev/"$part"2 #parted /dev/"$part" rm 1 -s # verwijder de twee Window 7 spook partities #parted /dev/"$part" rm 2 -s halt # sluit de computer af, waardoor je de USB-stick veilig kunt verwijderen
#!/bin/bash # pindarescue.sh snt="(C) Stedelijke Nijverheids- & Taalleergangen, Brugge, Dany Pinoy, `date -r $0 +'%d %B %Y'`" titel="SystemRescueUSB op harde schijf installeren" # part bevat het harde schijf apparaat (sda = eerste niet ide harde schijf) part=sda # de backup partitie formatteren mkfs -t ext4 /dev/"$part"3 # Pinback op de backup partitie installeren mount /dev/"$part"3 /mnt/backup mkdir /mnt/backup/sysrcd # voor 32bit processors cp /livemnt/boot/sysrcd.* /livemnt/boot/syslinux/initram.igz /livemnt/boot/syslinux/rescuecd /mnt/backup/sysrcd/ # voor 64bit processors # cp /livemnt/boot/sysrcd.* /livemnt/boot/syslinux/initram.igz /livemnt/boot/syslinux/rescue64 /mnt/backup/sysrcd/ cp -r /livemnt/boot/boot /mnt/backup cp /livemnt/boot/autorun /mnt/backup chmod +x /mnt/backup/rev_ssh.sh # cp -r /livemnt/boot/acronis /mnt/backup # de Windows XP bootsector backuppen mkdir /mnt/backup/backup dd if=/dev/"$part" of=/mnt/backup/backup/windowsxp.mbr bs=512 count=1 # de bootmanager installeren grub <<_EOF root (hd0,2) setup (hd0) quit _EOF halt # sluit de computer af, waardoor je de USB-stick veilig kunt verwijderen
#!/bin/bash # pindaboot.sh snt="(C) Stedelijke Nijverheids- & Taalleergangen, Brugge, Dany Pinoy, `date -r $0 +'%d %B %Y'`" titel="Bootmanager op harde schijf activeren" # part bevat het harde schijf apparaat (sda = eerste niet ide harde schijf) part=sda # de Windows 7 bootsector backuppen mount /dev/"$part"3 /mnt/backup #mkdir /mnt/backup/backup dd if=/dev/"$part" of=/mnt/backup/backup/windows7.mbr bs=512 count=1 # de bootmanager installeren grub <<_EOF root (hd0,2) setup (hd0) quit _EOF halt # sluit de computer af, waardoor je de USB-stick veilig kunt verwijderen
# Het hoofdmenu van de bootmanager # /boot/grub/menu.lst # PinBack is geïnstalleerd op (hd0,2), m.a.w. de eerste harde schijf, derde partitie # PinBack werkt op een scherm met een resolutie van 1280x1024 of vga=0x31A # andere resoluties, raadpleeg http://en.wikipedia.org/wiki/VESA_BIOS_Extensions # default 1 zorgt ervoor dat 'Windows 7 starten' geselecteerd wordt default 1 gfxmenu (hd0,2)/boot/message title Desktop -- openSUSE 11.3 root (hd0,6) kernel /boot/vmlinuz root=/dev/sda7 splash=silent quiet vga=0x31A showopts initrd /boot/initrd title Windows 7 starten hide (hd0,0) unhide (hd0,1) rootnoverify (hd0,1) chainloader +1 makeactive boot title Windows XP starten hide (hd0,1) unhide (hd0,0) rootnoverify (hd0,0) chainloader +1 makeactive boot title openSUSE terugzetten root (hd0,2) # voor 32bits processors kernel /sysrcd/rescuecd subdir=sysrcd setkmap=be vga=0x31a restorelinux showopts # voor 64bits processors # kernel /sysrcd/rescue64 subdir=sysrcd setkmap=be vga=0x31a restorelinux showopts initrd /sysrcd/initram.igz boot title Windows 7 terugzetten root (hd0,2) # voor 32bits processors kernel /sysrcd/rescuecd subdir=sysrcd setkmap=be vga=0x31a restorewindows7 showopts # voor 64bits processors # kernel /sysrcd/rescue64 subdir=sysrcd setkmap=be vga=0x31a restorewindows7 showopts initrd /sysrcd/initram.igz boot title Windows XP terugzetten root (hd0,2) # voor 32bits processors kernel /sysrcd/rescuecd subdir=sysrcd setkmap=be vga=0x31a restorewindowsxp showopts # voor 64bits processors # kernel /sysrcd/rescue64 subdir=sysrcd setkmap=be vga=0x31a restorewindowsxp showopts initrd /sysrcd/initram.igz boot title SystemRescueCd root (hd0,2) # de volgende twee regels zorgen voor een wachtwoordbeveiliging # password --md5 $1$3UWJW/$hQ3NXVIzVGgNxIzZmbYa7. # lock configfile /boot/grub/sysrcd.lst # Wachtwoord, genereren met grub-md5-crypt
# Het tweede menu van de bootmanager # /boot/grub/sysrcd.lst default 0 gfxmenu (hd0,2)/boot/message title Terug naar het hoofdmenu root (hd0,2) configfile /boot/grub/menu.lst title openSUSE backuppen root (hd0,2) # voor 32bits processors kernel /sysrcd/rescuecd subdir=sysrcd setkmap=be vga=0x31a backuplinux # voor 64bits processors # kernel /sysrcd/rescue64 subdir=sysrcd setkmap=be vga=0x31a backuplinux initrd /sysrcd/initram.igz boot title Windows 7 backuppen root (hd0,2) # voor 32bits processors kernel /sysrcd/rescuecd subdir=sysrcd setkmap=be vga=0x31a backupwindows7 # voor 64bits processors # kernel /sysrcd/rescue64 subdir=sysrcd setkmap=be vga=0x31a backupwindows7 initrd /sysrcd/initram.igz boot title Windows XP backuppen root (hd0,2) # voor 32bits processors kernel /sysrcd/rescuecd subdir=sysrcd setkmap=be vga=0x31a backupwindowsxp # voor 64bits processors # kernel /sysrcd/rescue64 subdir=sysrcd setkmap=be vga=0x31a backupwindowsxp initrd /sysrcd/initram.igz boot title RSync server backup root (hd0,2) # voor 32bits processors kernel /sysrcd/rescuecd subdir=sysrcd dodhcp rootpass=******** setkmap=be vga=0x31a rsyncserver # voor 64bits processors # kernel /sysrcd/rescue64 subdir=sysrcd dodhcp rootpass=******** setkmap=be vga=0x31a rsyncserver initrd /sysrcd/initram.igz boot title HTTP server repos root (hd0,2) # voor 32bits processors kernel /sysrcd/rescuecd subdir=sysrcd dodhcp rootpass=******** setkmap=be vga=0x31a httpserver # voor 64bits processors # kernel /sysrcd/rescue64 subdir=sysrcd dodhcp rootpass=******** setkmap=be vga=0x31a httpserver initrd /sysrcd/initram.igz boot title Reverse SSH root (hd0,2) # voor 32bits processors kernel /sysrcd/rescuecd subdir=sysrcd dodhcp rootpass=******** setkmap=be vga=0x31a ar_nowait reversessh showopts # voor 64bits processors # kernel /sysrcd/rescue64 subdir=sysrcd dodhcp rootpass=******** setkmap=be vga=0x31a ar_nowait reversessh showopts initrd /sysrcd/initram.igz boot #title Acronis True Image # root (hd0,2) # kernel /acronis/kernel.dat quiet vga=0x31a ramdisk_size=40000 # initrd /acronis/ramdisk.dat # boot title SystemRescueCd root (hd0,2) # voor 32bits processors kernel /sysrcd/rescuecd subdir=sysrcd setkmap=be vga=0x31a # voor 64bits processors # kernel /sysrcd/rescue64 subdir=sysrcd setkmap=be vga=0x31a initrd /sysrcd/initram.igz boot
#!/bin/bash # autorun setterm -blank 0 # Schakel de schermbeveiliging uit #for i in 1 2 3 4 5 6 7 8 9; do # Numlock inschakelen # /usr/bin/setleds +num < /dev/tty${i} > /dev/null #done snt="(C) Stedelijke Nijverheids- & Taalleergangen, Brugge, Dany Pinoy, `date -r $0 +'%d %B %Y'`" titel="Automatisch systeemherstel" function herstart # Computer herstarten { $(dialog --title "$titel" \ --infobox "De computer wordt automatisch herstart.\nU hoeft enkel te wachten..............." 4 45 2>&1 1>$(tty)) init 6 sleep 3000 } function afsluiten # Computer afsluiten { $(dialog --title "$titel" \ --infobox "De computer wordt automatisch afgesloten.\nU hoeft enkel te wachten..............." 4 45 2>&1 1>$(tty)) init 0 sleep 3000 } function herafsluiten # Keuze aanbieden om de computer uit te schakelen of te herstarten { keuze=$(dialog --backtitle "$snt" \ --title "$titel" \ --menu " Backup teruggezet, wat nu?" 10 45 2 \ "1" "Computer uitschakelen" \ "2" "Computer opnieuw starten" \ 2>&1 1>$(tty)) case "$keuze" in "1" ) afsluiten;; "2" ) herstart;; esac } # Bepaal het type harde schijf part="" if [ -e /dev/hda3 ]; then # Harde schijf aangesloten via IDE part="hda" elif [ -e /dev/sda3 ]; then # Harde schijf aangesloten via SCSI of SATA part="sda" else # Harde schijf aangesloten via SCSI of SATA echo `grep "[sh]d[abcd]" /proc/partitions | head -1` | cut -d ' ' -f4 > /tmp/hardeschijf part="`cat /tmp/hardeschijf`" keuze=$(dialog --backtitle "$snt" \ --title "$titel" \ --msgbox "Er is geen derde primaire partitie op deze computer!!!\nPinBack zal pas functioneren na het partitioneren van de harde schijf." 7 70 \ 2>&1 1>$(tty)) fi # Bepaal of er een tweede harde schijf is, en van welk type part1=$(cat /proc/partitions | grep -w hda) # tweede schijf is hda if [ "$part1" ]; then part1=$(echo $part1 | awk '{print $4}') fi if [ "$part1" = "$part" ]; then # Neen, de eerste schijf is hda part1="" fi if [ ! "$part1" ]; then part1=$(cat /proc/partitions | grep -w sda) # tweede schijf is sda if [ "$part1" ]; then part1=$(echo $part1 | awk '{print $4}') fi if [ "$part1" = "$part" ]; then # Neen, de eerste schijf is sda part1="" fi fi if [ ! "$part1" ]; then part1=$(cat /proc/partitions | grep -w hdb) # tweede schijf is hdb if [ "$part1" ]; then part1=$(echo $part1 | awk '{print $4}') fi fi if [ ! "$part1" ]; then part1=$(cat /proc/partitions | grep -w sdb) # tweede schijf is sdb if [ "$part1" ]; then part1=$(echo $part1 | awk '{print $4}') fi fi # Als de kernel opstartregel in de bootmanager de optie backuplinux bevat (zie configuatiebestand bootmanager) if [ "`grep backuplinux /proc/cmdline`" ]; then mount /dev/"$part"3 /livemnt/boot -o rw,remount # backup partitie beschrijfbaar maken # Oude backup overschrijven? # Update 12/08/2010 if [ -e /livemnt/boot/backup/sntlinux.partclone.gz ]; then $(dialog --backtitle "$snt" \ --title "$titel" \ --yesno "Wilt u de oude backup behouden?" 5 35 2>&1 1>$(tty)) if [ $? -eq "0" ]; then mv -f /livemnt/boot/backup/sntlinux.partclone.gz /livemnt/boot/backup/sntlinux.partclone.gz.ori fi fi # $(dialog --backtitle "$snt" \ # --title "$titel" \ # --infobox "Bezig met het aanmaken van de backup.\nEven geduld.........................." 0 0 2>&1 1>$(tty)) # fsarchiver -j2 -o savefs /livemnt/boot/backup/sntlinux.fsa /dev/"$part"7 # -j2 = gebruik twee processor cores clear echo "SNT Linux backuppen" printf '====================\n' partclone.extfs --clone --source /dev/"$part"7 | gzip -c > /livemnt/boot/backup/sntlinux.partclone.gz # Einde update 12/08/2010 if [ $? ]; then $(dialog --backtitle "$snt" \ --title "$titel" \ --msgbox "Backup met succes afgerond." 5 47 2>&1 1>$(tty)) else $(dialog --backtitle "$snt" \ --title "$titel" \ --msgbox "Backup onderbroken met foutmelding." 5 47 2>&1 1>$(tty)) fi mount /dev/"$part"3 /livemnt/boot -o ro,remount herafsluiten # Indien geen keuze gemaakt werd toch de computer afsluiten afsluiten fi # Als de kernel opstartregel in de bootmanager de optie restorelinux bevat (zie configuatiebestand bootmanager) if [ "`grep restorelinux /proc/cmdline`" ]; then # Update 12/08/2010 # $(dialog --backtitle "$snt" \ # --title "$titel" \ # --infobox "Bezig met terugzetten van de backup.\nEven geduld........................." 0 0 2>&1 1>$(tty)) # fsarchiver -j2 restfs /livemnt/boot/backup/sntlinux.fsa id=0,dest=/dev/"$part"7 # -j2 = gebruik twee processor cores clear echo "SNT Linux terugzetten" printf '=====================\n' zcat /livemnt/boot/backup/sntlinux.partclone.gz | partclone.restore --output /dev/"$part"7 # Einde update 12/08/2010 herafsluiten afsluiten fi # Als de kernel opstartregel in de bootmanager de optie reversessh bevat (zie configuatiebestand bootmanager) if [ "`grep reversessh /proc/cmdline`" ]; then mount /dev/"$part"3 /livemnt/boot -o rw,remount # backup partitie beschrijfbaar maken # script rev_ssh.sh starten na het beindigen van dit script echo "/livemnt/boot/rev_ssh.sh" >> /root/.zshrc fi # Als de kernel opstartregel in de bootmanager de optie backupwindows7 bevat (zie configuatiebestand bootmanager) if [ "`grep backupwindows7 /proc/cmdline`" ]; then mount /dev/"$part"3 /livemnt/boot -o rw,remount # backup partitie beschrijfbaar maken # Oude backup overschrijven? if [ -e /livemnt/boot/backup/windows7.img.gz ]; then $(dialog --backtitle "$snt" \ --title "$titel" \ --yesno "Wilt u de oude backup behouden?" 5 35 2>&1 1>$(tty)) if [ $? -eq "0" ]; then mv -f /livemnt/boot/backup/windows7.img.gz /livemnt/boot/backup/windows7.img.gz.ori fi fi clear echo "Windows 7 backuppen" printf '===================\n' # Backup indien aanwezig de WinRE bootpartitie van Windows 7 # ntfsclone --save-image -o - /dev/"$part"1 | gzip -c > /livemnt/boot/backup/winre7.img.gz ntfsclone --save-image -o - /dev/"$part"2 | gzip -c > /livemnt/boot/backup/windows7.img.gz if [ $? ]; then $(dialog --backtitle "$snt" \ --title "$titel" \ --msgbox "Backup met succes afgerond." 5 47 2>&1 1>$(tty)) else $(dialog --backtitle "$snt" \ --title "$titel" \ --msgbox "Backup onderbroken met foutmelding." 5 47 2>&1 1>$(tty)) fi mount /dev/"$part"3 /livemnt/boot -o ro,remount herafsluiten afsluiten fi # Als de kernel opstartregel in de bootmanager de optie restorewindows7 bevat (zie configuatiebestand bootmanager) if [ "`grep restorewindows7 /proc/cmdline`" ]; then clear echo "Windows 7 terugzetten" printf '=====================\n' gunzip -c /livemnt/boot/backup/windows7.img.gz | ntfsclone --restore-image --overwrite /dev/"$part"2 - # achterdeur om bij het opstarten van Windows 7 een programma te laten starten mount /dev/"$part"2 /mnt/custom if [ -e /mnt/custom/ProgramData/Microsoft/Windows/Start\ Menu/Programs/Startup/startup.exe ]; then rm -f /mnt/custom/ProgramData/Microsoft/Windows/Start\ Menu/Programs/Startup/startup.exe fi cp /livemnt/boot/startup.exe /mnt/custom/ProgramData/Microsoft/Windows/Start\ Menu/Programs/Startup/ sync umount -l /mnt/custom herafsluiten afsluiten fi # Als de kernel opstartregel in de bootmanager de optie backupwindowsxp bevat (zie configuatiebestand bootmanager) if [ "`grep backupwindowsxp /proc/cmdline`" ]; then mount /dev/"$part"3 /livemnt/boot -o rw,remount # backup partitie beschrijfbaar maken # Oude backup overschrijven? if [ -e /livemnt/boot/backup/windowsxp.img.gz ]; then $(dialog --backtitle "$snt" \ --title "$titel" \ --yesno "Wilt u de oude backup behouden?" 5 35 2>&1 1>$(tty)) if [ $? -eq "0" ]; then mv -f /livemnt/boot/backup/windowsxp.img.gz /livemnt/boot/backup/windowsxp.img.gz.ori fi fi clear echo "Windows XP backuppen" printf '====================\n' ntfsclone --save-image -o - /dev/"$part"1 | gzip -c > /livemnt/boot/backup/windowsxp.img.gz if [ $? ]; then $(dialog --backtitle "$snt" \ --title "$titel" \ --msgbox "Backup met succes afgerond." 5 47 2>&1 1>$(tty)) else $(dialog --backtitle "$snt" \ --title "$titel" \ --msgbox "Backup onderbroken met foutmelding." 5 47 2>&1 1>$(tty)) fi mount /dev/"$part"3 /livemnt/boot -o ro,remount herafsluiten afsluiten fi # Als de kernel opstartregel in de bootmanager de optie restorewindowsxp bevat (zie configuatiebestand bootmanager) if [ "`grep restorewindowsxp /proc/cmdline`" ]; then clear echo "Windows XP terugzetten" printf '======================\n' gunzip -c /livemnt/boot/backup/windowsxp.img.gz | ntfsclone --restore-image --overwrite /dev/"$part"1 - herafsluiten afsluiten fi # Als de kernel opstartregel in de bootmanager de optie backuprsync bevat (zie configuatiebestand bootmanager) # deze module wordt niet op school gebruik # deze module maakt van evoluerende systemen een backup naar een speciaal opgezette rsync server, # deze rsync server synchroniseert zich via deze module met de op deze computer aanwezige partities if [ "`grep backuprsync /proc/cmdline`" ]; then printf '\033[0m'; clear # Kleuren standaard echo "Uitvoeren Rsync backup:" printf '=======================\n' backupip=$(dialog --backtitle "$snt" \ --title "$titel" \ --inputbox "\n Welk IP-adres heeft de Rsync server?" 0 0 "192.168.1." \ 2>&1 1>$(tty)) rsync $backupip:: if [ $? -ne 0 ]; then printf '\033[1;31;40m Kon geen verbinding met backupserver opbouwen.\033[0m\n' # Rode letters printf '\033[1;32;40m Druk Return om door te gaan.' # Groene letters op zwarte achtergrond read Keypress else rsync -avHxh --numeric-ids --progress --delete --exclude="lost+found/" /livemnt/boot/ $backupip::backup/"$part"3 2>>/tmp/rsync.error | tee -a /tmp/rsync.log mount /dev/"$part"7 /mnt/backup rsync -avHxh --numeric-ids --progress --delete --exclude="lost+found/" /mnt/backup/ $backupip::backup/"$part"7 2>>/tmp/rsync.error | tee -a /tmp/rsync.log umount -l /dev/"$part"7 # het logboek en foutenrapport van de backup naar de rsync server sturen rsync /tmp/rsync.log $backupip::backup rsync /tmp/rsync.error $backupip::backup # de rsync server een bericht sturen dat de backup voltooid is. touch /tmp/stop rsync /tmp/stop $backupip::backup # na het beëindigen van de backup wordt de computer automatisch afgesloten printf '\033[1;32;40m De computer wordt binnen de minuut afgesloten.' # Groene letters op zwarte achtergrond sleep 60 afsluiten fi herafsluiten afsluiten fi # Als de kernel opstartregel in de bootmanager de optie rsyncserver bevat (zie configuatiebestand bootmanager) # Start een rsync server waarbij de backup partitie door andere computers bereikbaar wordt (alleen lezen) # Dit kan niet gebruikt worden met de voorgaande module, wel met een speciaal rsync script if [ "`grep rsyncserver /proc/cmdline`" ]; then echo "uid = root" > /etc/rsyncd.conf echo "gid = root" >> /etc/rsyncd.conf echo "[backup]" >> /etc/rsyncd.conf echo "path = /livemnt/boot" >> /etc/rsyncd.conf echo "comment = Backup" >> /etc/rsyncd.conf # schrijven mogelijk maken, bijvoorbeeld voor een backup server (zie vorige module) # echo "read only = false" >> /etc/rsyncd.conf # mount /dev/"$part"3 /livemnt/boot -o rw,remount # backup partitie beschrijfbaar maken rsync --daemon $(dialog --backtitle "$snt" \ --title "$titel" \ --msgbox "Rsync daemon gestart.\nHet IP-adres van deze computer is `/sbin/ifconfig eth0 | grep 'inet ' | cut -d : -f2 | cut -d ' ' -f1`" 0 0 2>&1 1>$(tty)) herafsluiten afsluiten fi # Als de kernel opstartregel in de bootmanager de optie httpserver bevat (zie configuatiebestand bootmanager) # Deze HTTP server maakt de softwarebronnen toegankelijk, ideaal om een linux netwerkinstallatie op andere computers uit te voeren) if [ "`grep httpserver /proc/cmdline`" ]; then thttpd -r -d /livemnt/boot/opensuse4snt/repos $(dialog --backtitle "$snt" \ --title "$titel" \ --msgbox "HTTP server gestart.\nHet IP-adres van deze computer is `/sbin/ifconfig eth0 | grep 'inet ' | cut -d : -f2 | cut -d ' ' -f1`" 0 0 2>&1 1>$(tty)) herafsluiten afsluiten fi exit # Acronis TrueImage aan menu.lst (Grub) toevoegen # =============================================== # LABEL acronis # KERNEL /acronis/kernel.dat # APPEND rw initrd=/acronis/ramdisk.dat /s mbrcrcs=on vga=788 load_ramdisk=1 prompt_ramdisk=0 ramdisk_size=100000 quiet
#!/bin/bash # rev_ssh.sh # Met dit script wordt een Reverse SSH verbinding naar de computer computer.thuis.be met het account gebruiker opgebouwd # computer.thuis.be kan vervangen worden door een IP adres, maar deze zijn bij thuisgebruikers meestal variabel # Variabele IP adressen kan je aan een naam koppelen via diensten zoals dyndns. # De computer waarop dit script wordt gestart, zal om de zoveel tijd (tot 20 minuten tussen twee pogingen) een SSH tunnel naar uw computer thuis proberen op te bouwen # Indien uw computer thuis de verbinding kan aanvaarden (ingeschakeld is, poort 22 moet in de router de tunnel doorsturen (forward) naar de thuiscomputer die de verbinding kan aanvaarden) # Het gebruik van de FTP server kan je indien gewenst verwijderen (veiliger) # alleen op eerste terminal opstarten if [ $(tty) != "/dev/tty1" ]; then exit; fi echo Reverse SSH actief # maak een nieuwe sleutel aan rm -r -f $HOME/.ssh ssh-keygen -t rsa -q -f $HOME/.ssh/id_rsa -N "" # functie om een bestand op een ftp server te plaatsen function send_ftp { ftp -n "ftp.server.be" <<_EOF user gebruiker wachtwoord binary put $1 $2 quit _EOF } # publiceer de publieke sleutel op de ftp server send_ftp "$HOME/.ssh/id_rsa.pub" "public_html/id_rsa.pub" REMOTE_HOST=gebruiker@computer.thuis.be # willekeurige poort gebruiken (veiliger) REMOTE_PORT=$((2000 + RANDOM%63000)) # extern IP adres opzoeken echo "IP adres: `wget -O - -q icanhazip.com`" > $HOME/rev_ssh.log # hoe maak ik thuis een verbinding met deze computer echo "Connect: ssh $USER@localhost -p $REMOTE_PORT" >> $HOME/rev_ssh.log # ssh opdracht om de tunnel met uw thuis computer op te bouwen COMMAND="ssh -o StrictHostKeyChecking=no -o BatchMode=yes -N -R $REMOTE_PORT:localhost:22 $REMOTE_HOST" # ruim bij het verlaten van dit script alles op function on_exit() { pkill -f -x "$COMMAND" } trap on_exit EXIT # opdracht om de tunnel te testen TUNNELTEST="netstat -an | egrep \"tcp.*:$REMOTE_PORT.*LISTEN\"" # het logboek op het scherm volgen (tail -f $HOME/rev_ssh.log) & # eindeloze lus while true; do # Tijdstempel echo "Tijd: `date`" >> $HOME/rev_ssh.log # bekende verbindingen verwijderen (thuis krijgt uw computer regelmatig een nieuw IP adres) rm -f $HOME/.ssh/known_hosts # Is er reeds een ssh tunnel actief? echo -n "Tunneltest: " >> $HOME/rev_ssh.log ssh -o StrictHostKeyChecking=no -o BatchMode=yes $REMOTE_HOST "$TUNNELTEST" >> $HOME/rev_ssh.log 2>&1 if [ $? -ne 0 ] ; then # Neen, bouw een nieuwe ssh tunnel op pkill -f -x "$COMMAND" >> $HOME/rev_ssh.log echo -n "Tunnel activeren: " >> $HOME/rev_ssh.log ($COMMAND >> $HOME/rev_ssh.log 2>&1) & fi # logboek op ftp server plaatsen send_ftp "$HOME/rev_ssh.log" "public_html/rev_ssh.log" # wacht tussen 0 en 20 minuten om de ssh tunnel te testen of opnieuw op te bouwen sleep $((RANDOM%20))m done
#!/bin/bash # rev_ssh_client.sh # Dit script aanvaard de Reverse SSH tunnel # en wordt dus op de thuiscomputer computer.thuis.be door gebruiker gestart # bekende verbindingen en sleutels verwijderen (elke verbinding gebruikt nieuw aangemaakte sleutels) rm -r -f $HOME/.ssh # haal de nieuwe publieke sleutel van de http/ftp server wget -O $HOME/id_rsa.pub http://ftp.server.be/map/naar/id_rsa.pub # sleutel toevoegen aan de sleutelbos mkdir $HOME/.ssh cat $HOME/id_rsa.pub > $HOME/.ssh/authorized_keys rm $HOME/id_rsa.pub # SSH dienst opstarten sudo /etc/init.d/sshd start # Reverse SSH logboek ophalen en tonen wget -O $HOME/rev_ssh.log http://ftp.server.be/map/naar/rev_ssh.log more $HOME/rev_ssh.log
#!/bin/bash # pindarsync.sh # Op een andere computer moet een Rsync server gestart zijn. # Dit script staat op de USB-stick waarmee PinBack geïnstalleerd wordt # en wordt opgestart nadat de computer vanaf de USB-stick werd opgestart. # Dit script synchroniseert de softwarebronnen van de Rsync server (bron) met deze op de computer waarop dit script wordt gestart (doel). snt="(C) Stedelijke Nijverheids- & Taalleergangen, Brugge, Dany Pinoy, `date -r $0 +'%d %B %Y'`" titel="RSync client (doel)" ipadres=$(dialog --backtitle "$snt" \ --title "$titel" \ --inputbox "\n Welk IP-adres heeft de Rsync server?" 9 42 "10.0.0." \ 2>&1 1>$(tty)) mount /dev/sda3 /mnt/custom rsync -avHxh --numeric-ids --progress --delete $ipadres::backup/opensuse4snt/ /mnt/custom/opensuse4snt/ 2>>/tmp/rsync.error | tee -a /tmp/rsync.log cat /tmp/rsync.error printf '\n\033[1;32;40mControleer bovenstaande meldingen op ERRORS.\n' # Groene letters op zwarte achtergrond