Am 28.03.2011 war es wieder soweit. Die neuste Version von Desinfec’t kam heraus. Ich hatte bereits in der letzten Version eine Sache vermisst. Einen vorinstallierten Teamviewer-Client.
Es ist ja nicht das, dass ich diesen nicht im laufenden Betrieb nachinstallieren könnt, aber wenn mal wieder ein Bekannter meint er hätte Viren, mit Linux aber nicht umgehen will oder kann, würde ich da schon gerne weiterhelfen, auch über größere Distanz.
Auf der Software-Kollektion 2 der c’t-Ausgabe 08/2011 findet sich unterhalb des Ordners desinfect die Datei desinfect-2011.iso
Diese ISO-Datei enthält eigentlich nur ein modifiziertes Ubuntu in der Version 10.10, dieses gilt es nun weiter zu modifizieren.
Da das ISO schon bei 687MB liegt und der Teamviewer-Installer (komprimiert) 18MB groß ist, kommen wir in der Summe über die magischen 700MB. Daher beschreibt die folgende Anleitung lediglich die Einbindung eines kleinen Scripts was auf dem Desktop verknüpft wird und mit wenigen Klicks den Teamviewer nachlädt. In der Hoffnung, dass die so statisch wirkende TeamViewer-Download-URL auch wirklich statisch bleibt.
ISO entpacken
Alle Änderungen, die ich vornehmen will befinden sich innerhalb des Squashfs des ISOs, also entpacken wir das erstmal.
michael@michael-desktop:~/desinfect$ 7z e desinfect-2011.iso casper/filesystem.squashfs
Squashfs entpacken
michael@michael-desktop:~/desinfect$ sudo unsquashfs filesystem.squashfs
Hier ist das sudo entscheidend, da die Dateiberechtigungen sonst verloren gehen.
Anpassungen vornehmen
Nun erstellen wir fix ein Download- und Installations-Script für den Teamviewer:
michael@michael-desktop:~/desinfect$ sudo gedit squashfs-root/opt/desinfect/install_teamviewer.sh
Mit folgendem Inhalt:
if ! zenity --question --text "Soll Teamviewer jetzt heruntergeladen und installiert werden?" --title "Teamviewer"; then exit; fi tempfile=/tmp/teamviewer_linux.deb wget http://www.teamviewer.com/download/teamviewer_linux.deb -O $tempfile --progress=bar:force 2>&1 | zenity --progress --title="Teamviewer wird heruntergeladen." --no-cancel --auto-close --width=400 if [ -f $tempfile ]; then gksu "dpkg -i $tempfile" if [ $? -eq 0 ]; then if zenity --question --text "Teamviewer wurde erfolgreich installiert. Teamviewer jetzt starten?" --title "Teamviewer"; then teamviewer fi else zenity --error --text "Installation fehlgeschlagen!" --title "Teamviewer" fi else zenity --error --text "Download fehlgeschlagen!" --title "Teamviewer" fi rm $tempfile
Ausführbar machen:
michael@michael-desktop:~/desinfect$ sudo chmod +x squashfs-root/opt/desinfect/install_teamviewer.sh
Dann noch den passenden Desktop-Link erstellen:
michael@michael-desktop:~/desinfect$ sudo gedit squashfs-root/etc/skel/Desktop/teamviewer-installer.desktop
Mit folgendem Inhalt:
[Desktop Entry] Version=1.0 Encoding=UTF-8 Name=TeamViewer installieren Comment=TeamViewer Remote Control Application Exec=/opt/desinfect/install_teamviewer.sh Icon=/usr/share/icons/gnome/48x48/apps/teamviewer.png Type=Application
Und damit das Ganze noch ein wenig hübscher wird, hinterlegen wir mal noch ein passendes Icon, dazu laden wir vorher des deb-Paket für Teamviewer herunter.
michael@michael-desktop:~/desinfect$ wget http://www.teamviewer.com/download/teamviewer_linux.deb michael@michael-desktop:~/desinfect$ ar x teamviewer_linux.deb michael@michael-desktop:~/desinfect$ tar -xzf data.tar.gz ./opt/teamviewer/teamviewer/6/desktop/teamviewer.png michael@michael-desktop:~/desinfect$ sudo mv opt/teamviewer/teamviewer/6/desktop/teamviewer.png squashfs-root/usr/share/icons/gnome/48x48/apps/
Squashfs wieder einpacken
michael@michael-desktop:~/desinfect$ mv filesystem.squashfs filesystem.squashfs.old michael@michael-desktop:~/desinfect$ sudo mksquashfs squashfs-root/ filesystem.squashfs michael@michael-desktop:~/desinfect$ sudo chown michael:michael filesystem.squashfs
ISO einpacken
Hier bin ich faul und greife gern auf isomaster zurück.
Einfach in isomaster das desinfect-2011.iso öffnen, die Datei filesystem.squashfs unterhalb von casper löschen und anschließend die neuerstellte an dieser Stelle einfügen.
Anschließend noch das ISO unter anderem Namen „desinfect-2001-teamviewer.iso“ speichern.
RDIFF erstellen
Um die Änderungen am ISO als binäre Differenz anbieten zu können, kann man auf das Tool rdiff zurückgreifen.
michael@michael-desktop:~/desinfect$ rdiff signature desinfect-2011.iso desinfect-2011.sig michael@michael-desktop:~/desinfect$ rdiff delta desinfect-2011.sig desinfect-2011-teamviewer.iso desinfect-2011.rdiff
Die hiermit erstellte rdiff-Datei kann auf die Originale iso-Datei folgendermaßen angewandt werden:
michael@michael-desktop:~/desinfect$ rdiff patch desinfect-2011.iso desinfect-2011.rdiff desinfect-2011-teamviewer-rdiff.iso
Kontrolle
michael@michael-desktop:~/desinfect$ md5sum *.iso a1745f0ef34cc8630578f6f87378c0e1 desinfect-2011.iso 6d40967c515e366492cb7147996cbb3c desinfect-2011-teamviewer.iso 6d40967c515e366492cb7147996cbb3c desinfect-2011-teamviewer-rdiff.iso
Für Faule
Damit die rdiff-Datei etwas kompakter wird, habe ich beim erstellen der Signatur mit einer Block Size von 128 gearbeitet, sonst wären es über 11 MB.