Compilación de Kernel Linux para Orange Pi: Soporte para eBPF y WiFi Virtual

Para implementar soluciones avanzadas como Redroid con aceleración de hardware en una Orange Pi 5 Plus, es fundamental contar con un kernel optimizado que incluya soporte para eBPF y dispositivos WiFi virtuales. A continuación, se detalla el proceso técnico para modificar y compilar el núcleo basado en el proyecto ubuntu-rockchip.

Protección del kernel personalizado

Una vez instalado un kernel compilado manualmente, es vital evitar que el gestor de paquetes apt lo sobrescriba con versiones oficiales durante las actualizaciones del sistema. Para bloquear la versión actual (ejemplo: 1009), ejecute el siguiente comando:

VERSION_KERNEL="5.10.0-1009-rockchip"
sudo apt-mark hold \
  linux-image-$VERSION_KERNEL \
  linux-headers-$VERSION_KERNEL \
  linux-modules-$VERSION_KERNEL \
  linux-rockchip-headers-$VERSION_KERNEL

Análisis del sistema de construcción

El repositorio principle utilizado es https://github.com/Joshua-Riek/ubuntu-rockchip. La arquitectura de scripts se divide de la siguiente manera:

  • build.sh: El punto de entrada principal. Permite definir la placa (--board), la distribución (--suite) y el entorno gráfico (--flavor).
  • scripts/build-kernel.sh: Gestiona la descarga del código fuente del kernel y activa el proceso de compilación mediante debian/rules.
  • Configuración del Kernel: El archivo de configuración final .config se genera dinámicamente combinanod archivos en debian.rockchip/config/, siendo config.common.ubuntu la base principal para arquitecturas arm64.

Preparación del entorno de compilación

Puede compilar directamente en la Orange Pi o utilizar una máquina x86 con soporte para compilación cruzada. Instale las dependencias necesarias:

sudo apt-get update
sudo apt-get install -y \
  build-essential gcc-aarch64-linux-gnu bison flex \
  libssl-dev bc rsync kmod cpio xz-utils fakeroot \
  parted udev dosfstools uuid-runtime git-lfs \
  device-tree-compiler python3 python3-pyelftools \
  swig libfdt-dev libpython3-dev libncurses-dev \
  dwarves libelf-dev

Personalización de parámetros del Kernel

Para activar eBPF y WiFi virtual, debemos interceptar el flujo de configuración antes de la compilación masiva:

  1. Clone el repositorio del kernel por separado: ``` git clone https://github.com/Joshua-Riek/linux-rockchip -b jammy build/linux-rockchip cd build/linux-rockchip
  2. Cargue la configuración base y abra el menú de selección: ``` cp debian.rockchip/config/config.common.ubuntu .config make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig
  3. Habilite las siguientes opciones:
    • WiFi Virtual: Busque CONFIG_MAC80211_HWSIM y establézcalo en y.
    • eBPF: Asegúrese de que CONFIG_BPF_SYSCALL, CONFIG_BPF_JIT y CONFIG_DEBUG_INFO_BTF estén activos.
  4. Sustituya la configuración original con la nueva: ``` mv .config debian.rockchip/config/config.common.ubuntu
    
    

Ejecución de la compilación

Regrese al directorio raíz del proyecto ubuntu-rockchip. Es necesario comentar las líneas de git clone en scripts/build-kernel.sh para evitar que sus cambios en la carpeta build/ sean eliminados. Luego, inicie el proceso:

sudo ./build.sh \
  --board=orangepi-5-plus \
  --suite=jammy \
  --flavor=desktop \
  --kernel-only

Al finalizar, encontrará los paquetes .deb en la carpeta build/. Instálelos usando:

sudo dpkg -i *.deb
sudo reboot

Validación de la configuración

Tras reiniciar, verifique que los parámetros se hayan aplicado correctamente inspeccionando la configuración del kernel en ejecución:

# Verificar WiFi Virtual
zcat /proc/config.gz | grep CONFIG_MAC80211_HWSIM

# Verificar soporte BTF para eBPF
ls /sys/kernel/btf/vmlinux

Si el archivo /proc/config.gz no está disponible, puede consultar el archivo de configuración generado en /boot/config-$(uname -r).

Etiquetas: Orange Pi 5 Plus Rockchip Linux Kernel eBPF Virtual WiFi

Publicado el 7-6 17:51