Opinioni sul web

Google
Tux

Il kernel di Linux

Alla pagina kernel Linux si trova una presentazione, suddivisa per argomenti, delle caratteristiche e delle funzioni del kernel di Linux.

Non sono stati tradotti i termini che sono divenuti ormai di uso comune nella nostra lingua, almeno nel gergo tecnico, e quelle espressioni che solo in inglese mantengono il loro significato.

Ogni segnalazione di errori ed espressioni improprie è gradita.

ELF - Executable and Linkable Format

La pagina standard ELF contiene una analisi del formato di file eseguibile ELF (Executable and Linkable Format) tradotta dallo standard del formato.

Rispetto al documento originale manca la Parte 3 che contiene i riferimenti alla libreria standard C, e non è fondamentale per comprendere l'argomento.

ANALISI di un FILE ELF

Questo breve testo riporta una analisi del formato di file ELF eseguita con i programmi readelf, hexdump e objdump, tratta da documenti presenti in rete rielaborati e integrati.

La spiegazione presuppone la conoscenza delle basi dello standard del formato riportate nella pagina standard ELF.

Per iniziare scriviamo e compiliamo un programma di prova.

#include <stdio.h>

int var_globale_1 = 3;
int var_globale_2;

int funzione_vuota(void) {
printf("buongiorno\n");
return 0;
}
int main(){
int var_locale = 6;
funzione_vuota();
printf("var_globale_1 = %d\n", var_globale_1);
printf("var_globale_2 = %d\n", var_globale_2);
printf("var_locale = %d\n", var_locale);
return 0;
}

$ gcc -o prova prova.c

Header ELF

Usando il programma readelf, contenuto nel pacchetto binutils, possiamo visualizzare l' header ELF

$ readelf -h prova

ELF Header:
Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Class:   ELF32
Data:   2's complement, little endian
Version:   1 (current)
OS/ABI:   UNIX - System V
ABI Version:   0
Type:   EXEC (Executable file)
Machine:   Intel 80386
Version:   0x1
Entry point address:   0x8048310
Start of program headers:   52 (bytes into file)
Start of section headers:   2856 (bytes into file)
Flags:   0x0
Size of this header:   52 (bytes)
Size of program headers:   32 (bytes)
Number of program headers:   8
è Size of section headers:   40 (bytes)
Number of section headers:   35
Section header string table index:   32

Una visione dell'header in esadecimale si ottiene con

