Inhaltsverzeichnis
Ubuntu Diskless Clients mit einem FreeBSD Server
Vorbereitung
Server
Um eine entsprechende Basis zu schaffen, hab ich am FreeBSD Server erstmal eine 2 GB Partition fuer den Ubuntu Server angelegt. Dafuer habe ich unter /etc/gvinum eine Konfiguration 'debian_root' angelegt, mit folgendem Inhalt:
drive a device /dev/da1 volume debian_root plex org concat sd length 2g drive a
wobei /dev/da1 die zweite Raid 5 Partition am Server ist. Anschliessend habe ich mit folgendem Befehl aus der gvinum Partition eine gconcat Partition erstellt, um spaeter bei bedarf die Partition vergroessern zu koennen:
# gconcat label -v debian_share /dev/gvinum/debian_root
Anschliessend habe ich ein neues Dateisystem auf der gconcat Partition erstellt:
# newfs /dev/concat/debian_share
Diese Partition wird dann unter /home/data/diskless/debian gemounted.
Damit dann der Ubuntu Server auf diese Partition zugreifen kann, habe ich folgenden Eintrag in /etc/exports eingefuegt:
/home/data/diskless/debian -maproot=0 10.2.2.100
Wobei 10.2.2.100 die IP des Ubuntu Servers ist, welcher auf einem FSC Scenic C installiert wird.
Client
Um spaeter auf dem FreeBSD NFS Share das Ubuntu Root kopieren zu koennen, muss erstmal eine Ubuntu Installation vorhanden sein. Um dies zu bewerkstelligen habe ich erstmal ein Ubuntu Server iso Image heruntergeladen. Anschliessend hab ich das Image auf CD gebrannt (was auch sonst ;) ).
Am Client hab ich darauf geachtet, dass die Onboard NIC auch aktiviert ist, und die HDD (Groesse 40 GB) vom System erkannt wird.
Installation des Ubuntu Servers
Nachdem ich das iso Image auf eine CD gebannt habe, hab ich den FSC Scenic C mit dieser gebootet, um die Installation zu starten. Ich habe eine einfache Standard Installation durchgefuehrt.
Nachdem diese abgeschlossen war, hab ich das Root-FS auf den NFS Share gemounted:
# mount -t nfs -o nolock 10.2.2.10:/home/data/diskless/debian /mnt # cp -ax /. /mnt/. # cp -ax /dev/. /mnt/dev/.
Nach dem kopieren hab ich die /etc/fstab angepasst:
- /etc/fstab
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
Ausserdem habe ich den Eintrag fuer eth0 aus der /etc/network/interfaces entfernt, da dies sonst beim Booten zu einem Error fuehrt.
Anschliessend habe ich mit chroot nach /mnt gewechselt, um dort die initrd neu zu erstellen. Dazu habe ich in der /etc/initramfs-tools/initramfs.conf den Wert fuer BOOT auf nfs geaendert und anschliessend neu gebaut:
# mkinitramfs -o /boot/initrd.img-2.6.17-10-server-nfs `uname -r`
Konfiguration des Servers
Als erstes hab ich die initrd.img-2.6.17-10-server-nfs und die vmlinuz-2.6.17-10-server nach /home/data/diskless/tftpboot kopiert, damit diese spaeter ueber tftp geladen werden koennen.
Nachdem der Server soweit fertig aufgesetzt ist, habe ich folgendes Packet installiert, um die PXE Bootfaehigkeit zu haben:
# aptitude install syslinux
DHCP
Damit der Client die entsprechenden Informationen bekommt, hab ich in der DHCP Konfiguration folgende Zeilen eingefuegt:
host diskless-tmp {
hardware ethernet xx:xx:xx:xx:xx:xx;
fixed-address diskless-tmp.blue-network.local;
next-server 10.2.2.10;
filename "pxelinux.0"
}
TFTP Server
Wie im Diskless Ubuntu Howto beschrieben, hab ich unter /home/data/diskless/tftpboot (ja, ich hab ein anderes Rootdir fuer den tftpd Server) ein Verzeichnis namens pxelinux.cfg erstellt. Innerhalb diese Verzeichnisses hab ich dann eine Konfigurationsdatei mit Namen default angelegt. Diese Datei hat folgenden Inhalt:
LABEL linux KERNEL vmlinuz-2.6.17-10-server APPEND root=/dev/nfs initrd=initrd.img-2.6.17-10-server-nfs nfsroot=10.2.2.10:/home/data/diskless/debian ip=dhcp rw
Danach hab ich die Datei /usr/lib/syslinux/pxelinux.0 nach /home/data/diskless/tftpboot kopiert.
Fazit
- Und der Sinn des Projekt wares, einen Ubuntu Diskless Client nicht nur von einem Ubuntu Server booten zu lassen, sondern dies auch von einem FreeBSD System zu ermoeglichen. Dieses Verfahren eroeffnet ganz neue Moeglichkeiten … ich weis noch nicht welche, aber wird sich zeigen ;)
