Ihr Browser versucht gerade eine Seite aus dem sogenannten Internet auszudrucken. Das Internet ist ein weltweites Netzwerk von Computern, das den Menschen ganz neue Möglichkeiten der Kommunikation bietet.

Da Politiker im Regelfall von neuen Dingen nichts verstehen, halten wir es für notwendig, sie davor zu schützen. Dies ist im beidseitigen Interesse, da unnötige Angstzustände bei Ihnen verhindert werden, ebenso wie es uns vor profilierungs- und machtsüchtigen Politikern schützt.

Sollten Sie der Meinung sein, dass Sie diese Internetseite dennoch sehen sollten, so können Sie jederzeit durch normalen Gebrauch eines Internetbrowsers darauf zugreifen. Dazu sind aber minimale Computerkenntnisse erforderlich. Sollten Sie diese nicht haben, vergessen Sie einfach dieses Internet und lassen uns in Ruhe.

Die Umgehung dieser Ausdrucksperre ist nach §95a UrhG verboten.

Ubuntu Linux PXE-Boot leicht gemacht

Folgendes wird vorausgesetzt:

Ich habe folgende Packet dazu verwendet:

Alle Packete installieren, entweder direkt hier oder via Terminal

apt-get install tftpd-hpa nfs-kernel-server syslinux debootstrap

DHCP-Server

In meinem Fall läuft der DHCP-Server nicht auf dem Server, sondern auf der Router-Firewall (m0n0wall), in welchem ich schlicht und einfach nur den TFTP-Server und die Bootdatei angegeben habe.

TFTP-Server

Um den TFTP-Server installieren, folgenden Befehl eingeben:

apt-get install tftpd-hpa

Es sind keine weiteren Konfigurationen notwendig, der Server stellt foglendes Verzeichnis dem Netzwerk zur Verfügung:

/var/lib/tftpboot/

syslinux

syslinux stellt uns ein tolles fertiggestelltes Boot-Image zur Verfügung.

apt-get install syslinux

Um das PXE-Boot-Image nutzen zu können, muss es ins entsprechende Verzeichnis kopiert werden

cp /usr/lib/syslinux/pxelinux.0 /var/lib/tftpboot/

PXE Verzeichnis

Es gibt zum einen die Datei mit dem Namen default. Diese Datei wird immer geladen, wenn keine client-spezifische Konfigurationsdatei gefunden werden kann. Somit kommen wir zu den client-spezifischen Dateien. Diese Dateien sind auf identische Art und Weise zu erstellen wie die default-Datei, haben jedoch einen anderen Dateinamen.

Diese Dateinamen, können entweder die MAC-Adresse der clientseitigen Netzwerkkarte mit vorangestellter 01 sein (01-XX-XX-XX-XX-XX-XX) oder die IP des Clients in hexadezimaler Form. Beispielweise entspricht die IP-Adresse 192.0.2.91 dem hexadezimalem Wert/Dateiname C000025B. wobei dieser Dateiname auch am Ende gekürzt werden kann, um eine Konfiguration auch für mehrere Clients zu haben. Dies wird Anhand des folgenden grauen Kastens aufgezeigt, denn in diesem Kasten wird die Reihenfolge der Konfigurationsdateiaufrufe angeführt. Wenn eine Konfigurationsdatei nicht vorhanden ist, dann wird die Nächste aufgerufen.

/var/lib/tftpboot/pxelinux.cfg/01-88-99-aa-bb-cc-dd
/var/lib/tftpboot/pxelinux.cfg/C000025B
/var/lib/tftpboot/pxelinux.cfg/C000025
/var/lib/tftpboot/pxelinux.cfg/C00002
/var/lib/tftpboot/pxelinux.cfg/C0000
/var/lib/tftpboot/pxelinux.cfg/C000
/var/lib/tftpboot/pxelinux.cfg/C00
/var/lib/tftpboot/pxelinux.cfg/C0
/var/lib/tftpboot/pxelinux.cfg/C
/var/lib/tftpboot/pxelinux.cfg/default

Mit folgendem Script "ip2hex" kann anhand der IP der Hex-Wert errechnet werden:

#!/bin/sh

IP_ADDR=$1
for I in $(echo ${IP_ADDR}| sed -e "s/\./ /g"); do 
   printf '%02X' $I
done
echo

Man muss nur noch das script mit den entsprechenden Rechten versehen:

chmod 0775 ip2hex

Beispiel für eine default Datei:

DEFAULT menu.c32
ALLOWOPTIONS 0
PROMPT 0
TIMEOUT 100

MENU TITLE Server PXE Boot Menu

LABEL      localhdd1
MENU DEFAULT
MENU LABEL Local ^HDD
LOCALBOOT  0

LABEL      memtest
MENU LABEL ^Memtest86+
KERNEL     memtest/mt86plus

NFS-Server

Um den NFS-Server installieren, folgenden Befehl eingeben:

apt-get install nfs-kernel-server

Die Datei /etc/exports bearbeiten resp. erweitern und folgendes eintragen:

/srv/pxeboot	10.0.0.0/8 (rw,no_subtree_check,no_root_squash)

Jetzt noch kurz die Exports aktuallisieren mit:

exportfs -rv

Debootstrap

Um eine Kopie von Ubuntu 10.04 LTS zu installieren, werden wir das Programm debootstrap verwenden.