$ hexdump -C prova | head -n 6 (head filtra le prime 6 righe dell'output di hexdump)

00000000 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 |.ELF............|
00000010 02 00 03 00 01 00 00 00 10 83 04 08 34 00 00 00 |............4...|
00000020 28 0b 00 00 00 00 00 00 34 00 20 00 08 00 28 00 |(.......4. ...(.|
00000030 23 00 20 00 06 00 00 00 34 00 00 00 34 80 04 08 |#. .....4...4...|
00000040 34 80 04 08 00 01 00 00 00 01 00 00 05 00 00 00 |4...............|
00000050 04 00 00 00 03 00 00 00 34 01 00 00 34 81 04 08 |........4...4...|

Ritroviamo gli stessi dati, ovviamente coi numeri in formato little-endian, per cui 0x8048310 diventa 10 83 04 08. continua la lettura

Per osservazioni: and.cassani@gmail.com

Condividere una connessione HSDPA con linux

Per chi non ha una connessione ADSL ed è costretto a ricorrere ai modem HSDPA, oltre ai costi e agli svantaggi dovuti alla connettività non sempre ottimale, si pone anche il problema di condividere la connessione in una rete domestica tra più host linux.

La mia dotazione hardware e software è:

Ho provato la condivisione della connessione con gli strumenti di amministrazione di Mandriva ma non c'è stato verso.
Allora ho fatto a mano prendendo spunto da un articolo apparso sul numero 98 di dicembre 2010 di LINUX PRO ("Un Traffic Shaper in Linux" di Marco Colombo). Ho connesso il router alla porta ethernet (eth0) del desktop. Il router ha indirizzo 192.168.1.1 e ha attivo di default il servizio dhcp con indirizzo di partenza 192.168.1.33 e pool di 32 indirizzi.
Il router non ha bisogno di particolari configurazioni:bisogna ovviamente cambiare la password di amministrazione predefinita, creare la rete personale e abilitare WPA (wi-fi protected access) con TKIP (temporal key integrity protection).

Alla scheda eth0 del desktop va assegnato un indirizzo statico (indicato con INTIP alla riga 9 dello script), precisamente 192.168.1.2, perché deve servire da gateway per la connessione internet e deve perciò avere indirizzo fisso.
La scheda wireless del desktop va disabilitata con l'istruzione inserita nello script /sbin/ifconfig wlan0 down in modo da impedire al desktop di connettersi alla rete wireless.
Nel mio caso, stranamente, il comando non funziona e la scheda si riattiva acquisendo un indirizzo dinamico dal router. Ho risolto il problema inserendo l'indirizzo MAC della scheda wireless del desktop in un filtro MAC del router impostando l'azione "deny association".

Lo script per impostare i parametri, attivare il forward dei pacchetti, creare le regole del firewall è tratto dall'articolo citato su LINUX PRO.

#/bin/sh
iptables -F
iptables -X
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
INTIF="eth0"
EXTIF="ppp0"
INTIP="192.168.1.2"
/sbin/ifconfig $INTIF $INTIP
/sbin/ifconfig wlan0 down
/sbin/depmod -a
/sbin/modprobe ip_tables
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_conntrack_irc
/sbin/modprobe iptable_nat
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_nat_irc
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
iptables -P INPUT ACCEPT
iptables -F INPUT
iptables -P OUTPUT ACCEPT
iptables -F OUTPUT
iptables -P FORWARD ACCEPT
iptables -F FORWARD
iptables -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A OUTPUT -p icmp -j ACCEPT
iptables -t nat -F
iptables -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE

Lo script va eseguito con i permessi di root dopo aver avviato la connessione HSDPA sul desktop; io lo avvio a mano, ma è possibile automatizzare l'avvio inserendolo nella directory /etc/sysconfig/network-scripts/ifup.d

Quando il portatile si connette alla rete wireless non è in grado di connettersi ad internet perché il suo gateway di default è il router (quindi 192.168.1.1) che non è direttamente connesso ad internet.
Bisogna perciò aggiungere una route di default con l'istruzione
#route add default gw 192.168.1.2 wlan0
questo indirizza i pacchetti all'host 192.168.1.2, cioè al desktop che è connesso direttamente ad internet. Anche questa istruzione può essere inserita in uno script di avvio per non doverla ripetere ad ogni accensione del portatile.

Tutto qui; a casa mia funziona con poca spesa e poco impegno. Se il segnale è buono si può navigare bene con due computer. Ovviamente se qualcuno ha trovato qualche soluzione più elegante può scrivere a and.cassani@gmail.com oppure a info@parolamia.eu


Opinioni

IL CAPO DEL GOVERNO

Il capo del Governo si macchiò ripetutamente durante la sua carriera di delitti che, al cospetto di un popolo onesto, gli avrebbero meritato la condanna, la vergogna e la privazione di ogni autorità di governo. Perchè il popolo tollerò e addirittura applaudì questi crimini? Una parte per insensibilità morale, una parte per astuzia, una parte per interesse e tornaconto personale. La maggioranza si rendeva naturalmente conto delle sue attività criminali, ma preferiva dare il suo voto al forte piuttosto che al giusto. Purtroppo il popolo italiano, se deve scegliere tra il dovere e il tornaconto, pur conoscendo quale sarebbe il suo dovere, sceglie sempre il tornaconto. Così un uomo mediocre, grossolano, di eloquenza volgare ma di facile effetto, è un perfetto esemplare dei suoi contemporanei. Presso un popolo onesto, sarebbe stato tutt'al più il leader di un partito di modesto seguito, un personaggio un po' ridicolo per le sue maniere, i suoi atteggiamenti, le sue manie di grandezza, offensivo per il buon senso della gente e causa del suo stile enfatico e impudico. In Italia è diventato il capo del governo. Ed è difficile trovare un più completo esempio italiano. Ammiratore della forza, venale, corruttibile e corrotto, cattolico senza credere in Dio, presuntuoso, vanitoso, fintamente bonario, buon padre di famiglia ma con numerose amanti, si serve di coloro che disprezza, si circonda di disonesti, di bugiardi, di inetti, di profittatori; mimo abile, e tale da fare effetto su un pubblico volgare, ma, come ogni mimo, senza un proprio carattere, si immagina sempre di essere il personaggio che vuole rappresentare. [Elsa Morante, "Il Capo del Governo", in "Pagine autobiografiche postume", Paragone Letteratura, n.456 del febbraio 1988.] Questo testo, citato nel blog noisefromamerika.org è talmente attuale da meritare la massima attenzione e considerazione. Nota bene: Elsa Morante sta parlando di Benito Mussolini.
2010-04-24 10:25:58