Archiv für den Monat: März 2011

Desinfec’t mit TeamViewer pimpen

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

anpassungen.tar.gz [4,6K]

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.

desinfect-2011.rdiff.tar.gz [2,7M]