Ngamimitian GNU/Linux dina papan ARM ti mimiti (ngagunakeun Kali sareng iMX.6 salaku conto)

TL; dr: Kuring ngawangun gambar Kali Linux pikeun komputer ARM, dina program debootstrap, linux и u-boot.

Ngamimitian GNU/Linux dina papan ARM ti mimiti (ngagunakeun Kali sareng iMX.6 salaku conto)

Upami anjeun ngagaleuh sababaraha pamayaran tunggal anu henteu populer pisan, anjeun tiasa mendakan kurangna gambar kit distribusi karesep anjeun. Lumayan loba hal anu sarua kajadian ka rencanana Flipper Hiji. Henteu aya Kali Linux pikeun IMX6 (kuring nuju masak), janten kuring kedah ngumpul nyalira.

Prosés download cukup basajan:

  1. Hardware ieu initialized.
  2. Ti sababaraha wewengkon dina alat panyimpen (kartu SD / eMMC / jsb) bootloader dibaca tur dieksekusi.
  3. Loader milarian kernel sistem operasi sareng ngamuat kana sababaraha daérah mémori sareng ngalaksanakeunana.
  4. Kernel ngamuat sesa OS.

Pikeun tugas kuring, tingkat jéntré ieu cukup, anjeun tiasa maca rinci dina tulisan séjén. The "sababaraha" wewengkon disebutkeun di luhur béda ti dewan ka dewan, nu nyiptakeun sababaraha kasusah instalasi. Ngamuat platform ARM server nyobian ngabakukeun ngagunakeun UEFI, tapi salami éta henteu sayogi pikeun sadayana, anjeun kedah ngumpulkeun sadayana nyalira.

Ngawangun sistem file root

Kahiji maneh kudu nyiapkeun bagian. Das U-Boot ngarojong sistem file béda, Kuring milih FAT32 pikeun /boot sareng ext3 pikeun akar, ieu mangrupikeun markup gambar standar pikeun Kali handapeun ARM. Abdi nganggo GNU Parted, tapi anjeun tiasa ngadamel anu sami langkung akrab fdisk. Anjeun ogé bakal butuh dosfstools и e2fsprogs pikeun nyieun sistem file: apt install parted dosfstools e2fsprogs.

Ngabagi kartu SD:

  1. Cirian kartu SD salaku maké partisi MBR: parted -s /dev/mmcblk0 mklabel msdos
  2. Jieun bagian pikeun /boot pikeun 128 megabyte: parted -s /dev/mmcblk0 mkpart primary fat32 1MiB 128MiB. Megabyte lasut kahiji kudu ditinggalkeun pikeun markup sorangan jeung bootloader nu.
  3. Jieun root FS pikeun sesa kapasitas: parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
  4. Upami ujug-ujug anjeun teu acan nyiptakeun atanapi ngarobih file partisi, anjeun kedah ngaéksekusi `partprobe`, teras tabel partisi bakal dibaca deui.
  5. Jieun filesystem partisi boot dilabélan BOOT: mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
  6. Jieun filesystem root kalawan labél a ROOTFS: mkfs.ext3 -L ROOTFS /dev/mmcblk0p2

Hebat, ayeuna anjeun tiasa ngeusianana. Ieu tambahan bakal merlukeun debootstrap, utiliti pikeun nyieun root FS dina sistem operasi kawas Debian: apt install debootstrap.

Kami ngumpulkeun FS:

  1. Pasang partisi ka /mnt/ (nganggo titik gunung anu langkung merenah pikeun diri anjeun): mount /dev/mmcblk0p2 /mnt
  2. Sabenerna urang ngeusian sistem file: debootstrap --foreign --include=qemu-user-static --arch armhf kali-rolling /mnt/ http://http.kali.org/kali. Parameter --include nangtukeun tambahan install sababaraha bungkusan, Kuring dieusian statically diwangun QEMU émulator. Eta ngidinan Anjeun pikeun ngalakukeun chroot ka lingkungan ARM. Harti pilihan séjén bisa kapanggih dina man debootstrap. Tong hilap yén henteu unggal papan ARM ngadukung arsitéktur armhf.
  3. Alatan bédana dina arsitéktur debootstrap dilaksanakeun dina dua tahap, anu kadua dilaksanakeun saperti kieu: chroot /mnt/ /debootstrap/debootstrap --second-stage
  4. Ayeuna anjeun kudu spin: chroot /mnt /bin/bash
  5. Urang eusian /etc/hosts и /etc/hostname sasaran FS. Eusian sami sareng eusi dina komputer lokal anjeun, émut pikeun ngagentos nami host wungkul.
  6. Anjeun tiasa ngaluyukeun sagalana sejenna. Khususna, kuring masang locales (konci gudang), konfigurasi ulang lokal sareng zona waktos (dpkg-reconfigure locales tzdata). Tong hilap nyetél kecap konci kalayan paréntah passwd.
  7. Setel kecap akses pikeun root tim passwd.
  8. Nyiapkeun gambar pikeun kuring réngsé ku ngeusian /etc/fstab di jero /mnt/.

