Სარჩევი:

64bit RT Kernel Compilation for Raspberry Pi 4B.: 5 ნაბიჯი
64bit RT Kernel Compilation for Raspberry Pi 4B.: 5 ნაბიჯი

ვიდეო: 64bit RT Kernel Compilation for Raspberry Pi 4B.: 5 ნაბიჯი

ვიდეო: 64bit RT Kernel Compilation for Raspberry Pi 4B.: 5 ნაბიჯი
ვიდეო: Raspberry pi 4 64 bit kernel 2024, ივლისი
Anonim
64 ბიტიანი RT ბირთვის კომპილირება ჟოლოს Pi 4B- სთვის
64 ბიტიანი RT ბირთვის კომპილირება ჟოლოს Pi 4B- სთვის

ეს გაკვეთილი მოიცავს Raspberry Pi– ზე 64 ბიტიანი რეალურ დროში ბირთვის მშენებლობისა და მონტაჟის პროცესს. RT Kernel გადამწყვეტი მნიშვნელობა აქვს ROS2 და სხვა რეალურ დროში IOT გადაწყვეტილებების სრულ ფუნქციონირებას.

ბირთვი დაყენებულია x64 დაფუძნებულ Raspbian– ზე, რომლის მოპოვებაც აქ შეგიძლიათ

Შენიშვნა. ეს გაკვეთილი, მართალია, მოითხოვს Linux ოპერაციული სისტემის ძირითად ცოდნას.

ასევე ამ პლატფორმის შეზღუდვების გამო ყველა http ბმულს აკლია h. მათი მარტივად დასაფიქსირებლად დაამატეთ "h" ბმულის წინა ნაწილში

მარაგები

x64 დაფუძნებული კომპიუტერი მუშაობს Linux– ზე

Raspberry Pi 4B Raspbian 64 -ით უკვე დაინსტალირებულია

ინტერნეტთან კავშირი.

ნაბიჯი 1: მიიღეთ საჭირო ინსტრუმენტები

უპირველეს ყოვლისა, ჩვენ უნდა შევარჩიოთ დამცავი ინსტრუმენტები.

მათი მიღება შესაძლებელია 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

ნაბიჯი 2: შეადგინეთ მშობლიური ინსტრუმენტები ჯვრის შედგენისთვის

შემდეგი ნაბიჯი არის ინსტრუმენტების მომზადება და შედგენა ჩვენი ბირთვის ჯვარედინი შედგენისთვის.

პირველი ინსტრუმენტი, რომელსაც ჩვენ დავაინსტალირებთ არის Binutils, ეს გაკვეთილი შემოწმებულია binutils ვერსიით 2.35.

cd ~/Downloadswget ttps: //ftp.gnu.org/gnu/binutils/binutils-2.35.tar.bz2tar xf binutils-2.35.tar.bz2cd binutils-2.35 /./ კონფიგურაცია --prefix =/opt/aarch64- სამიზნე = aarch64-linux-gnu -disable-nls

კონფიგურაციის დასრულების შემდეგ ჩვენ გვჭირდება პროგრამის შედგენა შემდეგი ბრძანებების გამოყენებით

გააკეთე -jx

sudo make install

სადაც -jx ნიშნავს რამდენ სამუშაოს გსურთ გაუშვათ i parrarell. ცერის წესი არის ის, რომ ის არ აღემატებოდეს თქვენი სისტემის ძაფების რაოდენობას. (მაგალითად გააკეთე -j16)

და ბოლოს ჩვენ გვჭირდება გზის ექსპორტი

ექსპორტი PATH = $ PATH:/opt/aarch64/bin/

ჩვენ ვაგრძელებთ 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-უსათაუროდ \-გამორთვა-nls-გამორთვა-გაზიარება-გამორთვა-ძაფები --disable-libssp-disal-ათობითი ათწილადი \-გამორთვა-libquadmath-გამორთვა-libvtv-გამორთვა-libgomp-გამორთვა-ლიბატომიური \-ჩართვა-ენები = c-გამორთვა-მრავალმხრივი

ვიდრე იგივე, რაც ადრე ვაკეთებდით და ვამონტაჟებდით ჩვენს შემდგენელს

გააკეთე ყველა gcc -jx

sudo make install-gcc

თუ ყველაფერი შეუფერხებლად წავიდა ბრძანების შემდეგ

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

უნდა გამოეხმაურო მსგავს პასუხს.

