Tips en Trucs 2021

SystemRescueCD op USB-stick zetten en uitbreidingen toevoegen

Wie van plan is het kersverse openSUSE Leap 15.3 op zijn computer te zetten, neemt best enkele voorzorgen. Zo'n ingrijpende bewerking kan namelijk voor veel ellende zorgen.

Tijd voor het veilig stellen van onze data en systeem met behulp van SystemRescueCD. Een live besturingssysteem die je kunt opstarten vanaf DVD of USB-stick. DVD spelers verdwijnen stilaan en dat merk je, steeds meer computers hebben geen DVD speler meer. SystemRescueCD opstarten vanaf een USB-stick werkt perfect, maar je kunt de USB-stick nergens anders meer voor gebruiken. Door SystemRescueCD zelf op een USB-stick te zetten, kan je de USB-stick verder blijven gebruiken voor het opslaan van bestanden. Maar nog interessanter wordt het als je SystemRescueCD daardoor met eigen scripts kunt uitbreiden.

SystemRescueCD op USB-stick zetten

De hier beschreven methode werkt enkel met UEFI zonder Secure Boot. Het moderne UEFI zorgt ervoor dat het maken van een opstartbare USB-stick (of ander medium) veel eenvoudiger wordt. SystemRescueCD kan echter niet met ingeschakelde Secure Boot opstarten.

Start de computer met een SystemRescueCD DVD of USB-stick (aangemaakt zoals dat op deze internetpagina van SystemRescueCD wordt uitgelegd).

Standaard start SystemRescueCD met een QWERTY toetsenbord configuratie, lastig voor gebruikers die een Belgisch AZERTY toetsenbord gebruiken. Met de volgende opdracht stel je in SystemRescueCD een AZERTY toetsenbord in:
AZERTY toetsenbord

Bij het intypen van deze opdracht merk je meteen waarom dit zo belangrijk is. Voor a typ je q, ) voor - en 1 zonder shift. Bij het intypen van de opdracht loadkeys kan je tijdens het typen de opdracht automatische laten aanvullen door Tab te drukken. Na het uitvoeren van deze opdracht, werkt het AZERTY toetsenbord zoals het hoort.

Sluit de USB-stick die je voor SystemRescueCD wilt gebruiken aan op de computer. Gebruik de volgende opdracht om te achterhalen hoe je de USB-stick kunt benaderen:
Dmesg

Bij mij is de USB-stick bereikbaar via sdc, wat je kunt afleiden uit de laatste regel. Daarenboven staan apparaten (devices) steeds in de map /dev/, wat uiteindelijk /dev/sdc oplevert.

Om het SystemRescueCD systeem naar de USB-stick te kopiëren, moeten we de USB-stick met het VFAT bestandssysteem formatteren. Dit is het enige bestandssysteem dat door UEFI benaderd kan worden. Let wel bij het formatteren worden alle gegevens op de USB-stick onherroepelijk gewist. Daar gaan we:
VFAT formatteren

De -I zorgt ervoor dat we de USB-stick zonder partitioneren kunnen formatteren. Let ook op de naam die we de USB-stick geven. Deze moet namelijk overeen met de SystemRescueCd versie zonder de punt, m.a.w. de 803 staat hier voor versie 8.03.

Na het formatteren van de USB-stick kunnen we deze aan het bestandssysteem koppelen:
Koppelen

Nu kunnen we het SystemRescueCD systeem dat we terugvinden in de map /run/archiso/bootmnt naar de USB-stick kopiëren: Kopiëren

De -R optie zorgt dat de mapinhoud recursief (inclusief de inhoud van de submappen) wordt gekopiëerd. Dit neemt wat tijd in beslag.

En onze opstartbare en uitbreidbare SystemRescueCD USB-stick is klaar voor gebruik. Verwijder de USB-stick echter niet zonder het systeem eerst af te sluiten (of de stick af te koppelen). Het SystemRescueCD systeem sluit je af met de opdracht:
Afsluiten

Test de aangemaakte opstartbare USB-stick op de computer waarop je die wilt gebruiken. Vergeet daarbij niet eerst de USB-stick op de computer aan te sluiten, daarna pas de computer aan te zetten en de speciale toets repetitief (herhalend) om het opstartmenu (bootmenu) van jouw computer te krijgen. Selecteer de USB-stick en start daarvan op. Alles zou op een UEFI zonder Secure Boot computer moeten werken.
Bootmenu

SystemRescueCD uitbreiden met scripts

SystemRescueCD is standaard uitgerust met een systeem om automatisch scripts uit te voeren. Plaats een script met de naam autorun in de rootmap (hoofdmap) van de USB-stick (of DVD) en deze wordt automatisch uitgevoerd.

Het autorun script wordt uitgevoerd op het einde van de opstartprocedure, waardoor interactie met de gebruiker niet mogelijk is. Dit is echter eenvoudig op te lossen met een autorun script dat een tweede script start na het volledig opstarten van het systeem.

Een voorbeeld van zo'n autorun script:

#!/sbin/bash
echo '. /run/archiso/bootmnt/pindanet.sh' >> /root/.bashrc

