blog/shl@INTERDOSE


Vista/BitLocker und trotzdem GRUB

Posted in CTRL-ALT DEL, Piratsphäre, help me booting it up by Sebastian on the March 23rd, 2008

Wenn im MBR ein GRUB zu finden ist, weigert sich Vista den TPM-Chip zu aktivieren, folglich ist BitLocker nicht wie gewünscht verfügbar.

Es geht aber doch!

Erstmal Linux installieren - wie gewohnt, jedoch GRUB nicht in den MBR sondern auf die erste Partition installieren. Danach den Boot-Sektor sichern, am besten auf Diskette oder USB-Stick (sollte ein von Windows lesbares Dateisystem sein).
dd if=/dev/sda1 of=/mnt/usbstick/linux.bin bs=512 count=1
Vista anschließend - wie hier beschrieben - für die Verwendung mit BitLocker installieren. Aber Achtung: clean ist hier eine falsche Idee - einfach übergehen.

Jetzt kommt der interessante Teil, nämlich der Vista Boot-Loader. Erstmal ein Terminal (cmd.exe oder PowerShell) als Admin öffnen. Den gesicherten Boot-Sektor linux.bin ins Hauptverzeichnis der Platte kopieren, die den Boot-Loader enthält. (Das ist wahrscheinlich C:, kontrollieren kann man’s mit diskmgmt.msc.)
bcdedit /create /d "GRUB" /application BOOTSECTOR
Wir bekommen eine ID mitgeteilt, die im folgenden einzufüllen ist.
bcdedit /set $ID device boot
bcdedit /set $ID PATH \linux.bin
bcdedit /displayorder $ID /addlast
bcdedit /timeout 10

Vista wird beim nächsten Neustart 10 Sekunden lang ein Boot-Menü anzeigen, dessen letzte Option GRUB ist.

Thinkpad-Feature unter X11: Maus-Scrollen

Posted in Thinkpad, Tips und Tricks by Sebastian on the March 22nd, 2008

Unter Windows liebe ich die Scroll-Funktion (”Bobbel” und mittlere Maustaste gleichzeitig) meines Thinkpads. Und selbst unter X11 muß niemand darauf verzichten! Danke Stefan.

Section "InputDevice"
 ...
 Option “ZAxisMapping” “4 5″
 Option “EmulateWheel” “on”
 Option “EmulateWheelButton” “2″
EndSection

Software-Deployment per PXE/Netboot

Posted in SysAdmin, help me booting it up by Sebastian on the March 19th, 2008

Software-Deployment von Hand ist grausam - da sind wir uns wohl alle einig. Früher™ war es durchaus etwas grausamer - ich erinnere mich grade an das Disketten-Gebirge von Novell Netware oder OS/2 zurück - doch auch heute schubsen wir immernoch Betriebssystem auf Rechner, also eigentlich genau wie früher.

Ein schöner Vorteil der “freien” Betriebssysteme ist an dieser Stelle, daß man sie nahezu alle auch aus dem Netzwerk booten kann - Stichwort PXE - und somit zumindest das Erstellen von Installationsmedien entfällt.

Mit einem PXE-fähigen Rechner ist man in der Lage, anstelle von lokalen Medien (Festplatte, Diskette, CD etc.) über ein Netzwerk (Ethernet) von einem entfernten Rechner zu booten. Dies kann dazu dienen, auf einem Rechner ohne Zufügen von Medien (CDs, DVDs etc.) ein Betriebssystem zu installieren oder auch ein Thinclient-System aufzubauen, in dem die Client-Rechner gar keine Laufwerke benötigen, und dem Nutzer dennoch ein komplett nutzbares Betriebssystem zur Verfügung gestellt wird.

[nach wikipedia]

Wie baut man denn jetzt ein solches PXE-Environment auf? Naja - eigenlich recht einfach. Man benötigt nur den Dienst DHCP, eine Portion TFTP und später etwas NFS - schon fertig. In der Realität ist’s natürlich ein kleines bisselchen mehr Aufwand…

Zuerst suchen wir uns eine Maschine im Netz, auf der das PXE-System laufen soll. In meinem Falle ist das eine Debian Maschine, konzeptionell funktioniert das aber auch wunderbar mit anderen Distributionen oder den BSD-Geschmacksrichtungen. Ich habe mir vor einiger Zeit mal angewöhnt solche Installationen getrennt vom restlichen Betriebssystem zu verwalten, daher wähle ich einen Pfad unterhalb von /opt - das steht natürlich jedem frei.

# mkdir /opt/pxeboot/tftp

