[Ubuntu] Qualche dritta per tutti, per ricompilasi un kernel Real-Time…

29 10 2009

Se installate un kernel RT compreso in qualche repository, probabilmente potreste avere qualche problemino sui notebook e sui pc, tipo il mancato spegnimento (esatto! Non si spegne più il pc!), difficoltà nell’ottenere la sospensione su disco, ecc. ecc.

Non sono certo un guru della ricompilazione come voi, ma è certo grazie ai consigli trovati in rete se mi sono permesso la ricompilazione dei kernel ed è grazie ad altre guide su web che ho potuto creare il mio Real Time Kernel.

Perchè ricompilare?

Perchè se ci prendi dimestichezza, fai fare alla tua linux-box ciò che ti serve e niente più. Solo l’essenziale.

Perchè un REAL-TIME???

Perchè ricompilare il Kernel, secondo me, è utile solo  se si vuole un Kernel a “bassa latenza” che ragioni, laddove necessario, in tempo reale oppure, può essere utile per snellire l’ormai cicciotto kernel Linux.  Altrimenti se ne può fare anche a meno… Io ed il mio gruppo abbiamo usato il mio Dell Inspiron 1520 con jaunty installato per registrare perfino il demo, con risultati sorprendenti (ed una scheda audio ridicola!!!).

Un Kernel real-time ben compilato permette di utilizzare potenzialità del vostro sistema Linux da fare invidia a Windows e Mac. Senza dubbio. Un kernel Real-time è senza dubbio qualcosa in più, da sfruttare.

Come fare???

Bene su “kernel.org”, in particolare in questa pagina, trovate le patch rt che, quando le applicheremo al sorgente scaricato, permettono la compilazione di un kernel rt.

Invece, a questa pagina, trovate i sorgenti dei vari kernel sviluppati.

Siccome vogliamo un kernel real-time, consiglio, in base all’ultima patch disponibile di cercarsi il relativo sorgente. Ovvero, che ne sò… Avete trovato qui la patch chiamata “patch-2.6.29.6-rt23.bz2″ (consideriamo solo i file con estensione *.bz2), allora qui sarebbe buona cosa trovare il kernel “linux-2.6.29.6.tar.gz”.

Ok, così abbiamo kernel e relativa patch per il real-time. Salvateli entrambe nella vostra cartella Home!!!

(Il mio sistema è un notebook DELL INSPIRON 1520 con scheda video NVIDIA, scheda audio HDA INTEL, ecc ecc.)

Assemblando ora le 9500 guide presenti su internet, procediamo così:

scarichiamo alcune dipendenze per la compilazione:

sudo apt-get install build-essential bin86 kernel-package libncurses5 libncurses5-dev

Scompattiamo l’archivio contenente il kernel che abbiamo scaricato:

sudo tar -xvjf linux-[VERSIONE_CHE_AVETE_SCARICATO].tar.gz

Otterrete una cartella contenente i sorgenti del kernel che si chiama linux-[VERSIONE_CHE_AVETE_SCARICATO].

Ora, rimaniamo nella Home e facciamo tutto da qui (non nella /usr/src/).

Copiamo ora la patch-rt dentro la cartella del kernel scompattato:
cp ./patch-[VERSIONE_patch RT CHE_AVETE_SCARICATO] ./linux-[VERSIONE_CHE_AVETE_SCARICATO]
spostiamoci nella cartella del kernel ed applichiamo la patch rt:
cd ./linux-[VERSIONE_CHE_AVETE_SCARICATO]
sudo bzcat [PATCH_RT_CHE_AVETE_SCARICATO]|patch -p1

A patch applicata sullo stesso terminale, chiediamo di richiamare la stessa configurazione del kernel che stiamo utilizzando, giusto per semplificarci la vita… Diamo quindi il comando “oldconfig”:
sudo make oldconfig
Potrebbe farci un po’ di domande tipo chiederci il quale compressione che desideriamo, scegliamo la .bz2;
se vogliamo compilare un kernel con complete-preemption (RT Kernel), che è quello che vogliamo, scegliamolo digitando “4” quando ci verrà richiesto.

Poi teniamo continuamente premuto invio una volta passate queste 2 richieste, fino a quando il terminale non torna alla situazione iniziale.
Ora passiamo a configurare i punti più interessanti:

sudo apt-get install libglade*
sudo make gconfig

E da qui possiamo aggiungere o togliere i moduli che ci interessano o no.
Si aprirà l’interfaccia grafica di configurazione kernel. Molto comoda ma anche in grado di farvi uscire pazzi.
E’ importante individuare cosa si intende modificare.
Procediamo dall’alto verso il basso della finestra che vi si apre, con le cose principali da tenere sott’occhio.

Sezione “GENERAL SETUP”

1- Se scorrete la finestra trovate la voce “PROCESSORS TYPE AND FEATURES”:
cliccando sulla freccina vi si apriranno tutte le sottosezioni riguardando i moduli o le funzionalità per il processore. scorriamo verso il basso fino alla voce “PREEMPTION MODE”:
in questa, se precedentemente avete applicato correttamente la patch rt, dovreste trovare 4 scelte possibili (anzichè 3). Quella che vi renderà il pc come real-time station, sarà la voce “Complete Preemption (Real-Time)”. E’ D’OBBLIGO SELEZIONARLA.

(Fate attenzione, non è la voce “Preemtible kernel (low-latency desktop)”, questa non vi restituirà un kernel real-time, abbasserà la latenza, ma non sufficientemente da permettere a jack ed a ardour di imagazzinare i flussi audio (ad es.) con la dovuta velocità, con il risultato di errori e blocchi nelle registrazioni, ammesso che state creando un kernel rt per le registrazioni…)

