KAV Rescue Disc 10 unter UEFI

Erstellt am 20.03.2017

Wenn's booten klemmt

Wenn man einen PC auf Viren scannen will, empfehle ich immer, das auf einem Live-System zu machen, sodass das infizierte System gar nicht erst läuft. Wer weiß schon, ob der Trojaner/Virus/Malware nicht schon längst im Kernel oder einem Treiber Unterschlupf gefunden hat und sich so erfolgreich vor einem Virenscanner verstecken kann.

Kürzlich wollte ich also auch ein Gerät scannen, das aber bereits mit (U)EFI daher kommt. Normalerweise ist das kein großes Ding: ISO runterladen, mit etwa unetbootin auf einen USB-Stick schreiben und den Rechner damit booten. So einfach wollte das aber nicht gehen, das EFI-BIOS bestand darauf, dass der Stick kein gültiges Bootmedium ist. Also habe ich mit meinen Erfahrungen aus dem HowTo zum Odys Winpad V10 begonnen, die Kaspersky's Rescue Disk unter einem UEFI-System zum laufen zu bekommen.

Ihr benötigt einen USB-Stick oder externe Festplatte, das kav_rescue_10.iso und ein Linux-System (ich als alter openSUSE-Hase habe openSUSE 42.2 verwendet).

Festplatte vorbereiten

Partitionieren mit sgdisk

Zunächst einmal benötigt ihr wieder eine GUID Partition Table (GPT) die vom EFI-BIOS akzeptiert wird. Den Laufwerkspfad (/dev/sdX) müsst ihr natürlich an eure Gegebenheiten anpassen.

# Neue, leere GPT erstellen
sgdisk --zap-all /dev/sdX

# EFI partition erstellen (200 MB)
sgdisk -n 1:2048:413695 -c 1:"EFI System Partition" -t 1:ef00 /dev/sdX

# BIOS partition erstellen (100 MB) wird vom grub-bootloader gefordert
sgdisk -n 2:413696:620543 -c 2:"BIOS BOOT Partition" -t 2:ef02 /dev/sdX

# Endsector der Festplatte heraussuchen
ENDSECTOR=$( sgdisk -E /dev/sdX )

# System Partition erstellen
sgdisk -n 3:620544:$ENDSECTOR -c3:"Linux" -t3:8300 /dev/sdX

# Überprüfen der neuen Partitionstabelle
sgdisk -p /dev/sdX

Dateisysteme schreiben

Ist die Partitionstabelle eingerichtet, könnt ihr als nächstes die Dateisysteme erstellen. Für die BIOS- und EFI-Partitionen wird ein FAT32-Filesystem benötigt. Die dritte Partition in der das eigentliche System landen soll, braucht ihr noch nicht anzufassen, dort hinein schreiben wir später das KAV-image.

mkfs.vfat -F32 -s 2 -n GRUB2EFI /dev/sdX1
mkfs.vfat -F32 /dev/sdX2

KAV Rescue Disc extrahieren

Jetzt wirds langsam spannend, von der Rescue Disc benötigen wir das eigentliche System-Image. Das ist in der CD etwas versteckt, daher werden jetzt erstmal ein paar loop-Devices gemountet.

# mount KAV-ISO
mkdir /tmp/loop
mount -oloop kav_rescue_10.iso /tmp/loop

# Als nächstes squashfs.img innerhalb der ISO mounten
mkdir /tmp/loop2
mount -oloop /tmp/loop/rescue/LiveOS/squashfs.img /tmp/loop2

# und das eigentliche System-image rauskopieren
cp /tmp/loop2/LiveOS/ext3fs.img ~/

# Außerdem brauchen wir noch kernel und initrd
cp /tmp/loop/boot/rescue ~/
cp /tmp/loop/boot/rescue.igz ~/
cp /tmp/loop/boot/System.map-rescue ~/

# wieder alles umounten
umount /tmp/loop2
umount /tmp/loop
rm -r /tmp/loop
rm -r /tmp/loop2

System-Image auf Festplatte schreiben

Ihr habt jetzt also das eigentliche Dateisystem, das normal von der Live-CD während des Bootens eingebunden wird. Wie der name schon andeutet, ist das ein ext3-Dateisystem und kann direkt in die dritte partition geschrieben werden. Anschließend noch einen fsck drüber laufen lassen und das Dateisystem auf die komplette Partitionsgröße aufblasen. Je nachdem, wie groß eure dritte Partition ist, kann das schon eine Weile dauern, weil ext3 dann erst alle Inodes anlegen muss.

# System-image schreiben
dd if=ext3fs.img of=/dev/sdX3

# fsck
e2fsck -f /dev/sdX3

# resize2fs
resize2fs /dev/sdX3

Grub-Bootloader installieren

Der letzte Schritt ist den Bootloader auf dem Stick bzw. der externen HDD zu installieren. Dafür greife ich wieder auf den EFI-Bootcode aus dem usb-pack_efi.zip zurück.

# System Partition mounten
mount /dev/sdX3 /mnt

# kernel and initrd nach /boot kopieren
cp ~/rescue ~/rescue.igz ~/System.map-rescue /mnt/boot

# EFI-Ordner erstellen und EFI-partition mounten
mkdir /mnt/EFI
mount /dev/sdX1 /mnt/EFI

# EFI-bootcode entpacken
cd /tmp
unzip ~/usb-pack_efi.zip

# und EFI-Ordner kopieren
rsync -auv /tmp/usb-pack_efi/EFI/ /mnt/EFI/
rm -r /tmp/usb-pack_efi

# grub2-bootloader installieren
grub2-install --removable --boot-directory=/mnt/boot --efi-directory=/mnt/EFI/BOOT /dev/sdX

Zu guter letzt noch eine /mnt/boot/grub2/grub.cfg erstellen und den Eintrag für die KAV-Rescue Disc erstellen. Dazu erstmal rausfinden, welche PARTUUID die Systempartition hat. Das kann dann als Bootparameter an den Kernel übergeben werden und sollte unabhängig auf jedem System funktionieren, egal ob noch andere Festplatten oder Laufwerke installiert sind. Wenn ihr nur ein root=/dev/sdb3 schreiben würdet, dann würde ein Booten in einem System mit zwei Festplatten z.B. fehlschlagen, da die USB-Festplatte ja dann zu /dev/sdc3 wird.

# UUID der Festplatte raussuchen -> PARTUUID="...."
blkid /dev/sdX3

# grub.cfg editieren
nano /mnt/boot/grub2/grub.cfg

set default=0
set timeout=10

menuentry "KAV10" {
        set root=(hd0,gpt3)
        linux /boot/rescue root=PARTUUID="...." rootfstype=auto init=/init 
initrd=/boot/rescue.igz kav_lang=en udev doscsi add_efi_memmap
        initrd /boot/rescue.igz
}

# Speichern und umounten
umount /mnt/EFI
umount /mnt

Booting up

Wenn alles ordentlich ausgehängt ist, heißt es jetzt Daumen drücken und die Festplatte an den zu scannenden Rechner anschließen. Sollte das System in eine Kernelpanic booten, dann stimmt höchstwahrscheinlich der root= Kernelparameter nicht. Im Grub-bootloader könnt ihr dazu die Taste 'E' drücken, um den Eintrag zu editieren. Dort könnt ihr dann z.B. mal /dev/sdb3 oder /dev/sdc3 probieren. Ist das System hochgefahren, nicht vergessen die Virendefinitionen zu aktualisieren und dann kann das Scannen auch schon los gehen.

Seitenanfang