Π—Π°Π²ΠΎΠ΄ΠΈΠΌ GNU/Linux Π½Π° ARM-ΠΏΠ»Π°Ρ‚Π΅ с нуля (Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Kali ΠΈ iMX.6)

tl;dr: ΡΠΎΠ±ΠΈΡ€Π°ΡŽ ΠΎΠ±Ρ€Π°Π· Kali Linux для ARM-ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ debootstrap, linux ΠΈ u-boot.

Π—Π°Π²ΠΎΠ΄ΠΈΠΌ GNU/Linux Π½Π° ARM-ΠΏΠ»Π°Ρ‚Π΅ с нуля (Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Kali ΠΈ iMX.6)

Если Π²Ρ‹ ΠΏΠΎΠΊΡƒΠΏΠ°Π»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ популярный ΠΎΠ΄Π½ΠΎΠΏΠ»Π°Ρ‚Π½ΠΈΠΊ, Ρ‚ΠΎ ΠΌΠΎΠ³Π»ΠΈ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒΡΡ с отсутствиСм для Π½Π΅Π³ΠΎ ΠΎΠ±Ρ€Π°Π·Π° любимого дистрибутива. ΠŸΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚ΠΎ ΠΆΠ΅ самоС ΡΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ с ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ Flipper One. Kali Linux ΠΏΠΎΠ΄ IMX6 просто Π½Π΅Ρ‚Ρƒ (я Π³ΠΎΡ‚ΠΎΠ²Π»ΡŽ), поэтому ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ приходится ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ.

ΠŸΡ€ΠΎΡ†Π΅ΡΡ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ достаточно простой:

  1. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ ΠΆΠ΅Π»Π΅Π·ΠΎ.
  2. Из Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ области Π½Π° Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‰Π΅ΠΌ устройства (SD-ΠΊΠ°Ρ€Ρ‚Π°/eMMC/etc) считываСтся ΠΈ выполняСтся Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ.
  3. Π—Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ ΠΈΡ‰Π΅Ρ‚ ядро ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Π΅Π³ΠΎ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти ΠΈ выполняСт.
  4. Π―Π΄Ρ€ΠΎ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ всю ΠΎΡΡ‚Π°Π»ΡŒΠ½ΡƒΡŽ ОБ.

Для ΠΌΠΎΠ΅ΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠ³ΠΎ уровня Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, подробности ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ‡Π΅ΡΡ‚ΡŒ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅. УпомянутыС Π²Ρ‹ΡˆΠ΅ Β«Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅Β» области ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Ρ‹ ΠΊ ΠΏΠ»Π°Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΈ создаёт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слоТности с установкой. Π—Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ сСрвСрных ARM-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ UEFI, Π½ΠΎ ΠΏΠΎΠΊΡƒΠ΄Π° это доступно Π½Π΅ для всСх, придётся ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ всё ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Π‘Π±ΠΎΡ€ΠΊΠ° ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы

Для Π½Π°Ρ‡Π°Π»Π° Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π»Ρ‹. Das U-Boot ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π·Π½Ρ‹Π΅ Π€Π‘, я Π²Ρ‹Π±Ρ€Π°Π» FAT32 для /boot ΠΈ ext3 для корня, это стандартная Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° ΠΎΠ±Ρ€Π°Π·ΠΎΠ² для Kali ΠΏΠΎΠ΄ ARM. Π― Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡΡŒ GNU Parted, Π½ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎ ΠΆΠ΅ самоС Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹ΠΌ fdisk. Π’Π°ΠΊΠΆΠ΅ понадобятся dosfstools ΠΈ e2fsprogs для создания Π€Π‘: apt install parted dosfstools e2fsprogs.

