Archivi tag: runlevel

Gentoo e MySQL all’avvio

Per installare un nuovo servizio su una macchina Gentoo è molto conveniente utilizzare il packet manager di cui è dotata, ovvero emerge.

gentoo-logo.jpg

Potrebbe succedere, però, che la versione del servizio richiesta sia più datata rispetto a quella presente nei repository ufficiali di emerge, ergo è necessario scaricare i sorgenti dell’applicativo e successivamente compilarli mediante gcc.

Nella fattispecie, il servizio oggetto del presente post è MySQL, che dovrà essere avviato automaticamente al boot del sistema operativo.

Generalmente MySQL mette a disposizione uno scrip di avvio per le distro più diffuse, da posizionare all’interno della directory /etc/init.d.

Purtroppo la versione di MySQL che ho scaricato non conteneva al suo interno uno scrip di startup per Gentoo e per quindi ho dovuto escogitare una specie di workaround.

Mi spiego meglio: affinchè il comando rc-update add mysqld boot possa funzionare, è necessario che lo scrip in questione (mysqld) contenga del codice specifico da dare in pasto al binario /sbin/runscrip. Infatti, è proprio grazie ad esso che il SO riconosce lo scrip e lo lancia durante lo specifico runlevel.

La cosa fuorviante è che, nonostante mysqld non contenesse all’interno la chiamata al binario /sbin/runscrip (essendo un semplice scrip bash) il comando rc-update non ha restituito alcun errore.

Infatti, un semplice rc-update mi ha mostrato il servizio correttamente assegnato al runlevel:

mysqld | boot

Per capirci qualcosa in più ho deciso di abilitare il logging del demone rc, editando il file /etc/rc.conf:

rc_logger="YES"

Dopo il riavvio della macchina ho quindi analizzato il file /var/log/rc.log, il quale non ha mostrato nessun tentativo di avvio per mysqld. Ed è stato proprio in questo momento che ho capito dove stava il problema: mysqld era uno scrip bash e non runscrip.

Per farla breve, il workaround di cui vi ho accennato precedentemente è il seguente:

1) all’interno della directory /etc/local.d ho creato lo scrip mysqld.start, il cui contenuto è:

#!/bin/sh
 /etc/init.d/mysqld start

2) ho convertito il suddetto scrip in eseguibile, mediante il comando:

server local.d # chmod +x mysqld.start

A questo punto, in virtù del fatto che Gentoo durante la fase di boot esegue tutti gli scrip presenti all’interno di /etc/local.d, ho finalmente ottenuto l’avvio automatico di MySQL.

E’ tutto.

Alla prossima.

NFS + fstab su centOS 5: problemi di mount automatico all’avvio

Dopo aver configurato NFS ho fatto in modo che le directory in sharing venissero montate automaticamente durante l’avvio dei client.

In questo modo, anche dopo un reboot, i client avrebbero potuto usufruire automaticamente delle risorse messe in condivisione dal server.

nfs, centos 5, fstab, mount, rc.d, runlevel, mount problem

Per ottenere tale funzionalità ho lavorato sui file /etc/fstab dei suddetti client, aggiungendo le entry:

192.168.12.1:/var/www/html/dir1    /var/www/html/dir1    nfs    hard,intr,rw,sync 0 0
192.168.12.1:/var/www/html/dir2    /var/www/html/dir2    nfs    hard,intr,rw,sync 0 0

dove 192.168.12.1 è l’indirizzo IP (locale) del server NFS.

Inutile dire che dopo N reboot, nonostante tali modifiche, le directory in sharing non venivano montate automaticamente.

Ho dunque deciso di vederci chiaro ed ho esaminato i vari scrip presenti nella directory /etc/rc3.d (dove il 3 indica il runlevel attivo sui client NFS). Un ls mi ha sbolognato tutta una serie di scrip, ma solo due hanno attirato la mia attenzione, ovvero K75netfs e S96netfs.

Il primo si occupa dell’inizializzazione dei volumi NFS, il secondo tira su le interfacce di rete.

Poichè gli scrip vengono eseguiti in ordine alfabetico, è chiaro che l’avvio di K75netfs prima di S96netfs causa il mancato mount delle risorse in sharing.

E’ dunque bastato eseguire il comando:

[root@client1 rc3.d] mv K75netfs S96netfs

e successivamente un reboot.

Infatti, a riavvio completato, un mount mi ha mostrato correttamente le risorse di rete condivise:

[root@bqweb1 ~]# mount

192.168.12.1:/var/www/html/dir1 on /var/www/html/dir1 type nfs (rw,sync,hard,intr,addr=192.168.12.1)
192.168.12.1:/var/www/html/dir2 on /var/www/html/dir2 type nfs (rw,sync,hard,intr,addr=192.168.12.1)

Enjoy.

PS: in aleternativa si potrebbe modificare opportunamente il file rc.local che regola l’esecuzione di comandi custom durante l’avvio del sistema operativo.

Ad esempio, si potrebbe inserire nel suddetto file la seguente direttiva:

mount -t nfs -o rw,sync,hard,intr 192.168.12.1:/var/www/html/dir1 192.168.12.1:/var/www/html/dir1