<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://xinux.net/index.php?action=history&amp;feed=atom&amp;title=Desaster_Recovery_Probleme_schaffen</id>
	<title>Desaster Recovery Probleme schaffen - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://xinux.net/index.php?action=history&amp;feed=atom&amp;title=Desaster_Recovery_Probleme_schaffen"/>
	<link rel="alternate" type="text/html" href="https://xinux.net/index.php?title=Desaster_Recovery_Probleme_schaffen&amp;action=history"/>
	<updated>2026-08-26T14:03:41Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Xinux Wiki</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://xinux.net/index.php?title=Desaster_Recovery_Probleme_schaffen&amp;diff=73065&amp;oldid=prev</id>
		<title>Thomas.will: Die Seite wurde neu angelegt: „= Disaster Recovery: Sabotage-Katalog (Trainerseite) =  Diese Seite beschreibt, wie die Fehlerbilder für das Kapitel Disaster Recovery: Rettung in der Not…“</title>
		<link rel="alternate" type="text/html" href="https://xinux.net/index.php?title=Desaster_Recovery_Probleme_schaffen&amp;diff=73065&amp;oldid=prev"/>
		<updated>2026-08-26T11:11:28Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „= Disaster Recovery: Sabotage-Katalog (Trainerseite) =  Diese Seite beschreibt, wie die Fehlerbilder für das Kapitel &lt;a href=&quot;/index.php/Disaster_Recovery:_Rettung_in_der_Not&quot; title=&quot;Disaster Recovery: Rettung in der Not&quot;&gt;Disaster Recovery: Rettung in der Not&lt;/a&gt;…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Disaster Recovery: Sabotage-Katalog (Trainerseite) =&lt;br /&gt;
&lt;br /&gt;
Diese Seite beschreibt, wie die Fehlerbilder für das Kapitel&lt;br /&gt;
[[Disaster Recovery: Rettung in der Not]] erzeugt werden.&lt;br /&gt;
Die Lösungswege stehen in der Teilnehmerseite.&lt;br /&gt;
&lt;br /&gt;
{{Warnung|Alle Kommandos zerstören Daten. Ausschließlich auf den&lt;br /&gt;
Kurs-VMs ausführen, niemals auf einem produktiven System.}}&lt;br /&gt;
&lt;br /&gt;
== Vorbereitung ==&lt;br /&gt;
&lt;br /&gt;
Die Kursmaschinen laufen unter VirtualBox. Kommandos mit dem Präfix&lt;br /&gt;
&amp;lt;code&amp;gt;VBoxManage&amp;lt;/code&amp;gt; laufen auf dem Host, alle übrigen in der VM.&lt;br /&gt;
&lt;br /&gt;
;Firmware-Modus prüfen – muss BIOS sein, sonst greifen Szenario 1 und 2 nicht&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
VBoxManage showvminfo it201 | grep -i firmware&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zusatzplatten bereitstellen ===&lt;br /&gt;
&lt;br /&gt;
Für den Katalog werden vier Zusatzplatten zu je 25 GB benötigt. Sind sie&lt;br /&gt;
aus den vorherigen Kapiteln bereits vorhanden, entfällt dieser Abschnitt.&lt;br /&gt;
&lt;br /&gt;
;Platten anlegen&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd ~/VirtualBox\ VMs/it201&lt;br /&gt;
for d in b c d e; do&lt;br /&gt;
  VBoxManage createmedium disk --filename sd$d.vdi --size 25600 --format VDI&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Controller prüfen und Platten anhängen&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
VBoxManage showvminfo it201 | grep -i &amp;quot;storage controller name&amp;quot;&lt;br /&gt;
&lt;br /&gt;
for i in 1 2 3 4; do&lt;br /&gt;
  d=$(echo b c d e | cut -d&amp;quot; &amp;quot; -f$i)&lt;br /&gt;
  VBoxManage storageattach it201 --storagectl &amp;quot;SATA&amp;quot; --port $i \&lt;br /&gt;
    --device 0 --type hdd --medium sd$d.vdi&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;In der VM kontrollieren&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsblk -d -o NAME,SIZE&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Plattenbelegung ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/dev/sda&amp;lt;/code&amp;gt; – Systemplatte, bleibt unangetastet&lt;br /&gt;
