opzioni mount di default, hal, udev e xfce

Orsù ragazzi. Ieri ho passato tutta la prima e seconda serata a impostare quanto da titolo.

Mission

Arrivare a impostare le opzioni mount di default per i device usb. I vari filesystem possono essere formattati con alcune opzioni ma alcune possono essere solo impostate al momento del montaggio.

Visto che io uso ext4 e btrfs volevo montare il primo con noatime e il secondo con ssd (per ext4 ricordate? lo avevo formattato togliendogli il journaling). Ormai che c’ero anche modificare le opzioni dei filesystem windows…

Udev

La prima versione della risoluzione a questo problema è stata creare una regola in udev prendendo spunto dal caro wiki di arch. Purtroppo xfce, e in particolare thunar-volman, si basano ancora su hal e thunar-volman-git-udev che si trova in aur non compila.

Quindi mi sono ritrovato il montaggio (automatico, su xfce Impostazioni, Dispositivi e dischi removibili e flaggare le prime due scelte) che funzionava perfettamente ma lo smontaggio no. Infatti xfce si lamentava che probabilmente avevo montato il device da terminale e non smontava nulla. Hal, quindi, è ancora pesantemente in mezzo a rompere i coglioni!

HAL e xfce

A quanto pare su hal bisogna specificare quali sono le opzioni di mount usabili mentre si può dire a xfce quali usare.

Per impostare hal basta

cp /usr/share/hal/fdi/policy/10osvendor/20-storage-methods.fdi /etc/hal/fdi/policy/

e modificare 20-storage-methods.fdi inserendo la parte per btrfs, ext4 e (ormai che ci siamo) modificare quella di ext3. Date un’occhiata a quello che ho fatto io. Poi si modifica il file /etc/xdg/xfce4/mount.rc per imporre, finalmente, le opzioni di mount di default.

Server Density: controllate i vostri server

Ci sono molti tools per controllare lo stato dei nostri server: Nagios, Collectd, Octopussy per citarne alcuni. Ma per chi ha poche esigenze come me e/o non ha voglia di sbattersi nel configurare questi programmi ho trovato una soluzione KISS: Server Density.

Quest’ultimo è un servizio gratuito che si appoggia ad un server esterno. Diamo in outsourcing il controllo delle nostre macchine. Abbiamo due opzioni: tenerci il profilo free oppure quello a pagamento che (oltre la ram, cpu e alert relativi) controlla lo stato di MySQL e Apache con altre sfiziose feature. Ma possiamo provare quest’ultima scelta per 30 giorni, ovviamente, in demo.

Tutto il lavoro che dobbiamo fare, in qualsiasi cosa, si risolve in 5 minuti.

Installazione

Ieri mi sono messo a creare un pacchetto per sd-agent (che va installato su ogni server che intendiamo controllare), patchandolo e modificandolo, e stamattina l’ho messo su AUR. Se avete idee da proporre per la modifica sono ben accette.

Configurazione

Do per scontato che siate già registrati e che quindi vi sia arrivata la mail con l’username da voi scelto e la password. Ora ci logghiamo al sito e aggiungiamo un server (ma anche di più) da controllare e prendiamo nota del relativo agent che è la chiave che identifica univocamente il nostro server (infatti il nome del server lo scegliamo come vogliamo).

Sul server ora possiamo modificare

/etc/sd-agent/config.cfg

e cambiare sd_url con il vostro account di Server Density mentre come agent_key mettiamo la chiave che abbiamo trovato prima.

Avvio

Ora possiamo far partire il nostro agent sul server

# /etc/rc.d/sd-agent start

stando attenti che se:

  • sd_url gli facciamo usare il protocollo http dobbiamo ovviamente tenere la porta 80 con protocollo TCP aperta verso l’esterno;
  • sd_url gli facciamo usare il protocollo https dobbiamo ovviamente tenere la porta 443 con protocollo TCP aperta verso l’esterno.

