Installazione del S.O. Gentoo Linux

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.

<strong>/etc/make.conf</strong>
# 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:

<strong>/etc/fstab</strong>
/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

<strong>/etc/conf.d/net</strong>
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

<strong>/etc/hosts</strong>
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

<strong>/boot/grub/grub.conf</strong>
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!