Menu
Gratis
Registrazione
Casa  /  Ovulazione/ Documentazione in lingua russa per Ubuntu. Costruire un kernel Linux Installare un nuovo kernel in Linux

Documentazione in lingua russa per Ubuntu. Costruire un kernel Linux Installare un nuovo kernel in Linux

Le informazioni disponibili sull'assemblaggio del kernel variano notevolmente, quindi descriveremo l'assemblaggio del kernel specificamente per Ubuntu. Ci proveremo. in modo che non ci siano errori nei comandi scritti in questo articolo. Nel descrivere il processo di compilazione non ci fermeremo solo all'ottenimento del kernel. Ottenere un kernel funzionante non è sufficiente. Per i possessori di schede nVidia, ecco una descrizione di come ottenere un sistema con grafica funzionante sul nuovo core. Inoltre, la grafica funzionerà sia nel vecchio kernel che in quello nuovo.

1. Installazione dei sorgenti del kernel

Per prima cosa avremo bisogno dei sorgenti del kernel. Per Ubuntu 7.04 sono già nel repository, devi trovare il pacchetto linux-source-waste(nel nostro caso lo sarà linux-source-2.6.20) e installarlo (tutto questo può essere fatto tramite Sinaptico). Dopo aver installato questo patto, nella directory /usr/src apparirà un file con il nome linux-source-2-6-20.tar.bz2.

Lo facciamo sotto sudo squadra

chmod 777 /usr/src

Entriamo nella directory come un normale utente /usr/src e decomprimere questo file

tar -jxvf linux-source-2-6-20.tar.bz2

Apparirà una directory con le fonti /usr/src/linux-source-2-6-20. Eliminiamo il file di archivio (avrai bisogno dei diritti di root).

2. Installazione dei pacchetti allegati

Avrai bisogno di più pacchetti per l'assemblaggio. pacchetto-kernel, libncurses5-dev, fakeroot. Li installiamo tramite Sinaptico. Naturalmente sul sistema deve essere installato anche un compilatore gcc E dev- pacchetti per librerie di sistema, come libc6-dev.

3. Creare un file di configurazione del kernel

Ora abbiamo bisogno della configurazione del kernel con cui è stato creato il kernel di Ubuntu. Vai al catalogo /stivale, e lì vediamo un file come config-2.6.20-15-generico. Questo è ciò di cui abbiamo bisogno. Copialo nella directory di origine /usr/src/linux-source-2-6-20 e rinominarlo in .config. Tieni presente che il nome del file inizia con un punto, non si tratta di un errore di battitura.

Ora, essendo nella directory /usr/src/linux-source-2-6-20, impartisci il comando come utente normale

Questo avvierà l'interfaccia testuale di configurazione del kernel. È inoltre possibile eseguire l'installazione in modalità grafica

In entrambi i casi si aprirà un'interfaccia con caselle di controllo, attraverso la quale configuriamo il kernel. Sembra che per impostazione predefinita il file sia aperto .config, che in al momento e contiene la configurazione standard del kernel di Ubuntu.

Cosa vuoi configurare: pensa tu stesso su Internet c'è molta documentazione in lingua russa su questo problema. Lo scopo di questo articolo è solo quello di descrivere le azioni effettive eseguite durante la compilazione del kernel di Ubuntu.

Al termine della configurazione selezionare la voce “Salva configurazione rifiuti”, specificare il nome del file diverso da .config, Per esempio .config_my_01. Usciamo.

Ora rinominiamo .config V .config_ubuntu. E ottieni due file - .config_ubuntu E .config_my_01. Puoi vedere le differenze tra lo standard e la tua configurazione, ad esempio in questo modo

diff.config.config_my_01

Ora copiamo la tua configurazione .config_my_01 sotto il nome .config. Quelli. otterrai 3 file di configurazione. Durante la compilazione verrà utilizzato il file .config. File .config_ubuntu E .config_my_01 ci aiuteranno in futuro per una nuova compilation. Questo nel caso in cui il nuovo kernel risulti non operativo o difettoso.

4. Compilazione

Prima della compilazione assicuratevi di verificare la disponibilità di spazio libero (sulla partizione dove si trovano i sorgenti). Sarebbe bello segnarlo 4-5Gb(!) in magazzino. Durante la compilazione, la dimensione della directory di origine può aumentare 3,5 GB. Puoi controllare lo spazio libero con il comando

Ora, essendo sotto un utente normale nella directory /usr/src/linux-source-2-6-20, diamo un comando che cancellerà gli oggetti compilati da qualcuno nel codice sorgente, che erano rimasti dalla compilazione precedente ed erano nell'archivio.

Quindi, tramite sudo, otteniamo i diritti di root e iniziamo la compilazione.

make-kpkg --initrd --revision=mybuild.1.0 immagine_kernel kernel_headers

Dove invece di " miacostruzione.1.0"scrivi quello che ti serve. Accettabile lettere inglesi, numeri, punti. Non sono ammessi caratteri di sottolineatura e trattini.

In realtà, in modo amichevole, la compilazione del kernel dovrebbe essere effettuata sotto i diritti di un utente normale. Formalmente, creare un binario del kernel non è diverso dalla compilazione di un binario per qualsiasi altro programma. Ma non compiliamo manualmente (tramite comandi come creare moduli bzImage), che in semiautomatico (via make-kpkg). E questo programma, dopo la compilazione, avvierà il programma da solo dpkg-deb ottenere deb-pacchetto kernel. È in questo momento che avrai bisogno dei diritti di root.

Ora vediamo cosa fa il comando precedente. Inizia a compilare il kernel, quindi crea deb-pacchetto con nome linux-immagine-versione.deb, che conterrà il binario del kernel e i moduli del kernel (questo verrà fatto grazie al file goal immagine_kernel). E sarà anche creato deb-pacchetto con nome linux-headers-versione.deb, conterrà i file header del kernel (questo verrà fatto grazie al file goal kernel_headers). I pacchetti ricevuti verranno posizionati nella directory /usr/src.

Guarda quali file ci sono in questi deb-pacchetti, possibili in conquistatore(in Kubuntu) facendo clic con il tasto destro su quello che ti interessa deb-file e selezionando " Menù del pacchetto Kubuntu" -> "Mostra informazioni sul pacchetto"Le informazioni verranno generate abbastanza lentamente, circa un minuto, poiché i pacchetti sono grandi.

5. Installazione del kernel

Ora installiamo il kernel. Essere con diritti di superutente nella directory /usr/src, dai il comando

dpkg -i linux-immagine-versione.deb

dopodiché il kernel (file vmlinuz-2.6.20.3-ubuntu1) verrà inserito nella directory /stivale(anche tutti i kernel precedenti non andranno da nessuna parte, rimarranno al loro posto) e nel catalogo /lib/moduli, accanto alla directory con i normali moduli del kernel (in Ubuntu 7.04 chiamato /lib/modules/2.6.20-15-generic) apparirà una directory con i moduli del tuo nuovo kernel (nel nostro caso sarà /lib/modules/2.6.20.3-ubuntu1). Il nuovo kernel verrà automaticamente registrato in /boot/grub/menu.lst.

In linea di principio, puoi già riavviare e nella schermata di caricamento Grub apparirà un nuovo oggetto con il tuo nucleo. Il nuovo kernel apparirà all'inizio dell'elenco. Ma non abbiamo ancora fretta, daremo un altro comando

dpkg -i linux-headers-versione.deb

che installerà le intestazioni del kernel nella directory /usr/src/linux-headers-versione, nel nostro caso questa sarà una directory /usr/src/linux-headers-2.6.20.3-ubuntu1. Avremo bisogno di queste intestazioni, ad esempio, per ricompilare i driver nVidia per il nuovo kernel.

6. Riavvia

Riavvia e nel menu Grub vedrai due nuovi elementi: avvio normale con il kernel e avvio in modalità console minima. Scegli il primo elemento. Se il nucleo non cadesse immediatamente Panico nel kernel, allora questo è un buon segno. Attendi il completamento del download. Se sei fortunato, Ubuntu si avvierà in modalità grafica e mostrerà un prompt di accesso grafico. In questo caso potresti non leggere oltre.

Ma per gli utenti della carta nVidia che hanno utilizzato i driver installati tramite "Proprietary Driver Manager" o hanno utilizzato i driver di un pacchetto nvidia-glx(o lì nvidia-glx-nuovo), ti garantisco al 99% che non sarai fortunato! E non vedrai la grafica sotto il nuovo core!

7. Installazione dei driver nVidia da nvidia.com

