"migliorare" un kernel custom, non ripartendo da zero?

Pubblicità

mark_1

Utente Èlite
Messaggi
1,515
Reazioni
167
Punteggio
59
Sempre io...
Volevo sapere se fosse possibile creare un kernel partendo però da uno gia fatto...
ESEMPIO:
ho gia fatto il mio kernel, che funziona bene, ora, voglio togliere il supporto a tutti i filesystem che non uso.
Devo per forza ricompilare da capo (e quindi rifare tutto il lavoro gia fatto sul kernel prima) oppure esiste un metodo per "salvare" le mie impostazioni per poi ripartire, usando xconfig o chi per lui, da li'???
 
se hai il tuo config custom, ma make menuconfig lo puoi caricare.
questo ti carica le tue configurazioni personalizzate nel nuovo kernel, devi però ricompilarlo.
lui (il nuovo kernel), in questo momento ha solo le istruzioni con il tuo config personalizzato, ma i moduli sono comunque da copilare.

edit
vuoi ulteriolmente rifinire il tuo kernel personalizzato e già compilato?
carica il suo config e poi vai di rifinitura. la compilazione durerà pochi secondi.
se aggiungi moduli, qualche minuto, se ne toglio pochi secondi: deve solo ricreare il nuovo bzImage in /arch/i386/boot
 
Ultima modifica da un moderatore:
grazie kernele!
Ma il config lo crea da solo vero?
Io adesso ne ho 2 nella cartella in cui ho il .tar.xz del kernel, uno è config e uno è config.x86_x84.
Come lo carico?
 
Prendi come riferimento la bella guida di Centoventicinque: Guida pratica alla compilazione del Kernel
E, visto che usi Arch, anche la guida alla compilazione del kernel con metodo tradizionale su Arch: https://wiki.archlinux.org/index.php/Kernels/Compilation/Traditional_(Italiano)

Secondo la guida di Arch il file con la configurazione del kernel in esecuzione lo ottieni così:
Codice:
$ zcat /proc/config.gz > .config
così a quel punto quando dai il menuconfig (o xconfig...) parti dal tuo kernel e non dalle impostazioni di default di Arch
 
Ultima modifica:
premetto: io i kernel li so compilare solo partendo dai sorgenti *vanilla, con conosco il metodo arch.
il config lo crea make menuconfig dopo che hai messo i tuoi settaggi. resterà all'interno dei sorgenti finché non si cancellano

*cd /usr/src
wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.3.2.tar.bz2
tar -xjvf *.tar.bz
cd linux-3.3.2
make menuconfig
eventuali patch
make && make modules_install
cp syste.map /boot/system-map.3.3.2
cd arch/i386/boot
cp bzImage /boot/linux-3.2

aggiungo il nuovo kernel a grub.

tengo sempre sorgenti, insieme a questi, scarico anche i driver ¹nvidia da compilare nel nuovo kernel.
¹questi compilano solo se trovano gli headers e sorgenti del kernel in uso, e compilati con le stesse GCC

EDIT
se scopro quali programmi mi servono per compilare su deepin/ubuntu, faccio un video con la compilazione alla vecchia maniera.

spammo
testo la cpu in compilazione
testo gtk-recordmydesktop
riempo il mio canale su youtube
e faccio qualcosa... che non ho un azz da fare.
 
Ultima modifica da un moderatore:
grazie a tutti!!!!
dopo vedo...dovrei studiare ora...........uffa....

edit:
ah, ma centoventicinque ha finito la guida??
Non mi ero mica accorto! perfetto!

Se passi di qui: grazie centoventicinque!
 
se apri il PKGBUILD trovi alcune righe dedicate al riconoscimento dell'architettura equindi config da usare , sceltro tra config e config.x86_64

quando avrai aperto la configurazione quello che vedi è appunto uno di quei 2 file , a seconda dell'architettura .