Dit script heeft als enige taak het script pindanet.sh in de rootmap (hoofdmap) van de USB-stick (of ander SystemRescueCD opstartmedium) op te starten na het voltooien van de systeemstart. Na het uitvoeren van het autorun script, verschijnt de melding end of autorun scripts, press <Enter> to continue. M.a.w. druk na de laatste melding Finished Initializes Pacman keyring op Enter om de terminal en daarmee ons interactief script te starten.

Hieronder het script dat ik gebruik. Je kunt dit script niet zomaar overnemen, maar wel gebruiken als basis voor uw eigen uitbreidingen. Zo gebruik ik als bestandssysteem voor openSUSE Leap steeds Ext4 dat met de opdracht fsarchiver snel te back-uppen en teruggezet kan worden.

#!/sbin/bash
# Enkele functies die we later meermaals nodig hebben
function herstart {
  echo "De computer wordt automatisch herstart."
  echo "U hoeft enkel te wachten..............."
  shutdown -r now
  sleep 3000	
}
function afsluiten {
  echo "De computer wordt automatisch afgesloten."
  echo "U hoeft enkel te wachten..............."
  shutdown -h now
  sleep 3000
}
function getBackupIp {
  echo "pindabackup"
}
# Hier start het script
# We gebruiken een AZERTY toetsenbord
loadkeys be-latin1
# En een groter lettertype
setfont sun12x22
echo "Automatisch systeemherstel"
echo "=========================="
echo "(C) PindaNet.be, Brugge, Dany Pinoy, `date -r /run/archiso/bootmnt/pindanet.sh +'%d %B %Y'`"
echo
echo "Dit is experimentele software. \
Het gebruik ervan is geheel voor eigen risico. \
PindaNet.be e.v. aanvaarden geen enkele aansprakelijkheid voor schade aan hard- en software, verloren gegane data of andere direct of indirect door het gebruik van deze software ontstane schade. \
In sommige landen kunnen de gebruikte software en andere componenten aan exportregelingen of patenten gebonden zijn. \
In deze landen mag deze software niet verspreid worden zoals dat normaal bij software onder de gpl-licentie gebruikelijk is. \
Als u het met deze condities niet eens bent, mag u deze software niet gebruiken."
echo
# Opzoeken of de systeempartitie op de eerste of tweede schijf staat
mainhd="/dev/sda"
if [ ! -b "${mainhd}4" ]; then
  mainhd="/dev/sdb"
fi
# Mijn systemen gebruiken steeds de vierde partitie op de systeemschijf
if [ ! -b "${mainhd}4" ]; then
  echo "Systeempartitie niet gevonden."
  sleep 3000
  exit
fi
echo "Systeemschijf: ${mainhd}"
while true; do
  echo
  # Interactief keuzemenu op het scherm plaatsen
  echo 'Typ een opdracht (restore, rsync, halt, reboot, terminal, backup): '
  read keuze
  case "$keuze" in
    # Een systeemback-up terugzetten
    "restore")  backupip=$(getBackupIp)
      # NAS met back-ups koppelen
      mount -t cifs //$backupip/yoga /mnt
      echo
      echo 'Welke backup terugzetten (child, parent, grandparent): '
      read keuze
      case "$keuze" in
	"parent") fsarchiver restfs /mnt/parent.linux.fsa id=0,dest=${mainhd}4;;
	"grandparent") fsarchiver restfs /mnt/grandparent.linux.fsa id=0,dest=${mainhd}4;;
	*) fsarchiver restfs /mnt/child.linux.fsa id=0,dest=${mainhd}4;;
      esac
      umount /mnt;;
    # Een databack-up van de gegevenspartitie maken
    "rsync") backupip=$(getBackupIp)
      rsync $backupip::
      if [ $? -ne 0 ]; then
	printf '\033[1;31;40m Kon geen verbinding met backupserver opbouwen.\033[0m\n' # Rode letters
      else
	mount ${mainhd}7 /mnt
	rsync -avHxh --numeric-ids --progress --delete --exclude="vmware/" --exclude="lost+found/" /mnt/ $backupip::backup/yoga/documenten 2>>/tmp/rsync.error | tee -a /tmp/rsync.log
	umount /mnt
	printf '\033[1;31;40mRsyncbackup gaf de volgende foutmeldingen:\033[0m\n' # Rode letters
	more /tmp/rsync.error
	printf '\033[1;32;40mDe backup is voltooid.\033[0m\n' # Groene letters op zwarte achtergrond
      fi;;
    "halt") afsluiten;;
    "reboot") herstart;;
    # Doorstarten naar SystemRescueCD om zelf opdrachten te uit te voeren
    "terminal") break;;
    # Systeemback-up maken
    "backup") backupip=$(getBackupIp)
      # NAS met back-ups koppelen
      mount -t cifs //$backupip/yoga /mnt
      rm /mnt/grandparent.linux.fsa
      mv /mnt/parent.linux.fsa /mnt/grandparent.linux.fsa
      mv /mnt/child.linux.fsa /mnt/parent.linux.fsa
      fsarchiver savefs /mnt/child.linux.fsa ${mainhd}4
      umount /mnt;;
  esac
done