GNU / Linux op engem ARM Board vun Null unzefänken (mat Kali an iMX.6 als Beispill)

tl; dr: Ech bauen e Kali Linux Bild fir en ARM Computer, am Programm debootstrap, linux и u-boot.

GNU / Linux op engem ARM Board vun Null unzefänken (mat Kali an iMX.6 als Beispill)

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 geplangt Flipper One. Et gëtt einfach kee Kali Linux fir IMX6 (ech preparéieren), also muss ech et selwer zesummestellen.

Den Downloadprozess ass ganz einfach:

  1. D'Hardware gëtt initialiséiert.
  2. Vun e puer Beräicher um Späicherapparat (SD Kaart / eMMC / etc) gëtt de Bootloader gelies an ausgefouert.
  3. De Bootloader sicht de Kernel vum Betribssystem a lued en an e puer Gedächtnisberäich an fiert et aus.
  4. De Kernel lued de Rescht vum OS.

Dësen Detailniveau ass genuch fir meng Aufgab, Dir kënnt d'Detailer liesen an engem aneren Artikel. Déi "e puer" Beräicher uewen ernimmt ënnerscheeden vun Verwaltungsrot zu Verwaltungsrot, déi schaaft puer Installatioun Schwieregkeeten. Luede ARM Server Plattformen probéiert ze standardiséieren benotzt UEFI, awer wann dëst net fir jiddereen verfügbar ass, musst Dir alles separat zesummesetzen.

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:

  1. Markéiert d'SD Kaart als MBR Partitionéierung: parted -s /dev/mmcblk0 mklabel msdos
  2. 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.
  3. Mir kreéieren e Root Dateisystem fir déi ganz verbleiwen Kapazitéit: parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
  4. 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.
  5. Erstellt e Dateiesystem fir d'Bootpartition mam Label BOOT: mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
  6. 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:

  1. Montéiert d'Partition an /mnt/ (benotzt e méi praktesche Montagepunkt): mount /dev/mmcblk0p2 /mnt
  2. 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 Leeschtunge chroot am ARM Ëmfeld. D'Bedeitung vun de verbleiwen Optiounen fannt Dir an man debootstrap. Vergiesst net datt net all ARM Board d'Architektur ënnerstëtzt armhf.
  3. 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
  4. Elo musst Dir et schrauwen: chroot /mnt /bin/bash
  5. 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.
  6. 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 setzen passwd.
  7. Setzt e Passwuert fir root Equipe passwd.
  8. 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.

  1. 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
  2. Konfiguréieren virum Kompiléierung: make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig. D'Konfiguratioun ass am Verzeechnes arch/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 weiderginn KBUILD_DEFCONFIG. Als leschten Auswee, réckelen direkt op den nächste Punkt.
  3. Optional kënnt Dir d'Astellungen upassen: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
  4. A cross-compiléiert d'Bild: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
  5. Elo kënnt Dir d'Kerneldatei kopéieren: cp arch/arm/boot/zImage /mnt/boot/
  6. An Dateien vum DeviceTree (Beschreiwung vun der Hardware um Bord): cp arch/arm/boot/dts/*.dtb /mnt/boot/
  7. 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 Haaptlinn, also Forschett Ech hunn et ignoréiert.

Loosst eis de Bootloader selwer zesummestellen:

  1. Mir klonen déi stabil Branche vum Repository: git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10
  2. Loosst eis an den Dossier selwer goen: cd u-boot
  3. 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.
  4. 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 Dokumentatioun. Fir aner Brieder kann de Bildbau an den Opnamprozess liicht anescht sinn.

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!

GNU / Linux op engem ARM Board vun Null unzefänken (mat Kali an iMX.6 als Beispill)

GNU / Linux op engem ARM Board vun Null unzefänken (mat Kali an iMX.6 als Beispill)

Source: will.com