Diskless howto
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.
- 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 ??