2- Di poco sotto alla sottosezione “PREEMPTION MODE”, altro punto interessante da modificare è “HIGH MEMORY SUPPORT” il quale deve essere impostato a seconda di quanta ram abbiamo nel sistema. Io ho 1GB e lo imposto a 4GB.

3- Sempre poco sotto c’è la voce “TIMER FREQUENCY”, è buona cosa impostarla a 1000Hz.

Sezione “DEVICE DRIVERS”

4- Con la sezione “GENERAL SETUP” abbiamo finito, ora, premetto che la parte riguardante il supporto alle periferiche, avendo richiesto ad inizio compilazione di ricopiare la configurazione del kernel generico, (quando abbiamo dato il comando “sudo make oldconfig”), preferisco non modificarla. Non si sa mai che un giorno decidete di utilizzare una determinata periferica e poi vi ritrovate a bestemmiare perchè non avevate inserito il modulo nel kernel…
Vabbè, una sottosezione che dobbiamo però modificare è la parte riguardante la scheda video. La sottosezione è la “GRAPHICS SUPPORT”.
E’ fatta anch’essa di sottosezioni… Diciamo che se abbiamo una sola scheda video nel nostro sistema, sarà logico che ci interesserà supportare solo la scheda installata. Se solitamente usiamo installare i driver proprietari allora possiamo deflaggare (cioè togliere i flag) alla sotto-sezione “Support for frame buffer devices” da dove c’è scritto “Frame buffer hardware drivers” fino alla fine.
E già così cominciamo a snellire…
Uguale discorso possiamo farlo per la scheda audio, a patto che conosciate il modello. Io comunque lo lascerei invariato. Appunto perchè compilare un kernel real-time è utile per applicazioni audio, quindi se un giorno avessimo bisogno di determinati drivers di supporto a schede audio USB o PCI, almeno lo riusciremo a supportare.

Sezione “FILE SYSTEMS”
5- Se vogliamo però, realmente, snellire il kernel senza quindi il rischio di trovare poi dei files .deb di 100-200MB, allora possiamo eliminare il supporto a file systems che non ci interessano, a tipi di partizione che non ci interessano e a tipi di linguaggio nativo.
Queste modifiche le avevo sempre sottovalutate e spesso mi ritrovavo kernel ultra pesanti, quindi inutili dal mio punto di vista…
Cominciamo a ragionare sulla sottosezione “PARTITION TYPES” e sulla sua relativa sottosezione “ADVANCED PARTITIONS SELECTION”.
Se lavorate in dual Boot, vi consiglio di lasciare solo le voci “Pc-BIOS” e “Windows Logical Disk Manager (Dynamic Disk) support”. Tutto il resto toglietelo… Amiga… Atari… Machintosh… A meno che non ne avete bisogno, toglieteli.
6- Sottosezione “NATIVE LANGUAGE SUPPORT”:
In ordine dall’alto al basso di questa sottosezione, non flaggato, ma in scelta multipla (cioè con il quadratino a sinistra con la righetta in mezzo e non il flag) ho lasciato solo:
· Codepage 437 (United States, Canada)
· Codepage 850 (Europe)
· Codepage 852 (Central/Eastern Europe)
· ASCII (United States)
· NLS ISO 8859-1 (Latin 1; Western European Languages)
· NLS UTF-8
E basta. Il resto l’ho tolto (Quadratino bianco).

Sezione “KERNEL HACKING”

6- Togliete il flag alla sottosezione “KERNEL DEBUGGING”

Sezione “VIRTUALIZATION”

7- Verificate che la stessa sia attivata, quindi flaggata così come le sottosezioni.

BASTA COSì
Ora sarebbe buona cosa verificare passo passo cosa si è tolto o aggiunto. In particolar modo consiglio di farsi un giro nella sezione “DEVICE DRIVERS” e controllare che sia supportato tutto ciò che realmente ci serve.
Quando siete soddisfatti salvate la configurazione cliccando sul dischetto, chiudete e cominciamo a compilare il tutto.

Prima si da un bel:
sudo make-kpkg clean

Poi un bel:
sudo make-kpkg --append-to-version=-custom --initrd kernel_image kernel_headers modules_image

Dove c’è scritto “–append-to-version=-custom” al posto di custom possiamo mettere quello che vogliamo. Ciò verrà aggiunto al nome del pacchetto . deb image e headers prodotto al termine della compilazione.

Dato l’invio partirà la compilazione del kernel e ci metterà circa un’ora prima di restituirvi, nella cartella home i 2 pacchetti .deb del kernel che installeremo, di circa 20 MB (per l’installazione usiamo il doppio click sul pacchetto che appare nella Home e non il dpkg). Installeremo prima il pacchetto linux-image-[VERSIONE_COMPILATA].Custom_i386.deb e poi linux-headers-[VERSIONE_COMPILATA].Custom_i386.deb

Il kernel sarà quindi installato ed utilizzabile. Provate poi a vedere se tutte le periferiche saranno riconosciute ed utilizzabili. Se poi posso darvi una mano, sono qui.
Tenete presente che i Kernel> 2.6.30, attualmente hanno un problema di compatibilità con i drivers NVIDIA per le schede video sia proprietari che non.

Mi sono dilungato per approfondire meglio i passaggi che a un utente di media esperienza come me, possono creare indecisione. Spero di non aver tediato.

Ciao a tutti.

Annunci

Azioni

Information

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...




%d blogger hanno fatto clic su Mi Piace per questo: