tl; dr: Ech bauen e Kali Linux Bild fir en ARM Computer, am Programm debootstrap
, linux
и u-boot
.
Wann Dir e puer net ganz populär Single-Board Software kaaft hutt, kënnt Dir mat dem Mangel un engem Bild vun Ärem Lieblingsverdeelung konfrontéiert sinn. Ongeféier datselwecht geschitt mat
Den Downloadprozess ass ganz einfach:
- D'Hardware gëtt initialiséiert.
- Vun e puer Beräicher um Späicherapparat (SD Kaart / eMMC / etc) gëtt de Bootloader gelies an ausgefouert.
- De Bootloader sicht de Kernel vum Betribssystem a lued en an e puer Gedächtnisberäich an fiert et aus.
- De Kernel lued de Rescht vum OS.
Dësen Detailniveau ass genuch fir meng Aufgab, Dir kënnt d'Detailer liesen
De Root Dateisystem bauen
Als éischt musst Dir d'Sektiounen virbereeden. Das U-Boot ënnerstëtzt verschidde Fichier Systemer, Ech gewielt FAT32 fir /boot
an ext3 fir root, dëst ass de Standard Bild Layout fir Kali op ARM. Ech benotze GNU Parted, awer Dir kënnt datselwecht op eng méi vertraute Manéier maachen fdisk
. Dir wäert och brauchen dosfstools
и e2fsprogs
fir e Dateiesystem ze kreéieren: apt install parted dosfstools e2fsprogs
.
Mir markéieren d'SD Kaart:
- Markéiert d'SD Kaart als MBR Partitionéierung:
parted -s /dev/mmcblk0 mklabel msdos
- Schafen eng Rubrik ënner
/boot
fir 128 megabytes:parted -s /dev/mmcblk0 mkpart primary fat32 1MiB 128MiB
. Den éischte Megabyte verpasst muss fir d'Markup selwer a fir de Bootloader verlooss ginn. - Mir kreéieren e Root Dateisystem fir déi ganz verbleiwen Kapazitéit:
parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
- Wann op eemol Är Partitionsdateien net erstallt goufen oder net geännert goufen, musst Dir `partprobe` ausféieren, da gëtt d'Partitionstabel nei gelies.
- Erstellt e Dateiesystem fir d'Bootpartition mam Label
BOOT
:mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
- Erstellt e Root Dateisystem mat engem Label
ROOTFS
:mkfs.ext3 -L ROOTFS /dev/mmcblk0p2
Super, elo kënnt Dir et ausfëllen. Fir dëst wäert Dir zousätzlech brauchen debootstrap
, en Utility fir Root Dateisystemer fir Debian-ähnlech Betribssystemer ze kreéieren: apt install debootstrap
.
Mir sammelen FS:
- Montéiert d'Partition an
/mnt/
(benotzt e méi praktesche Montagepunkt):mount /dev/mmcblk0p2 /mnt
- Mir fëllen tatsächlech de Dateisystem:
debootstrap --foreign --include=qemu-user-static --arch armhf kali-rolling /mnt/ http://http.kali.org/kali
. Parameter--include
weist fir zousätzlech e puer Packagen z'installéieren, hunn ech e statesch gebaute QEMU Emulator uginn. Et erlaabt Iech ze Leeschtungechroot
am ARM Ëmfeld. D'Bedeitung vun de verbleiwen Optiounen fannt Dir anman debootstrap
. Vergiesst net datt net all ARM Board d'Architektur ënnerstëtztarmhf
. - Wéinst dem Ënnerscheed an der Architektur
debootstrap
gëtt an zwou Etappen duerchgefouert, déi zweet gëtt esou gemaach:chroot /mnt/ /debootstrap/debootstrap --second-stage
- Elo musst Dir et schrauwen:
chroot /mnt /bin/bash
- Mir fëllen an
/etc/hosts
и/etc/hostname
Zil FS. Fëllt datselwecht aus wéi den Inhalt op Ärem lokalen Computer, erënnert just un den Hostnumm ze ersetzen. - Dir kënnt alles anescht personaliséieren. Besonnesch installéieren ech
locales
(Repository Schlësselen), lokalen an Zäitzone nei konfiguréieren (dpkg-reconfigure locales tzdata
). Vergiesst net d'Passwuert mat dem Kommando ze setzenpasswd
. - Setzt e Passwuert fir
root
Equipepasswd
. - D'Virbereedung vum Bild fir mech endet mat Fëllung
/etc/fstab
innerhalb/mnt/
.
Ech lueden am Aklang mat de virdru erstallte Tags erop, sou datt den Inhalt esou ass:
LABEL=ROOTFS / auto errors=remount-ro 0 1
LABEL=BOOT /Boot Auto Default 0 0
Schlussendlech kënnt Dir d'Bootpartition montéieren, mir brauche se fir de Kernel: `mount /dev/mmcblk0p1 /mnt/boot/`
Linux bauen
Fir de Kernel (an dann de Bootloader) op Debian Testen ze bauen, musst Dir e Standard Set vu GCC, GNU Make an GNU C Library Header Dateie fir d'Zilarchitektur installéieren (fir mech armhf
), souwéi OpenSSL Header, Konsolrechner bc
, bison
и flex
: apt install crossbuild-essential-armhf bison flex libssl-dev bc
. Zënter dem Standardloader sicht d'Datei zImage
am Dateiesystem vun der Bootpartition ass et Zäit de Flash Drive ze splécken.
- Et dauert ze laang fir de Kernel ze klonen, also wäert ech just eroflueden:
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.xz
. Loosst eis auspacken a gitt an de Quellverzeechnes:tar -xf linux-5.9.1.tar.xz && cd linux-5.9.1
- Konfiguréieren virum Kompiléierung:
make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig
. D'Konfiguratioun ass am Verzeechnesarch/arm/configs/
. Wann et keen ass, kënnt Dir probéieren e fäerdege fäerdeg ze fannen an erofzelueden an den Numm vun der Datei an dësem Verzeechnes als Parameter weiderginnKBUILD_DEFCONFIG
. Als leschten Auswee, réckelen direkt op den nächste Punkt. - Optional kënnt Dir d'Astellungen upassen:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
- A cross-compiléiert d'Bild:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
- Elo kënnt Dir d'Kerneldatei kopéieren:
cp arch/arm/boot/zImage /mnt/boot/
- An Dateien vum DeviceTree (Beschreiwung vun der Hardware um Bord):
cp arch/arm/boot/dts/*.dtb /mnt/boot/
- An installéiert d'Moduler gesammelt a Form vun getrennten Dateien:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=/mnt/ modules_install
De Kär ass prett. Dir kënnt alles demontéieren: umount /mnt/boot/ /mnt/
Dass U-Boot
Well de Bootloader interaktiv ass, ass alles wat Dir braucht fir seng Operatioun ze testen de Board selwer, e Späicherapparat, an optional en USB-zu-UART Apparat. Dat ass, Dir kënnt de Kernel an den OS fir spéider ausstellen.
Déi grouss Majoritéit vun den Hiersteller bidden Das U-Boot fir den initialen Boot ze benotzen. Voll Ënnerstëtzung gëtt normalerweis an hirer eegener Gabel geliwwert, awer si vergiessen net zum Upstream bäizedroen. A mengem Fall gëtt de Verwaltungsrot ënnerstëtzt an
Loosst eis de Bootloader selwer zesummestellen:
- Mir klonen déi stabil Branche vum Repository:
git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10
- Loosst eis an den Dossier selwer goen:
cd u-boot
- Virbereedung vun der Baukonfiguratioun:
make mx6ull_14x14_evk_defconfig
. Dëst funktionnéiert nëmme wann d'Konfiguratioun am Das U-Boot selwer ass, soss musst Dir d'Konfiguratioun vum Hiersteller fannen an et an der Root vum Repository an enger Datei setzen.config
, oder montéieren op all aner Manéier vum Hiersteller recommandéiert. - Mir sammelen d'Bootloader-Bild selwer mat engem Cross-Compiler
armhf
:make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx
Als Resultat kréien mir de Fichier u-boot.imx
, Dëst ass e fäerdegt Bild dat op e Flash Drive geschriwwe ka ginn. Mir schreiwen op d'SD Kaart, sprangen déi éischt 1024 Bytes. Firwat hunn ech Target gewielt u-boot.imx
? Firwat hunn ech genee 1024 Bytes verpasst? Dëst ass wat se proposéieren ze maachen an
Fäerdeg, Dir kënnt booten. De Bootloader muss seng eege Versioun mellen, e puer Informatioun iwwer de Board, a probéiert de Kernelbild op der Partition ze fannen. Wann et net erfollegräich ass, probéiert et iwwer d'Netz ze booten. Am Allgemengen ass d'Ausgab zimlech detailléiert, Dir kënnt de Feeler fannen wann et e Problem ass.
Amplaz vun enger Konklusioun
Wousst Dir datt d'Stir vun engem Delfin net knacheg ass? Et ass wuertwiertlech en drëtt Auge, eng fett Lens fir Echolokatioun!
Source: will.com