Posts Tagged ‘kernel’

grep -r fuck linux-source-2.6.24 : /* Am I fucking pedantic or what? */

Sunday, October 19th, 2008

Hace unos meses escribí un post que resultó ser bastante concurrido acerca de como compilar el kernel en Ubuntu. Se me olvidó entonces añadir un paso que, aunque no es obligatorio, es bastante recomendable antes de proceder a la compilación (por motivos religiosos y tal): Justo despues de:

sudo apt-get install linux-source
cd /usr/src
tar xjf linux-source-2.6.xx.tar.bz2
#sustituir xx por la version de tu kernel (que hay que decirlo todo (dios mio))

Hay que escribir:

grep -r fuck linux-source-2.6.xx

Y deleitarse un rato con la lectura. Se recomienda al lector probar también con otras palabras malsonantes. Aquí tenéis un ejemplo del resultado:

linux-source-2.6.24/net/ipv4/netfilter/nf_nat_snmp_basic.c: * (And this is the fucking ‘basic’ method).
linux-source-2.6.24/net/netfilter/nf_queue.c:        /* James M doesn’t say fuck enough. */
linux-source-2.6.24/Documentation/DocBook/kernel-locking.tmpl:       If you don’t see why, please stay the fuck away from my code.
linux-source-2.6.24/arch/mips/sgi-ip22/ip22-setup.c:     * fucking with the memory controller because it needs to know the
linux-source-2.6.24/arch/mips/pci/ops-bridge.c:     * IOC3 is fucked fucked beyond believe …  Don’t even give the
linux-source-2.6.24/arch/mips/pci/ops-bridge.c:     * IOC3 is fucked fucked beyond believe …  Don’t even give the
linux-source-2.6.24/arch/mips/pci/ops-bridge.c:     * IOC3 is fucked fucked beyond believe …  Don’t try to access
linux-source-2.6.24/arch/mips/pci/ops-bridge.c:     * IOC3 is fucked fucked beyond believe …  Don’t even give the
linux-source-2.6.24/arch/mips/pci/ops-bridge.c:     * IOC3 is fucked fucked beyond believe …  Don’t even give the
linux-source-2.6.24/arch/mips/pci/ops-bridge.c:     * IOC3 is fucked fucked beyond believe …  Don’t try to access
linux-source-2.6.24/arch/mips/pci/ops-bridge.c:     * IOC3 is fucked fucked beyond believe …  Don’t even give the
linux-source-2.6.24/arch/mips/pci/ops-bridge.c:     * IOC3 is fucked fucked beyond believe …  Don’t even give the
linux-source-2.6.24/arch/mips/pci/ops-bridge.c:     * IOC3 is fucked fucked beyond believe …  Don’t try to access
linux-source-2.6.24/arch/mips/pci/ops-bridge.c:     * IOC3 is fucked fucked beyond believe …  Don’t even give the
linux-source-2.6.24/arch/mips/pci/ops-bridge.c:     * IOC3 is fucked fucked beyond believe …  Don’t even give the
linux-source-2.6.24/arch/mips/pci/ops-bridge.c:     * IOC3 is fucked fucked beyond believe …  Don’t try to access
linux-source-2.6.24/arch/mips/kernel/irixioctl.c: * irixioctl.c: A fucking mess…
linux-source-2.6.24/arch/mips/kernel/irixelf.c:#if 0 /* XXX No fucking way dude… */
linux-source-2.6.24/arch/x86/kernel/cpu/cpufreq/powernow-k7.c: * Some Athlon laptops have really fucked PST tables.
linux-source-2.6.24/arch/x86/kernel/cpu/mtrr/generic.c:/*  Some BIOS’s are fucked and don’t set all MTRRs the same!  */
linux-source-2.6.24/arch/sparc/kernel/process.c:    /* fuck me plenty */
linux-source-2.6.24/arch/sparc/kernel/sunos_ioctl.c:    /* Binary compatibility is good American knowhow fuckin’ up. */
linux-source-2.6.24/arch/ppc/syslib/ppc405_pci.c:     * the kernel try to remap our BAR #1 and fuck up bus
linux-source-2.6.24/lib/vsprintf.c: * Wirzenius wrote this portably, Torvalds fucked it up :-)
linux-source-2.6.24/sound/oss/opl3.c:     * What the fuck is going on here?  We leave junk in the beginning
linux-source-2.6.24/include/asm-m68k/sun3ints.h:/* master list of VME vectors — don’t fuck with this */
linux-source-2.6.24/include/linux/netfilter/xt_limit.h:    /* Ugly, ugly fucker. */
linux-source-2.6.24/include/asm-cris/arch-v32/spinlock.h: * writers) in interrupt handlers someone fucked up and we’d dead-lock
linux-source-2.6.24/include/asm-sparc64/system.h:    /* If you fuck with this, update ret_from_syscall code too. */    \
linux-source-2.6.24/drivers/ide/pci/cmd640.c: *  These chips are basically fucked by design, and getting this driver
linux-source-2.6.24/drivers/net/sunhme.c:/* Only Sun can take such nice parts and fuck up the programming interface
linux-source-2.6.24/drivers/net/sunhme.c:        /* This card is _fucking_ hot… */
linux-source-2.6.24/drivers/media/video/bt819.c:                       BUG? Why does turning the chroma comb on fuck up color?
linux-source-2.6.24/drivers/mtd/mtd_blkdevs.c:       registered, to prevent the link/init ordering from fucking
linux-source-2.6.24/drivers/scsi/NCR53C9x.c: * how bad the target and/or ESP fucks things up.
linux-source-2.6.24/drivers/scsi/NCR53C9x.c:        /* Be careful, we could really get fucked during synchronous
linux-source-2.6.24/drivers/scsi/qlogicpti.h:/* Am I fucking pedantic or what? */
linux-source-2.6.24/drivers/watchdog/shwdt.c:     * brain-damage, it’s managed to fuck things up one step further..