configura cio che serve poi spostati su " save en alternate .config " , inserisci tutto il percordo di dove salvarlo ed il nome corretto in base alla tua architetura .

avvia la compilazione e bona, se vuoi ricompilare perchè esce una versione nuova o quello che preferisci basta modificare il PKGBUILD cambiano PKGVER
 
rieccomi:
mentre studiavo calcolo :look: ho trovato, leggendo la wiki di arch per la compilazione "normale", un comando:
Codice:
$ make localmodconfig
il quale, per quanto ho capito, seleziona da solo tutti i moduli che sono in uso dal kernel che è in esecuzione al momento della compilazione.
Ora, avete mai provato? E' effettivamente il metodo migliore per cominciare a creare un kernel minimale?

Nel caso non lo aveste mai visto, lascio questo trafiletto che spiega bene.
al punto 1.8

EDIT: non so se avete notato, ma ho scritto esattamente 24h dopo il post di centoventicinque...che figo!
 
rieccomi:
mentre studiavo calcolo :look: ho trovato, leggendo la wiki di arch per la compilazione "normale", un comando:
Codice:
$ make localmodconfig
il quale, per quanto ho capito, seleziona da solo tutti i moduli che sono in uso dal kernel che è in esecuzione al momento della compilazione.
Fiiiico! Mai provato, non conoscevo quel comando. Prova e facci sapere ;)
 
si ico, ma stasera....ora devo studiare per lunedì....
forse...o forse compilo:sisi:...
comunque ho 2 kernel per fare il paragone.
quello normale di arch e il mio (fatto credo abbastanza bene, ma 3 o 4 volte mi son fidato del -if you're unsecure, say N-).
Cosa comparo?
tempi di boot
grandezza del kernel
.....poi? Consigli thanks!

EDIT:
allora, localmodconfig sembra funzionare, ci vogliono solo 3-4 secondi per fargli fare (immagino) tutt il lavoro che si fa a mano con xconfig o menuconfig, la compilazione (sembra) essere effettivamente piu' veloce, se prima ci mettevo un'ora e qualcosa, con localmenuconfig c'ho messo 40 minuti scarsi!
Il problema sorge nel momento in cui faccio "make modules_install" che dovrebbe creare una cartella dentro /lib/modules...ma fa tutto meno che quello, e quindi poi non posso creare initramfs, dato che non c'è la cartella dei moduli dentro /modules...
boh...stasera vado via, domani di sicuro riprovo!

Stay tuned o postate soluzioni!
 
Ultima modifica:
inserisi la riga nel pkgbuild.. e magaeri fa tutto da se :)
Grande!
ho aggiunto a mano "make localmodconfig" e il pkgbuild l'ha passato senza problemi...
sta in compilazione...

UPPETTINO:
tutto filato liscio, il kernel sembra funzionare, solo che non funzionano i dispositivi usb...forse perchè mi son dimenticato di attaccare un qualcosa usb durante la fase di riconoscimento dei moduli??:look:

comunque, non ci sono questi grandi miglioramenti...consumo di cpu e ram sempre quello, una lieve diminuzione del tempo di boot (2-3 secondi circa al massimo)

Mentre installavo gli .xz dei kernel ho visto una effettiva diminuzione della dimensione del pacchetto,
Es: il mio pesava sui 40mb, quello fatto con localmodconfig pesava 21.2mb.

Però ho trovato una cosa che mi sembra "strana"
il kernel standard ha l'INITRAMFS che pesa 2,8MB e il VMLINUZ di 3,3MB
il kernel fatto da me ha l'INITRAMFS da 2,8MB e il VMLINUZ da 3,4MB (pero' ho levato un sacco di cose, come tutte le lingue, i fs che non uso....)
il kernel fatto con localmenuconfig ha l'INITRAMFS da 4,3MB!! e il VMLINUZ da 3,2MB...

cosa significa?
 
Ultima modifica:
Pubblicità
Pubblicità
Indietro
Top