* &amp;lt;code&amp;gt;/dev/sdb&amp;lt;/code&amp;gt; – Partitionstabelle (Szenario 11)&lt;br /&gt;
* &amp;lt;code&amp;gt;/dev/sdc&amp;lt;/code&amp;gt; – LVM Physical Volume (Szenario 10)&lt;br /&gt;
* &amp;lt;code&amp;gt;/dev/sdd&amp;lt;/code&amp;gt; – Reserve&lt;br /&gt;
* &amp;lt;code&amp;gt;/dev/sde&amp;lt;/code&amp;gt; – ext4-Testdateisystem (Szenario 9)&lt;br /&gt;
&lt;br /&gt;
=== Snapshots ===&lt;br /&gt;
&lt;br /&gt;
;Snapshot vor jeder Übung anlegen – VM vorher herunterfahren&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
VBoxManage controlvm it201 acpipowerbutton&lt;br /&gt;
VBoxManage snapshot it201 take vor-dr --description &amp;quot;Disaster Recovery&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Vorhandene Snapshots anzeigen&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
VBoxManage snapshot it201 list&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Zurücksetzen nach der Übung – die VM muss ausgeschaltet sein&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
VBoxManage controlvm it201 poweroff&lt;br /&gt;
VBoxManage snapshot it201 restore vor-dr&lt;br /&gt;
VBoxManage startvm it201 --type gui&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Snapshot nach dem Kurs auflösen, sonst bleibt die Differenzkette bestehen&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
VBoxManage snapshot it201 delete vor-dr&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|Solange ein Snapshot existiert, laufen alle Schreibzugriffe in&lt;br /&gt;
eine Differenzdatei. Vor dem RAID-Abschlusskapitel den Snapshot auflösen,&lt;br /&gt;
sonst wird der Resync unnötig zäh.}}&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|Immutable Disks sind für diesen Zweck ungeeignet: Der Reset&lt;br /&gt;
erfolgt beim Einschalten, der Schaden wäre nach dem Reboot bereits&lt;br /&gt;
verschwunden.}}&lt;br /&gt;
&lt;br /&gt;
=== Rückweg ohne Snapshot ===&lt;br /&gt;
&lt;br /&gt;
In der VM ausführen, ermöglicht die Reparatur der Szenarien 1 bis 6 ohne&lt;br /&gt;
Rollback.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir -p /root/dr-backup&lt;br /&gt;
dd if=/dev/sda of=/root/dr-backup/mbr.bin bs=512 count=1&lt;br /&gt;
dd if=/dev/sda of=/root/dr-backup/gap.bin bs=512 skip=1 count=2047&lt;br /&gt;
sfdisk -d /dev/sdb &amp;gt; /root/dr-backup/sdb.dump&lt;br /&gt;
cp /boot/grub/grub.cfg /root/dr-backup/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Zweiten Kernel installieren – Voraussetzung für Szenario 4&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt list --installed 'linux-image-*'&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ist nur ein Kernel vorhanden, wird Szenario 4 zur Rescue-Übung statt zur&lt;br /&gt;
Menü-Übung. Für die Menü-Variante muss ein älterer Kernel im GRUB-Menü&lt;br /&gt;
unter &amp;quot;Advanced options&amp;quot; stehen.&lt;br /&gt;
&lt;br /&gt;
== Ebene 1: Bootloader ==&lt;br /&gt;
&lt;br /&gt;
=== Szenario 1: Bootsektor (Stage 1) zerstört ===&lt;br /&gt;
&lt;br /&gt;
;Nur die ersten 446 Byte nullen, die Partitionstabelle bleibt erhalten&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
dd if=/dev/zero of=/dev/sda bs=446 count=1&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Symptom: &amp;quot;FATAL: No bootable medium found&amp;quot;, kein GRUB&lt;br /&gt;
* Rückweg: &amp;lt;code&amp;gt;dd if=/root/dr-backup/mbr.bin of=/dev/sda bs=446 count=1&amp;lt;/code&amp;gt;&lt;br /&gt;
* Reparatur im Kurs: Rescue-System, chroot, &amp;lt;code&amp;gt;grub-install /dev/sda&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Szenario 2: Post-MBR-Gap (core.img) zerstört ===&lt;br /&gt;
&lt;br /&gt;
;Vorher prüfen, dass die erste Partition bei Sektor 2048 beginnt&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
fdisk -l /dev/sda | tail -5&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Sektor 1 bis 2047 nullen&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
dd if=/dev/zero of=/dev/sda bs=512 seek=1 count=2047&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Kontrolle, dass der GRUB-String verschwunden ist&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
dd if=/dev/sda bs=512 skip=1 count=4 2&amp;gt;/dev/null | hexdump -C | head&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Symptom: schwarzer Bildschirm oder wenige Zeichen Müll, kein Prompt&lt;br /&gt;
* Rückweg: &amp;lt;code&amp;gt;dd if=/root/dr-backup/gap.bin of=/dev/sda bs=512 seek=1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Szenario 3: grub.cfg fehlt ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mv /boot/grub/grub.cfg /root/dr-backup/grub.cfg.weg&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Symptom: &amp;lt;code&amp;gt;grub&amp;gt;&amp;lt;/code&amp;gt; Vollshell mit Kommandozeile&lt;br /&gt;
* Höchster Lernwert im Katalog, weil die Übergabe Bootloader → Kernel&lt;br /&gt;
  von Hand nachgespielt werden muss&lt;br /&gt;
