(Re)compilando el kernel de Raspberry Pi Zero W con menuconfig

2 min read
(Re)compilando el kernel de Raspberry Pi Zero W con menuconfig

Recientemente me decanté por la compra de un Raspberry Pi Zero W para iniciar un proyecto que comentaré en parte en este blog.

Para el desarrollo, me surge la necesidad de tener habilitado ciertas funcionalidades en el kernel que por defecto viene deshabilitado. Estos son los pasos que sigo para compilar el kernel en el mismo dispositivo con el sistema por defecto, es decir, Raspbian (Stretch):

En mi caso ejecuto los siguientes comandos como usuario root para evitar problemas de privilegios.

          1. Instalar las dependencias:
            apt-get install -y git bc libncurses5-dev
            
          2. Descargar el código fuente:
             
            cd ~ 
            git clone --depth=1 https://github.com/raspberrypi/linux 
            
          3. Configurar el kernel y menuconfig:
             
            cd linux
            KERNEL=kernel
            make bcmrpi_defconfig
            make menuconfig
            

            En este punto tenemos que seleccionar los módulos / funcionalidades que vamos a necesitar para añadir a la compilación.

            Una vez realizada la selección, guardar los cambios con el botón < Save > y salir con < Exit >. (En mi caso seleccioné CMAC Support de la Cryptographic API)

          4. Ahora que tenemos configurado los aspectos de la compilación, podemos ejecutarla:
             
            make -j4 zImage modules dtbs
            make modules_install
            

            Este es un proceso largo, puede tardar entre cinco o seis horas en total.

            ¡ojo! Llegados a este punto, es muy recomendable realizar una copia de seguridad de los archivos que se van a reemplazar a continuación o realizar directamente un backup de la tarjeta SD, pues se van a sustituir los archivos pertenecientes al kernel original por el recién compilado.

          5. Reemplazar los archivos en /boot, y reiniciar:
             
            #Copiar los archivos
            cp arch/arm/boot/dts/*.dtb /boot/
            cp arch/arm/boot/dts/overlays/*.dtb* /boot/overlays/
            cp arch/arm/boot/dts/overlays/README /boot/overlays/
            cp arch/arm/boot/zImage /boot/$KERNEL.img
            
            #Reiniciar
            reboot
            
          6. Tras el reinicio, comprobamos que está cargando correctamente el nuevo kernel:
             
            uname -a
            

            Nos tiene que aparecer la fecha de nuestra compilación

!Listo! Ya tenemos nuestro nuevo kernel recién compilado funcionando.