Recompilando el kernel (Ubuntu Gutsy)

Tuesday, December 11th, 2007

A pesar de lo que mucha gente cree, recompilar el kernel hoy en día no es excesivamente complicado. Además de esto en ciertas ocasiones puede ser necesario, por ejemplo, para poder instalar un módulo que necesitamos y que no viene incluido en el kernel (véase artículo relacionado).

Bueno, comenzamos, como siempre, instalando todos los paquetes necesarios para la compilación del kernel.

sudo apt-get install linux-kernel-devel linux-source build-essential pkg-config ncurses-dev qt3-apps-dev qt3-assistant qt3-designer qt3-dev-tools qt3-doc qt3-qtconfig

acto seguido descomprimimos el kernel en el directorio /usr/src

cd /usr/src
sudo tar xjf linux-source-2.6.22.tar.bz2

Y ahora tenemos que configurarlo (esto lo vamos a hacer de una forma realmente sencilla) : tecleamos

cd linux-source-2.6.22
make xconfig

y nos aparecerá un menú parecido a:

qconf

Abrimos (File>load) el fichero de configuración que se encuentra en /boot/config-2.6.22-14-generic y acto seguido lo guardamos como “.config

a continuación ejecutamos en este orden.

sudo su
make ; make modules ; make modules_install ; exit

estos tres pasos suelen tomarse bastante tiempo aunque no necesitan ninguna atención, a no ser que algo haya ido mal.

Una vez terminado, copiamos el kernel recien compilado al directorio /boot

sudo cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.22

creamos su correspondiente fichero initrd

sudo mkdir /lib/firmware/2.6.22.9
sudo mkinitramfs -o /boot/initrd.img-2.6.22 2.6.22.9

Y por último sólo nos queda añadir en el fichero de configuración del grub el nuevo kernel.

sudo gedit /boot/grub/menu.lst

Nos vamos a la linea donde aparece por primera vez

title Ubuntu 7.10, kernel 2.6.22-14-generic
root (hd0,?)
kernel /boot/vmlinuz-2.6.22-14-generic root=UUID=???????-????-????-????-?????????????? ro quiet splash
initrd /boot/initrd.img-2.6.22-14-generic
quiet

y añadimos justo antes:

title Ubuntu 7.10, kernel 2.6.22
root (hd0,?)
kernel /boot/vmlinuz-2.6.22 root=UUID=???????-????-????-????-?????????????? ro quiet splash
initrd /boot/initrd.img-2.6.22
quiet

(Notar que los caracteres marcados como ? son diferentes dependiendo de la instalación de cada uno, así que hay que copiar y pegarlo sin modificarlos)

Una vez finalizado todo esto ya podemos reiniciar el ordenador con el kernel nuevo. Recordar que ahora probablemente necesitemos recompilar para el nuevo kernel todos los módulos que teníamos antes.