L’ultima scelta è la migliore perché facciamo viaggiare tutto il traffico sotto SSL.

Conclusioni

Ora non vi resta che modificare gli alert (che vi avvisano via mail per esempio se qualcosa non funziona), godervi i grafici creati da Server Density (sul carico del vostro server) e guardare i grafici a riguardo.

Arch Linux: Phoronix con GUI

Avendo intenzione di fare dei benchmark dopo ogni cambiamento, sulla mia macchina con Arch Linux, ho deciso di installare Phoronix-test-suite. Usando anche la GUI.

Per ottenere questo bisogna installare php-gtk (il binding php per le librerie gtk) ma questo, al momento attuale, funziona solo con php<5.3.

Installazione del necessario

Ho trovato la soluzione su AUR. Da qui ho prelevato sia php 5.2 che php-gtk. Scompattati e installati con

$ makepkg -scir

Non uso yaourt e non ho intenzione di farlo! Fatto questo non resta che installare phoronix-test-suite

# pacman -S phoronix-test-suite

Configurazione

Qui ho trovato un dilemma. Facendo partire l’applicazione con le configurazioni php per php-gtk bisogna eseguire una roba del genere

$ php -c /etc/php/php-gtk.ini /usr/share/phoronix-test-suite/pts-core/phoronix-test-suite.php gui

Come se non bastasse i vari risultati dei test tentavano di essere salvati su tale directory (ovviamente impossibile: perché il tutto è di proprietà di root). Quindi ho adottato una soluzione drastica

# cd /etc/php
# mv php.ini php.ini_back
# mv php-gtk.ini php.ini

Finalmente così possiamo dare

$ phoronix-test-suite gui

senza colpo ferire.

Conclusioni

I nostri file di configurazioni, i test, risultati dei test verranno salvati in ~./phoronix. La GUI funziona un po’ male; apre molte finestre inutili durante i test che possono essere tranquillamente chiuse alla fine e alcuni test non riesco a installarli (ma provando dalla CLI il risultato è medesimo). Ora mi resta solo da capire come fare i confronti con test fatti su altre macchine…ma per questo c’è tempo!

Asus A8SC-4P107C, IrDA e Nokia 6070

Quanto scritto in questo post è preso quasi nella sua totalità da questo. Quindi non ringraziate me ma DnaX (fra l’altro ho scoperto essere un mio collega Ingegnere Informatico) anche perché quanto andrò a scrivere è solo la mia soluzione per il mio hardware e software (Arch Linux, Xfce 4.6, Linux 2.6.30.5) quindi non fatemi domande troppo difficili: non saprò rispondere!

Installazione del necessario
pacman -S irda-utils openobex obexftp
Ma questo è utile solamente se volete fare dei test come scritto nel post di Dnax.

Moduli del kernel
Aggiungere su /etc/rc.conf, nell’array MODULES, ircomm-tty

Usare Ircp-Tray
Ircp-Tray è un’applicazione che starà nel tray pronta a spedire al cellulare i nostri file. Quest’applicazione è sviluppata e portata avanti sempre da DnaX ed è presente in AUR grazie al nostro archer psykopear. Per usare Ircp-Tray è necessario legare la porta utilizzata per l’IrDA allo stack del kernel e attivare l’auto-discovering. Quindi in /etc/rc.local inserire irattach /dev/ttyS1 -s & (l’& finale è solo per far eseguire questo comando in background, non fatevi seghe mentali non c’entra direttamente con l’IrDA). Una volta riavviato il portatile potete inviare i file al cellulare. Ircp-Tray dirà

Sembra che non ci sia un dispositivo qui vicino. Continuare?

ma continuate (date Ok): funzionerà lo stesso!