Per far funzionare Xs con un nuovo kernel, la prima cosa che mi viene in mente è installare i driver da nvidia.com con il nuovo kernel. E questa è la decisione sbagliata! Non appena verranno installati i driver per il nuovo kernel, la grafica nel tuo vecchio kernel collaudato smetterà di funzionare (poiché i file dei driver nVidia sono strettamente legati alla versione e al nome del kernel). E poiché non hai ancora testato a fondo la funzionalità del nuovo kernel, puoi ottenere un sistema "con un kernel nativo, ma senza grafica" e "un kernel difettoso, ma con grafica". Non credo che nessuno sarà contento di questa situazione.

Nel popolare articolo "Fisica nucleare per casalinghe" ci sono consigli su come ottenere la grafica su entrambi i core. Si suggerisce il seguente metodo: tenere pronto il pacchetto di installazione del driver da nvidia.com e, se si desidera eseguire l'avvio con un kernel specifico, è necessario prima avviare nella modalità console di questo kernel, installare il driver e quindi eseguire l'avvio normalmente. Penso che questo approccio piacerà anche a poche persone.

Faremo in modo che la grafica funzioni sia nel vecchio kernel che nel nuovo kernel, e per questo non sarà necessario eseguire ogni volta l'installazione (compilazione) di legna da ardere. Per fare ciò, dovremo soddisfare solo una condizione: che i driver grafici sotto core diversi abbiano la stessa versione.

Breve piano d'azione- installare la legna da ardere dal sito nvidia.com per il kernel standard per intero. Assicuriamoci che funzionino. Quindi dallo stesso pacchetto installiamo la legna da ardere per il kernel fatto in casa, ma in modalità “solo modulo grafico”.

8. Installazione dei driver nVidia per un kernel normale

Tutto ciò che è scritto di seguito è adatto anche a coloro che hanno semplicemente deciso di installare nuovi driver nVidia sotto il kernel standard!

Scarica dal sito nvidia.com legna da ardere per Linux. Ho scaricato io stesso la versione con legna da ardere 96.43 . Il file viene chiamato NVIDIA-Linux-x86-96.43.01-pkg1.run. Ma puoi provare altre versioni stabili presenti sul sito nVidia.

Per installare, creare nella directory /usr/src sottodirectory denominata nvidia, copia questo file lì. Mentre ci troviamo in questa sottodirectory, diamo al file il permesso di esecuzione

chmod 777 NVIDIA-Linux-x86-96.43.01-pkg1.run

Questo è tutto, qui finisce per il momento il lavoro sull'interfaccia grafica. Prima di uscire dalla modalità grafico, esegui Sinaptico e assicurati di averlo

  • attitudine Questo è un wrapper front-end per il gestore pacchetti per la modalità testo.
  • linux-headers-2.6.20-15. Questi sono i file header del tuo kernel standard.
  • linux-headers-2.6.20-15-generico. Non dirò esattamente a cosa diavolo serve questo pacchetto, ma così sia.

Un buon consiglio è quello di stampare il testo di questo articolo su un pezzo di carta o di salvarlo file di testo, che può essere visualizzato dalla modalità testo.

Riavviamo nella modalità console di un kernel normale (in Grub c'è un punto del genere). IN Ubuntu riceverai automaticamente i diritti di root, non avrai nemmeno bisogno di inserire una password. Ora dobbiamo rimuovere la legna da ardere nVidia, che sono nel sistema. Se hai installato i driver tramite "Proprietary Driver Manager" (o installando il pacchetto nvidia-glx O nvidia-glx-nuovo), quindi il pacchetto nvidia-glx/nvidia-glx-nuovo deve essere rimosso dal sistema e non solo disinstallato, ma disinstallato in modalità spurgo.

Sono un utente piuttosto stupido e invece di capire le opzioni dpkg, utilizzo il programma nella console attitudine. Digita il comando

e ti ritroverai in un guscio che gli somiglia vagamente Sinaptico. Ci sarà un suggerimento chiave in alto. Per accedere al menu, premere CTRL+T(scomodo, ma cosa fare). Nel menu
frecce e chiavi Entra trovare e selezionare la voce " Trovare". Scriviamo la stringa di ricerca - nvidia-glx. La luce cadrà sulla confezione desiderata. Richiama nuovamente il menu e trova la voce " Eliminazione". Fare clic su di esso e il pacchetto su cui si trova l'evidenziazione verrà contrassegnato per disinstallare completamente tutti i suoi file dal sistema (il pacchetto stesso rimarrà nella cache, potrà essere reinstallato se necessario). Verrà visualizzato un suggerimento metter il fondo a - " e - Esamina, ! - rimuovere". Fare clic su " e" - e vediamo quali pacchetti verranno eliminati. Se da nvidia-glx dipenderà dai pacchetti, verranno anche disinstallati. Di solito questo è un pacchetto nvidia-glx-dev. Va bene che anche quello verrà eliminato.

Ora premi " ! " (per particolarmente dotato - Maiusc+1), accettiamo quindi le nostre modifiche. Quindi fare clic su " Q" (esci). All'uscita, il programma rimuoverà i pacchetti che abbiamo contrassegnato.

Ora è il momento. Adesso siamo al livello inizia 1(solo console, molti servizi non sono in esecuzione). Se esegui l'installazione del driver nVidia, allora giurerà che forse il tuo servizio non è attivo devfs, che di solito corre a livello 3 . Pertanto diamo il comando

telinit 3

e il sistema caricherà i servizi necessari e allo stesso tempo uscirà dalla modalità utente singolo (appariranno diverse console che possono essere cambiate con i tasti ALT+F1...ALT+F6). Per ulteriori lavori abbiamo solo bisogno di due console. A proposito, il sistema proverà a caricare la grafica, ma non ci riuscirà, perché... Abbiamo appena rimosso il driver. E lei resterà dentro 7 console con uno schermo vuoto. Niente panico, andiamo avanti ALT+F1, vediamo la prima console, lì inseriamo login e password come nel login grafico (solo dopo login e password premiamo Entra e non TAB).

Una volta effettuato l'accesso, chiama mc come superutente

Vai al catalogo /usr/src/nvidia

./NVIDIA-Linux-x86-96.43.01-pkg1.run -e

Opzione " -e" ci consentirà di vedere un rapporto sulle azioni e vedere i file in conflitto. Iniziamo l'installazione. Accettiamo la licenza. Rifiutiamo di scaricare i codici sorgente da ftp nvidia. Parliamo OK quei moduli saranno creati da noi. Per inserire i percorsi è sufficiente fare clic Entra.

Infine, prima dell'installazione vera e propria, verrà mostrato l'elenco dei file che verranno installati. E all'inizio di questo elenco (se trovato) appariranno file in conflitto. Verrà scritto" File di backup..." - ecco cosa sono. Nel mio caso si trattava di file

/usr/lib/xorg/modules/extensions/libGLcore.so
/usr/lib/xorg/modules/extensions/libglx.so
/usr/lib/libGL.so
/usr/lib/libGL.so.1
/usr/lib/libGL.so.1.2
/lib/modules/2.6.20-15-generic/volatile/nvidia.ko
/usr/include/GL/glext.h
/usr/include/GL/gl.h
/usr/include/GL/glxext.h
/usr/include/GL/glx.h

Questi sono i file del pacchetto moduli-limitati-nvidia. Il fatto è che se elimini semplicemente questo pacchetto, insieme a questi file tutti i file per nVidia-chipset ( nVidia Dopotutto, non produce solo schede video). Sarà inoltre necessario rimuovere i pacchetti dipendenti linux-restricted-modules-2.6.20-15-generic, linux-restricted-modules-generic E generico per Linux. Pertanto, non è consigliabile rimuovere questo pacchetto. Pertanto faremo le cose diversamente.

Non appena vedi tale elenco, accedi alla seconda console (vai a - ALT+F2), correre

e trasferisci metodicamente questi file in conflitto da qualche parte in una directory separata nella tua home directory, controllando l'elenco nella prima console. Perché trasferire e non eliminare? Il fatto è che i nomi dei file in Linux sono "illeggibili" e puoi facilmente commettere un errore ed eliminare il file sbagliato.

Dopo aver eliminato tutti i file destinati Backup, torna alla prima console. Interrompere l'installazione ( Ctrl+c) ed eseguirlo di nuovo. Se " File di backup..." non esisterà più, quindi completa l'installazione. Tutto dovrebbe andare liscio. Puoi essere d'accordo con la correzione xorg.conf, il file di backup verrà comunque creato.

Ora attenzione! La cosa più importante è non sovraccaricarsi in questo momento! E vai al fascicolo /etc/default/linux-restricted-modules-common e aggiungi all'opzione DISABILIT_MODULI moduli nv E nvidia_new. L'ho fatto così

DISABLED_MODULES="nv nvidia_new"

Se non lo fai, la prossima volta che caricherai il file (che hai eliminato!) /lib/modules/2.6.20-15-generic/volatile/nvidia.ko sarà automaticamente restaurato dal pacchetto moduli-limitati-nvidia. E viene chiamato il file che hai compilato durante l'installazione dei driver /lib/modules/2.6.20-15-generic/kernel/drivers/video/nvidia.ko. Quindi, quando avvii X, verrà trovato il primo file. Ma non raggiungerà il tuo file. E gli X non saranno in grado di avviarsi.

Riavviamo nel kernel standard in modalità completa. Se tutto è stato fatto correttamente, verranno avviate le X. Rallegrati, almeno hai ancora un sistema funzionante.

9. Installazione dei driver nVidia per un kernel fatto in casa

Ora rimane l'ultimo passo: far funzionare la grafica nel nuovo kernel. Tutto è abbastanza semplice qui. Avviamo la modalità console del kernel fatto in casa. Diamo il comando

accedi ed esegui nella prima console

Vai al catalogo /usr/src/nvidia e inizia a installare la legna da ardere con la squadra

./NVIDIA-Linux-x86-96.43.01-pkg1.run -Ke

Opzioni " -Ke"permette di assemblare solo il modulo grafico nvidia.ko sotto il kernel corrente (e il file verrà inserito nella directory /lib/modules/current_kernel_name/kernel/drivers). Nessun altro file condivisi, che ad esempio verrebbe inserito in /usr/lib... come quando si compila con l'opzione "-e", non verrà creato.

Esattamente come quando si compila in un kernel standard, accettiamo i percorsi facendo clic Entra. Raggiungiamo la schermata in cui verranno elencati i file che verranno installati. Se sono presenti file in conflitto all'inizio di questo elenco " File di backup...", passa alla console successiva ed elimina (trasferisci) questi file.

Dopo aver rimosso i file in conflitto, nella prima console, interrompere l'installazione ( Ctrl+c) ed eseguilo di nuovo (con l'opzione " -Ke"naturalmente). Una volta completata l'installazione, riavviare selezionando dal menu Grub in modalità completa con il kernel.

