Ukuqala i-GNU/Linux kwibhodi ye-ARM ukusuka ekuqaleni (usebenzisa iKali kunye ne-iMX.6 njengomzekelo)

tl; dr: Ndakha umfanekiso weKali Linux wekhompyuter ye-ARM, kwinkqubo debootstrap, linux ΠΈ u-boot.

Ukuqala i-GNU/Linux kwibhodi ye-ARM ukusuka ekuqaleni (usebenzisa iKali kunye ne-iMX.6 njengomzekelo)

Ukuba uthenge isoftware yebhodi enye engaziwayo, unokujongana nokunqongophala komfanekiso owuthandayo wokusasazwa kwayo. Phantse kwenzeka into efanayo icwangciswe iFlipper enye. Akukho nje iKali Linux ye-IMX6 (ndiyalungiselela), ke kufuneka ndiyidibanise ngokwam.

Inkqubo yokukhuphela ilula kakhulu:

  1. I-hardware iyaqaliswa.
  2. Ukusuka kwindawo ethile kwisixhobo sokugcina (ikhadi le-SD/eMMC/ etc) i-bootloader ifundwa kwaye iphunyezwe.
  3. I-bootloader ijonga i-kernel yenkqubo yokusebenza kwaye ilayishe kwindawo ethile yememori kwaye iyenze.
  4. I-kernel ilayisha yonke i-OS.

Eli nqanaba leenkcukacha lanele umsebenzi wam, unokufunda iinkcukacha kwelinye inqaku. "Ezinye" iindawo ezikhankanywe ngasentla ziyahluka ukusuka kwibhodi ukuya kwibhodi, nto leyo eyenza ubunzima bokufaka. Ilayisha amaqonga eseva ye-ARM uzama ukulinganisa usebenzisa i-UEFI, kodwa ngelixa le nto ingafumaneki kuye wonke umntu, kuya kufuneka udibanise yonke into ngokwahlukileyo.

Ukwakha inkqubo yefayile yengcambu

Okokuqala kufuneka ulungiselele amacandelo. Das U-Boot ixhasa iinkqubo zefayile ezahlukeneyo, ndakhetha FAT32 ngenxa /boot kunye ne ext3 yengcambu, olu luyilo lomfanekiso olusezantsi lwe Kali kwi ARM. Ndiza kusebenzisa i-GNU Yahluliwe, kodwa unokwenza okufanayo ngendlela eqhelekileyo fdisk. Uya kufuna kwakhona dosfstools ΠΈ e2fsprogs ukwenza inkqubo yefayile: apt install parted dosfstools e2fsprogs.

Siphawula ikhadi le-SD:

  1. Phawula ikhadi le-SD njengokusebenzisa ulwahlulo lwe-MBR: parted -s /dev/mmcblk0 mklabel msdos
  2. Yenza icandelo phantsi /boot nge 128 megabytes: parted -s /dev/mmcblk0 mkpart primary fat32 1MiB 128MiB. I-megabyte yokuqala ephosiweyo kufuneka ishiywe kuphawulo ngokwalo kunye ne-bootloader.
  3. Senza inkqubo yefayile yengcambu yawo wonke umthamo oseleyo: parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
  4. Ukuba ngequbuliso iifayile zakho zokwahlula azidalwanga okanye azitshintshanga, kufuneka usebenzise `partprobe`, ngoko itafile yolwahlulo iya kufundwa kwakhona.
  5. Yenza inkqubo yefayile yolwahlulo lwesiqalo kunye neleyibhile BOOT: mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
  6. Yenza inkqubo yefayile yengcambu eneleyibhile ROOTFS: mkfs.ext3 -L ROOTFS /dev/mmcblk0p2

Kuhle, ngoku ungayigcwalisa. Kule nto uya kuyidinga ngakumbi debootstrap, into eluncedo yokudala iinkqubo zefayile yengcambu yendlela yokusebenza efana neDebian: apt install debootstrap.

Siqokelela iFS:

  1. Faka isahlulelo ngaphakathi /mnt/ (sebenzisa indawo efanelekileyo yokunyuka): mount /dev/mmcblk0p2 /mnt
  2. Ngokwenene sigcwalisa inkqubo yefayile: debootstrap --foreign --include=qemu-user-static --arch armhf kali-rolling /mnt/ http://http.kali.org/kali... Ipharamitha --include ibonisa ukufakela ukongeza ezinye iipakethe, ndichaze umlinganisi weQEMU owakhelwe ngokwezibalo. Ikuvumela ukuba wenze chroot kwindawo ye-ARM. Intsingiselo yokhetho oluseleyo inokufumaneka kwi man debootstrap. Ungalibali ukuba ayizizo zonke iibhodi ze-ARM ezixhasa ulwakhiwo armhf.
  3. Ngenxa yomahluko kuyilo lwezakhiwo debootstrap lwenziwa ngokwamanqanaba amabini, elesibini lwenziwa ngolu hlobo: chroot /mnt/ /debootstrap/debootstrap --second-stage
  4. Ngoku kuya kufuneka uyikhuphe: chroot /mnt /bin/bash
  5. Gcwalisa /etc/hosts ΠΈ /etc/hostname ekujoliswe kuko FS. Gcwalisa okufanayo kumxholo kwikhompyuter yakho yasekhaya, khumbula nje ukutshintsha igama lenginginya.
  6. Ungayilungisa yonke enye into. Ngokukodwa, ndiyafaka locales (izitshixo zokugcina), qwalasela kwakhona iindawo kunye nendawo yexesha (dpkg-reconfigure locales tzdata). Ungalibali ukuseta igama eligqithisiweyo ngomyalelo passwd.
  7. Seta igama lokugqitha le root Iqela passwd.
  8. Ukulungiswa komfanekiso kum kugqiba ngokuzaliswa /etc/fstab ngaphakathi /mnt/.