Π Π°Π·ΠΌΠ΅Ρ‡Π°Π΅ΠΌ SD-ΠΊΠ°Ρ€Ρ‚Ρƒ:

  1. ΠžΡ‚ΠΌΠ΅Ρ‡Π°Π΅ΠΌ SD-ΠΊΠ°Ρ€Ρ‚Ρƒ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΡƒΡŽ MBR-Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΡƒ: parted -s /dev/mmcblk0 mklabel msdos
  2. Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ Ρ€Π°Π·Π΄Π΅Π» ΠΏΠΎΠ΄ /boot Π½Π° 128 ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚: parted -s /dev/mmcblk0 mkpart primary fat32 1MiB 128MiB. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΉ ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ саму Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΡƒ ΠΈ ΠΏΠΎΠ΄ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ.
  3. Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ ΠΊΠΎΡ€Π½Π΅Π²ΡƒΡŽ Π€Π‘ Π½Π° всю ΠΎΡΡ‚Π°Π²ΡˆΡƒΡŽΡΡ Ρ‘ΠΌΠΊΠΎΡΡ‚ΡŒ: parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
  4. Если Π²Π΄Ρ€ΡƒΠ³ Ρƒ вас Π½Π΅ создались ΠΈΠ»ΠΈ Π½Π΅ измСнились Ρ„Π°ΠΉΠ»Ρ‹ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ², Π½Π°Π΄ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ `partprobe`, Ρ‚ΠΎΠ³Π΄Π° Ρ‚Π°Π±Π»ΠΈΡ†Π° Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡ‚Π°Π½Π°.
  5. Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму Π·Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π° с ΠΌΠ΅Ρ‚ΠΊΠΎΠΉ BOOT: mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
  6. Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ ΠΊΠΎΡ€Π½Π΅Π²ΡƒΡŽ Π€Π‘ с ΠΌΠ΅Ρ‚ΠΊΠΎΠΉ ROOTFS: mkfs.ext3 -L ROOTFS /dev/mmcblk0p2

ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π΅Ρ‘ Π·Π°ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ. Для этого Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ потрСбуСтся debootstrap, ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° для создания ΠΊΠΎΡ€Π½Π΅Π²Ρ‹Ρ… Π€Π‘ Debian-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм: apt install debootstrap.

Π‘ΠΎΠ±ΠΈΡ€Π°Π΅ΠΌ Π€Π‘:

  1. ΠœΠΎΠ½Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ Ρ€Π°Π·Π΄Π΅Π» Π² /mnt/ (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½ΡƒΡŽ для сСбя Ρ‚ΠΎΡ‡ΠΊΡƒ монтирования): mount /dev/mmcblk0p2 /mnt
  2. БобствСнно заполняСм Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму: debootstrap --foreign --include=qemu-user-static --arch armhf kali-rolling /mnt/ http://http.kali.org/kali. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ --include ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, я ΡƒΠΊΠ°Π·Π°Π» статичСски собранный эмулятор QEMU. Он позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ chroot Π² ARM-ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅. Бмысл ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΡ†ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² man debootstrap. НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π½Π΅ любая ARM-ΠΏΠ»Π°Ρ‚Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ armhf.
  3. Из-Π·Π° Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ debootstrap выполняСтся Π² Π΄Π²Π° этапа, Π²Ρ‚ΠΎΡ€ΠΎΠΉ выполняСтся Ρ‚Π°ΠΊ: chroot /mnt/ /debootstrap/debootstrap --second-stage
  4. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ Π·Π°Ρ‡Ρ€ΡƒΡ‚ΠΈΡ‚ΡŒΡΡ: chroot /mnt /bin/bash
  5. ЗаполняСм /etc/hosts ΠΈ /etc/hostname Ρ†Π΅Π»Π΅Π²ΠΎΠΉ Π€Π‘. Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с содСрТимым Π½Π° вашСм локальном ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ имя хоста.
  6. МоТно Π΄ΠΎΠ½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ всё ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅. Π’ частности я Π΄ΠΎΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽ locales (ΠΊΠ»ΡŽΡ‡ΠΈ рСпозитория), ΠΏΠ΅Ρ€Π΅Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽ Π»ΠΎΠΊΠ°Π»ΠΈ ΠΈ часовой пояс (dpkg-reconfigure locales tzdata). НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ passwd.
  7. Π—Π°Π΄Π°Ρ‘ΠΌ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ для root ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ passwd.
  8. ΠŸΡ€ΠΈΠ³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΎΠ±Ρ€Π°Π·Π° для мСня Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‚ΡΡ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ /etc/fstab Π²Π½ΡƒΡ‚Ρ€ΠΈ /mnt/.

