Ka bilaabashada GNU/Linux ee guddiga ARM ee xoqan (adoo isticmaalaya Kali iyo iMX.6 tusaale ahaan)

tl; dr: Waxaan u dhisayaa sawirka Kali Linux ee kumbuyuutarka ARM, barnaamijka debootstrap, linux ΠΈ u-boot.

Ka bilaabashada GNU/Linux ee guddiga ARM ee xoqan (adoo isticmaalaya Kali iyo iMX.6 tusaale ahaan)

Haddii aad soo iibsatay qaar ka mid ah software-yada hal-board-ka ah oo aan aad loo jeclayn, waxa laga yaabaa in aad la kulanto la'aanta sawirka qaybinta aad jeceshahay. Qiyaastii wax la mid ah ayaa ku dhacay Flipper One la qorsheeyay. Si fudud ma jiro Kali Linux oo loogu talagalay IMX6 (waxaan diyaarinayaa), marka waa inaan aniga qudhaydu soo ururiyaa.

Habka soo dajintu waa mid fudud:

  1. Qalabku waa la bilaabay
  2. Laga soo bilaabo meel ka mid ah qalabka kaydinta (kaarka SD/eMMC/iwm) bootloader waa la akhriyaa oo la sameeyaa.
  3. Bootloader-ku wuxuu raadiyaa kernel-ka nidaamka qalliinka wuxuuna ku shubaa aagga xusuusta qaarkood wuuna fulinayaa.
  4. Kernelku waxa uu shubaa OS intiisa kale.

Faahfaahinta heerkan ayaa ku filan hawshayda, waxaad akhrin kartaa faahfaahinta maqaal kale. Meelaha "qaar" ee kor ku xusan way ku kala duwan yihiin guddiga ilaa guddiga, taas oo abuurta qaar ka mid ah dhibaatooyinka rakibidda. Soodejinaya aaladaha adeegaha ARM isku dayaya in uu jaangooyo Adigoo isticmaalaya UEFI, laakiin tani maaha mid qof walba heli karo, waa inaad wax walba si gaar ah u ururisaa.

Dhisida nidaamka faylka xididka

Marka hore waxaad u baahan tahay inaad diyaariso qaybaha. Das U-Boot waxay taageertaa nidaamyada faylalka kala duwan, waxaan u doortay FAT32 /boot iyo ext3 ee xididka, tani waa qaabka sawirka caadiga ah ee Kali on ARM. Waxaan isticmaali doonaa GNU Parted, laakiin waxaad sidaas oo kale u samayn kartaa hab la yaqaan fdisk. Waxaad sidoo kale u baahan doontaa dosfstools ΠΈ e2fsprogs si loo abuuro nidaam faylal: apt install parted dosfstools e2fsprogs.