apt-get install debootstrap

Der Syntax für eine 32Bit Variante sieht wie folgt aus:

debootstrap --arch i386 lucid /srv/pxeboot/ http://ch.archive.ubuntu.com/ubuntu

Für die 64Bit Variante würde der Syntax wie foglt aussehen:

debootstrap --arch amd64 lucid /srv/pxeboot/ http://ch.archive.ubuntu.com/ubuntu

lucid steht für den Codenamen der Version 10.04 LTS, weitere findet ihr hier

Um dann die Installation vollständig konfigurieren und auch noch Packete installieren zu können, müssen wir in das Verzeichnis chrooten, zuerst jedoch noch die wichtigesten Pfade einhängen:

mount -o bind /dev /srv/pxeboot/dev
mount -o bind /sys /srv/pxeboot/sys
mount -o bind /proc /srv/pxeboot/proc
chroot /srv/pxeboot /bin/bash 

WICHTIG: Ab hier werden alle Befehle für das zukünftige System ausgeführt!

Um den Hostnamen des zu installierenden Rechners konfigurieren, in meinem Beispiel heisst der Rechner "sonne", führt man folgenden Befehl aus:

echo sonne > /etc/hostname

Danach die Datei /etc/hosts anlegen und den Hostnamen sowie lokale Domäne anpassen:

127.0.0.1		localhost
127.0.1.1		sonne.example.com sonne

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Um das System auch von NFS starten zu können, muss folgende Datei bearbeitet werden: /etc/initramfs-tools/initramfs.conf

BOOT=local

ersetzen durch:

BOOT=nfs

Da das System bereits vom PXE eine IP vom DHCP-Server erhalten hat, muss folgende Datei angepasst werden: /etc/network/interfaces

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface, commented out for NFS root
#auto eth0
#iface eth0 inet dhcp
iface eth0 inet manual

Damit das System auch noch den "root" Pfad kenn, muss der NFS-Share in folgende Datei eingetragen werden: /etc/fstab

# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
/dev/nfs        /               nfs     defaults        1       1
none            /tmp            tmpfs   defaults        0       0
none            /var/run        tmpfs   defaults        0       0
none            /var/lock       tmpfs   defaults        0       0
none            /var/tmp        tmpfs   defaults        0       0

Ubuntu (devirate von Debian) brauchen Packetsources, diese werden hier angegeben:
/etc/apt/sources.list

# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.

## Primary distribution source
deb http://ch.archive.ubuntu.com/ubuntu/ lucid main universe
#deb-src http://ch.archive.ubuntu.com/ubuntu/ lucid main universe

## Major bug fix updates produced after the final release of the
## distribution.
deb http://ch.archive.ubuntu.com/ubuntu/ lucid-updates main universe
#deb-src http://ch.archive.ubuntu.com/ubuntu/ lucid-updates main universe

## Security updates
deb http://security.ubuntu.com/ubuntu lucid-security main universe
#deb-src http://security.ubuntu.com/ubuntu lucid-security main universe

Damit das System nicht jedes Abhängige Packet mitinstalliert, kann diese Datei
/etc/apt/apt.conf.d/00onlydepends mit nachfolgendem Inhalt erstellt werden:

APT::Install-Recommends "0";
APT::Install-Suggests "0";

Jetzt lernt unser System noch unsere lokale Sprache, da wird wie folgt bewerkstelligt:

echo de_CH.UTF-8 UTF-8 > /var/lib/locales/supported.d/local
apt-get update
apt-get install language-pack-de
dpkg-reconfigure console-setup

Unser System brauch auch noch einen Kernel, der wird folgendermassen für 32Bit Systeme installiert:

apt-get -y install linux-image-386

Und für 64Bit so:

apt-get -y install linux-image

Dabei kann man auch noch den Server Kernel angeben, je nach Einsatzzweck.

Sicherheitshalber setzen wir noch das Passwort für den Benutzer root:

passwd root

Anlegen des ersten Benutzers sowie hinzufügen zur sudo Gruppe und Kennwort setzen:

useradd -m -s /bin/bash "benutzername"
adduser "benutzername" sudo
passwd "benutzername"

Nun setzen wir die Zeitzone noch:

dpkg-reconfigure tzdata

Nun verlassen wir das zukünftige System:

exit

WICHTIG: Ab hier werden alle Befehle auf dem produktivem, aktuellem System ausgeführt!

Nun noch alle Mounts wieder aushängen:

umount /srv/pxeboot/dev
umount /srv/pxeboot/sys
umount /srv/pxeboot/proc

Nun muss man die beiden Boot-Images kopieren und eine PXE-Datei erstellen und/oder die default Datei erweitern:

mkdir /var/lib/tftpboot/sonne
cp /srv/pxeboot/boot/vmlinuz-2.6.32-31-386 /var/lib/tftpboot/sonne/vmlinuz
cp /srv/pxeboot/boot/initrd.img-2.6.32-31-386 /var/lib/tftpboot/sonne/initrd.img

und der Inhalt der PXE-Datei:

DEFAULT    sonne

LABEL      sonne
KERNEL     sonne/vmlinuz
APPEND     netboot=nfs nfsroot=10.1.1.1:/srv/pxeboot/sonne/ rw initrd=sonne/initrd.img

Und nun viel Erfolg beim Testen und fertig konfigurieren des zukünftigen Systems