Tabla de contenido:

Compilación del kernel RT de 64 bits para Raspberry Pi 4B.: 5 pasos
Compilación del kernel RT de 64 bits para Raspberry Pi 4B.: 5 pasos

Video: Compilación del kernel RT de 64 bits para Raspberry Pi 4B.: 5 pasos

Video: Compilación del kernel RT de 64 bits para Raspberry Pi 4B.: 5 pasos
Video: Raspberry PI: ¿El PC Gaming BARATO del Futuro? 2024, Noviembre
Anonim
Compilación del Kernel RT de 64 bits para Raspberry Pi 4B
Compilación del Kernel RT de 64 bits para Raspberry Pi 4B

Este tutorial cubrirá el proceso de construcción e instalación del núcleo en tiempo real de 64 bits en Raspberry Pi. RT Kernel es crucial para la funcionalidad completa de ROS2 y otras soluciones de IOT en tiempo real.

El kernel se instaló en Raspbian basado en x64 que se puede obtener aquí

Nota. Este tutorial, aunque sencillo, requiere conocimientos básicos del sistema operativo Linux.

También debido a las limitaciones de esta plataforma, todos los enlaces http carecen de h. Para solucionarlos, simplemente agregue "h" al frente del enlace

Suministros

PC basada en x64 con Linux

Raspberry Pi 4B con Raspbian 64 ya instalado

Conexión a Internet.

Paso 1: Obtener las herramientas necesarias

Primero debemos optar por las herramientas de desarrollo necesarias.

Se pueden obtener ejecutando los siguientes comandos en la terminal de Linux

sudo apt-get install build-essential libgmp-dev libmpfr-dev libmpc-dev libisl-dev libncurses5-dev bc git-core bison flexsudo apt-get install libncurses-dev libssl-dev

Paso 2: compilación de herramientas de compilación nativas para la compilación cruzada

El siguiente paso es preparar y compilar herramientas para la compilación cruzada de nuestro kernel.

La primera herramienta que instalaremos es Binutils. Este tutorial fue probado con la versión 2.35 de binutils.

cd ~ / Downloadswget ttps: //ftp.gnu.org/gnu/binutils/binutils-2.35.tar.bz2tar xf binutils-2.35.tar.bz2cd binutils-2.35 /./ configure --prefix = / opt / aarch64 - destino = aarch64-linux-gnu --disable-nls

Una vez finalizada la configuración, debemos compilar el programa usando los siguientes comandos

hacer -jx

sudo hacer instalar

donde -jx significa cuántos trabajos desea ejecutar i parrarell. La regla general es que no supere la cantidad de subprocesos que tiene su sistema. (por ejemplo make -j16)

y finalmente necesitamos exportar la ruta

export PATH = $ PATH: / opt / aarch64 / bin /

Luego procedemos con la construcción e instalación de GCC

cd..wget ttps: //ftp.gnu.org/gnu/gcc/gcc-8.4.0/gcc-8.4.0.tar.xztar xf gcc-8.4.0.tar.xzcd gcc-8.4.0 /. /contrib/download_prerequisites./configure --prefix = / opt / aarch64 --target = aarch64-linux-gnu --with-newlib --without-headers / --disable-nls --disable-shared --disable-threads --disable-libssp --disable-decimal-float / --disable-libquadmath --disable-libvtv --disable-libgomp --disable-libatomic / --enable-languages = c --disable-multilib

De lo mismo que antes, hacemos e instalamos nuestro compilador.

hacer all-gcc -jx

sudo make install-gcc

Si todo salió bien siguiendo el comando

/ opt / aarch64 / bin / aarch64-linux-gnu-gcc -v

debería resultar en una respuesta similar a esta.

