logo kernelpkg

KERNELPKG Tool per Slackware (11.0 o maggiore) by submax

[compatibile anche con derivate come zenwalk o port come slamd64, slackintosh...]
[screenshot 1] [screenshot 2]
IT
EN


Kernelpkg è un tool che compila e pacchettizza in tgz il kernel linux (2.4.x, 2.6.x o 3.x.y). Il pacchetto generato, viene chiamato "kernel-image", ed è composto da kernel e moduli (a differenza dei pacchetti originali slackware in cui sono separati).
Il pacchetto prevede anche l'aggiornamento automatico del bootloader del pc sul quale viene installato.
Il tool offre la possibilità di creare, in aggiunta, il pacchetto degli headers (file *.h necessari per compilare i programmi) e anche il pacchetto sorgenti (per compilare moduli esterni).
In conclusione, ci offre, la possibilità  di avere dei pacchetti portabili oltre ad ottenere un sistema ordinato e pulito. La portabilità permette di compilare un kernel ottimizzato per hardware obsoleto, sfruttando la potenza di calcolo dei pc più recenti, risparmiando molto tempo. Per gli utenti più avanzati che vogliono capire come funziona posso dire che kernelpkg è un pratica uno slackbuild molto evoluto, che all'inizio del suo sviluppo ha avuto come base si partenza di slackbuild per il kernel del nostro mitico Pat (fondatore e maintainer di slackware). Nel file /usr/doc/kernelpkg-0.9.6/thanks.txt potete vedere i maggiori contributi al progetto.

SCARICA KERNELPKG v0.9.6 (compreso di sorgenti)
n° di download 305, dimensione 204 KB


PACCHETTI KERNEL LINUX 2.6.35.10 PER SLACKWARE 13.1 generici di esempio* generati dal tool:

*note: kernel su base config-huge di Pat con detect tipo di bootloader, con supporto SMP e senza supporto initrd (tutti i moduli dei chip e fs sono built-in), Preemptible Kernel (Low-Latency Desktop), ottimizzato per i686:

kernel-image; kernel-headers; kernel-source; config


PICCOLA GUIDA:

(i comandi sono solo esempi, è solo per capire come funziona poi personalizzate come volete la procedura)

0) installare il tool kernelpkg e fare tutti i passi da root, ovviamente ;)
tar -xvzf kernelpkg-0.9.6.tar.gz
cd kernelpkg-0.9.6
upgradepkg --install-new kernelpkg-0.9.6-noarch-1sm.tgz

1) scaricare il tarball dell'ultimo kernel 2.6 o 2.4 in /tmp (il 2.4 non è più supportato da slackware 12.0 in poi in quanto le nuove glibc non lo supportano, kernelpkg mantiene però la compatibilità per la compilazione del 2.4 per esempio su slackware 11.0, l'ultima versione slackware a supportarlo)
cd /tmp
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.24.7.tar.bz2

2) scompattare i sorgenti con
tar -xvjf linux-2.6.24.7.tar.bz2

3) [IMP] creare il link "linux" in /usr/src ai sorgenti del kernel
rm -rf /usr/src/linux
ln -sf /tmp/linux-2.6.24.7 /usr/src/linux
N.B.: questo link è importante in quanto serve a kernelpkg per "l'aggancio" alla directory dei sorgenti da compilare

4) scaricare il config originale slackware del kernel linux da un mirror di slackware o dal cd/dvd di slackware
(link: ftp//ftp.slackware.com/pub/slackware/slackware-current/source/k/config-generic-2.6.24.7) oppure un'altro metodo alternativo è prendere la configurazione del kernel attualmente avviato.

5) copiarlo in /usr/src/linux
avendo il config per la versione del kernel che si và a compilare:
cp config-generic-2.6.24.7 /usr/src/linux/.config
oppure copiando il config del kernel attuale
zcat /proc/config.gz > /usr/src/linux/.config

6) adattare la config alla nuova e più recente versione del kernel linux con
cd /usr/src/linux
make oldconfig

7) rifinire la config per esempio con
make menuconfig
IMP: mettere il chip del controller ide/sata della scheda madre e il tipo di filesystem della partizione di root, BUILT-IN; oppure usare l'initrd, ma lo sconsiglio, io lo odio, ovviamente se nel vostro caso è necessario per qualsiasi motivo usatelo.

8) ora, è arrivato il momento di usare il mio tool, semplicemente digitando (da qualsiasi percorso):
kernelpkg
oppure se volete tutti i pacchetti
kernelpkg --also-headers --also-source
oppure se usate bootloader differenti da lilo, per conservare l'aggiunta automatica della nuova voce, potete aggiungere
kernelpkg --also-headers --also-source --bootloader detect
se volete usare initrd (attenzione i moduli dipendono dalla configurazione del pc)
kernelpkg --also-headers --also-source --bootloader detect --initrd sis5513:pata_sis:ext3
(per ulteriori informazioni "man kernelpkg" o "kernelpkg --help" per un piccolo riepilogo delle opzioni)

9) dopo un pò di tempo necessario per la compilazione e la costruzione del pacchetto
vi ritroverete il tgz, kernel-image*.tgz, sotto /usr/src

10) Ora installiamo il kernel che è il pacchetto kernel-image, gli altri pacchetti sono opzionali.
installpkg /usr/src/kernel-image*.tgz
(aggiungerà  automaticamente la nuova voce al bootloader lilo)
IMP: meglio NON usare mai upgradepkg perchè richiamando al suo interno removepkg, rimuoverà  il pacchetto e quindi i file del vecchio kernel, mentre invece è sempre meglio mantenere e opzionalmente rimuovere in un secondo momento; inoltre potrebbe anche essere il kernel che state utilizzando.

11) avete finito!!! (probabilmente dovrete rifinire la configurazione di lilo per le vostre esigenze)


è buona norma, non aggiornare mai gli headers quando aggiornate il kernel perchè per evitare problemi conviene sempre, tenere gli headers del kernel con cui sono state compilate le glibc (cioè gli headers di Pat), anche se questi sono di una versione meno recente del kernel in uso. In sostanza è meglio non installare mai il pacchetto headers ma lasciare quello di Pat perchè corrisponde alla versione del kernel con cui le glibc sono compilate.

Links utili:
* topic inizio progetto e testing
* topic progetto
HOWTO utili per la ricompilazione "classica"
* compilazione classica kernel linux 2.4.x in italiano
* compilazione classica kernel linux 2.6.x in italiano
* la configurazione, menuconfig
* compilazione
* cenni sulla compilazione
* documentazione kernel 2.6 gentoo
* esempio configurazione kernel
* ricerca kernel drivers