Abdi badé unggah saluyu sareng tag anu didamel tadi, janten eusina sapertos kieu:

LABEL=ROOTFS / kasalahan otomatis = remount-ro 0 1
LABEL=BOOT /boot otomatis standar 0 0

Tungtungna, anjeun tiasa pasang partisi boot, urang peryogina pikeun kernel: `mount /dev/mmcblk0p1 /mnt/boot/`

Ngawangun Linux

Pikeun ngawangun kernel (teras bootloader) dina Debian Testing, anjeun kedah masang set standar GCC, GNU Make sareng file header GNU C Library pikeun arsitéktur target (kuring gaduh armhf), kitu ogé lulugu OpenSSL, konsol kalkulator bc, bison и flex: apt install crossbuild-essential-armhf bison flex libssl-dev bc. Kusabab pamuat standar milarian file zImage dina sistem file partisi boot, éta waktuna pikeun megatkeun flash drive.

  1. Kloning kernel panjang teuing, janten kuring ngan ukur ngaunduh: wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.xz. Buka bungkusan sareng angkat ka diréktori sumber: tar -xf linux-5.9.1.tar.xz && cd linux-5.9.1
  2. Konpigurasikeun sateuacan kompilasi: make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig. Konfigurasi aya dina diréktori arch/arm/configs/. Upami teu aya, anjeun tiasa nyobian milarian sareng unduh anu parantos siap sareng pas nami file dina diréktori ieu ka parameter. KBUILD_DEFCONFIG. Dina kasus ékstrim, langsung neruskeun ka paragraf salajengna.
  3. Anjeun opsional tiasa ngarobih setélan: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
  4. Jeung cross-compile gambar: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
  5. Ayeuna anjeun tiasa nyalin file kernel: cp arch/arm/boot/zImage /mnt/boot/
  6. Sareng file tina DeviceTree (deskripsi hardware anu aya dina dewan): cp arch/arm/boot/dts/*.dtb /mnt/boot/
  7. Sareng pasang modul anu dirakit salaku file anu misah: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=/mnt/ modules_install

Kernel geus siap. Anjeun tiasa ngahapus sadayana: umount /mnt/boot/ /mnt/

Das U Boot

Kusabab bootloader interaktif, papan sorangan, alat panyimpen, sareng alat USB-to-UART opsional cukup pikeun nguji operasina. Nyaéta, anjeun tiasa nunda kernel sareng OS pikeun engké.

Seuseueurna pabrik nyarankeun ngagunakeun Das U-Boot pikeun boot primér. Pangrojong pinuh biasana disadiakeun dina garpu sorangan, tapi ulah poho nyumbang kana hulu. Bisi kuring, dewan dirojong di jalur utamaku sabab eta garpu Kuring teu maliré.

Kami ngumpulkeun bootloader sorangan:

  1. Kloning cabang stabil tina gudang: git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10
  2. Hayu urang angkat ka diréktori sorangan: cd u-boot
  3. Nyiapkeun konfigurasi ngawangun: make mx6ull_14x14_evk_defconfig. Ieu ngan ukur tiasa dianggo upami konfigurasina aya dina Das U-Boot sorangan, upami henteu, anjeun kedah milarian konfigurasi produsén sareng nempatkeun kana akar gudang dina file. .config, atawa dirakit ku cara séjén dianjurkeun ku produsén.
  4. Urang ngumpulkeun gambar bootloader sorangan kalawan cross-compiler armhf: make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx

Hasilna, urang meunang file u-boot.imx, ieu gambar siap-dijieun nu bisa ditulis kana USB flash drive. Urang nulis ka kartu SD, skipping kahiji 1024 bait. Naha kuring milih target u-boot.imx? Naha sono persis 1024 bait? Ieu naon maranéhna ngajukeun do di dokuméntasi. Pikeun papan anu sanés, wangunan gambar sareng prosés ngaduruk tiasa rada béda.

Rengse, Anjeun bisa ngundeur. Bootloader kedah ngalaporkeun versi sorangan, sababaraha inpormasi ngeunaan dewan, sareng nyobian milarian gambar kernel dina partisi. Upami gagal, éta bakal nyobian boot liwat jaringan. Sacara umum, kaluaran cukup lengkep, anjeun tiasa mendakan kasalahan upami aya masalah.

Gantina kacindekan

Naha anjeun terang yén dahi lauk lumba-lumba henteu tulang? Ieu sacara harfiah panon katilu, lensa lemak pikeun echolocation!

Ngamimitian GNU/Linux dina papan ARM ti mimiti (ngagunakeun Kali sareng iMX.6 salaku conto)

Ngamimitian GNU/Linux dina papan ARM ti mimiti (ngagunakeun Kali sareng iMX.6 salaku conto)

sumber: www.habr.com