Usare Wammu
Wammu permette di scaricare i messaggi, la rubrica e inviare messaggi tramite il cellulare con una bellissima interfaccia grafica (Wammu è l’interfaccia grafica per Gammu). Forse fa anche di più ma devo ancora provare tutte le varie opzioni. L’unica pecca è che, purtroppo, non sono ancora riuscito a impostare Wammu per inviare file al cellulare quindi, finché non mi metto d’impegno e ci capisco qualcosa dell’IrDA su Linux, continuo ad usare Ircp-Tray per questa funzione. Per installare Wammu basta dare

pacman -S wammu

Fatto questo dobbiamo aggiungere il nostro utente al gruppo uucp, questo per me si traduce in

gpasswd -a ugaciaka uucp

Per le impostazioni vi lascio uno screenshotwammu

Conclusioni
Eccoci arrivati alla fine, spero vi sia d’aiuto questo post. Se scopro qualcos’altro modificherò l’articolo o se avete qualche suggerimento non esitate a scrivere un commento ;-)

Netgear DG834G: log, dns

In questi ultimi due giorni mi sono messo a configurare o sfruttare al meglio il mio router/switch/gateway/firewall/access point wireless (ho dimenticato qualcosa?). A dire la verità è da circa 4 anni o forse di più che lo ho e già dopo averlo comprato avevo configurato il WiFi (inteso come WPA, indirizzi statici ecc..) e poco successivamente il firewall ma non è di questo che voglio parlare (magari farò un altro articolo a riguardo).

Quello che in realtà ho voluto fare è: vedere i log del router sul mio pc e usare come server DNS il router stesso.

Syslog DG834G e syslog-ng.conf

Prima cosa, ovviamente, girare i log del router su un pc della nostra LAN o WLAN. Basta andare su Registri e fare come la figura di seguito (ovviamente i log che si sceglie di tenere traccia sono a vostra discrezione)

Girare sull'host 192.168.0.3 i log del router

Girare sull'host 192.168.0.3 i log del router

Fatto questo bisogna configurare syslog-ng.conf. Secondo gli standard i log vengono trasmessi secondo il protocollo UDP sulla porta 154 inoltre se abbiamo impostato iptables sull’host 192.168.0.3 bisogna aprire tale porta per tale protocollo (ma questo arrangiatevi perché io uso solo il firewall del router). Sapendo questo il resto è facilissimo in quanto basta aggiungere le seguenti righe in syslog-ng.conf

  • udp(ip(“0.0.0.0″) port(514)); in source src. Non servono molte spiegazioni a parte il fatto che come ip non possiamo usare 192.168.0.3, la spiegazione dovrebbe venirci dal man: If you do not want to bind to a specific interface use 0.0.0.0. Ma sinceramente non ho capito bene che cosa voglia dire;
  • destination d_netgear { file(“/var/log/netgear.log”); }; ovviamente dove vogliamo che vengano salvati i log
  • filter f_netgear { host(“192.168.0.1″); }; filtro solo in base all’host, nel mio caso è ovviamente il router che ha indirizzo, nella rete LAN, 192.168.0.1
  • log { source(src); filter(f_netgear); destination(d_netgear); }; infine loggo tutto secondo quanto impostato sopra.

Semplice no? Se qualcuno ha qualcosa da aggiungere può farlo in questo topic. La prova che funziona è questa:

tail /var/log/netgear.log
Jun 28 10:25:51 192.168.0.1 Administrator: login successful – IP:192.168.0.3
Jun 28 10:30:56 192.168.0.1 LCP: down.
Jun 28 10:31:05 192.168.0.1 Initialize: LCP.
Jun 28 10:31:05 192.168.0.1 LCP: is allowed to come up.
Jun 28 10:31:12 192.168.0.1 PAP: authentication success
Jun 28 10:31:22 192.168.0.1 Loss: of synchronization :6
Jun 28 10:32:49 192.168.0.1 Administrator: login successful – IP:192.168.0.3
Jun 28 10:41:36 192.168.0.1 TCP: Packet – Source:62.211.73.232 Destination:87.0.11.42 – [PORT SCAN]
Jun 28 10:41:39 192.168.0.1 TCP: Packet – Source:83.234.78.229,1417 Destination:87.0.11.42,445 – [DOS]
Jun 28 10:41:45 192.168.0.1 TCP: Packet – Source:62.211.73.232 Destination:87.0.11.42 – [PORT SCAN]