* Rückweg: Datei zurückkopieren&lt;br /&gt;
&lt;br /&gt;
=== Szenario 3b: GRUB-Verzeichnis versteckt ===&lt;br /&gt;
&lt;br /&gt;
;Erzeugt im Gegensatz zu Szenario 2 einen sauberen Rescue-Prompt&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mv /boot/grub /boot/grub.weg&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Symptom: &amp;lt;code&amp;gt;grub rescue&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Lernziel: &amp;lt;code&amp;gt;ls&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;set root=&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;insmod normal&amp;lt;/code&amp;gt;,&lt;br /&gt;
  &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt;&lt;br /&gt;
* Beide Varianten nacheinander zeigen: core.img kaputt gegen core.img heil,&lt;br /&gt;
  aber Konfiguration nicht auffindbar&lt;br /&gt;
&lt;br /&gt;
== Ebene 2: Kernel und initramfs ==&lt;br /&gt;
&lt;br /&gt;
=== Szenario 4: Kernel gelöscht ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mv /boot/vmlinuz-$(uname -r) /root/dr-backup/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Symptom: GRUB meldet &amp;quot;file not found&amp;quot; und fällt auf den Prompt zurück&lt;br /&gt;
* Lernziel: der zweite Kerneleintrag unter &amp;quot;Advanced options&amp;quot; rettet die Lage&lt;br /&gt;
&lt;br /&gt;
=== Szenario 5: initramfs gelöscht ===&lt;br /&gt;
&lt;br /&gt;
;Debian&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mv /boot/initrd.img-$(uname -r) /root/dr-backup/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Rocky&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mv /boot/initramfs-$(uname -r).img /root/dr-backup/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Symptom: Kernel startet, dann Panic&lt;br /&gt;
  &amp;quot;VFS: Unable to mount root fs on unknown-block(0,0)&amp;quot;&lt;br /&gt;
* Lernziel: Unterschied &amp;lt;code&amp;gt;update-initramfs&amp;lt;/code&amp;gt; gegen &amp;lt;code&amp;gt;dracut&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Szenario 6: falsche root-UUID ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sed -i 's/root=UUID=[0-9a-f-]\{36\}/root=UUID=00000000-0000-0000-0000-000000000000/g' \&lt;br /&gt;
  /boot/grub/grub.cfg&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Symptom: nach etwa 30 Sekunden BusyBox-Prompt &amp;lt;code&amp;gt;(initramfs)&amp;lt;/code&amp;gt;&lt;br /&gt;
* Lernziel: &amp;lt;code&amp;gt;blkid&amp;lt;/code&amp;gt; im initramfs, Kernelparameter im GRUB-Menü mit&lt;br /&gt;
  &amp;lt;code&amp;gt;e&amp;lt;/code&amp;gt; korrigieren, danach dauerhaft reparieren&lt;br /&gt;
&lt;br /&gt;
== Ebene 3: frühes Userspace ==&lt;br /&gt;
&lt;br /&gt;
=== Szenario 7: Datenplatte hängt den Boot auf ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &amp;quot;UUID=deadbeef-0000-0000-0000-000000000000 /daten ext4 defaults 0 2&amp;quot; \&lt;br /&gt;
  &amp;gt;&amp;gt; /etc/fstab&lt;br /&gt;
mkdir -p /daten&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Symptom: 90 Sekunden Wartezeit, danach emergency.target mit Passwortabfrage&lt;br /&gt;
* Lernziel: &amp;lt;code&amp;gt;journalctl -xb&amp;lt;/code&amp;gt;, systemd-fstab-generator, Option&lt;br /&gt;
  &amp;lt;code&amp;gt;nofail&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Szenario 8: libc entfernt ===&lt;br /&gt;
