TL; Dr: Ég er að smíða Kali Linux mynd fyrir ARM tölvu, í forritinu debootstrap
, linux
и u-boot
.
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ð
Niðurhalsferlið er frekar einfalt:
- Vélbúnaðurinn er frumstilltur.
- Frá einhverju svæði á geymslutækinu (SD kort/eMMC/etc) er ræsiforritið lesið og keyrt.
- Bootloaderinn leitar að stýrikerfiskjarnanum og hleður honum inn á eitthvað minnissvæði og keyrir það.
- Kjarninn hleður restinni af stýrikerfinu.
Þetta smáatriði er nóg fyrir verkefni mitt, þú getur lesið smáatriðin
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ð:
- Merktu SD-kortið sem MBR skipting:
parted -s /dev/mmcblk0 mklabel msdos
- 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ð. - Við búum til rótarskráarkerfi fyrir alla getu sem eftir er:
parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
- Ef skyndilega hafa skiptingarskrárnar þínar ekki verið búnar til eða hafa ekki breyst þarftu að keyra `partprobe`, þá verður skiptingartaflan endurlesin.
- Búðu til skráarkerfi fyrir ræsiskiptinguna með merkimiðanum
BOOT
:mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
- 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:
- Festu skilrúmið í
/mnt/
(notaðu þægilegri festingarpunkt):mount /dev/mmcblk0p2 /mnt
- 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æmachroot
í ARM umhverfinu. Merkingu þeirra valmöguleika sem eftir eru má finna íman debootstrap
. Ekki gleyma því að ekki hvert ARM borð styður arkitektúrinnarmhf
. - Vegna munarins á arkitektúr
debootstrap
er flutt í tveimur áföngum, annað er flutt svona:chroot /mnt/ /debootstrap/debootstrap --second-stage
- Nú þarftu að klúðra þessu:
chroot /mnt /bin/bash
- 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ð. - Þú 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ð skipuninnipasswd
. - Stilltu lykilorð fyrir
root
teymiðpasswd
. - 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.
- Þ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
- Stilla fyrir samantekt:
make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig
. Stillingin er staðsett í möppunniarch/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æribreytuKBUILD_DEFCONFIG
. Sem síðasta úrræði skaltu fara strax á næsta stig. - Valfrjálst geturðu lagfært stillingarnar:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
- Og krosssettu myndina:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
- Nú geturðu afritað kjarnaskrána:
cp arch/arm/boot/zImage /mnt/boot/
- Og skrár frá DeviceTree (lýsing á vélbúnaði á borðinu):
cp arch/arm/boot/dts/*.dtb /mnt/boot/
- 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 í
Við skulum setja saman ræsiforritið sjálft:
- Við klónum stöðugu útibú geymslunnar:
git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10
- Við skulum fara í möppuna sjálfa:
cd u-boot
- 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ð. - 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 í
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!
Heimild: www.habr.com