tl; dr: Aku nggawe gambar Kali Linux kanggo komputer ARM, ing program debootstrap
, linux
ΠΈ u-boot
.
Yen sampeyan tuku siji-pembayar sing ora populer banget, sampeyan bisa uga nemoni kekurangan gambar kit distribusi sing paling disenengi. Prekara sing padha uga kedadeyan
Proses download cukup prasaja:
- Hardware wis initialized.
- Saka sawetara area ing piranti panyimpenan (kertu SD / eMMC / etc) bootloader diwaca lan dieksekusi.
- Loader nggoleki kernel sistem operasi lan mbukak menyang sawetara area memori lan nglakokake.
- Kernel ngemot sisa OS.
Kanggo tugasku, tingkat rinci iki cukup, sampeyan bisa maca rincian
Nggawe sistem file root
Pisanan sampeyan kudu nyiyapake bagean. Das U-Boot ndhukung sistem file beda, Aku milih FAT32 kanggo /boot
lan ext3 kanggo root, iki minangka markup gambar standar kanggo Kali ing ARM. Aku bakal nggunakake GNU Parted, nanging sampeyan bisa nggawe padha luwih menowo fdisk
. Sampeyan uga bakal mbutuhake dosfstools
ΠΈ e2fsprogs
kanggo nggawe sistem file: apt install parted dosfstools e2fsprogs
.
Pemisahan kertu SD:
- Tandhani kertu SD minangka nggunakake partisi MBR:
parted -s /dev/mmcblk0 mklabel msdos
- Nggawe bagean kanggo
/boot
kanggo 128 megabyte:parted -s /dev/mmcblk0 mkpart primary fat32 1MiB 128MiB
. Megabyte sing ora kejawab pisanan kudu ditinggalake kanggo markup dhewe lan kanggo bootloader. - Nggawe ROOT FS kanggo sisa kapasitas:
parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
- Yen dumadakan sampeyan durung nggawe utawa ngganti file partisi, sampeyan kudu nglakokake `partprobe`, banjur tabel partisi bakal diwaca maneh.
- Nggawe boot partisi filesystem labeled
BOOT
:mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
- Nggawe sistem file root kanthi label
ROOTFS
:mkfs.ext3 -L ROOTFS /dev/mmcblk0p2
Apik, saiki sampeyan bisa ngisi. Iki bakal mbutuhake tambahan debootstrap
, sarana kanggo nggawe root FS ing sistem operasi kaya Debian: apt install debootstrap
.
Kita ngumpulake FS:
- Pasang partisi menyang
/mnt/
(Gunakake titik gunung sing luwih trep kanggo sampeyan dhewe):mount /dev/mmcblk0p2 /mnt
- Bener, kita ngisi sistem file:
debootstrap --foreign --include=qemu-user-static --arch armhf kali-rolling /mnt/ http://http.kali.org/kali
... Parameter--include
nemtokake tambahan nginstal sawetara paket, Aku kasebut statis dibangun QEMU emulator. Iku ngijini sampeyan kanggo nindakakechroot
menyang lingkungan ARM. Makna pilihan liyane bisa ditemokake ingman debootstrap
. Aja lali manawa ora saben papan ARM ndhukung arsitektur kasebutarmhf
. - Amarga bedane arsitektur
debootstrap
ditindakake ing rong tahap, sing kapindho ditindakake kaya ing ngisor iki:chroot /mnt/ /debootstrap/debootstrap --second-stage
- Saiki sampeyan kudu muter:
chroot /mnt /bin/bash
- We isi
/etc/hosts
ΠΈ/etc/hostname
target FS. Isi ing padha karo isi ing komputer lokal, elinga kanggo ngganti jeneng host mung. - Sampeyan bisa ngatur kabeh liyane. Ing tartamtu, aku nginstal
locales
(kunci repositori), konfigurasi ulang lokal lan zona wektu (dpkg-reconfigure locales tzdata
). Aja lali nyetel sandhi nganggo printahpasswd
. - Setel sandhi kanggo
root
timpasswd
. - Persiapan gambar kanggo kula rampung kanthi ngisi
/etc/fstab
ing njero/mnt/
.
Aku bakal ngunggah sesuai karo tag sing digawe sadurunge, dadi isine kaya iki:
LABEL=ROOTFS / kesalahan otomatis = remount-ro 0 1
LABEL=BOOT /boot otomatis standar 0 0
Pungkasan, sampeyan bisa masang partisi boot, kita butuh kanggo kernel: `mount /dev/mmcblk0p1 /mnt/boot/`
Nggawe Linux
Kanggo mbangun kernel (banjur bootloader) ing Debian Testing, sampeyan kudu nginstal set standar file header GCC, GNU Make lan GNU C Library kanggo arsitektur target (aku duwe armhf
), uga header OpenSSL, kalkulator konsol bc
, bison
ΠΈ flex
: apt install crossbuild-essential-armhf bison flex libssl-dev bc
. Wiwit loader gawan nggoleki file zImage
ing sistem file partisi boot, iku wektu kanggo break flash drive.
- Kloning kernel dawa banget, mula aku bakal ngundhuh:
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.xz
. Bukak paket lan pindhah menyang direktori sumber:tar -xf linux-5.9.1.tar.xz && cd linux-5.9.1
- Konfigurasi sadurunge kompilasi:
make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig
. Konfigurasi kasebut ana ing direktoriarch/arm/configs/
. Yen ora ana, sampeyan bisa nyoba golek lan ndownload sing wis siap lan ngirim jeneng file ing direktori iki menyang parameterKBUILD_DEFCONFIG
. Ing kasus nemen, langsung nerusake menyang paragraf sabanjurΓ©. - Sampeyan bisa opsional ngapiki setelan:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
- Lan kompilasi silang gambar:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
- Saiki sampeyan bisa nyalin file kernel:
cp arch/arm/boot/zImage /mnt/boot/
- Lan file saka DeviceTree (deskripsi hardware sing kasedhiya ing papan):
cp arch/arm/boot/dts/*.dtb /mnt/boot/
- Lan nginstal modul sing dipasang minangka file sing kapisah:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=/mnt/ modules_install
Kernel wis siyap. Sampeyan bisa mbusak kabeh: umount /mnt/boot/ /mnt/
Das U Boot
Wiwit bootloader interaktif, papan kasebut dhewe, piranti panyimpenan, lan piranti USB-to-UART opsional cukup kanggo nyoba operasi kasebut. Yaiku, sampeyan bisa nundha kernel lan OS mengko.
Umume manufaktur nyaranake nggunakake Das U-Boot kanggo boot utama. Dhukungan lengkap biasane diwenehake ing garpu dhewe, nanging aja lali nyumbang ing hulu. Ing kasusku, papan didhukung ing
Kita ngumpulake bootloader dhewe:
- Kloning cabang stabil saka repositori:
git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10
- Ayo menyang direktori dhewe:
cd u-boot
- Nyiapake konfigurasi mbangun:
make mx6ull_14x14_evk_defconfig
. Iki mung bisa digunakake yen konfigurasi ana ing Das U-Boot dhewe, yen ora, sampeyan kudu nemokake konfigurasi pabrikan lan dilebokake ing root repositori ing file kasebut..config
, utawa dirakit kanthi cara liya sing disaranake dening pabrikan. - Kita ngumpulake gambar bootloader dhewe kanthi kompiler silang
armhf
:make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx
AkibatΓ©, kita njaluk file u-boot.imx
, iki gambar siap-digawe sing bisa ditulis menyang USB flash drive. Kita nulis menyang kertu SD, ngliwati 1024 bait pisanan. Kok aku milih target u-boot.imx
? Napa ora kejawab persis 1024 bita? Iki apa padha propose kanggo nindakake ing
Rampung, sampeyan bisa ngundhuh. Bootloader kudu nglaporake versi dhewe, sawetara informasi babagan papan, lan nyoba golek gambar kernel ing partisi. Yen gagal, bakal nyoba kanggo boot liwat jaringan. UmumΓ©, output cukup rinci, sampeyan bisa nemokake kesalahan yen ana masalah.
Tinimbang kesimpulan
Apa sampeyan ngerti yen bathuk dolphin ora balung? Iku secara harfiah mripat katelu, lensa lemak kanggo echolocation!
Source: www.habr.com