lunedì 29 novembre 2010

archlinux: compilazione kernel 2.6.36.1



Sul mio piccolo netbook con scheda video nvidia ion, processore atom ho deciso di compilarmi un kernel customizzato, il sistema operativo che equipaggia il portatile è archlinux per la compilazione ho scelto il metodo classico.

Se volete pure voi cimentarvi nell'impresa seguite questa guida, scaricate i sorgenti del kernel dal sito www.kernel.org


wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.36.1.tar.bz2

scompattate i sorgenti all'interno della vostra home.

tar jxvf linux-2.6.36.1.tar.bz2

entrate dentro la nuova cartella.

cd linux-2.6.36.1

iniziate la configurazione, scrivete:

make menuconfig

nella sezione general setup in local version scrivete -ARCH in modo che la compilazione del kernel dentro /lib/modules non sovrascrivi il kernel precedente.
[*] Prompt for development and/or incomplete code/drivers
() Cross-compiler tool prefix
(-ARCH) Local version - append to kernel release
in linea di massima ho proseguito lasciando tutto di default tranne che per il processore che ho scelto atom.



finita la vostra configurazione salvate i risultati all'interno del file .config cliccate su Save an Alternate Configuration File

per uscire cliccate su exit.

date i comandi per la compilazione in questo ordine:

make dep bzImage

make modules

installate i moduli del kernel all'interno della cartella /lib/modules/

sudo make modules_install

il comando dovrebbe darvi alla fine questo risultato.

DEPMOD 2.6.36.1-ARCH


copiate l'immagine bzImage dentro la cartella /boot cambiandogli il nome in vmlinuz2631-ARCH.

sudo cp -fr arch/x86/boot/bzImage /boot/vmlinuz26361-ARCH

utilizzate il comando mkinitcpio per creare l'immagine initramfs del kernel, come nome per creare l'immagine date questo 2.6.36.1-ARCH questa dicitura si è ottenuta dal risultato finale del comando sudo make modules_install.

sudo mkinitcpio -k 2.6.36.1-ARCH -g /boot/kernel26361-ARCH.img


modificate il file menu.lst inserendo le due nuove voci.

sudo nano /boot/grub/menu.lst


title arch 2.6.36.1-ricompilato
root (hd0,0)
kernel /boot/vmlinuz26361-ARCH root=/dev/sda1 ro
initrd /boot/kernel26361-ARCH.img

# (0) Arch Linux
title Arch Linux
root (hd0,0)
kernel /boot/vmlinuz26 root=/dev/sda1 ro
initrd /boot/kernel26.img

# (1) Arch Linux
title Arch Linux Fallback
root (hd0,0)
kernel /boot/vmlinuz26 root=/dev/sda1 ro
initrd /boot/kernel26-fallback.img

# (2) Windows
#title Windows
#rootnoverify (hd0,0)
#makeactive
#chainloader +1

benissimo abbiamo finito potete riavviare il pc, vi ricordo che aggiornando il kernel i moduli caricati da un precedente kernel devono essere ricompilati.

Se utilizzate i driver nvidia al riavvio vi troverete con schermata nera, bisognerà ricompilare i driver con il nuovo kernel customizzato.

per installare i driver servitevi di abs.

da terminale scrivete:

sudo pacman -S abs
sudo abs

createvi all'interno della vostra home un ambiente idoneo per ricompilarvi i driver.

cd
mkdir -p devel/abs/


copiate la cartella nvidia ed il suo contenuto da /var/abs/extra/nvidia nella cartella abs che avete creato all'interno della vostra home.

cp -fr /var/abs/extra/nvidia $HOME/devel/abs/

entrate dentro la cartella nvidia è cambiate i file PKGBUILD ed nvidia.install modificando le voci che puntano ai sorgenti del kernel.

nano PKGBUILD


# $Id: PKGBUILD 98622 2010-11-11 19:49:00Z ibiru $
# Maintainer : Thomas Baechler

pkgname=nvidia
pkgver=260.19.21
_kernver='2.6.36.1-ARCH'
pkgrel=2
pkgdesc="NVIDIA drivers for kernel26."
arch=('i686' 'x86_64')
url="http://www.nvidia.com/"
depends=('kernel26>=2.6.36' 'kernel26<2.6.37' utils="${pkgver}">
makedepends=('kernel26-headers>=2.6.36' 'kernel26-headers<2.6.37')
conflicts=('nvidia-96xx' 'nvidia-173xx')
license=('custom')
install=nvidia.install

if [ "$CARCH" = "i686" ]; then
_arch='x86'
_pkg="NVIDIA-Linux-${_arch}-${pkgver}"
source=("ftp://download.nvidia.com/XFree86/Linux-${_arch}/${pkgver}/${_pkg}.run")
md5sums=('2ec917f51e752802646920e9bcd747e7')
elif [ "$CARCH" = "x86_64" ]; then
_arch='x86_64'
_pkg="NVIDIA-Linux-${_arch}-${pkgver}-no-compat32"
source=("ftp://download.nvidia.com/XFree86/Linux-${_arch}/${pkgver}/${_pkg}.run")
md5sums=('9db612fb5679249627d52bfff0e16f4f')
fi

build() {
cd $srcdir
sh ${_pkg}.run --extract-only
cd ${_pkg}/kernel
make SYSSRC=/lib/modules/${_kernver}/build module
}

package() {
install -D -m644 $srcdir/${_pkg}/kernel/nvidia.ko \
$pkgdir/lib/modules/${_kernver}/kernel/drivers/video/nvidia.ko
install -d -m755 $pkgdir/etc/modprobe.d
echo "blacklist nouveau" >> $pkgdir/etc/modprobe.d/nouveau_blacklist.conf
sed -i -e "s/KERNEL_VERSION='.*'/KERNEL_VERSION='${_kernver}'/" $startdir/nvidia.install
}

nano nvidia.install


post_install() {
KERNEL_VERSION='2.6.36.1-ARCH'
depmod $KERNEL_VERSION
}

post_upgrade() {
post_install
rmmod nvidia || echo 'In order to use the new nvidia module, exit Xserver and unload it manually.'
}

post_remove() {
KERNEL_VERSION='2.6.36.1-ARCH'
depmod $KERNEL_VERSION
}

salvate i file, compilate scrivendo:

makepkg

alla fine vi troverete con il pacchetto nvidia pronto per essere installato con pacman.

sudo pacman -U nvidia-260.19.21-2-i686.pkg.tar.xz

riavviate il pc il modulo nvidia verrà carricato senza problema.


Nessun commento: