tl;dr: kogun Kali Linux'i pildi ARM-arvutile, programmiga debootstrap, linux ja u-boot.
Kui olete ostnud mõne mitte väga populaarses olnud üheplaadi arvuti, siis võisite kokku puutuda lemmikjaotuse pildifaili puudumisega. Umbes sama juhtus ka . Kali Linux'i IMX6 jaoks lihtsalt ei eksisteeri (ma valmistan), seega tuleb kõik ise kokku panna.
Käivitamisprotsess on piisavalt lihtne:
- Riistvara initsialiseeritakse.
- Mõnest piirkonnast andmekaardilt (SD-kaart/eMMC/jne) loetakse ja käivitatakse bootloader.
- Bootloader otsib operatsioonisüsteemi kernelit ja laadib selle mällu ning käivitab.
- Kernel laadib ülejäänud operatsioonisüsteemi.
Minu ülesande jaoks piisab sellisest detailsuse tasemest, üksikasju võite lugeda . Üksikasjad, mida mainisin, erinevad plaadilt plaadile, mis tekitab mingeid raskusi paigaldamisel. Serverite ARM-platvormide kasutatakse UEFI't, kuid kuna see pole veel kõikjal saadaval, tuleb kõik eraldi kokku panna.
Juurtaseme failisüsteemi kokkupanek
Esiteks tuleb partitsioonid ette valmistada. Das U-Boot toetab erinevaid FS-e, valisin FAT32 /boot ja ext3 juure jaoks, see on Kali jaoks ARM-i standardne partitsioonide jagamine. Kasutan GNU Parted'i, kuid saate teha sama ka mugavama fdiskabil. Samuti on vaja dosfstools'e ja e2fsprogs failisüsteemi loomiseks: apt install parted dosfstools e2fsprogs.
Partitsioneerime SD-kaardi:
- Määrame SD-kaardi kasutama MBR-partitsioonimist:
parted -s /dev/mmcblk0 mklabel msdos - Loome partitsiooni
/bootmahus 128 megabaiti:parted -s /dev/mmcblk0 mkpart primary fat32 1MiB 128MiB. Esimene vahele jäetud megabait tuleb jätta partitsioneeringu ja bootloaderi jaoks. - Loome juurtaseme FS kogu ülejäänud mahus:
parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100% - Kui teil ei olnud partitsioonide faile loodud või muudetud, peate käivitama `partprobe`, et partitsioonide tabel loetaks uuesti.
- Loome bootimise partitsiooni failisüsteemi sildi
BOOT:mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1 - Loome juurtaseme failisüsteemi sildiga
ROOTFS:mkfs.ext3 -L ROOTFS /dev/mmcblk0p2
Suurepärane, nüüd saab seda täita. Selleks on vajalik debootstrap, utiliit Debian-tüüpi operatsioonisüsteemide juurtaseme failisüsteemide loomiseks: apt install debootstrap.
Kogume FS:
- Mountige partitsioon
/mnt/(kasutage mugavamat mountimise punkti):mount /dev/mmcblk0p2 /mnt - Täidame failisüsteemi:
debootstrap --foreign --include=qemu-user-static --arch armhf kali-rolling /mnt/ http://http.kali.org/kali. Parameeter--includenäitab täiendavate pakettide installimist, ma määrasin staatiliselt koostatud QEMU emulaatori. See võimaldab kasutadachrootARM-ökonoomsuses. Ülejäänud valikute tähendust saab vaadataman debootstrap. Ärge unustage, et mitte iga ARM-platvorm ei toeta arhitektuuriarmhf. - Arhitektuuride erinevuse tõttu
debootstrapteostatakse kahes etapis, teine etapp toimub nii:chroot /mnt/ /debootstrap/debootstrap --second-stage - Nüüd tuleb sisse minna:
chroot /mnt /bin/bash - Täidame
/etc/hostsja/etc/hostnamesihtfailisüsteemi. Täitke sarnaselt oma kohaliku arvuti sisuga, ärge unustage vaid muuta hostinime. - Kõike muud saab veel häälestada. Eelkõige installin ma lisaks
locales(hoidla võtmed), sätin kohalikke seadeid ja ajavööndit (dpkg-reconfigure locales tzdata). Ärge unustage määrata parool käsklusegapasswd. - Määrame parooli
rootkäsklusegapasswd. - Kuvandi ettevalmistamine lõpeb minu jaoks täitmisega
/etc/fstabsees/mnt/.
Laen üles vastavalt eelnevalt loodud märkidele, seega sisu on järgmine:
LABEL=ROOTFS / auto errors=remount-ro 0 1
LABEL=BOOT /boot auto defaults 0 0
Lõpuks saame monteerida käivituspartitsiooni, seda on meil vajaminev, et käivitusprogramm oleks: `mount /dev/mmcblk0p1 /mnt/boot/`
Linuxi koostamine
Kuna käivitusprogrammi ja tuuma (ja hiljem) koostamiseks Debian Testingus tuleb installida standardne komplekt GCC-st, GNU Make'ist ja GNU C Library peadest sihtarhitektuurile (minu puhul armhf), samuti OpenSSL päised, konsoolikasutaja kalkulaator bc, bison ja flex: apt install crossbuild-essential-armhf bison flex libssl-dev bc. Kuna käivitusprogramm otsib vaikimisi faili zImage käivituspartitsiooni failisüsteemis, on aeg flash-disk jagada.
- Tuuma kloonimine on liiga aeganõudev, seega laadige lihtsalt alla:
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.xz. Väljastame ja liikume allikakausta:tar -xf linux-5.9.1.tar.xz && cd linux-5.9.1 - Konfigureerime enne koostamist:
make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig. Konfiguratsioon asub kaustasarch/arm/configs/. Kui seda pole, võite proovida leida ja alla laadida ning anda faili nime selle kausta parameeterKBUILD_DEFCONFIG. Ükskõik, kuidas, minema järgmisse punkti. - Valikuline on seadetega toimetada:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig - Ja ristsuundime pildi:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- - Nüüd saab kopeerida tuumafaili:
cp arch/arm/boot/zImage /mnt/boot/ - Ja failid DeviceTree'ist (olemasoleva riistvara kirjeldus):
cp arch/arm/boot/dts/*.dtb /mnt/boot/ - Ja installige eraldi failidena koostatavad moodulid:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=/mnt/ modules_install
Tuuma on valmis. Kõike võib lahti monteerida: umount /mnt/boot/ /mnt/
Das U-Boot
Kuna laadija on interaktiivne, piisab selle töö kontrollimiseks ainult emaplaadist, mäluseadmest ja valikuliselt USB-to-UART seadmest. Ehk siis, tuuma ja opsüsteemi saab jätta hilisemaks.
Enamik tootjatest soovitab kasutada Das U-Boot'i esialgseks käivitamiseks. Täielik tugi on tavaliselt saadaval enda forks, kuid ka upstream pole unustatud panustada. Minu juhtumi puhul on plaat toetatud , seega ma ignoreerisin.
Kogume laadija kokku:
- Kloonime stabiilse haru hoidlasse:
git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10 - Liigume hoidlasse:
cd u-boot - Valmistame ülesehituse konfiguratsiooni:
make mx6ull_14x14_evk_defconfig. See töötab ainult siis, kui konfiguratsioon on Das U-Boot'is olemas, vastasel juhul peate leidma tootja konfi ja panema selle hoidla juurkatalooge faili.config, või koguma muul soovitatud tootja meetodil. - Kogume laadija pildi ristkompileerijaga
armhf:make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx
Tulemuseks on fail u-boot.imx, see on valmis pilt, mille saab kirjutada mälupulgale. Salvestame SD-kaardile, jättes välja esimesed 1024 baiti. Miks ma valisin sihtkoha u-boot.imx? Почему пропустил именно 1024 байта? Так предлагают сделать в . Teiste plaatide puhul võib pildiks kogumise ja kirjutamise protsess veidi erineda.
Valmis, nüüd saab sisse laadida. Laadija peaks teatama enda versioonist, mõnest teabest plaadi kohta ja proovima leida tuumapilti partitsioonilt. Ebaõnnestumise korral üritab see laadida võrgu kaudu. Üldiselt on väljastus üsna üksikasjalik, vigade leidmiseks on võimalik neid leida.
Lõpetuseks
Kas teadsite, et delfiini lakke ei ole luid? See on sõna otseses mõttes kolmas silm, rasvane lääts, et helilokatsiooni jaoks!
Allikas: habr.com
