Alberto Cammozzo, 21.01.2004

Installazione e configurazione di un nuovo server in ASID

Predisposto con filesystem XFS e virtual servers.

Preparazione array RAID

Il raid Array Hardware va preparato facendo il boot con il CD del produttore.

Predisposizione di un nuovo kernel ad-hoc

Dopo aver effettuato un boot con knoppix annoto l'output di lspci, cat /proc/meminfo, cat /proc/cpuinfo, lsmod, ifconfig -a: sono le caratteristiche in base alle quali determinare i requisiti minimi per un kernel rescue. Deve contenere anche le patch per XFS, se il server operativo avra' root xfs. L'importante e' che siano visibili i dischi e la rete.

Installazione sistema e boot col nuovo kernel

Boot da floppy col kernel nuovo a sostituire quello di default di un floppy debian rescue (e.g. 2.4bf) e un floppy root standard. Da qui in poi l'installazione e' standard, da rete. Non installare alcun pacchetto aggiuntivo, non eseguire tasksel e dselect.
Predispongo tre partizioni: la prima di swap (doppio della ram) la seconda linux (30Gb), la terza linux (20Gb). La terza sara' quella montata, nella quale installero' il sistema debian, che poi verra' trasferito nella seconda, dopo che la avro' formattata in XFS, come spiegato dopo. La terza verra' cancellata alla fine dell'installazione. Anche dopo aver detto 'make system bootable' la macchina potrebbe non riuscire a fare boot da disco dopo il reboot, motivo per cui conviene partire con il floppy rescue preparato prima, o ancora meglio utilizzare un floppy di boot di grub e caricando il kernel e il filesystem preparati sul disco fisso (kernel (hd0,1)/boot/vmlinuz-2.4 root=/dev/sda2, boot).

Installazione di bootloader GRUB

Installo grub e faccio sparire lilo:
apt-get install grub
dpkg --purge lilo
grub-install /dev/sda

vi /boot/grub/menu.lst 
menu.lst conterra':
default=0 
timeout=5
title main kernel
        root (hd0,1)
        kernel (hd0,1)/vmlinuz root=/dev/sda2 vga=ask
title backup kernel
        root (hd0,1)
        kernel (hd0,1)/vmlinuz.old root=/dev/sda2 
boot
Con questo dovremmo aver sistemato il boot, che avverra' da disco. Reboot. Assicurarsi che vi sia il link da /vmlinuz al kernel giusto. Se manca, linkarlo.

Trasferimento del sistema sulla partizione XFS

apt-get install xfsprogs
mkfs.xfs /dev/sda2
mount /dev/sda2 /mnt
tar plcvf - / | (cd /mnt ; tar pxvf - )
vi /mnt/etc/fstab
Correggere fstab: la riga del root filesystem deve essere:
/dev/sda2       /               xfs     defaults                0       1
Qui conviene fare un reboot, per verificare che tutto sia a posto nel nuovo filesystem. In alternativa, fare chroot /mnt.
Se il reboot va bene, cancellare la terza partizione e creare eventiali altri filesystem (e.g. /vservers).

Personalizzazione, messa in sicurezza

Installo subito bastille, un decente script che chiude quasi tutto quello che c'e da chiudere. Fa parecchie domande e bisogna capire che cosa chiede...
apt-get install perlmenu
apt-get install bastille
/usr/sbin/InteractiveBastille
dpkg --purge nfs-common  nfs-kernel-server portmapper 
dpkg --purge lpr pidentd 
apt-get install ssmtp
dpkg --purge lilo
apt-get install ssh
vi /etc/hosts.allow
In aggiunta conviene commentare tutto /etc/inetd.conf
Con netstat -ln verificare che siano attivi solo i servizi che interessano (ssh).
Gia' che ci siamo: editiamo /etc/ssh/sshd.conf in modo che ascolti sull'indirizzo IP giusto (per non dare fastidio a vserver).
#ListenAddress 0.0.0.0
ListenAddress IP_DEL_SERVER
Se si vuole che le sessioni grafiche X11 vengano trasferite, bisogna aggiungere X11UseLocalhost no oltre alle solite opzioni, questo perche' l'interfaccia lo0 non e' agibile da vserver.
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost no 

Preparazione ambiente nuovo kernel

apt-get install wget
apt-get install bzip2 
apt-get install libncurses5-dev
apt-get install gcc gawk make patch less

Compilazione kernel definitivo