Was wir auf jeden Fall brauchen, ist eine aktuelle Version von syslinux - runterladen und in diesem neuen Verzeichnis entpacken.

Den Debian-Installer laden wir als nächstes. Heute gibt es durchaus Sinn sowohl den i386- als auch den AMD64-Zweig anzubieten, daher laden wir beide nacheinander runter und entpacken die Files ebenfalls nach /opt/pxeboot/tftp.


# wget http://ftp.debian.org/debian/dists/etch/main/installer-i386/current/images/netboot/netboot.tar.gz
# tar xzf netboot.tar.gz
# rm netboot.tar.gz
# wget http://ftp.debian.org/debian/dists/etch/main/installer-amd64/current/images/netboot/netboot.tar.gz
# tar xzf netboot.tar.gz
# rm netboot.tar.gz

Beide Dateien heißen netboot.tar.gz, also nicht aus Versehen gegenseitig überschreiben. Ein paar Dateien sind in beiden Archiven enthalten - einfach ignorieren, die dürfen ruhig überschrieben werden. Ebenfalls brauchen wir zwei Symlinks nicht mehr - pxelinux.0 und pxelinux.cfg sollten auch gleich gelöscht werden - wir legen sie später neu an.

Aus dem syslinux-Paket stibitzen wir noch die Datei com32/modules/menu.c32 und kopieren sie nach /opt/pxeboot/tftp.

Dem DHCP-Server in unserem Netz muß noch erklärt werden, daß er den Clients auf PXE-Anfragen antwortet. Beim ISC DHCPd3 geht das sehr schmerzfrei, auch bei anderen DHCP-Servern sollte das kein Problem sein. (moemoe beschreibt das mit dnsmasq)


subnet 172.30.4.0 netmask 255.255.252.0 {
 range 172.30.6.1 172.30.6.254;
 range dynamic-bootp 172.30.5.240 172.30.5.255;
 option routers 172.30.7.254;
 filename “pxelinux.0″;
 next-server 172.30.4.1;
}

Die beiden hervorgehobenen Zeilen teilen dem Client mit welche Datei er von welchem Server per TFTP anfordern soll. Installieren wir noch einen TFTP-Server! Wer Debian einsetzt kann sich jetzt glücklich schätzen, denn was gibt es schon schöneres als apt-get?


# apt-get install atftpd

Bei mir wird der atftpd per inetd gestartet, also muß eine entsprechende Zeile in die /etc/inetd.conf

tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd --tftpd-timeout 300 --retry-timeout 5 --mcast-port 1758 --mcast-addr 239.239.239.0-255 --mcast-ttl 1 --maxthread 100 --verbose=5 /opt/pxeboot/tftp Einfach ganz unten anhängen - sofern da noch nix von tftp steht - und darauf achten, daß es wirklich alles eine Zeile ist.

Jetzt noch das Boot-Menü anpassen.

In /opt/pxeboot/tftp ein neues Verzeichnis namens pxelinux.cfg erstellen und darin eine Datei namens default in den Editor laden.


DEFAULT menu.c32
PROMPT 0
MENU TITLE Automagisches Netzwerk-Booten
TIMEOUT 300
LABEL d
 MENU DEFAULT
 MENU LABEL Boot from ^disk
 localboot 0x80
LABEL di-i386
 MENU LABEL Debian Installer ^i386 - submenu
 KERNEL menu.c32
 APPEND debian-installer/i386/pxelinux.cfg/default
LABEL di-amd64
 MENU LABEL Debian Installer ^amd64 - submenu
 KERNEL menu.c32
 APPEND debian-installer/amd64/pxelinux.cfg/default
LABEL n
 MENU LABEL Try ^next bootdevice
 localboot -1

Aus dem Debian-Installer i386 (/opt/pxeboot/tftp/debian-installer/i386) noch die Datei pxelinux.0 nach /opt/pxeboot/tftp kopieren und fertig sind wir - für den ersten Schritt. Den DHCP-Server und den inetd noch kurz mit der neuen Konfiguration vertraut machen (also known as durchstarten) und schon sollten die Maschinen per PXE den Debian Installer booten können.

Allerdings - zumindest mir - reicht das noch nicht. Für’s Debugging eignet sich noch ein Live-System, außerdem muß noch der Installer von FreeBSD mit in’s Boot-Menü.

Grade für Debugging hat sich bei mir grml bewährt.

