Il progetto

GaPiL nasce dalla mia convinzione profonda che la “filosofia” che ispira il software libero si applichi anche ad altri campi che non siano necessariamente quelli della scrittura di programmi per computer. In particolare ritengo che possa assumere una grande rilevanza in ambiti come quelli dell’educazione e della formazione.

Ma se trovare della buona documentazione libera, specie per quanto riguarda i programmi che girano sul sistema GNU/Linux, è ormai relativamente facile, la produzione di buoni testi didattici che insegnino a programmare in questo sistema è ancora molto limitata, soprattutto se li si cercano in lingua italiana.

GaPiL è un tentativo di scrivere un manuale di programmazione di sistema in ambiente di tipo Unix, con una particolare attenzione alle caratteristiche specifiche delle interfacce fornite dal kernel Linux. Per questo motivo si parla di Linux e non di GNU/Linux.

Nonostante questa specificità, essendo la gran parte delle funzioni di sistema standardizzate, la guida dovrebbe risultare utile anche facendo riferimenti ad altri sistemi di tipo Unix come i vari *BSD; in ogni caso si sono sottolineate esplicitamente le caratteristiche specifiche di Linux.

Benché buona parte della trattazione delle funzioni di libreria sia del tutto identica, facendo riferimento a standard generali come POSIX, si è comunque prestata particolare attenzione alle funzioni delle GNU libc, che sono la versione più usata delle librerie del C, senza dimenticare, ove note, di citare le differenze con possibili alternative come le libc5 o le uclibc.

L’obiettivo resta comunque quello di riuscire a produrre un testo, rilasciato sotto GNU FDL, che possa servire a chi si accosta per la prima volta alla programmazione avanzata e di sistema su un kernel Linux, con la speranza di poter un giorno raggiungere la qualità dei lavori del compianto R. W. Stevens.

Riorganizzazione dei capitoli

In vista della pubblicazione separata di due volumi è stata eseguita una revisione della prima parte del testo aggiornandone vari contenuti e spostando quelli più avanzati relativi ai processi in un capitolo a parte (capitolo 9) ancora incompleto. Il capitolo sulla gestione avanzata dei file è diventato il capitolo 10. Si è poi creato uno scheletro per quello relativo ai thread (capitolo 12). Pertanto la numerazione dei capitoli della seconda parte della guida, relativa alle reti, è avanzata di due unità.

Pubblicato PDF di cortesia della guida

In occasione della risistemazione del sito è stata pubblicata in data odierna una versione di cortesia del PDF della guida all’indirizzo http://gapil.gnulinux.it/fileshare/gapil.pdf. Questa versione è allo stato corrente della guida, pertanto con sezioni incomplete, e contenuti in corso di riorganizzazione. Non verrà aggiornata che sporadicamente, pertanto si ribadisce che per ottenere una versione corrente ed aggiornata occorre compilare la guida dai sorgenti come indicato nella sezione relativa (Versione Stampabile).

Il vecchio sito ospitato da Truelite è stato dismesso, la scarsa documentazione residua è stata riportata in altrettante pagine elencate nella sezione  Altro Materiale.

Tags:

Pubblicato Amministrare GNU/Linux

Gapil non è l’unico testo su cui ho lavorato in questi anni, con le attività di formazione e supporto fatte per conto di Truelite infatti ho dedicato molto tempo anche a creare della manualistica per la gestione sistemistica di sistemi GNU/Linux.

Il grosso del risultato di questo lavoro è nel testo “Amministrare GNU/Linux” che è giunto recentemente alla quinta edizione. Per quanto non direttamente collegato alla guida, mi pare comunque opportuno darne notizia, e rimandare per tutti i dettagli al sito di Truelite, alla pagina:

https://www.truelite.it/news/amministrare-gnu-linux-pubblicata-la-%20quinta-edizione/

Passaggio a git

Approfittando delle ferie estive si è provveduto ad effettuare il passaggio del sistema di gestione dei sorgenti della guida da Subversion a Git. Il vecchio repository Subversion rimane accessibile, ma non verrà più utilizzato ne aggiornato. I sorgenti della guida saranno da oggi disponibili su Git, e si potranno ottenere con il comando:

git clone https://gapil.gnulinux.it/git/gapil

La navigazione dei sorgenti viene fornita direttamente tramite gitweb alla voce di menu “Repository“.

Tags:

Revisione seconda parte

