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
.configse genera dinámicamente combinanod archivos endebian.rockchip/config/, siendoconfig.common.ubuntula 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:
- 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
- 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
- Habilite las siguientes opciones:
- WiFi Virtual: Busque
CONFIG_MAC80211_HWSIMy establézcalo eny. - eBPF: Asegúrese de que
CONFIG_BPF_SYSCALL,CONFIG_BPF_JITyCONFIG_DEBUG_INFO_BTFestén activos.
- WiFi Virtual: Busque
- 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).