Waxaan calaamadeynaa kaarka SD:

  1. Calaamadee kaadhka SD sidii adigoo isticmaalaya qaybinta MBR: parted -s /dev/mmcblk0 mklabel msdos
  2. Hoos ka samee qayb /boot 128 megabytes: parted -s /dev/mmcblk0 mkpart primary fat32 1MiB 128MiB. Megabyte-ka ugu horreeya ee seegay waa in loo daayaa calaamadaynta lafteeda iyo bootloader-ka.
  3. Waxaan u abuurnaa nidaamka faylka xididka dhammaan awoodda soo hartay: parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
  4. Haddii si lama filaan ah faylashaada qaybinta aan loo abuurin ama aysan isbeddelin, waxaad u baahan tahay inaad socodsiiso `partprobe', ka dib miiska qaybinta ayaa dib loo akhrin doonaa.
  5. U samee nidaamka faylalka qaybta bootka oo leh calaamadda BOOT: mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
  6. Samee nidaamka faylka xididka oo leh calaamad ROOTFS: mkfs.ext3 -L ROOTFS /dev/mmcblk0p2

Way fiicantahay, hadda waad buuxin kartaa Taas waxa kale oo aad u baahan doontaa debootstrap, utility loogu talagalay abuurista nidaamyada faylalka xididka ee nidaamyada hawlgalka Debian u eg: apt install debootstrap.

Waxaan aruurineynaa FS:

  1. Ku dheji qaybta gudaha /mnt/ (isticmaal bar ku habboon oo ku habboon): mount /dev/mmcblk0p2 /mnt
  2. Waxaan dhab ahaantii buuxineynaa nidaamka faylka: debootstrap --foreign --include=qemu-user-static --arch armhf kali-rolling /mnt/ http://http.kali.org/kali. Halbeegga --include Waxay tusinaysaa in lagu rakibo baakadaha qaarkood, waxaan cayimay emulator QEMU ah oo la dhisay. Waxay kuu ogolaanaysaa inaad qabato chroot deegaanka ARM. Macnaha xulashooyinka soo haray waxaa laga heli karaa man debootstrap. Ha iloobin in guddi kasta oo ARM ah aanu taageersanayn dhismaha armhf.
  3. Farqiga u dhexeeya dhismaha awgeed debootstrap waxaa loo sameeyaa laba marxaladood, ka labaadna waa sidan: chroot /mnt/ /debootstrap/debootstrap --second-stage
  4. Hadda waxaad u baahan tahay inaad ka saarto: chroot /mnt /bin/bash
  5. Waanu buuxinay /etc/hosts ΠΈ /etc/hostname bartilmaameedka FS. Buuxi waxa ku jira kumbuyuutarka deegaankaaga, kaliya xasuuso inaad bedesho magaca martida loo yahay.
  6. Waxaad u habayn kartaa wax kasta oo kale. Gaar ahaan, waxaan rakibaa locales (furayaasha kaydka), dib u habaynta aagagga iyo aagga wakhtiga (dpkg-reconfigure locales tzdata). Ha ilaawin inaad dejiso erayga sirta ah ee amarka leh passwd.
  7. U deji furaha sirta ah root kooxda passwd.
  8. Diyaarinta sawirka aniga ayaa ku dhammaanaysa buuxinta /etc/fstab gudaha /mnt/.

Waxaan ku shubi doonaa si waafaqsan tagsyadii hore loo abuuray, markaa nuxurku wuxuu noqon doonaa sidan:

LABEL=ROOTFS/Auto errors=remount-ro 0 1
LABEL=BOOT/boot auto defaults 0 0

Ugu dambeyntii, waxaad ku dhejin kartaa qaybta boot, waxaan u baahan doonaa kernel: `mount /dev/mmcblk0p1 /mnt/boot/`

Linux dhis

Si aad u dhisto kernel-ka (ka dibna bootloader) ee Imtixaanka Debian, waxaad u baahan tahay inaad ku rakibto jaangooyooyin GCC, GNU Make iyo GNU C faylalka madaxa maktabadda ee qaab dhismeedka bartilmaameedka (aniga ahaan). armhf), iyo sidoo kale madaxyada OpenSSL, xisaabiyaha konsole bc, bison ΠΈ flex: apt install crossbuild-essential-armhf bison flex libssl-dev bc. Mar haddii rareeyaha caadiga ahi uu raadiyo faylka zImage Nidaamka faylka ee qaybta boot, waa waqtigii la kala qaybin lahaa flash drive.

  1. Waxay qaadataa waqti aad u dheer in la xidho kernel-ka, markaa waxaan kaliya soo dejin doonaa: wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.xz. Aan fur furno oo tagno hagaha isha: tar -xf linux-5.9.1.tar.xz && cd linux-5.9.1
  2. Habbee ka hor inta aan la soo ururin: make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig. Habayntu waxay ku taal hagaha arch/arm/configs/. Haddii uusan midna jirin, waxaad isku dayi kartaa inaad hesho oo soo dejiso mid diyaarsan oo aad magaca faylka ku dhex gudbiso hagahan halbeeg ahaan KBUILD_DEFCONFIG. Habka ugu dambeeya, isla markiiba u gudub barta xigta.
  3. Ikhtiyaar ahaan, waxaad hagaajin kartaa dejinta: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
  4. Isku-dubarid sawirka: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
  5. Hadda waxaad koobi kartaa faylka kernel-ka: cp arch/arm/boot/zImage /mnt/boot/
  6. Iyo faylasha DeviceTree (sharaxaadda qalabka ku jira sabuuradda): cp arch/arm/boot/dts/*.dtb /mnt/boot/
  7. Oo rakib modules-yada la soo ururiyey oo qaab faylal gaar ah: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=/mnt/ modules_install

Kernelku waa diyaar. Waxaad ka furi kartaa wax kasta: umount /mnt/boot/ /mnt/

Das U-Boot

Maadaama bootloader-ku uu yahay mid is-dhexgal ah, waxa kaliya ee aad u baahan tahay si aad u tijaabiso hawsheeda waa guddiga laftiisa, qalabka kaydinta, iyo ikhtiyaari qalab USB-to-UART. Taasi waa, waxaad dib u dhigi kartaa kernel iyo OS hadhow.

Inta badan soosaarayaasha ayaa bixiya inay u isticmaalaan Das U-Boot boot-ka hore. Taageerada buuxda waxaa badanaa lagu bixiyaa fargeeto iyaga u gaar ah, laakiin ma ilaawaan inay wax ku biiriyaan korka. Xaaladeyda, guddiga ayaa lagu taageeray mainline, sidaas darteed fargeeto Waan iska indhatiray.

Aan isku keeno bootloader laftiisa:

  1. Waxaan xidhnay laanta xasiloon ee kaydka: git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10
  2. Aan tagno hagaha laftiisa: cd u-boot
  3. Diyaarinta qaabeynta dhismaha: make mx6ull_14x14_evk_defconfig. Tani waxay shaqeysaa kaliya haddii qaabeyntu ay ku jirto Das U-Boot lafteeda, haddii kale waxaad u baahan doontaa inaad hesho qaabka soo saaraha oo aad geliso xididka kaydka faylka .config, ama u ururi si kasta oo kale oo ay ku taliyaan soo saaraha.
  4. Waxaanu ururinay sawirka bootloader laftiisa anagoo adeegsanayna iskudubarid-isku-tallaabta armhf: make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx

Natiijo ahaan waxaan helnaa faylka u-boot.imx, kani waa sawir diyaarsan oo lagu qori karo flash drive. Waxaan u qornaa kaarka SD, anagoo ka boodnay 1024 bytes ee ugu horreeya. Maxaan u doortay Target u-boot.imx? Waa maxay sababta aan u seegay 1024 bytes sax ah? Tani waa waxa ay soo jeedinayaan in lagu sameeyo dukumentiyo. Looxyada kale, dhismaha sawirka iyo habka duubista ayaa laga yaabaa inay ka yara duwanaadaan.

La sameeyay, waad bootin kartaa Bootloaderku waa inuu ka warbixiyaa nooca u gaar ah, macluumaadka qaar ee ku saabsan looxa, oo isku dayo inuu helo sawirka kernel ee qaybta. Haddii ay ku guul darreysato, waxay isku dayi doontaa inay kor u qaaddo shabakadda Guud ahaan, wax soo saarku waa mid faahfaahsan, waxaad ka heli kartaa qaladka haddii ay jirto dhibaato.

Halkii gabagabo

Ma ogtahay in foolka dolphinku aanu lafo lahayn. Dhab ahaantii waa isha saddexaad, muraayad dufan leh oo loogu talagalay dhawaaq!

Ka bilaabashada GNU/Linux ee guddiga ARM ee xoqan (adoo isticmaalaya Kali iyo iMX.6 tusaale ahaan)

Ka bilaabashada GNU/Linux ee guddiga ARM ee xoqan (adoo isticmaalaya Kali iyo iMX.6 tusaale ahaan)

Source: www.habr.com