Π—Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Π±ΡƒΠ΄Ρƒ Π² соотвСтствии с созданными Ρ€Π°Π½Π΅Π΅ ΠΌΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ, поэтому содСрТимоС Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠΌ:

LABEL=ROOTFS / auto errors=remount-ro 0 1
LABEL=BOOT /boot auto defaults 0 0

НаконСц, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π», ΠΎΠ½ Π½Π°ΠΌ понадобится для ядра: `mount /dev/mmcblk0p1 /mnt/boot/`

Π‘Π±ΠΎΡ€ΠΊΠ° Linux

Для сборки ядра (ΠΈ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ° ΠΏΠΎΡ‚ΠΎΠΌ) Π½Π° Debian Testing Π½Π°Π΄ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ стандартный Π½Π°Π±ΠΎΡ€ ΠΈΠ· GCC, GNU Make ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² GNU C Library для Ρ†Π΅Π»Π΅Π²ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ (Ρƒ мСня armhf), Π° Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ OpenSSL, ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ bc, bison ΠΈ flex: apt install crossbuild-essential-armhf bison flex libssl-dev bc. Π’Π°ΠΊ ΠΊΠ°ΠΊ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΡ‰Π΅Ρ‚ Ρ„Π°ΠΉΠ» zImage Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС Π·Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π°, ΠΏΠΎΡ€Π° Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ Ρ„Π»Π΅ΡˆΠΊΡƒ.

  1. ΠšΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ядро слишком Π΄ΠΎΠ»Π³ΠΎ, поэтому просто ΡΠΊΠ°Ρ‡Π°ΡŽ: wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.xz. РаспакуСм ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Ρ‘ΠΌ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ с исходниками: tar -xf linux-5.9.1.tar.xz && cd linux-5.9.1
  2. ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄ компиляциСй: make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig. ΠšΠΎΠ½Ρ„ΠΈΠ³ находится Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ arch/arm/configs/. Если Ρ‚Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ Π½Π΅Ρ‚, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°ΠΉΡ‚ΠΈ ΠΈ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° Π² этой Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ KBUILD_DEFCONFIG. Π’ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΌ случаС сразу ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΏΡƒΠ½ΠΊΡ‚Ρƒ.
  3. ΠžΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠΊΡ€ΡƒΡ‚ΠΈΡ‚ΡŒ настройки: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
  4. И кроскомпилируСм ΠΎΠ±Ρ€Π°Π·: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
  5. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»ΠΈΠΊ с ядром: cp arch/arm/boot/zImage /mnt/boot/
  6. И Ρ„Π°ΠΉΠ»Ρ‹ с DeviceTree (описаниС ΠΈΠΌΠ΅ΡŽΡ‰Π΅Π³ΠΎΡΡ Π½Π° ΠΏΠ»Π°Ρ‚Π΅ ΠΆΠ΅Π»Π΅Π·Π°): cp arch/arm/boot/dts/*.dtb /mnt/boot/
  7. И Π΄ΠΎΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ собранныС Π² Π²ΠΈΠ΄Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΌΠΎΠ΄ΡƒΠ»ΠΈ: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=/mnt/ modules_install

Π―Π΄Ρ€ΠΎ Π³ΠΎΡ‚ΠΎΠ²ΠΎ. МоТно всё ΠΎΡ‚ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ: umount /mnt/boot/ /mnt/

Das U-Boot

Π’Π°ΠΊ ΠΊΠ°ΠΊ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ, для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹ достаточно самой ΠΏΠ»Π°Ρ‚Ρ‹, Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‰Π΅Π³ΠΎ устройства ΠΈ ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ устройства USB-to-UART. Π’ΠΎ Π΅ΡΡ‚ΡŒ, ΠΌΠΎΠΆΠ½ΠΎ ядро ΠΈ ОБ ΠΎΡ‚Π»ΠΎΠΆΠΈΡ‚ΡŒ Π½Π° ΠΏΠΎΡ‚ΠΎΠΌ.

ΠΠ±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Das U-Boot для ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. ΠŸΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ обСспСчиваСтся Π² собствСнном Ρ„ΠΎΡ€ΠΊΠ΅, Π½ΠΎ ΠΈ Π² апстрим ΠΊΠΎΠ½Ρ‚Ρ€ΠΈΠ±ΡŒΡŽΡ‚ΠΈΡ‚ΡŒ Π½Π΅ Π·Π°Π±Ρ‹Π²Π°ΡŽΡ‚. Π’ ΠΌΠΎΡ‘ΠΌ случаС ΠΏΠ»Π°Ρ‚Π° поддСрТиваСтся Π² ΠΌΠ΅ΠΉΠ½Π»Π°ΠΉΠ½Π΅, поэтому Ρ„ΠΎΡ€ΠΊ я ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π».

CΠΎΠ±ΠΈΡ€Π°Π΅ΠΌ сам Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ:

  1. ΠšΠ»ΠΎΠ½ΠΈΡ€ΡƒΠ΅ΠΌ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ рСпозитория: git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10
  2. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² саму Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ: cd u-boot
  3. Π“ΠΎΡ‚ΠΎΠ²ΠΈΠΌ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ сборки: make mx6ull_14x14_evk_defconfig. Π­Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли конфигурация Π΅ΡΡ‚ΡŒ Π² самом Das U-Boot, Π² ΠΈΠ½ΠΎΠΌ случаС Π²Π°ΠΌ потрСбуСтся Π½Π°ΠΉΡ‚ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ производитСля ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² ΠΊΠΎΡ€Π΅Π½ΡŒ рСпозитория Π² Ρ„Π°ΠΉΠ» .config, ΠΈΠ»ΠΈ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΈΠ½Ρ‹ΠΌ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.
  4. Π‘ΠΎΠ±ΠΈΡ€Π°Π΅ΠΌ сам ΠΎΠ±Ρ€Π°Π· Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ° кросс-компилятором armhf: make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» u-boot.imx, это Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π·, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π½Π° Ρ„Π»Π΅ΡˆΠΊΡƒ. ЗаписываСм Π½Π° SD-ΠΊΠ°Ρ€Ρ‚Ρƒ, пропустив ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 1024 Π±Π°ΠΉΡ‚Π°. ΠŸΠΎΡ‡Π΅ΠΌΡƒ я Π²Ρ‹Π±Ρ€Π°Π» Ρ‚Π°Ρ€Π³Π΅Ρ‚ u-boot.imx? ΠŸΠΎΡ‡Π΅ΠΌΡƒ пропустил ΠΈΠΌΠ΅Π½Π½ΠΎ 1024 Π±Π°ΠΉΡ‚Π°? Π’Π°ΠΊ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. Для Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ»Π°Ρ‚ процСсс сборки ΠΎΠ±Ρ€Π°Π·Π° ΠΈ записи ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ.

Π“ΠΎΡ‚ΠΎΠ²ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΡΡ. Π—Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΠ»Π°Ρ‚Π΅ ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Π½Π°ΠΉΡ‚ΠΈ ΠΎΠ±Ρ€Π°Π· ядра Π½Π° Ρ€Π°Π·Π΄Π΅Π»Π΅. Π’ случаС Π½Π΅ΡƒΠ΄Π°Ρ‡ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΡΡ ΠΏΠΎ сСти. Π’ Ρ†Π΅Π»ΠΎΠΌ Π²Ρ‹Π²ΠΎΠ΄ довольно ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² случаС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

ВмСсто Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ

А Π²Ρ‹ Π·Π½Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ Π»ΠΎΠ± Ρƒ Π΄Π΅Π»ΡŒΡ„ΠΈΠ½Π° Π½Π΅ костистый? Π­Ρ‚ΠΎ Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ Π³Π»Π°Π·, Тировая Π»ΠΈΠ½Π·Π° для эхолокации!

Π—Π°Π²ΠΎΠ΄ΠΈΠΌ GNU/Linux Π½Π° ARM-ΠΏΠ»Π°Ρ‚Π΅ с нуля (Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Kali ΠΈ iMX.6)

Π—Π°Π²ΠΎΠ΄ΠΈΠΌ GNU/Linux Π½Π° ARM-ΠΏΠ»Π°Ρ‚Π΅ с нуля (Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Kali ΠΈ iMX.6)

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com