Appunti per l'installazione di Debian Lenny DiskLess

Lo scopo e' di avere delle macchine diskless con la /home e la /usr montate via NFS, mentre il resto e' montato dall'InitRamFS al boot, quindi in RAM.

dhcp server

option root-path "/var/tftproot_64/";
# trick from Peter Rundle <peter.rundle@au.interpath.net>
if substring (option vendor-class-identifier, 0, 9) = "PXEClient"
 {
  filename      "pxelinux.0";
  next-server 192.168.2.8; # Server con il tftpd
  # NOTE: kernels are specified in boot/pxelinux.cfg/
 }
else
 {
  filename    "vmlinuz.nb";
 }

tftp server

(nb: se usi pxe allora il demone dev'essere tftpd.hpa - netbsd)

XDM server

Supponedo di installare solo un xdm server senza grafica locale.

  • Installa xdm
  • Installa xbase-clients

/etc/X11/xdm/Xaccess

[...]
# Attiva la risosta xdm in rete
*                   #any host can get a login window
[...]
# Solo se hai + di una interfaccia di rete e vuoi che XDM risponda solo su una delle interfacce.
LISTEN 192.168.xx.yy

/etc/X11/xdm/Xservers

[...]
# Commenta l'ultima riga cosi' che non parta l'X grafico locale sul server.
#:0 local /usr/bin/X vt7 -dpi 100 -nolisten tcp

/etc/X11/xdm/xdm-config

[...]
! Comment out this line if you want to manage X terminals with xdm
! DisplayManager.requestPort:   0
  • Installa un windows manager leggero (openbox, fluxbox, etc...)

Creazione dell'immagine del Sistema Operativo delle macchine diskless

nb: Per macchine di cacolo si intende una macchina con accesso utenti e /home, tipicamente un client MPI.

  1. debootstrap in una directory vedi il man di debootstrap che continene l'esempio completo per la creazione di una macchina. Ovvio che la macchina deve avere poco o niente, vedi sotto.

'''nb: Fai l'operaizione su un server non operativo, almeno nella parte del mount /proc, senno rischi di rimanere con alcuni demoni lanciati dentro la macchina chroot attivi e devi fare re-boot (nfs-common)'''

mkdir lenny-i386
debootstrap --arch=i386 lenny lenny-i386/ http://ftp.it.debian.org/debian/

etc/apt/sources.list

deb http://ftp.it.debian.org/debian lenny main

etc/apt/apt.conf.d/proxy-guess # solo se avete proxy http nella rete.

Acquire::http::Proxy "http://proxy-cache:3128/";

etc/network/interfaces # usa auto e non hot-plug

# Used by ifup(8) and ifdown(8). See the interfaces(5) manpage or
# /usr/share/doc/ifupdown/examples for more information.

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

etc/hosts (nfs1.mynet solo per le macchine di calcolo, opzionale per le altre)

127.0.0.1   localhost
192.168.2.7 rootfs.mynet    rootfs # ip della macchina che ha il root filesystem
192.168.2.7 nfs1.mynet  nfs1 # eventuale ip della macchine che ospita la /home

# 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

etc/hostname # Diventa uguale per tutte le macchine.

Debian

etc/fstab (nfs1 NON deve essere messo nei client grafici)

# UNCONFIGURED FSTAB FOR BASE SYSTEM
none /proc proc none 0 0
tmpfs /tmp tmpfs rw 0 0
tmpfs / tmpfs rw 0 0
rootfs:/var/lib/tftpboot/lenny-i386/usr /usr    nfs     ro      0       0

# Solo per macchine di calcolo che richiedono la presenza della /home
nfs1:/home                      /home           nfs     rw      0       0

./init (Impedisci che il kernel sganci il ramFS dopo il boot)

#!/bin/sh

echo "Loading, please wait..."
exec /sbin/init </dev/console >/dev/console
  • chmod +x ./init
  • passwd root
  • syslog su log remoto/console?

etc/syslog.conf

*.* @log
  • svuota la home (dovrebbe essere gia vuota)
  • da aptitude in chroot devi installare nfs-common, xorg, xbase-clients.

etc/X11/xorg.conf # la tastiera italiana

[...]
Section "InputDevice"
    Identifier  "Generic Keyboard"
    Driver      "kbd"
    Option      "XkbRules"  "xorg"
    Option      "XkbModel"  "pc104"
    Option      "XkbLayout" "it"
EndSection
[...]
  • Puoi mettere in italiano anche la tastiera della console, ma non e' necessario. # scrivi come...

etc/inittab # L'ultima riga SOLO per i client grafici, le macchine per calcolo non la devono avere.

[...]
# What to do when CTRL-ALT-DEL is pressed.
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -h now

[...]
x:2:respawn:/usr/bin/X -query xdm.mynet
  • Nella macchina chroot installa anche il kernel che vuoi usare, evitando pero' il boot manager.
  • Aggiungi la parte '''Aggiunta per client di calcolo''' SOLO per le macchine per il calcolo.

Crea il file initramfs

cd "lenny-i386/" && find . ! -path "./usr/*" ! -path "./var/lib/a*" ! -path "./var/lib/dpkg/*" ! -path "./var/cache/apt/*" ! -path "./boot/*"| cpio --quiet -o -H newc | gzip -9 >"/var/lib/tftpboot/initrd.cpio.lenny-i386.gz"

File di configurazione di pxe. # L'installazione di pxe non viene descritta.

prompt=0
label linux

 kernel vmlinuz-lenny-i386
 append initrd=initrd-lenny-i386.gz rw

Aggiunta delle macchine diskless di calcolo.

  • Installa rsh/ssh o quello che server per gli eventuali MPI etc. hosts.equiv (rsh senza password)

    # /etc/hosts.equiv: list  of  hosts  and  users  that are granted "trusted" r
    #                   command access to your system .
    server.mynet
    
  • Configura l'accesso degli utenti a seconda dei sistemi di autenticazione che hai nella rete (NIS, LDAP...)

  • se usi autofs per i filesystem di sistema (/usr) copia /usr/bin/expr nella /bin, senno autofs non parte senza /usr montata.
  • se usi autofs configura /etc/auto.master ed eventualmente i parametri ldap.
  • se usi autofs sistema la /home in modo che non sia montata sempre, ma passi per automount. (link simbolici?)

UPDATE delle macchine RAM.

  • attivare la macchina in chroot con il mount /proc come descritto in debootstrap
  • aptitude etc.
  • chiudere la macchina cercando di smontare la /proc ed eventuali demoni attivati.
  • rifare l'init ramfs.

?? rm dei file nella var/log var/run ??