Byrja GNU/Linux á ARM borð frá grunni (með Kali og iMX.6 sem dæmi)

TL; Dr: Ég er að smíða Kali Linux mynd fyrir ARM tölvu, í forritinu debootstrap, linux и u-boot.

Byrja GNU/Linux á ARM borð frá grunni (með Kali og iMX.6 sem dæmi)

Ef þú keyptir ekki mjög vinsælan hugbúnað á einu borði gætirðu staðið frammi fyrir skorti á mynd af uppáhalds dreifingunni þinni fyrir hann. Um það bil það sama gerðist með skipulagði Flipper One. Það er einfaldlega ekkert Kali Linux fyrir IMX6 (ég er að undirbúa), svo ég verð að setja það saman sjálfur.

Niðurhalsferlið er frekar einfalt:

  1. Vélbúnaðurinn er frumstilltur.
  2. Frá einhverju svæði á geymslutækinu (SD kort/eMMC/etc) er ræsiforritið lesið og keyrt.
  3. Bootloaderinn leitar að stýrikerfiskjarnanum og hleður honum inn á eitthvað minnissvæði og keyrir það.
  4. Kjarninn hleður restinni af stýrikerfinu.

Þetta smáatriði er nóg fyrir verkefni mitt, þú getur lesið smáatriðin í annarri grein. „sum“ svæðin sem nefnd eru hér að ofan eru mismunandi frá borði til borðs, sem skapar nokkra uppsetningarerfiðleika. Hleður ARM miðlara palla að reyna að staðla með UEFI, en á meðan þetta er ekki í boði fyrir alla, verður þú að setja allt saman sérstaklega.

Að byggja upp rótarskráarkerfið

Fyrst þarftu að undirbúa hlutana. Das U-Boot styður mismunandi skráarkerfi, ég valdi FAT32 fyrir /boot og ext3 fyrir rót, þetta er staðlað mynduppsetning fyrir Kali á ARM. Ég mun nota GNU Parted, en þú getur gert það sama á kunnuglegri hátt fdisk. Þú munt líka þurfa dosfstools и e2fsprogs til að búa til skráarkerfi: apt install parted dosfstools e2fsprogs.

Við merkjum SD kortið:

  1. Merktu SD-kortið sem MBR skipting: parted -s /dev/mmcblk0 mklabel msdos
  2. Búðu til hluta undir /boot fyrir 128 megabæti: parted -s /dev/mmcblk0 mkpart primary fat32 1MiB 128MiB. Fyrsta megabætið sem gleymist verður að skilja eftir fyrir merkinguna sjálfa og fyrir ræsiforritið.
  3. Við búum til rótarskráarkerfi fyrir alla getu sem eftir er: parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
  4. Ef skyndilega hafa skiptingarskrárnar þínar ekki verið búnar til eða hafa ekki breyst þarftu að keyra `partprobe`, þá verður skiptingartaflan endurlesin.
  5. Búðu til skráarkerfi fyrir ræsiskiptinguna með merkimiðanum BOOT: mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
  6. Búðu til rótarskráarkerfi með merkimiða ROOTFS: mkfs.ext3 -L ROOTFS /dev/mmcblk0p2

Frábært, nú geturðu fyllt það út. Fyrir þetta þarftu að auki debootstrap, tól til að búa til rótarskráarkerfi fyrir Debian-lík stýrikerfi: apt install debootstrap.

Við söfnum FS:

  1. Festu skilrúmið í /mnt/ (notaðu þægilegri festingarpunkt): mount /dev/mmcblk0p2 /mnt
  2. Við fyllum í raun skráarkerfið: debootstrap --foreign --include=qemu-user-static --arch armhf kali-rolling /mnt/ http://http.kali.org/kali... Parameter --include gefur til kynna að setja upp nokkra pakka til viðbótar, ég tilgreindi kyrrstæðan QEMU keppinaut. Það gerir þér kleift að framkvæma chroot í ARM umhverfinu. Merkingu þeirra valmöguleika sem eftir eru má finna í man debootstrap. Ekki gleyma því að ekki hvert ARM borð styður arkitektúrinn armhf.
  3. Vegna munarins á arkitektúr debootstrap er flutt í tveimur áföngum, annað er flutt svona: chroot /mnt/ /debootstrap/debootstrap --second-stage
  4. Nú þarftu að klúðra þessu: chroot /mnt /bin/bash
  5. Við fyllum út /etc/hosts и /etc/hostname miða við FS. Fylltu út það sama og efnið á tölvunni þinni, mundu bara að skipta um hýsilnafnið.
  6. Þú getur sérsniðið allt annað. Sérstaklega set ég upp locales (geymslulyklar), endurstilltu staðsetningar og tímabelti (dpkg-reconfigure locales tzdata). Ekki gleyma að setja lykilorðið með skipuninni passwd.
  7. Stilltu lykilorð fyrir root teymið passwd.
  8. Undirbúningur myndarinnar fyrir mig endar með fyllingu /etc/fstab innan /mnt/.