&lt;br /&gt;
;Debian&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rm /lib/x86_64-linux-gnu/libc.so.6&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Rocky&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rm /lib64/libc.so.6&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Symptom: kein neuer Prozess startet mehr, bereits laufende Prozesse leben weiter&lt;br /&gt;
* Vorführung: &amp;lt;code&amp;gt;echo test&amp;lt;/code&amp;gt; als Bash-Builtin funktioniert noch,&lt;br /&gt;
  &amp;lt;code&amp;gt;ls&amp;lt;/code&amp;gt; nicht mehr – der Aha-Punkt zu unlink gegen löschen&lt;br /&gt;
* Snapshot zwingend, die VM ist danach nur noch per&lt;br /&gt;
  &amp;lt;code&amp;gt;VBoxManage controlvm it201 poweroff&amp;lt;/code&amp;gt; zu beenden&lt;br /&gt;
&lt;br /&gt;
== Ebene 4: Dateisysteme und Speicher ==&lt;br /&gt;
&lt;br /&gt;
=== Szenario 9: ext4-Superblock zerstört ===&lt;br /&gt;
&lt;br /&gt;
;Testdateisystem anlegen und füllen&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkfs.ext4 /dev/sde&lt;br /&gt;
mount /dev/sde /mnt&lt;br /&gt;
cp -r /etc /mnt/&lt;br /&gt;
umount /mnt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Primären Superblock bei Byte-Offset 1024 nullen&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
dd if=/dev/zero of=/dev/sde bs=1024 seek=1 count=1&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Symptom: &amp;lt;code&amp;gt;mount&amp;lt;/code&amp;gt; scheitert mit &amp;quot;can't read superblock&amp;quot;&lt;br /&gt;
* Hinweis: &amp;lt;code&amp;gt;e2fsck&amp;lt;/code&amp;gt; greift oft von selbst auf einen Backup-Superblock&lt;br /&gt;
  zurück – das ist selbst ein Lernpunkt. Für den manuellen Weg&lt;br /&gt;
  &amp;lt;code&amp;gt;mke2fs -n /dev/sde&amp;lt;/code&amp;gt; zeigen und &amp;lt;code&amp;gt;fsck -b 32768&amp;lt;/code&amp;gt; erzwingen&lt;br /&gt;
&lt;br /&gt;
=== Szenario 10: LVM Physical Volume zerstört ===&lt;br /&gt;
&lt;br /&gt;
;Aufbau&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
pvcreate /dev/sdc&lt;br /&gt;
vgcreate vgtest /dev/sdc&lt;br /&gt;
lvcreate -L 5G -n lvtest vgtest&lt;br /&gt;
mkfs.ext4 /dev/vgtest/lvtest&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;UUID vorher notieren&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
pvs -o pv_name,pv_uuid&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;LVM-Label und Metadatenanfang überschreiben&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
dd if=/dev/zero of=/dev/sdc bs=512 count=4&lt;br /&gt;
sync&lt;br /&gt;
pvscan&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Symptom: &amp;lt;code&amp;gt;pvs&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;vgs&amp;lt;/code&amp;gt; zeigen die VG nicht mehr&lt;br /&gt;
* Lernziel: LVM legt bei jeder Änderung automatisch ein Archiv unter&lt;br /&gt;
  &amp;lt;code&amp;gt;/etc/lvm/archive&amp;lt;/code&amp;gt; an – Rettung über &amp;lt;code&amp;gt;pvcreate --uuid ...&lt;br /&gt;
  --restorefile ...&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;vgcfgrestore&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Szenario 11: Partitionstabelle gelöscht ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
dd if=/dev/zero of=/dev/sdb bs=512 count=1&lt;br /&gt;
partprobe /dev/sdb&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Symptom: &amp;lt;code&amp;gt;lsblk&amp;lt;/code&amp;gt; zeigt nur noch die nackte Platte ohne Partitionen&lt;br /&gt;
* Zwei Lösungswege gegenüberstellen: &amp;lt;code&amp;gt;testdisk&amp;lt;/code&amp;gt; als Rekonstruktion&lt;br /&gt;
  gegen &amp;lt;code&amp;gt;sfdisk /dev/sdb &amp;lt; sdb.dump&amp;lt;/code&amp;gt; aus der Sicherung&lt;br /&gt;
