tl; dr: Ndakha umfanekiso weKali Linux wekhompyuter ye-ARM, kwinkqubo debootstrap
, linux
ΠΈ u-boot
.
Ukuba uthenge isoftware yebhodi enye engaziwayo, unokujongana nokunqongophala komfanekiso owuthandayo wokusasazwa kwayo. Phantse kwenzeka into efanayo
Inkqubo yokukhuphela ilula kakhulu:
- I-hardware iyaqaliswa.
- Ukusuka kwindawo ethile kwisixhobo sokugcina (ikhadi le-SD/eMMC/ etc) i-bootloader ifundwa kwaye iphunyezwe.
- I-bootloader ijonga i-kernel yenkqubo yokusebenza kwaye ilayishe kwindawo ethile yememori kwaye iyenze.
- I-kernel ilayisha yonke i-OS.
Eli nqanaba leenkcukacha lanele umsebenzi wam, unokufunda iinkcukacha
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:
- Phawula ikhadi le-SD njengokusebenzisa ulwahlulo lwe-MBR:
parted -s /dev/mmcblk0 mklabel msdos
- 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. - Senza inkqubo yefayile yengcambu yawo wonke umthamo oseleyo:
parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
- Ukuba ngequbuliso iifayile zakho zokwahlula azidalwanga okanye azitshintshanga, kufuneka usebenzise `partprobe`, ngoko itafile yolwahlulo iya kufundwa kwakhona.
- Yenza inkqubo yefayile yolwahlulo lwesiqalo kunye neleyibhile
BOOT
:mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
- 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:
- Faka isahlulelo ngaphakathi
/mnt/
(sebenzisa indawo efanelekileyo yokunyuka):mount /dev/mmcblk0p2 /mnt
- 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 wenzechroot
kwindawo ye-ARM. Intsingiselo yokhetho oluseleyo inokufumaneka kwiman debootstrap
. Ungalibali ukuba ayizizo zonke iibhodi ze-ARM ezixhasa ulwakhiwoarmhf
. - Ngenxa yomahluko kuyilo lwezakhiwo
debootstrap
lwenziwa ngokwamanqanaba amabini, elesibini lwenziwa ngolu hlobo:chroot /mnt/ /debootstrap/debootstrap --second-stage
- Ngoku kuya kufuneka uyikhuphe:
chroot /mnt /bin/bash
- Gcwalisa
/etc/hosts
ΠΈ/etc/hostname
ekujoliswe kuko FS. Gcwalisa okufanayo kumxholo kwikhompyuter yakho yasekhaya, khumbula nje ukutshintsha igama lenginginya. - Ungayilungisa yonke enye into. Ngokukodwa, ndiyafaka
locales
(izitshixo zokugcina), qwalasela kwakhona iindawo kunye nendawo yexesha (dpkg-reconfigure locales tzdata
). Ungalibali ukuseta igama eligqithisiweyo ngomyalelopasswd
. - Seta igama lokugqitha le
root
Iqelapasswd
. - 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.
- 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
- Lungiselela phambi kokuhlanganiswa:
make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig
. Uqwalaselo lubekwe kulawuloarch/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. - Ngokukodwa ungalungisa useto:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
- Kwaye udibanise umfanekiso:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
- Ngoku unokukopa ifayile ye-kernel:
cp arch/arm/boot/zImage /mnt/boot/
- Kwaye iifayile ezivela kwiDeviceTree (inkcazo yehardware ebhodini):
cp arch/arm/boot/dts/*.dtb /mnt/boot/
- 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
Masihlanganise i-bootloader ngokwayo:
- Sidibanisa isebe elizinzileyo lovimba:
git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10
- Makhe siye kuluhlu ngokwalo:
cd u-boot
- 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. - 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
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!
umthombo: www.habr.com