X dovrebbe iniziare. Puoi rallegrarti una seconda volta: hai un sistema con un kernel fatto in casa e una grafica funzionante.

In qualsiasi momento è possibile eseguire l'avvio con il kernel desiderato e la grafica dovrebbe funzionare ovunque. Questo è tutto.

In questa guida passo passo imparerai come creare e installare correttamente il branch kernel >2.6 sulla famiglia di sistemi operativi Ubuntu.

Passaggio 1: ottenere il codice sorgente del kernel

I sorgenti del kernel di Ubuntu possono essere ottenuti in due modi:

    Installando l'archivio da repository, con applicazione automatica delle ultime patch ufficiali. Verrà scaricato un pacchetto di circa 150 MB nella cartella corrente. Per ottenere i sorgenti del kernel, la cui versione è installata sul computer, eseguire il comando: apt-get source linux-image-`uname -r`

    Oppure invece di `uname -r` puoi specificare una versione specifica disponibile nel repository.

L'elenco delle versioni disponibili nel repository può essere visualizzato digitando il comando: “apt-get source linux-image-” e, senza premere Invio, premere due volte il tasto Tab.

Non dimenticare di accendere accesso generale ai sorgenti nel repository (Impostazioni di sistema → Programmi e aggiornamenti → Software Ubuntu → Codice sorgente). Puoi farlo dalla console decommentando le righe che iniziano con deb-src nel file /etc/apt/sources.list, quindi eseguire l'aggiornamento con il comando: "sudo apt-get update".

    L'ultima versione del kernel è disponibile tramite git. La dimensione del pacchetto scaricato è di ~500-800 MB. git clone git://kernel.ubuntu.com/ubuntu/ubuntu- .git

    Dove - nome della versione, ad esempio:

    Git clone git://kernel.ubuntu.com/ubuntu/ubuntu-xenial.git

Altri kernel

Ci sono anche kernel di cui non è garantito il funzionamento in Ubuntu. Ad esempio, esiste un problema noto con una serie di applicazioni di sistema popolari (in particolare i driver NVidia, VirtualBox) che, una volta installate, vengono compilate per il kernel installato. Pertanto, per installarli su un kernel non standard per una determinata versione di Ubuntu (ad esempio, Ubuntu 16.04 viene fornito con un kernel 4.4.0), potrebbero richiedere una compilazione manuale separata o patch speciali e ultime versioni L'applicazione potrebbe non supportare affatto i kernel di kernel.org.

    Archivio dalla versione base senza patch, ad es. ad esempio "4.8.0", "4.8.10": sudo apt-get install linux-source

Decomprimere l'archivio risultante utilizzando i comandi:

Cd ~/ tar -xjf linux-2.6.x.y.tar.bz2

O nel caso di Linux-source:

Cd /usr/src tar -xjf linux-source-2.6.x.y.tar.bz2

Passaggio 2. Ottenere i pacchetti necessari per l'assemblaggio

Questo passaggio deve essere eseguito solo se il kernel viene assemblato sul computer per la prima volta

Esegui i seguenti comandi per installare i pacchetti principali:

Sudo apt-get update sudo apt-get build-dep linux sudo apt-get install kernel-package

    config - modo tradizionale configurazione. Il programma visualizza le opzioni di configurazione una alla volta, chiedendo di impostare un valore diverso per ciascuna di esse. Non consigliato per utenti inesperti.

    oldconfig- il file di configurazione viene creato automaticamente in base alla configurazione corrente del kernel. Consigliato per i principianti.

    defconfig- il file di configurazione viene creato automaticamente, in base ai valori predefiniti.

    menuconfig- interfaccia pseudo-grafica per la configurazione manuale, non richiede l'immissione sequenziale dei valori dei parametri. Consigliato per l'uso in un terminale.

    xconfig- interfaccia grafica (X) per la configurazione manuale, non richiede l'immissione sequenziale dei valori dei parametri.

    gconfig- interfaccia grafica (GTK+) per la configurazione manuale, non richiede l'immissione sequenziale dei valori dei parametri. Consigliato per l'uso nell'ambiente GNOME.

    localmodconfig- un file di configurazione creato automaticamente, che include solo ciò che è necessario per questo particolare dispositivo. Quando viene chiamato questo comando, la maggior parte del core verrà modulata

Nel caso in cui desideri utilizzare config, oldconfig, defconfig, localmodconfig O localesconfig, non ti serve altro pacchetti aggiuntivi. Per le restanti tre opzioni è necessario installare anche pacchetti aggiuntivi.

menuconfig eseguire il seguente comando:

Sudo apt-get install libncurses5-dev

Per installare i pacchetti necessari per l'uso gconfig eseguire il seguente comando:

Sudo apt-get install libgtk2.0-dev libglib2.0-dev libglade2-dev

Per installare i pacchetti necessari per l'uso xconfig eseguire il seguente comando:

Prima di Ubuntu 12.04: sudo apt-get install qt3-dev-tools libqt3-mt-dev

Sudo apt-get install libqt4-dev

Passaggio 3: applicazione delle patch

Questo passaggio è facoltativo.

Ai sorgenti sono già state applicate le patch ufficiali se il kernel è stato ottenuto utilizzando il comando sopra descritto:

Apt-get source immagine-linux-`uname -r`

Se non hai mai applicato patch al codice sorgente prima, esegui il comando seguente:

Sudo apt-get patch di installazione

Questo comando installerà il programma patch, necessario, come puoi immaginare, per applicare le patch. Ora scarica il file patch nella cartella in cui hai estratto il kernel. Può trattarsi di un file di archivio (ad esempio Bzip2 o Gzip) o di un file patch non compresso.

A questo punto si presuppone che tu abbia già salvato il file nella cartella in cui hai precedentemente decompresso il kernel e installato il programma patch.
Se il file scaricato era in formato Gzip (*.gz), esegui il comando seguente per estrarre il contenuto dell'archivio:

Patch Gunzip-2.6.x.y.gz

Se il file scaricato era in formato Bzip2 (*.bz2), esegui il comando seguente per estrarre il contenuto dell'archivio:

Bunzip2 patch-2.6.x.y.bz2

dove 2.6.x.y è la versione della patch del kernel. I comandi appropriati estrarranno il file patch nella cartella sorgente del kernel. Prima di applicare la patch, devi assicurarti che funzioni senza errori. Per fare ciò, esegui il comando:

Patch -p1 -i patch-2.6.x.y --esecuzione a secco

dove 2.6.x.y è la versione della patch del kernel. Questo comando simulerà l'applicazione di una patch senza modificare i file stessi.

Se non si verificano errori durante l'esecuzione, le modifiche possono essere implementate in modo sicuro nei file stessi. Per fare ciò, esegui il comando:

Patch -p1 -i patch-2.6.x.y

