TL; dr: Kuring ngawangun gambar Kali Linux pikeun komputer ARM, dina program debootstrap
, linux
и u-boot
.
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
Prosés download cukup basajan:
- Hardware ieu initialized.
- Ti sababaraha wewengkon dina alat panyimpen (kartu SD / eMMC / jsb) bootloader dibaca tur dieksekusi.
- Loader milarian kernel sistem operasi sareng ngamuat kana sababaraha daérah mémori sareng ngalaksanakeunana.
- Kernel ngamuat sesa OS.
Pikeun tugas kuring, tingkat jéntré ieu cukup, anjeun tiasa maca rinci
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:
- Cirian kartu SD salaku maké partisi MBR:
parted -s /dev/mmcblk0 mklabel msdos
- 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. - Jieun root FS pikeun sesa kapasitas:
parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
- Upami ujug-ujug anjeun teu acan nyiptakeun atanapi ngarobih file partisi, anjeun kedah ngaéksekusi `partprobe`, teras tabel partisi bakal dibaca deui.
- Jieun filesystem partisi boot dilabélan
BOOT
:mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
- 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:
- Pasang partisi ka
/mnt/
(nganggo titik gunung anu langkung merenah pikeun diri anjeun):mount /dev/mmcblk0p2 /mnt
- 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 ngalakukeunchroot
ka lingkungan ARM. Harti pilihan séjén bisa kapanggih dinaman debootstrap
. Tong hilap yén henteu unggal papan ARM ngadukung arsitékturarmhf
. - Alatan bédana dina arsitéktur
debootstrap
dilaksanakeun dina dua tahap, anu kadua dilaksanakeun saperti kieu:chroot /mnt/ /debootstrap/debootstrap --second-stage
- Ayeuna anjeun kudu spin:
chroot /mnt /bin/bash
- Urang eusian
/etc/hosts
и/etc/hostname
sasaran FS. Eusian sami sareng eusi dina komputer lokal anjeun, émut pikeun ngagentos nami host wungkul. - 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éntahpasswd
. - Setel kecap akses pikeun
root
timpasswd
. - 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.
- 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
- Konpigurasikeun sateuacan kompilasi:
make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig
. Konfigurasi aya dina diréktoriarch/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. - Anjeun opsional tiasa ngarobih setélan:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
- Jeung cross-compile gambar:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
- Ayeuna anjeun tiasa nyalin file kernel:
cp arch/arm/boot/zImage /mnt/boot/
- Sareng file tina DeviceTree (deskripsi hardware anu aya dina dewan):
cp arch/arm/boot/dts/*.dtb /mnt/boot/
- 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
Kami ngumpulkeun bootloader sorangan:
- Kloning cabang stabil tina gudang:
git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10
- Hayu urang angkat ka diréktori sorangan:
cd u-boot
- 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. - 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
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!
sumber: www.habr.com