ux-gnu-gcc -v Usando especificaciones integradas. COLLECT_GCC = / opt / aarch64 / bin / aarch64-linux-gnu-gcc COLLECT_LTO_WRAPPER = / opt / aarch64 / libexec / gcc / aarch64-linux-gnu / 8.4.0 / lto-wrapper Destino: aarch64-linux-gnu Configurado con:./configure --prefix = / opt / aarch64 --target = aarch64-linux-gnu --with-newlib --without-headers --disable-nls --disable-shared --disable-threads --disable-libssp --disable-decimal-float --disable-libquadmath --disable-libvtv --disable-libgomp --disable-libatomic --enable-languages = c --disable-multilib Modelo de subproceso: versión única de gcc 8.4.0 (GCC)

Paso 3: parchear el kernel y configurar el kernel

Ahora es el momento de obtener nuestro kernel y el parche RT.

Este tutorial usará rpi kernel v 5.4 y el parche RT RT32. Esta combinación funcionó bien para mí. Sin embargo, todo debería funcionar bien con diferentes versiones.

mkdir ~ / rpi-kernel

cd ~ / rpi-kernel git clone ttps: //github.com/raspberrypi/linux.git -b rpi-5.4.y wget ttps: //mirrors.edge.kernel.org/pub/linux/kernel/projects/rt /5.4/older/patch-5.4.54-rt32.patch.gz mkdir kernel-out cd linux

luego desempaque el parche.

gzip -cd../patch-5.4.54-rt32.patch.gz | parche -p1 --verbose

E inicializar la configuración para Rpi 4B

make O =.. / kernel-out / ARCH = arm64 CROSS_COMPILE = / opt / aarch64 / bin / aarch64-linux-gnu- bcm2711_defconfig

Después de esto, debemos ingresar al menuconfig

make O =.. / kernel-out / ARCH = arm64 CROSS_COMPILE = / opt / aarch64 / bin / aarch64-linux-gnu- menuconfig

Cuando se lanza, necesitamos la configuración existente, luego vamos a

General -> Modelo de preeminencia y seleccione la opción Tiempo real.

que guardamos la nueva configuración y salimos del menú.

Paso 4: Construyendo el Kernel RT

Ahora es el momento de la compilación. Tenga en cuenta que puede llevar mucho tiempo dependiendo de las capacidades de su PC.

make -jx O =.. / kernel-out / ARCH = arm64 CROSS_COMPILE = aarch64-linux-gnu-

Como antes, -jx significa número de trabajos. Después de una compilación exitosa, necesitamos empaquetar nuestro Kernel y enviarlo a Raspberry Pi. Para hacer esto ejecutamos los siguientes comandos.

export INSTALL_MOD_PATH = ~ / rpi-kernel / rt-kernelexport INSTALL_DTBS_PATH = ~ / rpi-kernel / rt-kernelmake O =.. / kernel-out / ARCH = arm64 CROSS_COMPILE = aarch64-linux-gnu- modules_install dtbs_kerinstall-cp.. out / arch / arm64 / boot / Image../rt-kernel/boot/kernel8.imgcd $ INSTALL_MOD_PATHtar czf../rt-kernel.tgz * cd..

Ahora nuestro kernel debería estar dentro del archivo rt-kernel.tgz y listo para ser enviado e instalado.

Paso 5: Instalar un nuevo kernel

La forma más fácil de enviar nuestro kernel a raspbperry es usando scp.

Simplemente ejecutamos el siguiente comando.

scp rt-kernel.tgz pi @: / tmp

Ahora necesitamos iniciar sesión en nuestro pi a través de ssh y descomprimir nuestro Kernel.

ssh pi @

Cuando iniciamos sesión, copiamos nuestros archivos usando los siguientes comandos.

cd / tmptar xzf rt-kernel.tgz cd boot sudo cp -rd * / boot / cd../lib sudo cp -dr * / lib / cd../overlays sudo cp -dr * / boot / superposiciones cd../ broadcom sudo cp -dr bcm * / boot /

Después de eso, lo que queda por hacer es editar el archivo /boot/config.txt y agregar la siguiente línea.

kernel = kernel8.img

Después de reiniciar pi, todo debería funcionar bien.

Para comprobar si el nuevo kernel se instaló correctamente, puede ejecutar

uname -a

mando

Recomendado: