Inhoudsopgave:

64-bits RT-kernelcompilatie voor Raspberry Pi 4B: 5 stappen
64-bits RT-kernelcompilatie voor Raspberry Pi 4B: 5 stappen

Video: 64-bits RT-kernelcompilatie voor Raspberry Pi 4B: 5 stappen

Video: 64-bits RT-kernelcompilatie voor Raspberry Pi 4B: 5 stappen
Video: Raspberry Pi OS Update. Linux 6.1 LTS kernel. 2024, November
Anonim
64bit RT-kernelcompilatie voor Raspberry Pi 4B
64bit RT-kernelcompilatie voor Raspberry Pi 4B

Deze tutorial behandelt het proces van het bouwen en installeren van 64 bit Real Time Kernel op Raspberry Pi. RT Kernel is cruciaal voor de volledige functionaliteit van ROS2 en andere realtime IOT-oplossingen.

Kernel is geïnstalleerd op op x64 gebaseerde Raspbian die hier kan worden verkregen

Opmerking. Deze tutorial, hoewel eenvoudig, vereist basiskennis van het Linux-besturingssysteem.

Mede door beperkingen van dit platform missen alle http-links h. Om ze eenvoudig op te lossen, voegt u "h" toe aan de voorkant van de link

Benodigdheden

x64-gebaseerde pc met Linux

Raspberry Pi 4B met Raspbian 64 al geïnstalleerd

Verbinding met internet.

Stap 1: Benodigd gereedschap verkrijgen

Eerst moeten we neccecery dev-tools gebruiken.

Ze kunnen worden verkregen door de volgende opdrachten uit te voeren in de Linux-terminal:

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

Stap 2: Native Build-tools samenstellen voor cross-compilatie

De volgende stap is het voorbereiden en compileren van tools voor cross-compilatie van onze kernel.

De eerste tool die we gaan installeren is Binutils. Deze tutorial is getest met binutils versie 2.35.

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 -- --disable-nls

Nadat de configuratie is voltooid, moeten we het programma compileren met de volgende opdrachten:

maak -jx

sudo make install

waarbij -jx betekent hoeveel taken u wilt uitvoeren i parrarell. Vuistregel is om het niet hoger te stellen dan het aantal threads dat uw systeem heeft. (maak bijvoorbeeld -j16)

en tot slot moeten we het pad exporteren

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

Dan gaan we verder met het bouwen en installeren van 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

Dan hetzelfde als voorheen maken en installeren we onze compiler

maak all-gcc -jx

sudo make install-gcc

Als alles soepel verliep volgens opdracht

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

zou een soortgelijke reactie moeten opleveren.

ux-gnu-gcc -v Ingebouwde specificaties gebruiken. COLLECT_GCC=/opt/aarch64/bin/aarch64-linux-gnu-gcc COLLECT_LTO_WRAPPER=/opt/aarch64/libexec/gcc/aarch64-linux-gnu/8.4.0/lto-wrapper Doel: aarch64-linux-gnu Geconfigureerd met:./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 Threadmodel: enkele gcc-versie 8.4.0 (GCC)

Stap 3: Kernel patchen en kernel configureren

Nu is het tijd om onze kernel en RT-patch te krijgen.

Deze tutorial gebruikt rpi kernel v 5.4 en RT patch RT32. Deze combinatie werkte goed voor mij. Alles zou echter goed moeten werken met verschillende versies.

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

pak vervolgens de pleister uit.

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

En initialiseer de configuratie voor Rpi 4B

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

Hierna moeten we de menuconfig. invoeren

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

Wanneer het start, moeten we naar de bestaande configuratie gaan, ga dan naar

Algemeen -> Voorkoopmodel en selecteer de optie Realtime.

dan slaan we de nieuwe configuratie op en verlaten we het menu.

Stap 4: RT-kernel bouwen

Nu is het compilatietijd. Houd er rekening mee dat het lang kan duren, afhankelijk van de mogelijkheden van uw pc.

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

Zoals eerder betekent -jx aantal banen. Na een succesvolle compilatie moeten we onze kernel inpakken en naar Raspberry Pi sturen. Om dit te doen voeren we de volgende commando's uit.

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_installcp-../ out/arch/arm64/boot/Image../rt-kernel/boot/kernel8.imgcd $INSTALL_MOD_PATHtar czf../rt-kernel.tgz *cd..

Nu zou onze kernel in het rt-kernel.tgz-archief moeten staan en klaar om te worden verzonden en geïnstalleerd.

Stap 5: Nieuwe kernel installeren

De gemakkelijkste manier om onze kernel naar raspbperry te sturen is door scp te gebruiken.

We voeren eenvoudig het volgende commando uit.

scp rt-kernel.tgz pi@:/tmp

Nu moeten we inloggen op onze pi via ssh en onze kernel uitpakken.

ssh pi@

Wanneer we zijn ingelogd, kopiëren we onze bestanden met behulp van de volgende opdrachten.

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

Daarna hoeft u alleen nog het /boot/config.txt-bestand te bewerken en de volgende regel toe te voegen.

kernel=kernel8.img

Na het herstarten van pi zou alles goed moeten werken.

Om te controleren of de nieuwe kernel met succes is geïnstalleerd, kunt u uitvoeren:

uname -a

opdracht

Aanbevolen: