tl; dr: M na-ewu ihe oyiyi Kali Linux maka kọmputa ARM, na mmemme ahụ debootstrap
, linux
и u-boot
.
Ọ bụrụ na ị zụtara sọftụwia otu bọọdụ na-ewu ewu na-ewu ewu, ị nwere ike ihu enweghị onyonyo nkesa ọkacha mmasị gị maka ya. Ihe dị ka otu ihe ahụ mere
Usoro nbudata ahụ dị nnọọ mfe:
- Ewelitela ngwaike.
- Site na mpaghara ụfọdụ na ngwaọrụ nchekwa (kaadị SD/eMMC/etc) a na-agụ ma gbuo bootloader.
- Bootloader na-achọ kernel sistemu arụ ọrụ wee tinye ya n'ime ebe nchekwa ụfọdụ wee mee ya.
- The kernel na-ebu OS ndị ọzọ.
Nke a ọkwa nke nkọwa zuru ezu maka ọrụ m, ị nwere ike ịgụ nkọwa
Ịmepụta usoro faịlụ mgbọrọgwụ
Mbụ ịkwesịrị ịkwadebe akụkụ. Das U-Boot na-akwado sistemụ faịlụ dị iche iche, ahọpụtara m FAT32 maka /boot
yana ext3 maka mgbọrọgwụ, nke a bụ nhazi onyonyo ọkọlọtọ maka Kali na ARM. Aga m eji GNU Parted, mana ị nwere ike ime otu ihe ahụ n'ụzọ amara nke ọma fdisk
. Ị ga-achọkwa dosfstools
и e2fsprogs
iji mepụta usoro faịlụ: apt install parted dosfstools e2fsprogs
.
Anyị na-akara kaadị SD:
- Kaa kaadị SD dị ka iji nkebi MBR:
parted -s /dev/mmcblk0 mklabel msdos
- Mepụta ngalaba n'okpuru
/boot
maka 128 megabytes:parted -s /dev/mmcblk0 mkpart primary fat32 1MiB 128MiB
. Megabyte mbụ efu ga-ahapụrịrị maka akara n'onwe ya yana maka bootloader. - Anyị na-emepụta usoro faịlụ mgbọrọgwụ maka ikike niile fọdụrụnụ:
parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
- Ọ bụrụ na emebeghị faịlụ nkebi gị na mberede ma ọ bụ agbanwebeghị, ịkwesịrị ịmegharị 'partprobe', mgbe ahụ a ga-agụgharị tebụl nkebi ahụ.
- Mepụta usoro faịlụ maka nkebi buut na akara
BOOT
:mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
- Mepụta sistemụ faịlụ mgbọrọgwụ nwere akara
ROOTFS
:mkfs.ext3 -L ROOTFS /dev/mmcblk0p2
Ọ dị mma, ugbu a ị nwere ike mejupụta ya. Maka nke a, ị ga-achọkwa debootstrap
, ngwa maka ịmepụta sistemụ faịlụ mgbọrọgwụ maka sistemụ arụmọrụ Debian: apt install debootstrap
.
Anyị na-anakọta FS:
- Wụnye nkebi na
/mnt/
(jiri ebe mgbago dị mma karịa):mount /dev/mmcblk0p2 /mnt
- Anyị na-ejuputa usoro faịlụ:
debootstrap --foreign --include=qemu-user-static --arch armhf kali-rolling /mnt/ http://http.kali.org/kali
... Oke--include
na-egosi wụnye ụfọdụ ngwugwu, akọwapụtaara m ihe emulator QEMU arụpụtara nke ọma. Ọ na-enye gị ohere ịrụchroot
na gburugburu ARM. Enwere ike ịchọta ihe nhọrọ ndị fọdụrụ pụtara naman debootstrap
. Echefula na ọ bụghị bọọdụ ARM ọ bụla na-akwado ụkpụrụ ụlọarmhf
. - N'ihi ọdịiche dị na architecture
debootstrap
A na-eme ya n'ụzọ abụọ, a na-eme nke abụọ dị ka nke a:chroot /mnt/ /debootstrap/debootstrap --second-stage
- Ugbu a ịkwesịrị ịwụnye ya:
chroot /mnt /bin/bash
- Dejupụta
/etc/hosts
и/etc/hostname
lekwasịrị anya FS. Dejupụta otu ihe dị na kọmpụta mpaghara gị, cheta naanị iji dochie aha nnabata. - Ị nwere ike hazie ihe ọ bụla ọzọ. Karịsịa, m wụnye
locales
(igodo nchekwa), megharịa mpaghara na mpaghara oge (dpkg-reconfigure locales tzdata
). Echefula ịtọ paswọọdụ na iwu ahụpasswd
. - Tọọ paswọọdụ maka
root
otupasswd
. - Nkwadebe nke ihe oyiyi ahụ maka m na-ejedebe na njuputa
/etc/fstab
n'ime/mnt/
.
M ga-ebugo dịka mkpado emepụtara na mbụ, yabụ ọdịnaya ga-adị ka nke a:
LABEL=ROOTFS / njehie akpaaka = remount-ro 0 1
LABEL=BOOT/boot auto defaults 0 0
N'ikpeazụ, ị nwere ike ịkwanye nkebi buut, anyị ga-achọ ya maka kernel: 'mount /dev/mmcblk0p1 /mnt/boot/'
Linux wuo
Iji wuo kernel (na mgbe ahụ bootloader) na Debian Testing, ị kwesịrị ịwụnye otu ọkọlọtọ GCC, GNU Make na GNU C faịlụ nkụnye eji isi mee maka ihe owuwu ebumnuche (maka m). armhf
), yana isi okwu OpenSSL, mgbako njikwa bc
, bison
и flex
: apt install crossbuild-essential-armhf bison flex libssl-dev bc
. Ebe ọ bụ na onye na-ebu ihe ndabara na-achọ faịlụ ahụ zImage
na usoro faịlụ nke nkebi buut, ọ bụ oge iji kewaa draịva flash.
- Ọ na-ewe ogologo oge iji mechie kernel, yabụ m ga-ebudata:
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.xz
. Ka anyị bupụ ngwongwo wee gaa na ndekọ isi mmalite:tar -xf linux-5.9.1.tar.xz && cd linux-5.9.1
- Hazie tupu achịkọta:
make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig
. Nhazi ahụ dị na ndekọ ahaarch/arm/configs/
. Ọ bụrụ na ọ nweghị, ị nwere ike ịnwa ịchọta ma budata nke emebere ma nyefee aha faịlụ na ndekọ a dị ka oke.KBUILD_DEFCONFIG
. Dị ka ụzọ ikpeazụ, gaa n'ihu ozugbo gaa n'akụkụ nke ọzọ. - Nhọrọ, ị nwere ike tweak ntọala:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
- Na gafee-achịkọta onyonyo a:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
- Ugbu a ị nwere ike iṅomi faịlụ kernel:
cp arch/arm/boot/zImage /mnt/boot/
- Na faịlụ sitere na DeviceTree (nkọwa nke ngwaike dị na bọọdụ):
cp arch/arm/boot/dts/*.dtb /mnt/boot/
- Ma wụnye modul ndị anakọtara n'ụdị faịlụ dị iche iche:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=/mnt/ modules_install
kernel adịla njikere. Ị nwere ike wepu ihe niile: umount /mnt/boot/ /mnt/
Das U-Boot
Ebe ọ bụ na bootloader na-emekọrịta ihe, naanị ihe ị ga-achọ iji nwalee ọrụ ya bụ bọọdụ n'onwe ya, ngwaọrụ nchekwa, yana nhọrọ ngwaọrụ USB-to-UART. Ya bụ, ị nwere ike yigharịrị kernel na OS maka emechaa.
Ọnụ ọgụgụ ka ukwuu nke ndị nrụpụta na-enye iji Das U-Boot maka akpụkpọ ụkwụ mbụ. A na-enyekarị nkwado zuru oke na ndụdụ nke ha, mana ha anaghị echefu itinye aka na elu. N'ọnọdụ m, a na-akwado bọọdụ ahụ
Ka anyị chịkọta bootloader n'onwe ya:
- Anyị na-emechi alaka ụlọ nchekwa ahụ kwụsiri ike:
git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10
- Ka anyị gaa na ndekọ n'onwe ya:
cd u-boot
- Na-akwado nhazi ihe owuwu:
make mx6ull_14x14_evk_defconfig
. Nke a na-arụ ọrụ naanị ma ọ bụrụ na nhazi ahụ dị na Das U-Boot n'onwe ya, ma ọ bụghị ya, ị ga-achọ ịchọta nhazi nke onye nrụpụta ma tinye ya na mgbọrọgwụ nke ebe nchekwa na faịlụ..config
, ma ọ bụ gbakọta n'ụzọ ọ bụla ọzọ ndị nrụpụta tụrụ aro. - Anyị na-agbakọta ihe oyiyi bootloader n'onwe ya site na iji cross-compiler
armhf
:make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx
N'ihi ya, anyị na-enweta faịlụ u-boot.imx
, nke a bụ ihe oyiyi dị njikere nke enwere ike ide ya na draịva flash. Anyị na-ede na kaadị SD, na-amapụ nke mbụ 1024 bytes. Gịnị mere m ji họrọ Target u-boot.imx
? Kedu ihe kpatara m jiri tụfuo 1024 bytes kpọmkwem? Nke a bụ ihe ha tụrụ aro ime
Emechara, ị nwere ike buut. Onye na-ebu bootloader ga-akọrịrị ụdị nke ya, ụfọdụ ozi gbasara bọọdụ ahụ, wee gbalịa ịchọta onyonyo kernel na nkebi ahụ. Ọ bụrụ na ọ gaghị eme nke ọma, ọ ga-anwa ịbuba na netwọkụ. N'ozuzu, mmepụta ahụ zuru oke, ị nwere ike ịchọta njehie ma ọ bụrụ na enwere nsogbu.
Kama nkwubi okwu
Ị maara na ihu dolphin abụghị ọkpụkpụ? Ọ bụ n'ezie anya nke atọ, oghere nwere abụba maka nkwugharị okwu!
isi: www.habr.com