Procede molto lentamente la revisione della guida, che viste le dimensioni verrà divisa in due volumi, separando la seconda parte dedicata alla programmazione di rete. I primi capitoli della stessa (11, 12), di natura introduttiva, sono stati revisionati, con una breve aggiunta sul modello di programmazione “broadcast”, ed una revisione generale sulle funzioni trattate uniformando la notazione a quella usata nelle pagine di manuale per le costanti che indicano le famiglie di indirizzi ed introducendo le novità intervenute nei termini delle nuove famiglie di indirizzi e delle estensioni dell’argomento flag della funzione socket.

Revisione capitolo 9 (ex 10)

E’ stata completata la revisione del capitolo sulla gestione avanzata dei file, spostato a precedere quello sui sistemi di intercomunicazione fra processi già revisionato in precedenza. Con l’occasione si è passati all’uso nella maniera più estesa possibile del font libero inconsolata per tutti i caratteri non proporzionali del testo.

Relativamente alla revisione dei contenuti si è documentata correttamente la funzione lockf ed i problemi che rendono inaffidabile il mandatory locking. Sono state riviste e completate le parti su epoll e signalfd e documentata correttamente timerfd. E’ stato revisionata la sessione sull’AIO, aggiungendo materiale su aio_error e aoi_return. E’ stata revisionata la sezione sul memory mapping, documentando le più recenti opzioni di mmap, trattando madvise e posix_madvise. Si è revisionata la trattazione di splice e ampliata quella di fallocate.

Revisione nono/decimo capitolo.

E’ stata completata la revisione del precedente nono capitolo, dedicato ai meccanismi di intercomunicazione fra processi, che è diventato il decimo per lo spostamento a seguire di quello sulla gestione avanzata dei file (che è ancora da rivedere).

E’ stata aggiornata tutta la parte sulle pipe aggiungendo la funzione di sistema pipe2 e si è documentato l’uso del close-on-exec e della modalità non-bloccante sia per le pipe che per la funzione socketpair.

Si è migliorata l’introduzione al SysV-IPC, con degli esempi più precisi e la revisione dell’introduzione. E’ stata completamente revisionata la trattazione dell’IPC POSIX, aggiornando le varie funzioni dell’interfaccia alle versioni presenti nei kernel recenti, in particolare per quanto riguarda le code di messaggi ed i semafori.

Completa la revisione del capitolo 8

Grazie al ponte del 25 aprile ed al 1° maggio ho avuto un po’ di tempo per completare la revisione del capitolo 8 (nuovo numero dopo la revisione) dedicato a sessioni e terminali. Non ci sono aggiunte significative, ma solo un po’ di aggiornamenti e svecchiamenti, ed una serie di correzioni. Rispetto all’ultima edizione è comunque presente la documentazione del syslog e di klogctl (l’interfaccia per l’accesso al ring buffer di printk).

Nuovo settimo capitolo

La revisione del nuovo settimo capitolo dedicato ai segnali, (il precedente nono, prima degli accorpamenti) è stata completata.

E’ stata completamente rivista la classificazione dei segnali aggiornando i dati e correggendo alcune imprecisioni (alcune correzioni sono state inviate anche al manutentore delle man pages relative).

Si sono aggiornate le funzioni di gestione delle maschere dei segnali. Sono stati inseriti gli aggiornamenti relativi ai nuovi orologi Posix introdotti nei kernel più recenti. Si è aggiunta la trattazione di clock_nanosleep.

 

Nuovo sesto capitolo

La revisione del nuovo sesto capitolo (il precedente ottavo, prima degli accorpamenti) è stata completata. Dopo la rimozione della parte sulla gestione dei filesystem, spostata all’inizio del quarto capitolo, si è ristrutturato il resto dei contenuti. In particolare:

  • si è spostata la parte su sysctl e /proc nella prima sezione, dove era più in argomento. La trattazione della system call sysctl, ormai totalmente deprecata, è stata rimossa, e si è leggermente ampliata quella di /proc.
  • si è rivista la seconda sezione sul sistema in generale aggiungendo una sezione su spegnimento e riavvio, trattando reboot e kexec_load.
  • si è aggiornata la trattazione dei limiti sulle risorse inserendo le nuove risorse introdotte fino ai kernel correnti e la system call prlimit
  • si è rivista la trattazione dei tempi e le relative funzioni, accorpando i dati relativi a jiffies, HZ, clock tick, ecc.
This work by Simone Piccardi is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported.