Come già detto in precedenza, quando necessito di elevata potenza lato server, tengo sempre in considerazione la distribuzione Gentoo Linux.
Sebbene nel tempo l’installazione e l’uso della distribuzione si sia semplificato, rimane sempre un “alone di mistero” sul suo funzionamento: la differenza sostanziale che Gentoo ha rispetto alle altre distribuzioni, è che non mette a disposizione dei pacchetti precompilati, ma dei file chiamati “ebuild” che istruiscono il sistema su come compilare automaticamente il pacchetto desiderato.
Quindi, sebbene sebbene “l’emerge degli ebuild” (emerge è il comando per installare e rimuovere pacchetti in gentoo) sia una procedura totalmente automatizzata, non si tratta di un semplice “download and install” ma di un “download, compile and install”: questo è il maggior pregio ma anche il maggior difetto della distribuzione (quindi è la caratteristica) perchè ne risulta un sistema altamente ottimizzato performate e stabile, ma i tempi di installazione ed aggiornamento sono molto più lunghi rispetto ad altre distribuzioni.
Giusto dare un bencmarck indicativo su una query mysql, se la query impiega “1″ su un sistema windows con il pacchetto mysql, su Linux Debian impiega 1/2 e su Gentoo impiega 1/4!
Veniamo al dunque e procediamo all’installazione di un server gentoo.
Innanzi tutto serve un CD di installazione: lo potete scaricare da un qualsiasi mirror. Una volta scaricato il CD di installazione e avviato il sistema apparirà una shell in cui avrete già i privilegi di root. Iniziamo a preparare il server per l’installazione.
Configurazione della rete
Con buone probabilità il CD autoavviante avrà già rilevato la rete tramite DHCP. Se così non fosse lanciate il comando:
net-setup ethX # Sostituite X con l'id dell'interfaccia di rete
Apparirà una interfacccia di testo in cui potrete facilmente configurare la rete
Formattazione del disco
Ammettiamo di avere un disco identificato come sda. Utilizzare cfdisk per creare 3 partizioni (boot, swap e /) lanciando
cfdisk /dev/sda
Quindi formattiamo e montiamo il tutto:
mke2fs /dev/sda1 mke2fs -j /dev/sda3 mkswap /dev/sda2 swapon /dev/sda2 mount /dev/sda3 /mnt/gentoo mkdir /mnt/gentoo/boot mount /dev/sda1 /mnt/gentoo/boot
Download del sistema di base
Gentoo mette a disposizione un sistema di base chiamato stage3 già precompilato sul quale agire per creare il proprio sistema ottimizzato. Scarichiamo il file dal mirror di gentoo con:
cd /mnt/gentoo links http://www.gentoo.org/main/en/mirrors2.xml
E’ possibile scaricare lo stage 3 in due versioni: la standard adatta a qualsiasi sistema e la hardened adatta principalemte all’uso server in quanto aggiunge alcune sicurezze aggiuntive.
A questo punto scarichiamo il “portage” che è un insieme di file e directory contenenti tutti gli ebuild:
links http://www.gentoo.org/main/en/mirrors2.xml
Ora scompattiamo i due file:
tar xvpjf stage3-amd64-hardened-20110414.tar.bz2 tar xvpjf portage-latest.tar.bz2 -C usr/
Mount delle directory di sistema e chroot in gentoo
Ora facciamo gli ultimi affinamenti per rendere operativo il nostro stage3
cd /mnt/gentoo mount -o bind /dev/ dev/ mount -t proc none proc/ cp /etc/resolv.conf etc/ chroot . env-update source /etc/profile
Aggiorniamo il portage
Per aggiornare l’elenco dei pacchetti installabili è necessario lanciare:
emerge --sync
Scegliamo il profilo
I profili sono degli ambienti preconfigurati adatti a diversi scopi per sceglierne uno lanciamo:
profile-config list profile-config set X
Settaggio delle opzioni di compilazione
Il file /etc/make.conf contiene le opzioni di default del compilatore.
/etc/make.conf
# These settings were set by the catalyst build script that automatically
# built this stage.
# Please consult /usr/share/portage/config/make.conf.example for a more
# detailed example.
CFLAGS="-O2 -pipe"
CXXFLAGS="${CFLAGS}"
# WARNING: Changing your CHOST is not something that should be done lightly.
# Please consult http://www.gentoo.org/doc/en/change-chost.xml before changing.
CHOST="x86_64-pc-linux-gnu"
# These are the USE flags that were used in addition to what is provided by the
# profile used for building.
USE="mmx sse sse2"
Il CFLAG è la variabile con i flag di ottimizzazione del compilatore sulla quale agire per ottenere sistemi più o meno “spinti” o il cui spazio occupato su disco è minore.
Nel caso in cui abbiamo variato i flag, è importante ricompilare l’intero sistema con:
emerge -e world
Nel caso in cui non abbiamo variato le configurazioni di default, non è necessario ricompilare il tutto, ma è sufficiente aggiornare il sistema con
emerge -uDN world
Configurazione della timezone
cp /usr/share/zoneinfo/Europe/Rome /etc/localtime
Compilazione del kernel
emerge gentoo-sources cd /usr/src/linux make menuconfig
Qui è necessario attivare tutte le opzioni ed i driver necessari per far funzionare il proprio server.
Una volta ultimata la configurazione, lanciamo la compilazione vera e propria con:
make && make modules_install
e copiamo il kernel all’interno della directory /boot:
cp arch/x86_64/boot/bzImage /boot/kernel-2.6.34-gentoo-r1
Se vi trovate in difficoltà nella compilazione del kernel (che è senza dubbio il processo più complesso dell’installazione) potete affidarvi all’utility genkernel attraverso la quale avrete un kernel certamente funzionante anche se con “qualcosa di troppo”:
emerge genkernel zcat /proc/config.gz > /usr/share/genkernel/arch/x86_64/kernel-config genkernel all
Configurazione delle informazioni del disco
Il file /etc/fstab contiene tutte le informazioni necessari per il setup delle partizioni:
/etc/fstab /dev/sda1 /boot ext2 defaults,noatime 1 2 /dev/sda2 none swap sw 0 0 /dev/sda3 / ext3 noatime 0 1 /dev/cdrom /mnt/cdrom auto noauto,user 0 0 proc /proc proc defaults 0 0 shm /dev/shm tmpfs nodev,nosuid,noexec 0 0
Informazioni di rete
La rete deve essere configurata nel file /etc/conf.d/net
/etc/conf.d/net config_eth0=( "192.168.0.2 netmask 255.255.255.0 brd 192.168.0.255" ) routes_eth0=( "default via 192.168.0.1" )
Inoltre editare il file /etc/conf.d/hostname per assegnare il nome del server:
/etc/conf.d/hostname HOSTNAME="tux"
Come in tutti i linux è cosa buona e giusta modificare il file /etc/hosts con il nome del proprio server
/etc/hosts 127.0.0.1 localhost 192.168.0.1 tux
Infine configurare l’avvio automatico dell’interfaccia di rete con:
rc-update add net.eth0 default
Configurazione delle impostazioni di sistema
Innanzi tutto settiamo la password di root:
passwd
Quindi editate i file /etc/rc.conf, /etc/conf.d/keymaps e /etc/conf.d/clock
Installazione dei pacchetti necessari per il boot del sistema
Installiamo il syslog:
emerge syslog-ng rc-update add syslog-ng default
lo schedulatore
emerge vixie-cron rc-update add vixie-cron default
Ed il bootloader:
emerge grub
Configuriamo grub editando il file /boot/grub/grub.conf
/boot/grub/grub.conf default 0 timeout 30 splashimage=(hd0,0)/boot/grub/splash.xpm.gz title Gentoo Linux 2.6.34-r1 root (hd0,0) kernel /boot/kernel-2.6.34-gentoo-r1 root=/dev/sda3 title Gentoo Linux 2.6.34-r1 (rescue) root (hd0,0) kernel /boot/kernel-2.6.34-gentoo-r1 root=/dev/sda3 init=/bin/bb
Ed installiamolo sull’MBR del disco:
grep -v rootfs /proc/mounts > /etc/mtab grub-install --no-floppy /dev/sda
Ora è possibile riavviare il server nel nuovo sistema operativo!
[...] sostanza, come già detto in questo articolo, per installare Gentoo si esegue il download di un unico file in formato tar.bz che, una volta [...]
[...] di KVM Partiamo con una installazione base di Gentoo Linux e installiamo i pacchetti necessari per [...]