grml is a bootable CD (Live-CD) originally based on Knoppix and nowadays based on Debian. grml includes a collection of GNU/Linux software especially for system administrator and users of texttools. grml provides automatic hardware detection. You can use grml (for example) as a rescue system, for analyzing systems/networks or as a working environment. It is not necessary to install anything to a harddisk; you don’t even need a harddisk to run it. Due to on-the-fly decompression grml includes about 2.1GB of software and documentation on the CD.

[grml]

Aus dem grml-ISO basteln wir eine NFS-Freigabe und laden zusätzlich noch die speziellen Files für den grml-Netboot.


# mkdir /opt/pxeboot/tftp/grml
# wget ftp://ftp.uni-erlangen.de/pub/mirrors/grml/grml_1.1.iso
# mount -o loop grml_1.0.iso /mnt/tmp/
# cp -r /mnt/tmp/* /opt/pxeboot/tftp/grml
# cp /mnt/tmp/boot/isolinux/minirt26.gz /opt/pxeboot/tftp/grml/boot/
# umount /mnt/tmp
# wget http://grml.org/terminalserver/grml_netboot_package_1.1.tar.bz2
# tar xvjpf grml_netboot_package_1.1.tar.bz2
# cp grml_netboot_package_grml_1.1/tftpboot/linux26 /opt/pxeboot/tftp/grml/boot/
# cp grml_netboot_package_grml_1.1/tftpboot/minirt26.gz /opt/pxeboot/tftp/grml/boot/
# cp grml_netboot_package_grml_1.1/tftpboot/memtest /opt/pxeboot/tftp/grml/boot/

Sowohl das ISO als auch den Inhalt von grml_netboot_package_1.1.tar.bz2 benötigen wir danach nicht mehr.

Die Datei /opt/pxeboot/tftp/pxelinux.cfg/default noch um den grml-Eintrag anpassen:

LABEL grml
 MENU LABEL ^GRML
 kernel grml/boot/linux26
 append ramdisk_size=24000 root=/dev/ram0 rw init=/etc/init nfsdir=Server-IP-oder-Name:/opt/pxeboot/tftp/grml/ nodhcp noprompt noeject apm=power-off nomce initrd=grml/boot/minirt26.gz vga=normal

Was jetzt noch fehlt, ist der NFS-Export von /opt/pxeboot/tftp/grml - aber auch das ist kein größeres Problem. Die Datei /etc/exports um die entsprechenden Einträge ergänzen und den NFS-Dienst ebenfalls neu starten.


/opt/pxeboot/tftp/grml/ * (ro,no_root_squash,no_subtree_check)
/opt/pxeboot/tftp/ * (ro,no_root_squash,no_subtree_check)

That’s it - jetzt ist auch grml über das Netzwerk startbar. Fehlt noch FreeBSD.

Leider ist der Aufwand bei FreeBSD etwas größer als bei Linux, denn für das Erstellen eines PXE-Images benötigt man ein funktionierendes FreeBSD-System und ein bootonly.iso.


# mdconfig -a -t vnode -f 7.0-RELEASE-i386-bootonly.iso -u1 ; mount -t cd9660 /dev/md1 /mnt/cdrom
# dd if=/dev/zero of=fbsd7R_i386.img bs=1k count=32k
# mdconfig -a -t vnode -f fbsd7R_i386.img -u0
# bsdlabel -w -B md0 auto; bsdlabel -A md0
# newfs -b 8192 -f 1024 /dev/md0a
# mount /dev/md0a /mnt/disk
# cp -R /mnt/cdrom/boot /mnt/disk/
# umount /mnt/disk
# umount /mnt/cdrom ; mdconfig -d -u0 ; mdconfig -d -u1
[nach /dev/rant]

Das entstandende Image fbsd7R_i386.img auf den PXE-Server kopieren, gzipen und in pxelinux.cfg/default mit eintragen.


LABEL fbsd7-i386
 MENU LABEL FreeBSD 7-RELEASE i386
 kernel memdisk
 append initrd=freebsd/fbsd7R_i386.img.gz harddisk noedd

Die Datei memdisk ebenfalls noch aus syslinux ins Verzeichnis /opt/pxeboot/tftp kopieren, denn die benötigt der FreeBSD Start-Vorgang. Auch FreeBSD hat einen AMD64-Zweig. Der wird entsprechend der Anleitung oben für i386 gebaut.

Das war’s - das Gröbste ist erledigt. Wem die Menüs noch nicht gefallen kann sich an syslinux noch ein bisselchen verkünsteln - Stichwort: vesamenu.c32.
Ich habe das ganze vor einer Weile für unser Büro-Netzwerk gebaut, und bin bisher sehr zufrieden. Wirklich geholfen haben mir die folgenden Postings, danke an die Autoren!

