Kutanga GNU/Linux pane ARM board kubva kutanga (uchishandisa Kali uye iMX.6 semuenzaniso)

tl; dr: Ndiri kuvaka mufananidzo weKali Linux wekombuta yeARM, muchirongwa debootstrap, linux ΠΈ u-boot.

Kutanga GNU/Linux pane ARM board kubva kutanga (uchishandisa Kali uye iMX.6 semuenzaniso)

Kana iwe wakatenga isinganyanyo kufarirwa imwe-bhodhi software, unogona kunge wakatarisana nekushaikwa kwemufananidzo wekugovera kwaunofarira kwayo. Zvinenge zvakafanana zvakaitika akaronga Flipper One. Iko hakuna Kali Linux yeIMX6 (ndiri kugadzirira), saka ndinofanira kuiunganidza pachangu.

Maitiro ekurodha ari nyore:

  1. Iyo hardware inotangwa.
  2. Kubva pane imwe nzvimbo pane yekuchengetedza mudziyo (SD kadhi/eMMC/etc) iyo bootloader inoverengwa nekuitwa.
  3. Iyo bootloader inotarisa iyo inoshanda sisitimu kernel uye inoiisa mune imwe ndangariro nzvimbo uye inoitora.
  4. Iyo kernel inotakura yakasara yeOS.

Iyi nhanho yeruzivo yakakwanira basa rangu, unogona kuverenga iwo maficha mune imwe chinyorwa. Idzo "dzimwe" nzvimbo dzataurwa pamusoro dzinosiyana kubva pabhodhi nebhodhi, izvo zvinogadzira mamwe matambudziko ekuisa. Kurodha mapuratifomu eArM server kuedza kuenzanisa uchishandisa UEFI, asi nepo izvi zvisingawanikwe kune wese munhu, uchafanirwa kuunganidza zvese zvakasiyana.

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:

  1. Maka iyo SD kadhi sekushandisa MBR partitioning: parted -s /dev/mmcblk0 mklabel msdos
  2. 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.
  3. Isu tinogadzira midzi faira system kune yese yasara chiyero: parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
  4. Kana kamwe-kamwe mafaera ako ekugovera asina kugadzirwa kana asina kuchinjwa, unofanirwa kumhanya `partprobe`, ipapo tafura yekugovera ichaverengerwa zvakare.
  5. Gadzira faira system yeboot partition ine label BOOT: mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
  6. 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:

  1. Isai partition mukati /mnt/ (shandisa nzvimbo iri nyore yekukwira): mount /dev/mmcblk0p2 /mnt
  2. 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 kuita chroot munharaunda yeARM. Zvinorehwa nesarudzo dzasara dzinogona kuwanikwa mukati man debootstrap. Usakanganwa kuti haisi yega yega ARM board inotsigira dhizaini armhf.
  3. Nekuda kwekusiyana kwezvivakwa debootstrap inoitwa mumatanho maviri, yechipiri inoitwa seizvi: chroot /mnt/ /debootstrap/debootstrap --second-stage
  4. Iye zvino iwe unofanirwa kuigadzirisa: chroot /mnt /bin/bash
  5. Tinozadza /etc/hosts ΠΈ /etc/hostname chinangwa cheFS. Zadza zvakafanana nezviri pakombiyuta yako yemunharaunda, ingoyeuka kutsiva zita remugamuchiri.
  6. Iwe unogona kugadzirisa zvimwe zvese. Kunyanya, ndinoisa locales (repository kiyi), gadzirisazve nzvimbo nenzvimbo yenguva (dpkg-reconfigure locales tzdata) Usakanganwa kuseta password nemirairo passwd.
  7. Seta password ye root team passwd.
  8. 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.

  1. 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
  2. Gadzirisa usati waunganidza: make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig. Iyo config iri mudhairekitori arch/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.
  3. Optionally iwe unogona kugadzirisa marongero: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
  4. Uye batanidza mufananidzo: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
  5. Iye zvino unogona kukopa iyo kernel faira: cp arch/arm/boot/zImage /mnt/boot/
  6. Uye mafaera kubva kuDeviceTree (tsanangudzo yehardware pabhodhi): cp arch/arm/boot/dts/*.dtb /mnt/boot/
  7. 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 mainline, saka fork Handina kuita hanya nazvo.

Ngatiunganidzei bootloader pachayo:

  1. Isu tinogadzira iyo yakagadzikana bazi re repository: git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10
  2. Handei kune dhairekitori pacharo: cd u-boot
  3. 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.
  4. 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 zvinyorwa. Kune mamwe mabhodhi, chivakwa chemufananidzo uye nzira yekurekodha inogona kunge yakasiyana zvishoma.

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!

Kutanga GNU/Linux pane ARM board kubva kutanga (uchishandisa Kali uye iMX.6 semuenzaniso)

Kutanga GNU/Linux pane ARM board kubva kutanga (uchishandisa Kali uye iMX.6 semuenzaniso)

Source: www.habr.com