PS per chi se lo chiedesse i port scan e i gli attacchi DOS sono provocati dai canali IRC: succede quando vi riconnettete molto velocemente (telecom di m***a) e i server IRC cercano di rompervi le balle credendovi una minaccia.

Usare il router DG834G come server DNS

Possiamo chiedere al router di risolvere i nomi di dominio invece di farlo in locale impostando i DNS su resolv.conf. Ovviamente consiglio di impostare sul router dei server DNS decenti invece che farli caricare ad ogni avvio dall’ISP: basta andare sulle Configurazioni di Base. Vedi immagine sotto

Impostare dei DNS, io uso i FoolDNS

Impostare dei DNS, io uso i FoolDNS

Qui ho impostato i FoolDNS che consiglio caldamente. Fatto questo basta editare resolv.conf e mettere (prima di tutti gli altri oppure da solo)

nameserver 192.168.0.1

che è l’indirizzo del router. Ovviamente se usate il DHCP per farvi dare un indirizzo dal router a ogni boot o ogni volta che chiedete un indirizzo IP i server in resolv.conf verranno sovrascritti con quelli impostati sul router: qui ci sono delle soluzioni interessanti. Eccovi comunque la prova che tutto funziona a meraviglia:

dig http://www.google.it

; <> DiG 9.6.0-P1 <> http://www.google.it
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58046
;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 7, ADDITIONAL: 7

;; QUESTION SECTION:
;www.google.it. IN A

;; ANSWER SECTION:
http://www.google.it. 181999 IN CNAME http://www.google.com.
http://www.google.com. 352652 IN CNAME http://www.l.google.com.
http://www.l.google.com. 70 IN A 72.14.221.103
http://www.l.google.com. 70 IN A 72.14.221.104
http://www.l.google.com. 70 IN A 72.14.221.147
http://www.l.google.com. 70 IN A 72.14.221.99

;; AUTHORITY SECTION:
l.google.com. 6280 IN NS c.l.google.com.
l.google.com. 6280 IN NS d.l.google.com.
l.google.com. 6280 IN NS e.l.google.com.
l.google.com. 6280 IN NS f.l.google.com.
l.google.com. 6280 IN NS g.l.google.com.
l.google.com. 6280 IN NS a.l.google.com.
l.google.com. 6280 IN NS b.l.google.com.

;; ADDITIONAL SECTION:
a.l.google.com. 6336 IN A 74.125.53.9
b.l.google.com. 6336 IN A 74.125.45.9
c.l.google.com. 6336 IN A 64.233.161.9
d.l.google.com. 6344 IN A 74.125.77.9
e.l.google.com. 6344 IN A 209.85.137.9
f.l.google.com. 6336 IN A 72.14.203.9
g.l.google.com. 6344 IN A 74.125.95.9

;; Query time: 55 msec
;; SERVER: 192.168.0.1#53(192.168.0.1)
;; WHEN: Sun Jun 28 11:07:35 2009
;; MSG SIZE rcvd: 367

Notare il server che viene usato.

A8SC-4P107C: risparmio energetico. Parte V

Quanto scritto in questo post è il seguito di quanto nei seguenti:

Ora sto usando il kernel Linux 2.6.29. Quindi per versioni inferiori, per esempio, alcuni percorsi in /sys potrebbero essere diversi.

Risparmio energetico Hard Disk tramite File System ext4 (ext3)