Ndiza kulayisha ngokuhambelana neethegi ezenziwe ngaphambili, ngoko umxholo uya kuba ngolu hlobo:

LABEL=ROOTFS / auto errors=remount-ro 0 1
LABEL=IBHAYIBHILE/Uziqalelo oluzenzekelayo 0 0

Okokugqibela, unganyusa isahlulelo sokuqala, siya kuyifunela i kernel: `mount /dev/mmcblk0p1 /mnt/boot/`

Ukwakhiwa kweLinux

Ukwakha ikernel (kwaye emva koko i-bootloader) kuVavanyo lweDebian, kufuneka ufakele iseti esezantsi ye GCC, GNU Yenza kunye ne GNU C Iifayile zeheader zeThala leencwadi zolwakhiwo ekujoliswe kulo (kum. armhf), kunye neentloko ze-OpenSSL, isixhobo sokubala se-console bc, bison ΠΈ flex: apt install crossbuild-essential-armhf bison flex libssl-dev bc. Kuba umlayishi ongagqibekanga ujonge ifayile zImage kwindlela yefayile yolwahlulo lwesiqalo, lixesha lokwahlula i-flash drive.

  1. Kuthatha ixesha elide ukwenza i-kernel, ke ndiza kukhuphela nje: wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.xz. Masikhuphe kwaye siye kuvimba weefayili: tar -xf linux-5.9.1.tar.xz && cd linux-5.9.1
  2. Lungiselela phambi kokuhlanganiswa: make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig. Uqwalaselo lubekwe kulawulo arch/arm/configs/. Ukuba akukho nanye, ungazama ukufumana kwaye ukhuphele esele ilungile kwaye ugqithise igama lefayile kolu lawulo njenge parameter. KBUILD_DEFCONFIG. Njengecebo lokugqibela, khawuleza uye kwinqanaba elilandelayo.
  3. Ngokukodwa ungalungisa useto: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
  4. Kwaye udibanise umfanekiso: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
  5. Ngoku unokukopa ifayile ye-kernel: cp arch/arm/boot/zImage /mnt/boot/
  6. Kwaye iifayile ezivela kwiDeviceTree (inkcazo yehardware ebhodini): cp arch/arm/boot/dts/*.dtb /mnt/boot/
  7. Kwaye faka iimodyuli eziqokelelwe ngendlela yeefayile ezahlukeneyo: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=/mnt/ modules_install

I-kernel ilungile. Unokwehlisa yonke into: umount /mnt/boot/ /mnt/

Das U-Boot

Ekubeni i-bootloader isebenzisana, konke okufuneka uvavanye ukusebenza kwayo yibhodi ngokwayo, isixhobo sokugcina, kunye nokuzikhethela isixhobo se-USB-to-UART. Oko kukuthi, ungayihlehlisa i-kernel kunye ne-OS kamva.

Uninzi lwabavelisi banikezela ukusebenzisa i-Das U-Boot kwi-boot yokuqala. Inkxaso epheleleyo idla ngokunikezelwa kwifolokhwe yabo, kodwa abayilibali ukufaka isandla ekunyuseni. Kwimeko yam, ibhodi ixhaswa kwi umgca ongundoqoKungenxa yoko ifolokhwe Khange ndiyihoye.

Masihlanganise i-bootloader ngokwayo:

  1. Sidibanisa isebe elizinzileyo lovimba: git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10
  2. Makhe siye kuluhlu ngokwalo: cd u-boot
  3. Ukulungiselela ubumbeko bokwakha: make mx6ull_14x14_evk_defconfig. Oku kusebenza kuphela ukuba uqwalaselo lukwi-Das U-Boot ngokwayo, kungenjalo kuya kufuneka ufumane uqwalaselo lomenzi kwaye ulubeke kwingcambu yendawo yokugcina kwifayile. .config, okanye zidityaniswe ngayo nayiphi na enye indlela ecetyisiweyo ngumenzi.
  4. Sihlanganisa umfanekiso we-bootloader ngokwawo usebenzisa i-cross-compiler armhf: make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx

Ngenxa yoko sifumana ifayile u-boot.imx, lo ngumfanekiso osele ulungile onokubhalwa kwi-flash drive. Sibhalela kwikhadi le-SD, sitsiba i-1024 bytes yokuqala. Kutheni ndikhethe iThagethi u-boot.imx? Kutheni ndiphose kanye 1024 bytes? Yile nto bacebisa ukuba benze kuyo amaxwebhu. Kwezinye iibhodi, isakhiwo somfanekiso kunye nenkqubo yokurekhoda inokwahluka kancinci.

Ugqibile, ungaqalisa. I-bootloader kufuneka ichaze uguqulelo lwayo, ulwazi oluthile malunga nebhodi, kwaye uzame ukufumana umfanekiso wekernel kwisahlulelo. Ukuba ayiphumelelanga, iya kuzama ukuqala ngaphezulu kwenethiwekhi. Ngokubanzi, imveliso ineenkcukacha ezininzi, ungayifumana impazamo ukuba kukho ingxaki.

Endaweni yesiphelo

Ubusazi ukuba ibunzi lehlengesi alimathambo? Liliso lesithathu ngokoqobo, ilensi enamafutha ye-echolocation!

Ukuqala i-GNU/Linux kwibhodi ye-ARM ukusuka ekuqaleni (usebenzisa iKali kunye ne-iMX.6 njengomzekelo)

Ukuqala i-GNU/Linux kwibhodi ye-ARM ukusuka ekuqaleni (usebenzisa iKali kunye ne-iMX.6 njengomzekelo)

umthombo: www.habr.com