Scarico kernel e parch, applico patch, correggo se necessario a mano.
cd /usr/src
wget http://www.kernel.org/pub/linux/kernel/v2.4/linux-2.4.23.tar.gz
wget http://www.13thfloor.at/vserver/patchset/ps23v1.22-1/patch-set-2.4.23-vs1.22-1.diff.gz
wget ftp://oss.sgi.com/projects/xfs/patches/2.4.23/xfs-2.4.23-all-i386.bz2
tar zxvf linux-2.4.23.tar.gz 
cd linux-2.4.23
bzcat ../xfs-2.4.23-all-i386.bz2 | patch -p1 
zcat ../patch-set-2.4.23-vs1.22-1.diff.gz | patch -p1   | grep rej
Che mi da alcuni errori, o patch respinte:
1 out of 1 hunk FAILED -- saving rejects to file Makefile.rej
1 out of 1 hunk FAILED -- saving rejects to file fs/Makefile.rej
1 out of 5 hunks FAILED -- saving rejects to file kernel/sysctl.c.rej
In questo caso e' stata necessaria la correzione a mano di alcuni rejected chunks.
Questi chunk sono 'cosmetici':
vi Makefile
vi ./kernel/sysctl.c 
vi fs/Makefile
Questo e' piu' sostanziale, ma per fortuna in google si trova l'errore di compilazione del kernel con la correzione a mano di alcuni errori di coesistenza tra vserver e xfs.
vi include/linux/fs.h 
(cfr http://www.paul.sladen.org/vserver/archives/200311/0007.html)
#define S_IMMUTABLE     S_IMMUTABLE_FILE        /* mmzz- 20.01.04 http://www.paul.sladen.org/vserver/archives/200311/0007.html */
#define IS_IMMUTABLE IS_IMMUTABLE_FILE /* mmzz- 20.01.2004 - http://www.paul.sladen.org/vserver/archives/200311/0009.html */
Compilazione...
make menuconfig
make dep && make bzImage && make modules modules_install

cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.23-xfs-vs1.22
cp System.map /boot/System.map-2.4.23-xfs-vs1.22
cp .config /boot/config-2.4.23-xfs-vs1.22

rm /vmlinuz
ln -s /boot/vmlinuz-2.4.23-xfs-vs1.22 /vmlinuz
ln -s  /boot/vmlinuz-2.2.20-compact /vmlinuz.old
Per caricare il kernel nuovo serve un reboot...
Con modconf seleziono i moduli che mi interessa tenere. installo altri pacchetti utili
apt-get install ntp
i time server sono ntps.net4u.it ntp1.ien.it ntp2.ien.it

Installazione Vserver

Scarico, compilo e installo le utility vserver:
apt-get install automake g++
wget http://www.13thfloor.at/vserver/s_release/v1.23/util-vserver-0.27.tar.bz2
tar jxvf util-vserver-0.27.tar.bz2 
cd util-vserver-0.27
./configure --prefix=/
make
make install
Per creare i vserver mi serve debootstrap:
apt-get install debootstrap
mkdir /var/lock/subsys/

mkdir /vservers
chmod 000 /vservers
cd /vserver/
Creo il vserver 'campione':
debootstrap woody wikkit
File di configurazione del vserver:
vi /etc/vservers/wikkit.conf
Che contiene:
IPROOT=IP_DEL_VSERVER
IPROOTMASK=255.255.255.0
IPROOTBCAST=147.162.35.255
IPROOTDEV=eth0
ONBOOT=no 
S_HOSTNAME=wikkit.stat.unipd.it
S_DOMAINNAME=
S_NICE=
S_FLAGS="lock nproc"
ULIMIT="-H -u 1000"
S_CAPS="CAP_NET_RAW"
Ultimi tocchi per la configurazione del vserver client: ad es. default gw.
cp /etc/apt/sources.list /vservers/wikkit/etc/apt/
cp /etc/network/interfaces /vservers/wikkit/etc/network/
cp /etc/resolv.conf /vservers/wikkit/etc/resolv.conf 
vi /vservers/wikkit/etc/network/interfaces
Partenza del vserver... Entrare nell'ambiente vserver.
vserver wikkit start
vserver wikkit enter
Una volta nel vserver, installare e configurare i pacchetti necessari come se fosse un server normale.

Configurazione virtual server

Come per il server principale, pulizia dei servizi e dei daemon fino a una configurazione 'pulita' (/etc/inet.conf /etc/hosts.allow /etc/hosts.deny /etc/ssh/sshd.conf).
Installazione di samba-3 nella versione di www.samba.org:
cat >> /etc/apt/sources.list 
deb http://fi.samba.org/samba/ftp/Binary_Packages/Debian/samba3 stable main

apt-get update
apt-get install samba samba-common samba-doc