Possiamo far risparmiare il nostro Hard Disk tramite alcune opzioni di ext4 (ext3):

  • esistono 3 modi per fare il journaling: data=writeback, data=ordered, data=journal. Quello meno sicuro è il primo ma ottiene meno accessi al disco. Il più sicuro è l’ultimo ma si hanno più accessi al disco. Il secondo invece è l’impostazione di default. Più informazioni si possono trovare qua. Se vogliamo riassumere: se avete una partizione sulla quale potete rischiare che un file appena modificato diventi corrotto, nel caso di un inaspettato riavvio, potete mettere pure data=writeback. Altrimenti è meglio lasciare tutto con i valori di default;
  • si può anche disattivare il journaling con l’opzione noload. Sembra essere stato provato che ext4 senza journaling sia più performante di ext2 (che è il File System che non ha il journaling). Quindi se avete una partizione sulla quale non vi interessa preservare il File System, cioé a seguito di una corruzione dovete riformattare tutto con perdita dei dati, potrebbe essere una buona idea mettere ext4 con opzione noload. Potrebbe andare bene, per esempio, per chi ha una partizione separata per /var/cache/pacman;
  • per avere meno accessi al disco si può usare l’opzione relatime (l’evoluzione di noatime che non fa arrabbiare Mutt). Si fa in modo che venga aggiornato lo atime (il tempo di ultimo accesso) solo se quello precedente è diverso da mtime (il tempo di modifica) o da ctime (il tempo di accesso). Maggiori informazioni si possono trovare qui. Questa opzione non dovrebbe aver nessuna controindicazione (gli amici di Ubuntu la usano di default dalla versione 8.04);
  • commit: fa il sync (cioé scrive veramente sul disco) tutti i dati e metadati ogni tot secondi. Di default è 5 ma se c’è qualche furbo che mette 0 sappia che commit prende lo stesso 5. Dico subito che questo non inficia il journaling ma potrebbe provocare sgradevoli sorprese. Faccio un esempio con il valore di default, cioé commit=5. Siete in treno e avete il portatile alimentato a batteria, per una ragione a noi sconosciuta Linux va in crash: al massimo perdete tutto quello che avete scritto, della vostra tesi di laurea, negli ultimi 5 secondi. Quindi se volete mettere una valore maggiore di commit, per aver meno accessi al disco, siete avvertiti. Sempre facendo riferimento all’esempio di prima: 10 secondi farebbero bestemmiare chiunque scriva abbastanza veloce alla tastiera.
  • barrier è un’opzione presente solo in ext4 e diminuisce le performance dato che forza, in un certo qual modo, il journaling. Si può disattivare, rischiando in certe occasioni una corruzione dei dati come spiegato in quell’articolo, con l’opzione nobarrier.

Risparmio energetico Hard Disk tramite tmpfs

Ancora con tmpfs? Hai rotto il “ci a 2 zeta o”.

Più o meno, voglio sfruttare tutto questo giga di ram che mi ritrovo. Visto e considerato che il nostro laptop non fa da server e dei log di sistema ci interessa fin la perché non montare /var/log su tmpfs? Appunto, quindi su fstab ho aggiunto questa riga.

none /var/log tmpfs mode=1755 0 0

Direi che è un buon compromesso fra disattivare del tutto i log e averli sempre scritti sul disco. Lo stesso si può fare anche con /var/run e /var/lock

none /var/run tmpfs mode=1755 0 0
none /var/lock tmpfs mode=1777 0 0

Se qualcuno se lo chiede mode imposta i permessi nella stessa logica numerica di chmod, ho visto i permessi delle directory e ho impostato tmpfs di conseguenza.
Risparmio energetico Hard Disk tramite swappiness

La swap è una partizione importante, dovrebbe esserci sempre nonostante i giga e giga di ram che abbiamo.  Però possiamo aiutare il kernel nel dirgli: ok c’è, ma usane proprio quando strettamente necessario. Questa cosa si cerca già di fare ma in un portatile è ancora più importante. Ho così letto questa spiegazione per esseri umani. Ho modificato /etc/sysctl.conf aggiungendoci la riga vm.swappiness = 30. In questo caso ho preferito non masturbare il kernel dicendogli nell’avere un valore di swappiness differente a seconda dell’alimentazione.