dove 2.6.x.y è la versione della patch del kernel. Se non si sono verificati errori, la patch è stata applicata con successo al codice sorgente.

Attenzione! Prima di applicare la patch, eseguire i seguenti passaggi: 1. Scaricare da http://www.kernel.org la patch della stessa versione dei sorgenti. 2. Eseguire il seguente comando: patch -p1 -R

dove 2.6.x.y è la versione della patch e i tuoi sorgenti

Passaggio 4. Configurazione della futura build del kernel

Vai alla cartella in cui hai estratto il kernel eseguendo il comando

Cd ~/linux-2.6.x.y

dove 2.6.x.y è la versione del kernel scaricato.

A questo punto, dovresti aver già deciso un metodo di configurazione del kernel (in caso contrario, controllalo nella sezione "Come ottenere i pacchetti necessari per la compilazione"). A seconda di ciò, esegui il seguente comando per eseguire il metodo di configurazione scelto:

    config- metodo di configurazione tradizionale. Il programma visualizza le opzioni di configurazione una alla volta, chiedendo di impostare un valore diverso per ciascuna di esse. Chiamato dal comando make config

    oldconfig- il file di configurazione viene creato automaticamente in base alla configurazione corrente del kernel. Consigliato per i principianti. Chiamato da make oldconfig

    defconfig- il file di configurazione viene creato automaticamente, in base ai valori predefiniti per questa particolare architettura. Chiamato da make defconfig

    menuconfig- interfaccia pseudo-grafica per la configurazione manuale, non richiede l'immissione sequenziale dei valori dei parametri. Consigliato per l'uso in un terminale. Chiama: crea menuconfig

    gconfig E xconfig- configuratori grafici per la configurazione manuale. Chiama: crea gconfig

    Crea xconfig

    rispettivamente

    localmodconfig E localesconfig- configuratori automatici. La configurazione viene creata in base ai moduli attualmente chiamati e al kernel in esecuzione. La differenza tra questi due configuratori è il numero di moduli. Nel primo caso ci sarà almeno il 50% del core e nel secondo non più di 2 moduli. Chiama: make localmodconfig

    Crea localesconfig

    rispettivamente

Una volta richiamato verrà lanciato il programma di configurazione corrispondente. Effettua le impostazioni necessarie in base alle tue esigenze, salva il file di configurazione e procedi al passaggio successivo.

Passaggio 5: creazione del kernel

Quindi, i preparativi sono completi. Ora puoi avviare il processo di compilazione del kernel. Per fare ciò, esegui il comando:

Fakeroot make-kpkg -j 5 --initrd --append-to-version=-custom kernel_image kernel_headers #-j<количество ядер процессора>+1

La creazione del kernel può richiedere da 20 minuti a diverse ore, a seconda della configurazione del kernel e dei parametri tecnici del computer. L'assemblaggio con un processore multi-core può essere molte volte più veloce

Passaggio 6: installazione di immagini e intestazioni del kernel

Una volta completata la compilazione del kernel, nella tua cartella home appariranno due pacchetti deb. Devono essere installati. Per fare ciò, esegui i comandi:

Cd ~/ sudo dpkg -i linux-image-2.6.x.y-custom_2.6.x.y-custom-10.00.Custom_arc.deb sudo dpkg -i linux-headers-2.6.x.y-custom_2.6.x.y-custom-10.00. Custom_arc.deb

dove 2.6.x.y è la versione del kernel assemblato, arc è l'architettura del processore (i386 - 32 bit, amd64 - 64 bit).
Se non conosci il nome esatto del pacchetto, elenca i file nella tua directory home con il comando

e trova questi stessi due pacchetti.

Passaggio 7. Generazione del disco RAM iniziale

Per funzionare correttamente, Ubuntu richiede un'immagine iniziale del disco RAM. Per crearlo eseguite il comando:

Sudo update-initramfs -c -k 2.6.x.y-custom

dove 2.6.x.y è la versione del kernel compilato.

Passaggio 8: aggiornamento della configurazione del boot loader GRUB

Per garantire che la nuova versione del kernel sia disponibile per la selezione all'avvio del computer, eseguire il comando seguente:

Sudo update-grub

Il file menu.lst (per GRUB versione 1) o grub.cfg (per GRUB versione 2) verrà aggiornato in base alla disponibilità dei sistemi operativi installati e delle immagini del kernel.

Passaggio 9: controllo del kernel

Assemblaggio e installazione del kernel completati con successo! Ora riavvia il computer e prova ad avviare il sistema con il nuovo kernel. Per assicurarti che il sistema funzioni con il nuovo kernel, esegui il comando

Uname -r

Verrà visualizzata la versione del kernel in uso.

Se tutto è stato eseguito correttamente, puoi eliminare gli archivi del codice sorgente e l'intera directory linux-2.6.x.y nella tua cartella home. Ciò libererà circa 5 GB sul tuo disco rigido (la quantità di spazio liberato dipende dalle impostazioni di creazione).

Questo completa il processo di assemblaggio e installazione, congratulazioni!

Recentemente, nuove versioni dei kernel sono state rilasciate abbastanza spesso. Una versione stabile esce ogni pochi mesi. Bene, i candidati instabili per il rilascio appaiono ancora più spesso. Linus Torvalds e molti sviluppatori in tutto il mondo lavorano costantemente per migliorare i nuovi kernel e aggiungere loro sempre più funzionalità.

Con ogni nuova versione, il kernel Linux aggiunge il supporto per diversi nuovi dispositivi, come nuovi processori, schede video o persino touch screen. Recentemente, il supporto per le nuove apparecchiature è notevolmente migliorato. Inoltre, nel kernel sono stati inclusi nuovi file system, il funzionamento dello stack di rete è stato migliorato e gli errori e i bug sono stati corretti.

Se desideri informazioni più dettagliate sulle modifiche a una particolare versione del kernel, consulta il relativo registro delle modifiche su kernel.org e in questo articolo esamineremo l'aggiornamento del kernel Linux alla versione più recente. Cercherò di non legare le istruzioni a una specifica versione del kernel; i nuovi kernel vengono rilasciati abbastanza spesso e sarà rilevante per ciascuno di essi.

Diamo un'occhiata all'aggiornamento del kernel Ubuntu e CentOS. Innanzitutto, diamo un'occhiata a come aggiornare il kernel in Ubuntu 16.04.

Vediamo prima quale kernel hai installato. Per fare ciò, apri un terminale ed esegui:

Ad esempio, attualmente sto utilizzando la versione 4.3 e posso aggiornare alla versione più recente. Gli sviluppatori di Ubuntu si sono già assicurati che i loro utenti non compilassero il kernel manualmente e hanno creato pacchetti deb per la nuova versione del kernel. Possono essere scaricati dal sito ufficiale di Canonical.

Potrei fornire qui i comandi wget da scaricare se la versione del kernel fosse nota, ma nel nostro caso sarebbe meglio usare il browser. Apri il sito web http://kernel.ubuntu.com/~kernel-ppa/mainline/. Ecco tutti i kernel compilati dal team di Ubuntu. I kernel sono compilati sia per distribuzioni specifiche, con il nome in codice della distribuzione, sia per quelle generali. Inoltre, i kernel di Ubuntu 16.10 molto probabilmente funzioneranno nella versione 16.04, ma non dovresti installare un kernel della versione 9.04 in Ubuntu 16.04.

Scorri fino in fondo, qui si trovano le versioni più recenti dei kernel:

Inoltre, in alto c'è una cartella daily/current, che contiene le ultime build notturne del kernel. Seleziona la versione del kernel desiderata e scarica due file linux-headers e linux-image per la tua architettura:

Una volta completato il download potrete procedere all'installazione. Per fare ciò, procedi come segue nel terminale:

Vai alla cartella con i pacchetti di installazione, ad esempio ~/Downloads:

Esegui l'installazione:

Se questo comando non funziona, puoi procedere in un altro modo. Installa l'utilità gdebi:

sudo apt-get install gdebi

Quindi usalo per installare il kernel:

sudo gdebi linux-headers*.deb linux-image-*.deb

Il kernel è installato, non resta che aggiornare il bootloader:

sudo update-grub

Ora puoi riavviare il computer e vedere cosa è successo. Dopo il riavvio, ci assicureremo che l'aggiornamento del kernel Linux alla versione più recente abbia avuto successo:

Come puoi vedere, il kernel è stato installato con successo e funziona. Ma non abbiate fretta di rimuovere la vecchia versione del kernel; si consiglia di avere diverse versioni del kernel sul sistema, in modo che in caso di problemi sia possibile eseguire l'avvio dalla vecchia versione funzionante.

Aggiornamento automatico del kernel Linux su Ubuntu