ux-gnu-gcc -v ჩაშენებული სპეციფიკაციების გამოყენებით. COLLECT_GCC =/opt/aarch64/bin/aarch64-linux-gnu-gcc COLLECT_LTO_WRAPPER =/opt/aarch64/libexec/gcc/aarch64-linux-gnu/8.4.0/lto-wrapper სამიზნე: aarch64-linux-gnu კონფიგურაცია:./configure --prefix =/opt/aarch64 --target = aarch64-linux-gnu-with-newlib-გარეშე-სათაურები-disal-nls-გამორთული-გაზიარებული-გამორთული ძაფები-disable-libssp --disable-decimal-float --disable-libquadmath-disal-libvtv-disal-libgomp-disal-libatomic-enable-languages = c --disable-multilib თემის მოდელი: ერთი gcc ვერსია 8.4.0 (GCC)

ნაბიჯი 3: ბირთვის შეკვრა და ბირთვის კონფიგურაცია

ახლა დროა მივიღოთ ჩვენი ბირთვი და RT პატჩი.

ეს გაკვეთილი გამოიყენებს rpi ბირთვის v 5.4 და RT პატჩს RT32. ეს კომბინაცია კარგად გამომივიდა. თუმცა ყველაფერი კარგად უნდა მუშაობდეს სხვადასხვა ვერსიით.

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

შემდეგ ამოიღეთ პატჩი.

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

და კონფიგურაციის ინიციალიზაცია Rpi 4B– სთვის

გააკეთეთ O =../kernel-out/ARCH = arm64 CROSS_COMPILE =/opt/aarch64/bin/aarch64-linux-gnu- bcm2711_defconfig

ამის შემდეგ ჩვენ უნდა შევიდეთ მენოკონფიგურაციაში

გააკეთეთ O =../kernel-out/ARCH = arm64 CROSS_COMPILE =/opt/aarch64/bin/aarch64-linux-gnu- menuconfig

როდესაც ის გააქტიურდება, ჩვენ გვჭირდება არსებული კონფიგურაცია, შემდეგ გადადით

ზოგადი -> წინასწარი მოდელი და აირჩიეთ რეალურ დროში ვარიანტი.

ვიდრე ვინახავთ ახალ კონფიგურაციას და გამოვალთ მენიუდან.

ნაბიჯი 4: RT ბირთვის შექმნა

ახლა მისი შედგენის დროა. გაითვალისწინეთ, რომ ამას შეიძლება დიდი დრო დასჭირდეს თქვენი კომპიუტერის შესაძლებლობებიდან გამომდინარე.

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

როგორც ადრე -jx ნიშნავს სამუშაოების რაოდენობას. წარმატებული შედგენის შემდეგ ჩვენ უნდა ჩავალაგოთ ჩვენი ბირთვი და გავაგზავნოთ ჟოლოს პიზე. ამისათვის ჩვენ ვასრულებთ შემდეგ ბრძანებებს.

ექსპორტი 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_in out/arch/arm64/boot/Image../rt-kernel/boot/kernel8.imgcd $ INSTALL_MOD_PATHtar czf../rt-kernel.tgz *cd..

ახლა ჩვენი ბირთვი უნდა იყოს rt-kernel.tgz არქივში და მზად არის გასაგზავნად და დასაყენებლად.

ნაბიჯი 5: ახალი ბირთვის დაყენება

ჩვენი ბირთვის raspbperry– ში გაგზავნის უმარტივესი გზაა scp– ის გამოყენებით.

ჩვენ უბრალოდ ვასრულებთ შემდეგ ბრძანებას.

scp rt-kernel.tgz pi@:/tmp

ახლა ჩვენ უნდა შეხვიდეთ ჩვენს პიში ssh– ის საშუალებით და გავხსნათ ჩვენი ბირთვი.

სშ პი@

შესვლისას ჩვენ ვაკოპირებთ ჩვენს ფაილებს შემდეგი ბრძანებების გამოყენებით.

cd/tmptar xzf rt -kernel.tgz cd boot sudo cp -rd */boot/cd../lib sudo cp -dr */lib/cd../ overdoys sudo cp -dr */boot/overlays cd../ broadcom sudo cp -dr bcm* /ჩატვირთვა /

ამის შემდეგ რჩება მხოლოდ /boot/config.txt ფაილის რედაქტირება და შემდეგი ხაზის დამატება.

ბირთვი = ბირთვი 8.img

Pi გადატვირთვის შემდეგ ყველაფერი კარგად უნდა მუშაობდეს.

იმის შესამოწმებლად, თუ ახალი ბირთვი წარმატებით იყო დაინსტალირებული, შეგიძლიათ შეასრულოთ

უსახელო -ა

ბრძანება

გირჩევთ: