tl; dr: Ndiri kuvaka mufananidzo weKali Linux wekombuta yeARM, muchirongwa debootstrap
, linux
ΠΈ u-boot
.
Kana iwe wakatenga isinganyanyo kufarirwa imwe-bhodhi software, unogona kunge wakatarisana nekushaikwa kwemufananidzo wekugovera kwaunofarira kwayo. Zvinenge zvakafanana zvakaitika
Maitiro ekurodha ari nyore:
- Iyo hardware inotangwa.
- Kubva pane imwe nzvimbo pane yekuchengetedza mudziyo (SD kadhi/eMMC/etc) iyo bootloader inoverengwa nekuitwa.
- Iyo bootloader inotarisa iyo inoshanda sisitimu kernel uye inoiisa mune imwe ndangariro nzvimbo uye inoitora.
- Iyo kernel inotakura yakasara yeOS.
Iyi nhanho yeruzivo yakakwanira basa rangu, unogona kuverenga iwo maficha
Kuvaka iyo midzi faira system
Kutanga iwe unoda kugadzirira zvikamu. Das U-Boot inotsigira akasiyana faira masisitimu, ndakasarudza FAT32 ye /boot
uye ext3 yemidzi, iyi ndiyo yakajairwa mufananidzo dhizaini yeKali paARM. Ini ndichashandisa GNU Yakaparadzaniswa, asi iwe unogona kuita zvimwe chete nenzira yakajairika fdisk
. Iwe uchadawo dosfstools
ΠΈ e2fsprogs
kugadzira faira system: apt install parted dosfstools e2fsprogs
.
Isu tinomaka iyo SD kadhi:
- Maka iyo SD kadhi sekushandisa MBR partitioning:
parted -s /dev/mmcblk0 mklabel msdos
- Gadzira chikamu pazasi
/boot
ye128 megabytes:parted -s /dev/mmcblk0 mkpart primary fat32 1MiB 128MiB
. Iyo yekutanga megabyte yakapotsa inofanira kusiiwa kune iyo markup pachayo uye yebootloader. - Isu tinogadzira midzi faira system kune yese yasara chiyero:
parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
- Kana kamwe-kamwe mafaera ako ekugovera asina kugadzirwa kana asina kuchinjwa, unofanirwa kumhanya `partprobe`, ipapo tafura yekugovera ichaverengerwa zvakare.
- Gadzira faira system yeboot partition ine label
BOOT
:mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
- Gadzira midzi yefaira system ine label
ROOTFS
:mkfs.ext3 -L ROOTFS /dev/mmcblk0p2
Zvakanaka, ikozvino unogona kuzvizadza. Nokuda kweizvi iwe uchada kuwedzera debootstrap
, chishandiso chekugadzira midzi faira masisitimu eDebian-senge masisitimu anoshanda: apt install debootstrap
.
Isu tinounganidza FS:
- Isai partition mukati
/mnt/
(shandisa nzvimbo iri nyore yekukwira):mount /dev/mmcblk0p2 /mnt
- Isu tinozadza iyo faira system:
debootstrap --foreign --include=qemu-user-static --arch armhf kali-rolling /mnt/ http://http.kali.org/kali
. Parameter--include
inoratidza kuwedzera mamwe mapakeji, ndakatsanangura yakavakirwa QEMU emulator. Inokubvumira kuitachroot
munharaunda yeARM. Zvinorehwa nesarudzo dzasara dzinogona kuwanikwa mukatiman debootstrap
. Usakanganwa kuti haisi yega yega ARM board inotsigira dhizainiarmhf
. - Nekuda kwekusiyana kwezvivakwa
debootstrap
inoitwa mumatanho maviri, yechipiri inoitwa seizvi:chroot /mnt/ /debootstrap/debootstrap --second-stage
- Iye zvino iwe unofanirwa kuigadzirisa:
chroot /mnt /bin/bash
- Tinozadza
/etc/hosts
ΠΈ/etc/hostname
chinangwa cheFS. Zadza zvakafanana nezviri pakombiyuta yako yemunharaunda, ingoyeuka kutsiva zita remugamuchiri. - Iwe unogona kugadzirisa zvimwe zvese. Kunyanya, ndinoisa
locales
(repository kiyi), gadzirisazve nzvimbo nenzvimbo yenguva (dpkg-reconfigure locales tzdata
) Usakanganwa kuseta password nemirairopasswd
. - Seta password ye
root
teampasswd
. - Kugadzirira kwechifananidzo kwandiri kunopera nekuzadza
/etc/fstab
mukati/mnt/
.
Ini ndichaisa zvinoenderana neakagadzirwa tags, saka zvirimo zvichave seizvi:
LABEL=ROOTFS / auto errors=remount-ro 0 1
LABEL=BOOT/boot auto defaults 0 0
Chekupedzisira, iwe unokwanisa kukwidza iyo boot partition, isu tichaida iyo kernel: `mount /dev/mmcblk0p1 /mnt/boot/`
Linux kuvaka
Kuti uvake kernel (uyezve iyo bootloader) paDebian Testing, unofanirwa kuisa yakajairwa seti yeGCC, GNU Gadzira uye GNU C Library musoro mafaera eiyo tarisiro yekuvaka (kwandiri. armhf
), pamwe neOpenSSL misoro, console Calculator bc
, bison
ΠΈ flex
: apt install crossbuild-essential-armhf bison flex libssl-dev bc
. Sezvo default loader ichitsvaga faira zImage
pane iyo faira system yeboot partition, inguva yekutsemura flash drive.
- Zvinotora nguva yakawandisa kuumba kernel, saka ini ndichango dhawunirodha:
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.xz
. Ngatiburitse uye tiende kune iyo source directory:tar -xf linux-5.9.1.tar.xz && cd linux-5.9.1
- Gadzirisa usati waunganidza:
make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig
. Iyo config iri mudhairekitoriarch/arm/configs/
. Kana pasina, unogona kuedza kutsvaga uye kurodha yakagadzirira-yakagadzirwa uye kupfuudza zita refaira mune ino dhairekitori separameter.KBUILD_DEFCONFIG
. Sechisarudzo chekupedzisira, pakarepo enda kune imwe pfungwa. - Optionally iwe unogona kugadzirisa marongero:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
- Uye batanidza mufananidzo:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
- Iye zvino unogona kukopa iyo kernel faira:
cp arch/arm/boot/zImage /mnt/boot/
- Uye mafaera kubva kuDeviceTree (tsanangudzo yehardware pabhodhi):
cp arch/arm/boot/dts/*.dtb /mnt/boot/
- Uye isa ma module akaunganidzwa muchimiro cheakaparadzana mafaera:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=/mnt/ modules_install
Mbeu yakagadzirira. Unogona kubvisa zvese: umount /mnt/boot/ /mnt/
Das U-Boot
Sezvo bootloader ichipindirana, zvese zvaunoda kuti uedze kushanda kwayo ibhodhi pachayo, mudziyo wekuchengetera, uye nesarudzo USB-ku-UART mudziyo. Ndokunge, iwe unogona kumisikidza kernel uye OS kune gare gare.
Ruzhinji rwevagadziri vanopa kushandisa Das U-Boot yekutanga bhutsu. Rutsigiro rwakakwana runowanzo kupihwa muforogo yavo, asi havakanganwe kupa mupiro kumusoro. Mune yangu, bhodhi inotsigirwa mukati
Ngatiunganidzei bootloader pachayo:
- Isu tinogadzira iyo yakagadzikana bazi re repository:
git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10
- Handei kune dhairekitori pacharo:
cd u-boot
- Kugadzirira chigadziro chekugadzirisa:
make mx6ull_14x14_evk_defconfig
. Izvi zvinongoshanda chete kana iyo gadziriso iri muDas U-Boot pachayo, zvikasadaro iwe unozofanirwa kutsvaga mugadziri wegadziri uye woiisa mumudzi weiyo repository mufaira..config
, kana kuunganidza neimwe nzira inokurudzirwa nemugadziri. - Isu tinounganidza iyo bootloader mufananidzo pachayo tichishandisa muchinjika-compiler
armhf
:make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx
Somugumisiro tinowana faira u-boot.imx
, ichi chifananidzo chakagadzirirwa chinogona kunyorwa kune flash drive. Isu tinonyorera kune SD kadhi, kusvetuka ekutanga 1024 bytes. Sei ndakasarudza Target u-boot.imx
? Sei ndatadza chaizvo 1024 bytes? Izvi ndizvo zvavanoronga kuita mukati
Wapedza, unogona kutanga. Iyo bhootloader inofanirwa kuzivisa yayo vhezheni, rumwe ruzivo nezve bhodhi, uye edza kutsvaga iyo kernel mufananidzo pachikamu. Kana ikasabudirira, inoedza boot pamusoro pe network. Kazhinji, kuburitsa kwacho kwakanyatso kutsanangurwa, unogona kuwana iko kukanganisa kana paine dambudziko.
Pane mhedziso
Unoziva here kuti huma ye dolphin haina bhonzo? Iro chaizvo ziso rechitatu, ane mafuta lenzi echolocation!
Source: www.habr.com