Ég mun hlaða upp í samræmi við áður búið til merki, þannig að efnið verður svona:

LABEL=ROOTFS / sjálfvirkar villur=remount-ro 0 1
LABEL=BOOT /boot auto defaults 0 0

Að lokum geturðu tengt ræsihlutinn, við munum þurfa hana fyrir kjarnann: `mount /dev/mmcblk0p1 /mnt/boot/`

Linux smíði

Til að byggja kjarnann (og síðan ræsiforritið) á Debian Testing þarftu að setja upp staðlað sett af GCC, GNU Make og GNU C Library hausskrám fyrir markarkitektúrinn (fyrir mig) armhf), sem og OpenSSL hausa, stjórnborðsreiknivél bc, bison и flex: apt install crossbuild-essential-armhf bison flex libssl-dev bc. Þar sem sjálfgefna hleðslutækið leitar að skránni zImage á skráarkerfi ræsihlutans er kominn tími til að skipta flassdrifinu.

  1. Það tekur of langan tíma að klóna kjarnann, svo ég skal bara hlaða niður: wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.xz. Við skulum taka upp og fara í möppuna með heimildunum: tar -xf linux-5.9.1.tar.xz && cd linux-5.9.1
  2. Stilla fyrir samantekt: make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig. Stillingin er staðsett í möppunni arch/arm/configs/. Ef það er engin geturðu reynt að finna og hlaða niður tilbúinni og senda nafn skráarinnar í þessa möppu sem færibreytu KBUILD_DEFCONFIG. Sem síðasta úrræði skaltu fara strax á næsta stig.
  3. Valfrjálst geturðu lagfært stillingarnar: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
  4. Og krosssettu myndina: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
  5. Nú geturðu afritað kjarnaskrána: cp arch/arm/boot/zImage /mnt/boot/
  6. Og skrár frá DeviceTree (lýsing á vélbúnaði á borðinu): cp arch/arm/boot/dts/*.dtb /mnt/boot/
  7. Og settu upp einingarnar sem safnað er í formi aðskildra skráa: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=/mnt/ modules_install

Kjarninn er tilbúinn. Þú getur aftengt allt: umount /mnt/boot/ /mnt/

Þetta U-stígvél

Þar sem ræsiforritið er gagnvirkt er allt sem þú þarft til að prófa virkni hans borðið sjálft, geymslutæki og mögulega USB-til-UART tæki. Það er, þú getur frestað kjarnanum og stýrikerfinu til síðari tíma.

Langflestir framleiðendur bjóða upp á að nota Das U-Boot fyrir fyrstu ræsingu. Fullur stuðningur er venjulega veittur í þeirra eigin gaffli, en þeir gleyma ekki að leggja sitt af mörkum til andstreymis. Í mínu tilfelli er stjórnin studd í aðallínaSvo gaffal Ég hunsaði það.

Við skulum setja saman ræsiforritið sjálft:

  1. Við klónum stöðugu útibú geymslunnar: git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10
  2. Við skulum fara í möppuna sjálfa: cd u-boot
  3. Undirbúningur byggingarstillingar: make mx6ull_14x14_evk_defconfig. Þetta virkar aðeins ef uppsetningin er í Das U-Boot sjálfu, annars þarftu að finna stillingar framleiðanda og setja hana í rót geymslunnar í skrá .config, eða setja saman á annan hátt sem framleiðandi mælir með.
  4. Við setjum saman ræsiforritsmyndina sjálfa með því að nota krossþýðanda armhf: make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx

Fyrir vikið fáum við skrána u-boot.imx, þetta er tilbúin mynd sem hægt er að skrifa á flash-drif. Við skrifum á SD-kortið og sleppum fyrstu 1024 bætunum. Af hverju valdi ég Target u-boot.imx? Af hverju missti ég af nákvæmlega 1024 bætum? Þetta er það sem þeir leggja til að gert verði í skjöl. Fyrir önnur borð getur myndbygging og upptökuferlið verið aðeins öðruvísi.

Búið, þú getur ræst. Bootloader verður að tilkynna sína eigin útgáfu, einhverjar upplýsingar um borðið og reyna að finna kjarnamyndina á skiptingunni. Ef það tekst ekki mun það reyna að ræsa sig yfir netið. Almennt séð er framleiðslan nokkuð ítarleg, þú getur fundið villuna ef það er vandamál.

Í stað þess að niðurstöðu

Vissir þú að enni höfrunga er ekki beinvaxið? Það er bókstaflega þriðja augað, feit linsa fyrir bergmál!

Byrja GNU/Linux á ARM borð frá grunni (með Kali og iMX.6 sem dæmi)

Byrja GNU/Linux á ARM borð frá grunni (með Kali og iMX.6 sem dæmi)

Heimild: www.habr.com