Sopra abbiamo visto come installare manualmente la versione del kernel richiesta. Ubuntu aveva un PPA per le build giornaliere del kernel, ma ora è chiuso. Pertanto, puoi aggiornare il kernel solo scaricando il pacchetto deb e installandolo. Ma tutto ciò può essere semplificato utilizzando uno script speciale.

Installa lo script:

cd/tmp
$ git clone git://github.com/GM-Script-Writer-62850/Ubuntu-Mainline-Kernel-Updater
$ bash Ubuntu-Mainline-Kernel-Updater/install

Controllo degli aggiornamenti:

KernelUpdateChecker -r yakkety

L'opzione -r ti consente di specificare il ramo di distribuzione per il quale vuoi cercare i kernel. I kernel per xenial non sono più compilati, ma i kernel della prossima versione funzioneranno bene qui. Inoltre, l'opzione -no-rc può essere utilizzata per indicare all'utilità di non utilizzare i candidati al rilascio e l'opzione -v specifica l'esatta versione del kernel da installare. Se non ti interessa a quale distribuzione è destinato il kernel, purché sia ​​la più recente, usa l'opzione --any-release. Lo script produrrà il seguente risultato:

Prima di installare il kernel, puoi visualizzare i dettagli aprendo il file /tmp/kernel-update:

Qui possiamo vedere che è stato cercato yakkety e la versione del kernel è attualmente 4.7-rc6. Possiamo installare:

sudo /tmp/kernel-update

Lo script ci mostrerà la versione del kernel attuale, così come la versione del kernel che verrà installata, la sua data di compilazione e altri dettagli. Ti verrà inoltre chiesto se è necessario conservare un registro delle modifiche. Poi arriva l'installazione:

I vecchi kernel, per ogni evenienza, non eliminare (n):

Fatto, l'aggiornamento del kernel alla versione più recente è completo, ora riavvia il computer (y):

Controlliamo se l'aggiornamento del kernel di Ubuntu ha effettivamente funzionato:

Inoltre, lo script è stato aggiunto all'avvio e ora controllerà automaticamente gli aggiornamenti 60 secondi dopo l'accesso. Il collegamento al caricamento automatico è nel file:

vi ~/.config/autostart/KernelUpdate.desktop

Puoi modificarlo secondo necessità o eliminarlo. Se desideri rimuovere completamente lo script dal sistema, esegui:

rm ~/.config/autostart/KernelUpdate.desktop
$ sudo rm /usr/local/bin/KernelUpdate(Checker,ScriptGenerator)

Non si carica

Se si sono verificati errori durante l'installazione o il kernel non è stato aggiornato correttamente e ora il sistema non si avvia con il nuovo kernel, è possibile utilizzare il vecchio kernel. Inoltre, il sistema potrebbe non avviarsi se si utilizza un driver proprietario per una scheda video NVIDIA; in questo caso, non affrettarsi a scaricare l'ultima versione del kernel; di regola, utilizzare solo kernel stabili, il supporto per questo modulo è; già aggiunti ad essi.

E per ripristinare il sistema, seleziona Opzioni avanzate per Ubuntu nel menu di Grub:

E avvia il kernel in esecuzione precedente:

Dopo il download non resta che rimuovere il kernel installato in modo errato e aggiornare nuovamente Grub, sostituendo la versione del kernel desiderata invece della 4.7:

sudo apt rimuovi linux-header-4.7* linux-image-4.7*

sudo update-grub

Il tuo sistema è ora tornato allo stato precedente. Puoi provare a installare una versione precedente del kernel o riprovare.

Aggiornamento del kernel Linux a 4.4 su CentOS

Ora diamo un'occhiata a come aggiornare l'ultima versione del kernel Linux in CentOS. Le istruzioni sono state testate su CentOS 7, ma molto probabilmente funzioneranno su RedHat 7, Fedora e altre distribuzioni simili.

Di norma, i nuovi kernel non sono inclusi nei repository ufficiali CentOS, quindi per ottenere l'ultima versione stabile dovremo aggiungere il repository ELRepo. Questo è un repository di pacchetti commerciali (pacchetti Enterprise Linux) ed è supportato anche da RedHat e Fedora.

Per aggiungere un repository, attenersi alla seguente procedura:

Per prima cosa devi importare la chiave:

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

Aggiungi il repository e i componenti necessari a RHEL/Scientific Linux/CentOS-7:

giri/min -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

yum installa yum-plugin-fastestmirror

Su Fedora 22 e versioni successive:

Costruire il kernel Linux
Ciao, cari lettori. Oggi vi parlerò di un'attività così interessante Come costruire il kernel Linux. Perché potresti aver bisogno di assemblare il kernel da solo? In effetti, le ragioni possono essere molte: la necessità di utilizzare funzionalità aggiuntive del kernel, ottimizzare il kernel per il proprio computer, aggiornare il kernel all'ultima versione. In questo articolo, dimostrerò il processo di ottenimento dei codici sorgente, configurazione, compilazione e installazione del kernel Linux nel sistema, come parte della risoluzione del problema dell'inclusione del supporto cryptoloop (dispositivi di crittografia loopback) nel kernel.

Ottenere il codice sorgente
Prima di tutto dobbiamo procurarci il codice sorgente, questo può essere fatto in diversi modi e da diverse fonti. Propongo di considerarne solo due: i repository di sistema, il sito web ufficiale del kernel. I repository molto probabilmente conterranno versioni del kernel precedenti a quelle presenti sul sito ufficiale, ma queste fonti dovrebbero includere patch e correzioni del produttore della tua distribuzione Linux. Questo approccio è preferibile a meno che non sia necessaria una nuova tecnologia o funzionalità supportata solo dai kernel più recenti. Puoi visualizzare tutte le versioni dei sorgenti del kernel contenute nei repository del tuo sistema inserendo nel terminale (vero per Ubuntu Linux, il nome del pacchetto potrebbe differire in altre distribuzioni):

Apt-cache cerca linux-source

Il comando elencherà i pacchetti disponibili:


Come puoi vedere, ho solo un pacchetto con la versione attuale e un pacchetto con la versione 3.5 (in effetti, anche l'attuale versione del kernel è 3.5). Per espandere l'elenco dei kernel disponibili in questo modo, vale la pena collegare repository aggiuntivi. Possiamo ottenere il kernel con il comando: sudo apt-get install linux-source

linux-source - il nome del pacchetto sorgente, potrebbe essere diverso nel tuo caso.
Una volta completato il comando, apparirà un file nella directory /usr/src, nel mio caso - linux-source-3.5.0.tar.bz2. Andiamo nella cartella, scompattiamo l'archivio e, per comodità, creiamo un collegamento simbolico:

Cd /usr/src sudo tar -xjvf linux-source-3.5.0.tar.bz2 sudo ln -s linux-source-3.5.0 linux

Se hai bisogno dell'ultima versione del kernel, puoi sempre scaricarla da kernel.org. Vale la pena notare che il sito contiene sia versioni stabili dei kernel sia versioni destinate al test e alla modifica (di solito il loro nome contiene l'abbreviazione "RC" - Release candidate). Se non vuoi problemi inutili con il sistema, ti consiglio di scaricare la versione stabile:

Salviamo l'archivio con i sorgenti nella cartella /usr/src. Per decomprimere l'archivio risultante potrebbe essere necessario installare utilità aggiuntive:

Sudo apt-get install xz-utils

Ora, come nel caso del download del kernel dai repository, dobbiamo decomprimere l'archivio sorgente e creare un collegamento:

Cd /usr/src sudo tar -xpJf linux-3.8.5.tar.xz sudo ln -s linux-3.8.5.tar.xz linux

Configurazione e compilazione.
Ora arriviamo alla parte più interessante. Prima di iniziare, installiamo alcuni pacchetti aggiuntivi:

sudo apt-get install build-essential kernel-package libncurses-dev

Creeremo una nuova configurazione basata sul kernel attualmente utilizzato dal sistema:

Cd /usr/src/linux sudo make oldconfig

Se stai configurando una versione del kernel più recente di quella presente nel sistema, è probabile che contenga parametri che non sono presenti nella configurazione del kernel corrente. In questo caso il programma ti chiederà di fare una scelta; potrai lasciare i valori predefiniti semplicemente premendo il tasto Invio. In ogni caso la configurazione non è ancora completa. Ora possiamo effettuare le impostazioni di cui abbiamo bisogno attraverso il menu di creazione della configurazione:

Sudo make menuconfig

Il programma di configurazione verrà avviato nel terminale:

Qui, le opzioni di configurazione sono divise in sezioni per renderle più facili da navigare. Come ho detto sopra, devo includere il supporto cryptoloop nel kernel. Per fare ciò, vai alla sezione “Driver di dispositivo” e da lì alla sottosezione “Blocca dispositivi”:

Troviamo il parametro “Cryptoloop Support”, accanto c'è la lettera “M” che significa che verrà aggiunto il supporto ai dispositivi di crittografia come modulo del kernel abilitabile con il comando modprobe. Dobbiamo includere il supporto per questa tecnologia direttamente nel kernel in modo che sia sempre supportata. Spostiamo il focus sul parametro “Cryptoloop Support” e premiamo la barra spaziatrice. La lettera “M” dovrebbe essere sostituita dal simbolo “*”, ciò significa che il supporto per questa tecnologia sarà “cablato” nel kernel. Fai attenzione, uno spazio significa che la tecnologia non sarà affatto supportata.

Premere il tasto "Tab" e fare clic sul pulsante "Esci" finché non viene richiesto di salvare le modifiche:

Rispondiamo “Sì”. Abbiamo completato con successo la configurazione!
Iniziamo a compilare. Per prima cosa eliminiamo i file rimanenti degli assembly precedenti; se stai avviando l'assembly per la prima volta, non è necessario eseguire questo comando: sudo make-kpkg clean

Iniziamo la compilazione:

Sudo make-kpkg -j4 --initrd --append-to-version=-mykernel kernel_image kernel_headers

J4: il flag indica quanti thread utilizzare per la compilazione. Ciò accelererà notevolmente la compilazione su processori multi-core. Il numero 4 qui indica 4 fili. Installa tanti thread quanti sono i core del tuo processore che il sistema “vede”.
-mykernel - un prefisso che indica che il kernel è stato compilato manualmente, puoi cambiarlo, in realtà non influisce su nulla.

Ora il processo di compilazione è iniziato. Potrebbero essere necessari da 10 minuti a diverse ore a seconda della potenza del tuo computer:

Installazione del kernel sul sistema

Al termine della compilazione, nella directory /usr/src dovrebbero apparire due file con l'estensione "deb". Sono pacchetti di installazione del nostro nuovo kernel e possono essere installati utilizzando l'utilità dpkg:

sudo dpkg -i linux-image-3.8.5-mykernel_3.8.5-mykernel-10.00.Custom_i386.deb
sudo dpkg -i linux-headers-3.8.5-mykernel_3.8.5-mykernel-10.00.Custom_i386.deb

Congratulazioni! Il kernel è installato, ora il sistema si avvierà con questo kernel per impostazione predefinita, ma se hai problemi con il nuovo kernel, puoi sempre avviare con quello vecchio selezionandolo nella schermata di avvio - Grub. Con questo concludo l’articolo di oggi e vi auguro successo, cari lettori!

Buon pomeriggio, lettori e ospiti. In continuazione dell'ultimo post sull'argomento, oggi voglio raccontarvi, come compilare e configurare il proprio kernel.

Dall'ultimo post lo sappiamo già kernel Linux ha capacità e supporto hardware minimi, ma se necessario possiamo espandere le capacità del kernel utilizzando moduli del kernel. Per cosa potresti averne bisogno? costruire o ricostruire il proprio kernel? Ad esempio, per abilitare/disabilitare eventuali nuove funzionalità, o aggiornando il vecchio kernel a uno più recente con supporto per nuove funzionalità o semplicemente per esperimenti come nel nostro esempio.

Ottenere i sorgenti del kernel e prepararsi per la configurazione

Esistono diversi modi ottenere le fonti:

    1. Ottieni gli archivi del codice originale da The Linux Kernel Archives, come archivi gzip o bzip2, usando il comando:
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.36.1.tar.bz2 cp linux-2.6.36.1.tar.bz2 /usr/src/
  1. Ottieni i sorgenti dai repository della distribuzione (ad esempio: , CentOS i386) sotto forma di pacchetto binario deb o rpm (src.rpm) con le patch del produttore della distribuzione. Ad esempio: kernel-server:/tmp/123# apt-cache search source | grep linux ketchup - utilità di aggiornamento per i sorgenti del kernel linux linux-patch-grsecurity2 - patch del kernel grsecurity - nuova versione principale upstream linux-wlan-ng-source - driver linux-wlan-ng linuxdoc-tools - converte il sorgente SGML LinuxDoc in altri formati linux-patch-lustre - Patch del kernel Linux per il filesystem Lustre libcorelinux-dev - Classi Foundation, Design Patterns, IPC e thread libcorelinux-doc - Classi Foundation, Design Patterns, IPC e thread libcorelinux-examples - Classi Foundation, Design Patterns, IPC e thread libcorelinuxc2a - Foundation Classes, Design Patterns, IPC e thread linux-patch-openswan - Supporto IPSEC del kernel Linux per Openswan selinux-policy-src - Sorgente della policy di riferimento SELinux per la personalizzazione user-mode-linux-doc - User-mode Linux (Documentazione) linux-patch-xenomai - Patch del kernel Linux per Xenomai linux-patch-debian-2.6.26 - Patch Debian alla versione 2.6.26 del kernel Linux linux-source-2.6.26 - Sorgente del kernel Linux per la versione 2.6 .26 con patch Debian linux-tree-2.6.26 - Albero dei sorgenti del kernel Linux per creare immagini del kernel Debian Server di stampa:~# apt-get install linux-source-2.6.26 Lettura degli elenchi dei pacchetti... Fatto Creazione dell'albero delle dipendenze Lettura informazioni sullo stato... Fatto Verranno installati i seguenti pacchetti aggiuntivi: binutils bzip2 cpp cpp-4.3 gcc gcc-4.3 libc6-dev libgmp3c2 libgomp1 libmpfr1ldbl linux-libc-dev make Pacchetti suggeriti: binutils-doc bzip2-doc cpp-doc gcc- 4.3 -locales gcc-multilib manpages-dev autoconf automake1.9 libtool flex bison gdb gcc-doc gcc-4.3-multilib libmudflap0-4.3-dev gcc-4.3-doc libgcc1-dbg libgomp1-dbg libmudflap0-dbg glibc-doc libncurses-dev ncurses -dev kernel-package libqt3-mt-dev make-doc NUOVI pacchetti che verranno installati: binutils bzip2 cpp cpp-4.3 gcc gcc-4.3 libc6-dev libgmp3c2 libgomp1 libmpfr1ldbl linux-libc-dev linux-source-2.6.26 make aggiornato 0, 13 nuovi pacchetti installati, 0 pacchetti contrassegnati per la rimozione e 5 pacchetti non aggiornati. È necessario scaricare archivi da 50,2 MB/63,2 MB. Dopo questa operazione, la quantità di spazio su disco occupato aumenterà di 89,4 MB. Vuoi continuare [S/n]? y Ricevuto:1 http://ftp.debian.org lenny/main linux-libc-dev 2.6.26-26 Ricevuto:2 http://ftp.debian.org lenny/main linux-source-2. 6.26 2.6.26-26 Ricevuti 50,2 MB in 1 minuto e 49 secondi (460 kB/s) Selezionando il pacchetto binutils precedentemente deselezionato. (Leggendo il database... ci sono attualmente 16621 file e directory installati.) Il pacchetto binutils è decompresso (dal file.../binutils_2.18.1~cvs20080103-7_i386.deb)... Selezionando il pacchetto bzip2 precedentemente deselezionato. ..... Il pacchetto make viene decompresso (dal file.../archives/make_3.81-5_i386.deb)... I trigger per man-db vengono elaborati... Il pacchetto binutils è configurato (2.18.1 ~cvs20080103-7) .. ..... Configurazione del pacchetto linux-source-2.6.26 (2.6.26-26) ... Configurazione del pacchetto make (3.81-5) ... kernel-server:~ # ls /usr/src/ linux -source-2.6.26.tar.bz2

Vorrei sottolinearlo nome dell'archivio di origine o pacchetto, assomiglia a questo: linux-source-2.6.26 O kernel-source-2.6.18. Dall'elenco del secondo esempio è chiaro che quando si installano i sorgenti dal repository, apt ci offre di installare il resto dei pacchetti allegati, senza i quali non è possibile compilare il kernel.

