Scarichiamo l'ultimo kernel vanilla con il comando sottostante, il portage scompatterà i sorgenti del kernel dentro /usr/src/linux-x.y.z.t/ (dove x.y.z.t rappresenta la versione del vostro kernel), e creerà il link simbolico /usr/src/linux che punta ad esso:
# emerge vanilla-sources |
A questo punto dobbiamo mettere la patch squashfs al nostro kernel. Squashfs verrà spiegato nel dettaglio più avanti. Per ora diciamo solo che si tratta di un filesystem read-only compresso, ecco cosa dobbiamo fare per patchare il nostro kernel ed installare il tool mksquashfs (che ci consentirà di creare un filesystem squashed):
Ottenere la patch in formato tar.gz dal sito di squashfs http://squashfs.sourceforge.net/, suppiamo di scaricare il tar.gz su /usr/local/src, e di scompattare il tar.gz.
Applichiamo la patch:
# cd /usr/local/src/squashfs
# cp linux-2.x.y/squashfs-patch /usr/src/linux
# cd /usr/src/linux
# patch -p1 < squashfs-patch
# make distclean
# make mrproper
|
Compiliamo il tool mksquashfs:
# cd /usr/local/src/squashfs/squashfs-tools
# make
# cp mksquashfs /usr/sbin/
|
Configuriamo il kernel, se avete già esperienza con il kernel e la sua configurazione non dovreste avere grossi problemi. Uniche linee guida da seguire sono quelli di compilare tutte le feature come built-in, disattivare totalmente il supporto per i kernel moduels, compilare strettamente le cose che vi servono in relazione con l'hardware che utilizzate, quindi occhio al tipo di CPU, al chipset della scheda di rete, del watchdog, etc, etc:
# make menuconfig |
Quando avete finito di configurare il vostro kernel (non dimenticate il supporto squashfs built-in!) procedete con la compilazione, non dimenticate di fare un backup del vostro file .config, ad es. così:
# cp .config /root/dot-config-linux-kernel-x.y.z.t-BACKUP |
Se possedete un pc104 Vortex86 (ad es. io ho lavorato sul sistema visionabile alla url http://www.icop.com.tw/products_detail.asp?ProductID=70 ) potete utilizzare il mio file di configurazione che rendero' presto disponibile online.
Compiliamo il kernel, ed installiamolo nella directory /embedded_rootfs/boot/:
# make # ROOT=/embedded_rootfs make modules_install # cp /usr/src/linux/arch/i386/boot/bzImage /embedded_rootfs/boot/linux-x.y.z.t |
Configuriamo il file /embedded_rootfs/etc/lilo.conf così:
# sostiture hda con il proprio dispositivo # hda normalmente funziona con i disk on chip ed i disk on module boot = /dev/hda vga = normal image = /boot/linux-x.y.z.t root = /dev/hdaX # dove X e' la partizione della root da montare # per ora possiamo lasciare hdaX, modificheremo il valore quando sposteremo # l'embedded_rootfs sul nostro dispositivo. label = embedded |