TL, dr: Rakennan ohjelmassa Kali Linux -kuvaa ARM-tietokoneelle debootstrap
, linux
и u-boot
.
Jos ostit jonkin ei kovin suositun yksilevyohjelmiston, saatat kohdata kuvan puuttumisen suosikkijakelustasi. Suunnilleen sama asia tapahtui kanssa
Latausprosessi on melko yksinkertainen:
- Laitteisto alustetaan.
- Joltain tallennuslaitteen alueelta (SD-kortti/eMMC/etc.) käynnistyslatain luetaan ja suoritetaan.
- Käynnistyslatain etsii käyttöjärjestelmän ydintä ja lataa sen jollekin muistialueelle ja suorittaa sen.
- Ydin lataa loput käyttöjärjestelmästä.
Tämä yksityiskohtaisuus riittää tehtävääni, voit lukea yksityiskohdat
Päätiedostojärjestelmän rakentaminen
Ensin sinun on valmisteltava osiot. Das U-Boot tukee erilaisia tiedostojärjestelmiä, valitsin FAT32:n /boot
ja ext3 root:lle, tämä on Kaliin vakiokuvaasettelu ARM:ssa. Käytän GNU Partedia, mutta voit tehdä saman tutummin fdisk
. Tarvitset myös dosfstools
и e2fsprogs
luodaksesi tiedostojärjestelmän: apt install parted dosfstools e2fsprogs
.
Merkitsemme SD-kortin:
- Merkitse SD-kortti käyttämään MBR-osiointia:
parted -s /dev/mmcblk0 mklabel msdos
- Luo osio alle
/boot
128 megatavulle:parted -s /dev/mmcblk0 mkpart primary fat32 1MiB 128MiB
. Ensimmäinen menetetty megatavu on jätettävä itse merkinnälle ja käynnistyslataimelle. - Luomme juuritiedostojärjestelmän koko jäljellä olevalle kapasiteetille:
parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
- Jos osiotiedostojasi ei yhtäkkiä ole luotu tai ne eivät ole muuttuneet, sinun on suoritettava `partprobe', jolloin osiotaulukko luetaan uudelleen.
- Luo tiedostojärjestelmä käynnistysosiolle tunnisteella
BOOT
:mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
- Luo juuritiedostojärjestelmä tunnisteella
ROOTFS
:mkfs.ext3 -L ROOTFS /dev/mmcblk0p2
Hienoa, nyt voit täyttää sen. Tätä varten tarvitset lisäksi debootstrap
, apuohjelma juuritiedostojärjestelmien luomiseen Debianin kaltaisille käyttöjärjestelmille: apt install debootstrap
.
Keräämme FS:
- Kiinnitä osio sisään
/mnt/
(käytä kätevämpää kiinnityspistettä):mount /dev/mmcblk0p2 /mnt
- Täytämme itse asiassa tiedostojärjestelmän:
debootstrap --foreign --include=qemu-user-static --arch armhf kali-rolling /mnt/ http://http.kali.org/kali
... Parametri--include
ilmaisee joidenkin pakettien lisäasennuksen, määritin staattisesti rakennetun QEMU-emulaattorin. Sen avulla voit esiintyächroot
ARM-ympäristössä. Muiden vaihtoehtojen merkitys löytyy kohdastaman debootstrap
. Älä unohda, että kaikki ARM-levyt eivät tue arkkitehtuuriaarmhf
. - Arkkitehtuurierojen takia
debootstrap
suoritetaan kahdessa vaiheessa, toinen suoritetaan seuraavasti:chroot /mnt/ /debootstrap/debootstrap --second-stage
- Nyt sinun täytyy rullata se:
chroot /mnt /bin/bash
- täyttää
/etc/hosts
и/etc/hostname
kohde FS. Täytä sama kuin paikallisen tietokoneesi sisältö, muista vain vaihtaa isäntänimi. - Voit muokata kaikkea muuta. Erityisesti asennan
locales
(arkistoavaimet), määritä maa- ja aikavyöhyke uudelleen (dpkg-reconfigure locales tzdata
). Älä unohda asettaa salasanaa komennollapasswd
. - Aseta salasana
root
joukkuepasswd
. - Kuvan valmistelu päättyy minulle täyttöön
/etc/fstab
sisällä/mnt/
.
Lataan aiemmin luotujen tunnisteiden mukaisesti, joten sisältö on seuraava:
LABEL=ROOTFS / auto errors=remount-ro 0 1
LABEL=BOOT /boot auto oletusasetukset 0 0
Lopuksi voit liittää käynnistysosion, tarvitsemme sitä ytimelle: `mount /dev/mmcblk0p1 /mnt/boot/`
Linux-rakennus
Jos haluat rakentaa ytimen (ja sitten käynnistyslataimen) Debian-testaukseen, sinun on asennettava standardisarja GCC-, GNU Make- ja GNU C Library -otsikkotiedostoja kohdearkkitehtuurille (minulle armhf
), sekä OpenSSL-otsikot, konsolilaskin bc
, bison
и flex
: apt install crossbuild-essential-armhf bison flex libssl-dev bc
. Koska oletuslatausohjelma etsii tiedostoa zImage
käynnistysosion tiedostojärjestelmässä on aika jakaa flash-asema.
- Ytimen kloonaaminen kestää liian kauan, joten lataan vain:
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.xz
. Puretaan paketti ja siirrytään lähteiden hakemistoon:tar -xf linux-5.9.1.tar.xz && cd linux-5.9.1
- Määritä ennen kääntämistä:
make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig
. Konfiguraatio sijaitsee hakemistossaarch/arm/configs/
. Jos sellaista ei ole, voit yrittää etsiä ja ladata valmiin tiedoston ja antaa tässä hakemistossa olevan tiedoston nimen parametriksiKBUILD_DEFCONFIG
. Viimeisenä keinona siirry välittömästi seuraavaan kohtaan. - Vaihtoehtoisesti voit säätää asetuksia:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
- Ja käännä kuva ristiin:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
- Nyt voit kopioida ydintiedoston:
cp arch/arm/boot/zImage /mnt/boot/
- Ja tiedostot DeviceTreestä (laitteiston kuvaus taululla):
cp arch/arm/boot/dts/*.dtb /mnt/boot/
- Ja asenna erillisinä tiedostoina kerätyt moduulit:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=/mnt/ modules_install
Ydin on valmis. Voit irrottaa kaiken: umount /mnt/boot/ /mnt/
Se U-boot
Koska käynnistyslatain on interaktiivinen, sen toiminnan testaamiseen tarvitset vain itse levyn, tallennuslaitteen ja valinnaisesti USB-UART-laitteen. Eli voit lykätä ytimen ja käyttöjärjestelmän myöhempää käyttöä varten.
Suurin osa valmistajista tarjoaa Das U-Bootin käyttöä alkuperäiseen käynnistykseen. Täysi tuki tarjotaan yleensä heidän omassa haarukassaan, mutta he eivät unohda osallistua ylävirtaan. Minun tapauksessani lauta on tuettu
Kootaan itse käynnistyslatain:
- Kloonaamme arkiston vakaan haaran:
git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10
- Siirrytään itse hakemistoon:
cd u-boot
- Rakennuskokoonpanon valmistelu:
make mx6ull_14x14_evk_defconfig
. Tämä toimii vain, jos asetukset ovat itse Das U-Bootissa, muuten sinun on löydettävä valmistajan asetukset ja asetettava se arkiston juureen tiedostossa.config
tai koota muulla valmistajan suosittelemalla tavalla. - Kokoamme itse käynnistyslataimen kuvan ristikääntäjällä
armhf
:make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx
Tuloksena saamme tiedoston u-boot.imx
, tämä on valmis kuva, joka voidaan kirjoittaa muistitikulle. Kirjoitamme SD-kortille ohittaen ensimmäiset 1024 tavua. Miksi valitsin Targetin u-boot.imx
? Miksi minulta puuttui täsmälleen 1024 tavua? Tätä he ehdottavat tehtäväksi
Valmis, voit käynnistää. Käynnistyslataimen tulee raportoida oma versionsa, joitain tietoja levystä ja yrittää löytää ytimen näköistiedosto osiosta. Jos se ei onnistu, se yrittää käynnistyä verkon kautta. Yleensä tulos on melko yksityiskohtainen, voit löytää virheen, jos on ongelma.
Sen sijaan johtopäätös
Tiesitkö, että delfiinin otsa ei ole luinen? Se on kirjaimellisesti kolmas silmä, rasvainen linssi kaikulokaatioon!
Lähde: will.com