COSÌ. Dopo reperimento delle fonti utilizzando uno dei percorsi sopra indicati (copiando l'archivio (nel primo caso) e installando il pacchetto (nel secondo caso)), entriamo nella directory /usr/src/- un archivio con un nome simile a linux-source-2.6.26.tar.bz2. Successivamente, dobbiamo decomprimere l'archivio del melone con il comando: tar -xjflinux .tar.bz2. Di conseguenza, otteniamo un albero di directory dei sorgenti del kernel situato nella directory /usr/src/linux-2.6.36.1/. Si consiglia inoltre di creare un collegamento simbolico /usr/src/linux alla directory sopra:

Kernel-server:~# cd /usr/src/ kernel-server:/usr/src# ln -s linux-2.6.36.1 linux kernel-server:/usr/src# ls -l lin* lrwxrwxrwx 1 root src 14 dic 3 16:31 linux -> linux-2.6.36.1 -rw-r--r-- 1 root src 70236745 3 dic 15:57 linux-2.6.36.1.tar.bz2

Prima di tentare di creare e configurare, è necessario rivedere il file Cambiamenti, situato nella directory Documentazione. Contiene, tra l'altro, elenco dei pacchetti richiesti per compilare il kernel, indicando i numeri di versione. Assicurati che questi pacchetti siano installati (se il sorgente è stato installato utilizzando un gestore pacchetti, molto probabilmente i pacchetti necessari sono già installati).

L'albero della sottodirectory decompresso contiene il file Makefile. makefile contiene vari obiettivi di compilazione per configurare le opzioni del kernel, compilare il kernel e i suoi moduli, installare moduli e creare pacchetti RPM o deb. Le versioni più recenti dei sorgenti del kernel ti consentono di utilizzare make help per ottenere brevi informazioni per ogni scopo. Sui sistemi più vecchi era necessario consultare la documentazione o visualizzare il makefile. Di seguito è riportato parte dell'output di make help:

Kernel-server:/usr/src/linux-2.6.36.1# make help Pulizia degli obiettivi: clean - Rimuove la maggior parte dei file generati ma mantiene la configurazione e il supporto di compilazione sufficiente per creare moduli esterni mrproper - Rimuove tutti i file generati + configurazione + vari file di backup distclean - mrproper + rimuove il backup dell'editor e i file di patch Obiettivi di configurazione: config - Aggiorna la configurazione corrente utilizzando un programma orientato alla riga nconfig - Aggiorna la configurazione corrente utilizzando un programma basato su menu ncurses menuconfig - Aggiorna la configurazione corrente utilizzando un programma basato su menu xconfig - Aggiorna la configurazione corrente utilizzando un gconfig front-end basato su QT - Aggiorna la configurazione corrente utilizzando un front-end oldconfig basato su GTK - Aggiorna la configurazione corrente utilizzando un .config fornito come base .......

Inoltre, se per qualche motivo è necessario applicare una patch al kernel, è necessario scaricarla in anticipo e inserirla nella directory /usr/src. Se non hai bisogno di patchare il kernel, puoi tranquillamente passare alla configurazione. Il kernel è patchato come segue:

Server kernel:/usr/src/linux-2.6.36# gzip -cd ../patch-2.6.xx.gz | patch -p1 #o Server di stampa:/usr/src/linux-2.6.36# bzip2 -dc ../patch-2.6.xx.bz2 | toppa -p1

Configurazione

La configurazione corrente del kernel è memorizzata in un file .config. Questo file viene generato utilizzando uno degli obiettivi di configurazione (un obiettivo è, in altre parole, in un linguaggio semplice, il comando eseguito nel formato fare bersaglio):

Il target di configurazione utilizza un'interfaccia a riga di comando per rispondere a molte domande relative alla creazione o all'aggiornamento di un file .config. IMHO, rispetto agli obiettivi che utilizzano i menu, questa è una cosa molto scomoda.

cloneconfig

Copiando le impostazioni del kernel corrente nel file .config. Questo obiettivo è obsoleto ed è stato sostituito nei nuovi kernel. (utile per aggiungere nuove funzioni al kernel attuale)

Il target menuconfig utilizza un programma di menu basato su ncurses per creare o aggiornare un file .config. Devi solo rispondere alle domande relative agli articoli che desideri modificare. Questo approccio ha sostituito il vecchio target di configurazione. Eseguito in una finestra di terminale in remoto o localmente.

Bersaglio nconfig utilizza un programma basato su menu basato su ncurses per creare o aggiornare un file .config. Questa versione è basata su , ma ha un aspetto più moderno. Aggiunto dopo il rilascio del kernel Linux 2.6.35. Devi solo rispondere alle domande relative agli articoli che desideri modificare. Eseguito in una finestra di terminale in remoto o localmente.

Il target xconfig utilizza un sistema di menu grafico basato sul front-end QT utilizzato nel desktop KDE.

Il target gconfig utilizza un sistema di menu grafico basato sul front-end GTK utilizzato nel desktop GNOME.

oldconfig

Il target oldconfig consente di creare una configurazione utilizzando un file .config esistente, creato in precedenza o preso da un altro sistema. Ad esempio, puoi copiare il file di configurazione per il tuo sistema da /lib/modules/$(uname -r)/build/.config a /usr/src/linux. Dopo averlo fatto, puoi utilizzare uno degli obiettivi del menu di configurazione per apportare modifiche, se necessario. Inoltre, quando si esegue questo comando, se sono state aggiunte molte nuove funzionalità al nuovo kernel, verranno poste molte domande sull'impostazione dei nuovi parametri. (utile per aggiungere nuove funzioni al kernel attuale)

Ribadisco che entrando è possibile vedere l'elenco di tutti gli obiettivi del comando fare aiuto. Quindi iniziamo a configurare. Il più conveniente per la console, IMHO - .

Dopo aver eseguito il comando, ho ricevuto un messaggio terribile:

Kernel-server:/usr/src/linux-2.6.36.1# make menuconfig *** Impossibile trovare le librerie ncurses o i *** file header richiesti.

*** "make menuconfig" richiede le librerie ncurses. *** *** Installa ncurses (ncurses-devel) e riprova.*** make: *** Errore 1 make: *** Errore 2

Server kernel:/usr/src/linux-2.6.36.1# apt-cache search ncurses | grep ^lib libcunit1-ncurses-dev - Libreria di unit test per C (ncurses) -- file di sviluppo libcunit1-ncurses - Libreria di unit test per C (ncurses) libncurses-gst - collegamenti Ncurses per GNU Smalltalk libkaya-ncurses-dev - collegamenti Ncurses per kaya libkaya-ncursesw-dev - Collegamento Ncurses per kaya libcurses-perl - Interfaccia Curses per Perl libcurses-widgets-perl - Interfaccia widget Curses per Perl libruby-extras - un pacchetto di librerie aggiuntive per Ruby libruby1.8-extras - un pacchetto di librerie aggiuntive per Ruby 1.8 libtexttools-dev - Libreria Ada e C++ per scrivere applicazioni console libtexttools2.0.5 - Libreria Ada e C++ per scrivere applicazioni console libncurses-ruby1.8 - Ruby Estensione per la libreria C ncurses libncurses-ruby1.9 - Estensione ruby ​​per la libreria C ncurses libncurses-ruby - Estensione ruby ​​per la libreria C ncurses lib64ncurses5-dev - librerie per sviluppatori per ncurses (64 bit) lib64ncurses5 - librerie condivise per la gestione del terminale (64 bit) libncurses5- dbg - librerie di debug/profilazione per ncurses libncurses5-dev - librerie e documentazione per sviluppatori per ncurses libncursesw5-dbg - librerie di debug/profilazione per ncurses libncursesw5-dev - librerie per sviluppatori per ncursesw libcurses-ocaml-dev - collegamenti OCaml per libreria ncurses libcurses- ocaml - collegamenti OCaml per la libreria ncurses libggi-target-terminfo - interfaccia grafica generale destinazione visualizzazione TermInfo libncurses5 - librerie condivise per la gestione del terminale libncursesw5 - librerie per la gestione del terminale (supporto caratteri a doppio byte)

Questa riga: libncurses5-dev - librerie e documenti dello sviluppatore per ncurses mi sembrava necessario. Installiamo:

Kernel-server:/usr/src/linux-2.6.36.1# apt-get install libncurses5-dev Lettura degli elenchi dei pacchetti... Fatto Creazione dell'albero delle dipendenze Lettura delle informazioni sullo stato... Fatto NUOVI pacchetti da installare: libncurses5-dev 0 aggiornato , 1 nuovo pacchetto installato, 0 pacchetti contrassegnati per la rimozione e 5 pacchetti non aggiornati. Devi scaricare 1546kB di archivi. Dopo questa operazione la quantità di spazio su disco occupato aumenterà di 6599kB. Ricevuto:1 http://ftp.debian.org lenny/main libncurses5-dev 5.7+20081213-1 Ricevuto 1546kB in 4s (344kB/s) Selezionando il pacchetto libncurses5-dev precedentemente deselezionato. (Lettura del database... 18098 file e directory attualmente installati.) Disimballaggio del pacchetto libncurses5-dev (dal file.../libncurses5-dev_5.7+20081213-1_i386.deb)... Trigger di elaborazione per man-db .. Il pacchetto libncurses5-dev (5.7+20081213-1) è in fase di configurazione...

Fatto, proviamo :

Evviva! Vediamo il prezioso menu di configurazione del kernel. Di seguito sono riportate le varie opzioni che consentono di includere componenti nel kernel o creare moduli. Quando un'opzione è evidenziata, puoi utilizzare la barra spaziatrice per spostarti tra le opzioni possibili opzioni per questo componente. Per attivare l'opzione, fare clic su per disabilitare -- N per creare un modulo, se possibile, fare clic su M. Esci dal menu: Esc Esc.

  • [*] Il componente verrà incluso nel kernel.
  • Il componente non sarà incluso nel kernel.
  • [M] Il componente verrà progettato come modulo.
  • < >Il componente non sarà incluso nel kernel, ma potrà essere impacchettato come modulo.

Di seguito la descrizione delle principali sezioni del menù di configurazione (verranno aggiornate nel tempo):

Capitolo Parametro Descrizione
Configurazione generale Questa sezione ti permette di aggiungere una stringa di identificazione al tuo kernel, così come un numero di attributi che non sono rilevanti per nessuna sezione ma che dovrebbero comunque essere descritti.
Abilita il supporto del modulo caricabile Questa sezione contiene opzioni che determinano se il tuo kernel supporterà i moduli e se verranno caricati e scaricati automaticamente. L'opzione "Abilita supporto modulo caricabile" dovrebbe essere abilitata.
Tipo di processore e caratteristiche Questa sezione contiene le opzioni di configurazione specifiche per questo tipo di processore. Qui puoi selezionare il processore e la famiglia di processori che saranno supportati dal tuo kernel. Puoi abilitare o disabilitare il supporto del kernel per varie funzionalità fornite da un determinato processore. Assicurati di abilitare il supporto multielaborazione simmetrica se sul tuo sistema è installato più di un processore o se il processore supporta la tecnologia hyperthreading. Inoltre, per ottenere prestazioni grafiche migliori nei sistemi con schede video AGP o PCI, è necessario abilitare il supporto MTRR.
Opzioni di gestione dell'energia Questa sezione contiene le opzioni relative alla gestione dell'alimentazione. Sono particolarmente importanti per i laptop. Oltre a monitorare lo stato dell'alimentazione, puoi trovare strumenti per controllare e monitorare parametri come la temperatura o lo stato della ventola di raffreddamento.
Opzioni bus (PCI ecc.) Questa sezione contiene le opzioni per i bus del computer supportati dal sistema, come PCI, PCI Express e PC Card. Qui è possibile abilitare il supporto per il file system /proc/pci, che può essere utilizzato insieme al comando lspci comunemente utilizzato.
Formati di file eseguibili/Emulazioni Questa sezione contiene le opzioni relative al supporto per vari formati di file binari. Il supporto "ELF binario" dovrebbe essere abilitato. Inoltre, puoi abilitare il supporto per i binari DOS per eseguirli sotto DOSEMU, così come altri binari supportati da wrapper appropriati, come Java™, Python, Emacs-Lisp, ecc. Infine, per i sistemi a 64 bit che supportano 32- bit, potresti voler abilitare il supporto per le applicazioni a 32 bit.
Rete La sezione riguardante le impostazioni di rete è piuttosto ampia. Qui è possibile abilitare il supporto di base per socket, rete TCP/IP, filtraggio, routing e bridging di pacchetti di rete, nonché il supporto per vari protocolli come IPV6, IPX, Appletalk e X.25. Inoltre, è possibile abilitare il supporto wireless, a infrarossi e radioamatoriale.
Driver di dispositivo Anche questa sezione è molto ampia. Qui puoi abilitare il supporto gran numero dispositivi hardware, incluse unità IDE/ATAPI o SCSI o unità flash. Abilita DMA per i tuoi dispositivi IDE; altrimenti funzioneranno in una modalità PIO più lenta. Se si desidera supportare più dispositivi, come RAID o LVM, è necessario abilitare anche le opzioni corrispondenti. Qui è anche possibile abilitare il supporto della porta parallela per funzionare con la stampante tramite questa interfaccia. Qui puoi configurare un'ampia gamma di dispositivi di rete supportati per diversi protocolli di rete, che abbiamo configurato in precedenza. Inoltre, qui troverai opzioni per supportare dispositivi di acquisizione audio e video, dispositivi USB e IEEE 1384 (Firewire), nonché vari tipi di dispositivi di monitoraggio hardware. Nella sezione Dispositivi carattere, potresti voler abilitare il supporto per la stampa della porta parallela e il supporto per il rendering diretto.
Driver del firmware Questa sezione contiene diverse opzioni relative all'installazione e all'aggiornamento del BIOS, come l'utilizzo delle funzionalità Dell System Management su determinati sistemi Dell.
File system Questa sezione serve per configurare i filesystem che vuoi che il tuo kernel supporti, compilati come moduli o meno. Qui puoi trovare anche file system per dispositivi a disco rimovibili (dischi floppy, CD e DVD), nonché file system di rete come NFS, SMB o CIFS. Supporto vari tipi In questa sezione si trovano anche le sezioni relative al supporto della lingua nativa e alle codifiche nazionali.
Hacking del kernel Questa sezione consente di abilitare la modalità debug del kernel e selezionare quali funzionalità aggiuntive saranno abilitate.
Opzioni di sicurezza Questa sezione riguarda la configurazione delle opzioni di sicurezza e l'abilitazione e la configurazione di SELinux (Security Enhanced Linux).
Opzioni crittografiche In questa sezione puoi configurare il supporto per vari algoritmi di crittografia, come MD4, DES e SHA256.
Routine della biblioteca Qui puoi specificare un numero di algoritmi di checksum (CRC) da includere nel kernel o compilare come moduli.

Ho portato molto breve descrizione sezioni di configurazione del kernel. Nello specifico sulla scelta delle impostazioni probabilmente farò un post a parte, perché quella attuale è cresciuta fino a raggiungere proporzioni enormi. Il massimo migliore descrizione Ho trovato le impostazioni make menuconfig qui nel Manuale Gentoo. Per conto mio, dirò che sarebbe logico eseguire make oldconfig (copiando così l'attuale .config del sistema operativo installato), quindi eseguire make menuconfig e disabilitare tutte le funzioni non necessarie (diciamo che ho disabilitato il supporto per WiFi, jfs file system di cui non ho bisogno, ecc.). E in generale, sono un sostenitore dell'opinione che l'ottimizzazione del kernel sia necessaria in casi molto estremi, quando le prestazioni del sistema operativo sono limitate dalle capacità dell'hardware. Di conseguenza, riducendo le dimensioni del kernel (disabilitando i moduli non necessari, includendoli nel kernel + disabilitando le funzionalità non necessarie), è possibile aumentare le prestazioni dell'1-2%. Ma sui server moderni, penso che questo (riconfigurazione del kernel) non sia particolarmente rilevante.

Assemblea del kernel

Ora che abbiamo configurato il kernel, siamo pronti per compilarlo. Se non sai qual è lo stato dell'albero di compilazione, esegui make clean prima di configurare un nuovo kernel. Per una pulizia più completa, esegui make mrproper (questo rimuoverà il file .config, così come alcuni altri file utilizzati durante il processo di compilazione).

Durante la prova di configurazione è consigliabile dare al nuovo kernel un nome speciale che vi permetta di identificarlo facilmente. Per fare ciò, è necessario impostare il valore Versione locale e attivare l'opzione Aggiungi automaticamente le informazioni sulla versione alla stringa della versione nella riga corrispondente della sezione Configurazione generale.

In linea di principio, tuttavia, i privilegi di root non sono richiesti per creare il kernel installando un nuovo kernel questi poteri sono necessari.

Per iniziare a compilare il kernel 2.6, è necessario eseguire make .

Per iniziare a costruire il kernel 2.4, devi eseguire 3 comandi:
fare dip
crea bzImage
realizzare moduli
Il primo crea i file di dipendenze necessari. Il secondo assembla il nucleo. E l'ultimo assembla i moduli.

Installazione di un nuovo kernel

Dopo aver finito di compilare il kernel, è necessario installarlo. Prima dell'installazione, è necessario eseguire make module_install per installare i moduli del kernel in una nuova sottodirectory /lib/modules. Dopo aver installato i moduli, è necessario eseguire make install per installare il nuovo kernel e il disco RAM iniziale nella directory /boot e aggiornare la configurazione del bootloader.

Vorrei attirare la vostra attenzione sul fatto che durante il processo di assemblaggio viene creato automaticamente il disco RAM di avvio necessario (disco RAM iniziale o initrd). Se devi crearlo manualmente, puoi farlo utilizzando il comando mkinitrd.

Dopo aver eseguito make install, il file di configurazione del bootloader dovrebbe essere aggiornato. Ma per qualche motivo è stato aggiornato per me dopo il comando update-grub.

Concluderò con questo. Si è rivelato un articolo molto lungo. Cercherò di rafforzarlo nel prossimo futuro.