* Die Botschaft ist der Kontrast: das Spektakuläre gegen das Richtige&lt;br /&gt;
&lt;br /&gt;
=== Szenario 12: belegter Platz ohne sichtbare Datei ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
dd if=/dev/zero of=/var/log/gross.log bs=1M count=4000 &amp;amp;&lt;br /&gt;
sleep 5&lt;br /&gt;
rm /var/log/gross.log&lt;br /&gt;
df -h /var&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Symptom: &amp;lt;code&amp;gt;df&amp;lt;/code&amp;gt; meldet den Platz als belegt, &amp;lt;code&amp;gt;du&amp;lt;/code&amp;gt; findet nichts&lt;br /&gt;
* Lernziel: &amp;lt;code&amp;gt;lsof +L1&amp;lt;/code&amp;gt;, Prozess beenden statt Dateien suchen&lt;br /&gt;
&lt;br /&gt;
== Ebene 5: Rocky-spezifisch ==&lt;br /&gt;
&lt;br /&gt;
=== Szenario 13: SELinux-Kontexte zerstört ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
setenforce 1&lt;br /&gt;
chcon -R -t var_t /etc/ssh&lt;br /&gt;
systemctl restart sshd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Symptom: sshd startet nicht, die Journal-Meldungen sind wenig aussagekräftig,&lt;br /&gt;
  die Ursache steht nur im Audit-Log&lt;br /&gt;
* Lernziel: &amp;lt;code&amp;gt;ausearch -m avc -ts recent&amp;lt;/code&amp;gt;, danach&lt;br /&gt;
  &amp;lt;code&amp;gt;restorecon -Rv /etc/ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Realer Bezug: genau dieses Bild entsteht nach einem Restore mit&lt;br /&gt;
  &amp;lt;code&amp;gt;tar&amp;lt;/code&amp;gt; ohne &amp;lt;code&amp;gt;--selinux&amp;lt;/code&amp;gt;&lt;br /&gt;
* Für den vollständigen Reset: &amp;lt;code&amp;gt;touch /.autorelabel&amp;lt;/code&amp;gt; und Reboot&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|&amp;lt;code&amp;gt;chcon&amp;lt;/code&amp;gt; wird hier bewusst als Sabotagewerkzeug&lt;br /&gt;
eingesetzt. Für die reguläre Kontextvergabe gilt weiterhin&lt;br /&gt;
&amp;lt;code&amp;gt;semanage fcontext&amp;lt;/code&amp;gt; mit anschließendem &amp;lt;code&amp;gt;restorecon&amp;lt;/code&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
== Blind-Sabotage ==&lt;br /&gt;
&lt;br /&gt;
Für die Prüfungsvariante würfelt ein Skript eines der Szenarien aus.&lt;br /&gt;
Die Teilnehmer bekommen nur die defekte VM und eine Zeitvorgabe.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# /root/kaputt.sh - waehlt zufaellig ein Szenario&lt;br /&gt;
N=$((RANDOM % 6 + 1))&lt;br /&gt;
echo &amp;quot;$N&amp;quot; &amp;gt; /root/.szenario&lt;br /&gt;
case $N in&lt;br /&gt;
  1) dd if=/dev/zero of=/dev/sda bs=446 count=1 ;;&lt;br /&gt;
  2) mv /boot/grub /boot/.grub.weg ;;&lt;br /&gt;
  3) mv /boot/grub/grub.cfg /root/.weg-grub.cfg ;;&lt;br /&gt;
  4) mv /boot/vmlinuz-$(uname -r) /root/.weg-vmlinuz ;;&lt;br /&gt;
  5) mv /boot/initrd.img-$(uname -r) /root/.weg-initrd ;;&lt;br /&gt;
  6) sed -i 's/root=UUID=[0-9a-f-]\{36\}/root=UUID=00000000-0000-0000-0000-000000000000/g' \&lt;br /&gt;
       /boot/grub/grub.cfg ;;&lt;br /&gt;
esac&lt;br /&gt;
sync&lt;br /&gt;
systemctl reboot&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Die Auflösung erfolgt gemeinsam anhand der Leitfrage&lt;br /&gt;
* Woran war erkennbar, welche Ebene der Bootkette ausgefallen ist?&lt;/div&gt;</summary>
		<author><name>Thomas.will</name></author>
	</entry>
</feed>