Ebenfalls ganz interessant ist ein Eintag von RoudyBob.NET, für alle, die versuchen Microsoft Virtual PC 2004 per PXE zu booten. Ohne ein spezielles Floppy-Image funktioniert das nämlich nicht.

Zeitmanagement - ein neuer Ansatz

Posted in Selbstverwaltung by Sebastian on the March 14th, 2008

Jochen Lillich hat sich die Mühe gemacht einen wunderbaren Text von Scott H. Young auf Deutsch zu übersetzen: 10 Tips for Staying Productive While Being Scheduled to Death.

Scott unterscheidet als erstes grundlegend zwischen Projekten und Ereignissen, eine recht gute Unterscheidung, denn Ereignisse kann man planen; Projekte hingegen sind meist nur an einem Zeitrahmen gebunden.

Die nachfolgenden 10 Tips möchte ich an dieser Stelle einfach 1:1 von Jochen zitieren:

  1. Morgenritual: Früh am Morgen ist oft noch am meisten Zeit. Das ist die Gelegenheit, Projektaufgaben anzupacken und den Rest des Tages zu planen.
  1. Aufgabenplanung: Die Lücken im Terminkalender von 15, 20 oder 45 Minuten verplant man am besten im voraus. An einem zerstückelten Tag ist es keine gute Idee, einfach zu tun, was einem in den Sinn kommt. Vorausplanen verhindert, diese Zeit zu vergeuden.
  1. Nein sagen: Leicht fällt man in die Falle, zu glauben, dass jedes Ereignis Vorrang hat. Projektarbeit kann oft einen weitreichenderen Einfluss haben als unwichtigen Besprechungen oder anderen Ereignissen beizuwohnen, nur weil andere das erwarten. Der beste Weg, einen fragmentierten Terminkalender zu überstehen, ist, erst gar keinen zuzulassen.
  1. Wichtige Arbeit betonen: Trag eine Aufgabenliste für wichtige Projekte mit dir herum, die Endtermine enthält. So erinnerst du dich ständig an die Jobs, die vielleicht ansonsten untergingen.
  1. Meide die Versuchung der Prokrastination: Wenn du nur 20 Minuten Platz zwischen Terminen hast, ist es verlockend, die Zeit einfach vorbei gleiten zu lassen. Geh offline, schalte das Telefon und andere Unterbrecher ab, wenn du nur ein paar Minuten Platz hast.
  1. Mach die Arbeit nicht zu: Wenn man Arbeit wegen eines Termins ruhen lassen muss, hilft es beim späteren Anknüpfen, wenn du die Fenster, Bücher oder Geräte nicht schließt. Sie erinnern dich bei der Rückkehr an die unterbrochene Arbeit und es kann gleich weiter gehen.
  1. Erkläre einen Projektkiller-Tag: Räum einen Tag in der Woche frei, um mit wichtigen Projekten weiterzukommen. Wenn ein ganzer Tag nicht drin ist, versuche es wenigstens mit einem Vormittag. Wenn du keine Zeit für Wichtiges reservierst, wer dann?
  1. Kein Multitasking: Aufgaben gleichzeitig zu erledigen ist verlockend, aber ineffizient. Nur wenige Leute beherrschen wirklich mehrere Tätigkeiten gleichzeitig. Anstatt zwei Aufgaben in der Zeit abzuhaken, die eine erfordert, schaffst du am Ende zwei — und zwar schlecht — in der Zeit, in der du vier hättest erledigen können.
  1. Sei mobil: Je nach Projekt mag es nicht möglich sein, es mitzunehmen. Aber fast jeder kann ein Buch oder einen Laptop mitnehmen und auch außerhalb des Büros kleine Aufgaben erledigen.
  1. Finde deine Sweet Spots: Der “sweet spot” ist das Gebiet auf einem Golf- oder Baseballschläger, auf dem sich die Kraft so verteilt, dass ein idealer Schlag entsteht. Wenn dein Tag zerstückelt ist, musst du die “Sweet Spots” in deinem Terminkalender ermitteln. Das könnten längere Abschnitte ununterbrochener Zeit sein oder Zeiten, an denen du mehr Energie aufbringen kannst. Wenn du diese Zeiten kennst, lass nicht zu, dass du sie mit Aufschieberei oder unwichtigen Aufgaben vergeudest.

In Jochen’s Blog hat Tom Schimana noch einen guten Tip hinterlassen: grade wenn man eine Arbeit kurz (oder auch lang) liegen lassen muß, um sich einer anderen Aufgabe zu widmen: speichern nicht vergessen!

Danke Jochen, danke Scott!