Risparmio energetico USB

Ho trovato interessante questa lettura. Spiega anche il famoso usbcore.autosuspend=1
che ci consiglia powertop
e che a me non interessa perché il delay mi va bene anche al valore di default cioé 2.

Di solito chi usa il portatile non ha device USB inseriti (anche se alcuni interni, come il bluetooth, sono sempre USB). Quindi perché dare tutta la corrente a tutte le porte? Appunto! Occhio prima di procedere con quanto indicato, non fatelo se non sapete quali dispositivi USB state disattivando sopratutto sul computer fisso: tastiera, mouse? Sennò non potete più accedere al sistema!

Per sospendere l’alimentazione a tutti (che è come fare l’autosuspend con delay 0)

echo suspend > /sys/class/usb_device/*/device/power/level

mentre per ritornare alla situazione di default

echo auto > /sys/class/usb_device/*/device/power/level

Comunque ho notato che se attacco un device o se riattivo il bluetooth il corrispondente livello ritorna, da solo, alla situazione di default. Almeno da quanto ho letto dalla documentazione per un device USB potrebbe essere normale (peccato che sul fisso, sospendendo tutto, né mouse ne tastiera volevano tornare alla situazione di prima).

Undervolting CPU

Dato che sto ancora provando, più o meno, vi consiglio di darvi una letta a questo topic presente nel forum di Arch Linux. Ho cercato di spiegare e scovare tutte le informazioni per configurare l’undervolting di una CPU Intel Dual Core (che io sappia non esiste una documentazione e bisogna poprio andare di google e forum ufficiale del progetto). Quindi aspettatevi, magari fra qualche mese o mai, una Parte VI per la gestione energetica dove illustrerò i valori minimi di Volt da dare in pasto al mio T7250.

E anythings.zsh?

Vero? Non vi ho ancora dato l’ultima versione del mio script omnicomprensivo che intercetta qualsiasi evento acpi per il semplice fatto che potete trovarlo qua (insieme ad rc.local…).

conky & hddtemp

Eccomi ora con un piccolo how-to riguardante hddtemp e il suo uso per conky. Sì lo so, dovrei studiare per l’ultimo esame che mi allontana dalla laurea, ma il cane dei vicini mi sta rendendo idrofubo con il suo continuo abbaiare (è dalle 8 del mattino che rompe le palle!).

La soluzione, che ho appena adottato, ha i seguenti pregi:

  • non crea file di log inutili in /var/log/auth riguardo l’uso di hddtemp
  • usa la variabile hddtemp di conky (senza usare execi)
  • non serve modificare sudoers (come facevo io)

ma i seguenti difetti

  • bisogna avviare un demone

Direi che i pregi sono maggiori dei difetti quindi procediamo.

Configurare hddtemp [solo per chi ha più HD da controllare]

Dopo aver installato hddtemp e inseritone il nome nell’array di demoni in /etc/rc.conf editiamo il suo file di configurazione

/etc/conf.d/hddtemp

e modifichiamo il parametro

DRIVES=”/dev/sda”

con

DRIVES=”/dev/sd[ab]”

Naturalmente io ho modificato il tutto avendo due dischi, chi ne avesse per esempio tre

DRIVES=”/dev/sd[abc]”

e così via (ma voglio conoscere il tipo che, per uso desktop, ha più di due HD!)

Hddtemp su conky

Perfetto, ora la variabile hddtemp funziona egregiamente su conky per il/i nostro/i hd, provate con

${hddtemp /dev/sda}

Ulteriori informazioni

Il tutto è nato grazie a queste discussioni sul forum italiano di archlinux

http://www.archlinux.it/forum/viewtopic.php?id=2575

http://www.archlinux.it/forum/viewtopic.php?id=2304