tl: Ke kūkulu nei au i kiʻi Kali Linux no kahi kamepiula ARM, ma ka papahana debootstrap
, linux
и u-boot
.
Inā kūʻai ʻoe i kahi mea uku hoʻokahi kaulana ʻole, hiki iā ʻoe ke ʻike i ka nele o ke kiʻi o kāu puʻupuʻu punahele punahele. Ua like loa ka mea like
He mea maʻalahi ke kaʻina hoʻoiho:
- Hoʻomaka ʻia ka paʻahana.
- Mai kekahi wahi ma ka waihona waihona (kāleka SD / eMMC / etc) heluhelu ʻia ka bootloader a hoʻokō ʻia.
- Nānā ka mea hoʻoili i ka kernel o ka ʻōnaehana hana a hoʻouka iā ia i loko o kekahi wahi hoʻomanaʻo a hoʻokō.
- Hoʻouka ka kernel i ke koena o ka OS.
No kaʻu hana, ua lawa kēia pae kikoʻī, hiki iā ʻoe ke heluhelu i nā kikoʻī
Ke kūkulu ʻana i ka ʻōnaehana waihona kumu
Pono mua ʻoe e hoʻomākaukau i nā ʻāpana. Kākoʻo ʻo Das U-Boot i nā ʻōnaehana faila like ʻole, ua koho wau iā FAT32 no /boot
a ext3 no ke aʻa, ʻo ia ka hōʻailona kiʻi maʻamau no Kali ma lalo o ARM. E hoʻohana wau iā GNU Parted, akā hiki iā ʻoe ke hoʻomaʻamaʻa like fdisk
. Pono ʻoe dosfstools
и e2fsprogs
e hana i kahi waihona: apt install parted dosfstools e2fsprogs
.
ʻO ka wehe ʻana i ke kāleka SD:
- E kaha i ke kāleka SD e like me ka hoʻohana ʻana i ka ʻāpana MBR:
parted -s /dev/mmcblk0 mklabel msdos
- E hana i ʻāpana no
/boot
no 128 megabytes:parted -s /dev/mmcblk0 mkpart primary fat32 1MiB 128MiB
. Pono e waiho ʻia ka megabyte mua no ka markup ponoʻī a no ka bootloader. - E hana i kahi kumu FS no ke koena o ka mana:
parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
- Inā ʻaʻole ʻoe i hana a hoʻololi paha i nā faila ʻāpana, pono ʻoe e hoʻokō i ka 'partprobe', a laila e heluhelu hou ʻia ka papa ʻaina.
- E hana i kahi ʻōnaehana file partition boot i kapa ʻia
BOOT
:mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
- E hana i kahi waihona waihona kumu me kahi lepili
ROOTFS
:mkfs.ext3 -L ROOTFS /dev/mmcblk0p2
Nui, hiki iā ʻoe ke hoʻopiha i kēia manawa. Pono kēia debootstrap
, he mea pono no ka hana ʻana i ke kumu FS ma nā ʻōnaehana hana like me Debian: apt install debootstrap
.
ʻOhi mākou iā FS:
- E kau i ka paku i
/mnt/
(e hoʻohana i kahi wahi mauna maʻalahi no ʻoe iho):mount /dev/mmcblk0p2 /mnt
- Hoʻopiha mākou i ka ʻōnaehana faila:
debootstrap --foreign --include=qemu-user-static --arch armhf kali-rolling /mnt/ http://http.kali.org/kali
... Parameter--include
e hoʻokomo hou i kekahi mau pūʻolo, ua kuhikuhi wau i kahi emulator QEMU i kūkulu ʻia. Hiki iā ʻoe ke hanachroot
i ke kaiapuni ARM. Hiki ke ʻike ʻia ke ʻano o nā koho ʻē aʻe maman debootstrap
. Mai poina ʻaʻole kākoʻo kēlā me kēia papa ARM i ka hoʻolālāarmhf
. - Ma muli o ka ʻokoʻa o nā hale hana
debootstrap
hana ʻia i ʻelua mau pae, hana ʻia ka lua penei:chroot /mnt/ /debootstrap/debootstrap --second-stage
- I kēia manawa pono ʻoe e wili:
chroot /mnt /bin/bash
- Hoʻopiha mākou
/etc/hosts
и/etc/hostname
pahuhopu FS. E hoʻopiha like me ka ʻike ma kāu kamepiula kūloko, e hoʻomanaʻo e hoʻololi i ka inoa host wale nō. - Hiki iā ʻoe ke hoʻonohonoho i nā mea ʻē aʻe. Ma keʻano kūikawā, hoʻokomo wau
locales
(nā kī waihona), hoʻonohonoho hou i nā wahi a me ka palena manawa (dpkg-reconfigure locales tzdata
). Mai poina e hoʻonoho i ka ʻōlelo huna me ke kauohapasswd
. - E hoʻonoho i ka ʻōlelo huna no
root
huipasswd
. - Hoʻopau ʻia ka hoʻomākaukau ʻana o ke kiʻi noʻu ma ka hoʻopiha ʻana
/etc/fstab
loko/mnt/
.
E hoʻouka wau e like me nā hōʻailona i hana mua ʻia, no laila e like ka ʻike penei:
LABEL=ROOTFS / hewa kaʻa=remount-ro 0 1
LABEL=BOOT/boot auto defaults 0 0
ʻO ka hope, hiki iā ʻoe ke kau i ka ʻāpana boot, pono mākou no ka kernel: `mount /dev/mmcblk0p1 /mnt/boot/`
Kūkulu Linux
No ke kūkulu ʻana i ka kernel (a laila ka bootloader) ma ka Debian Testing, pono ʻoe e hoʻokomo i ka hoʻonohonoho maʻamau o GCC, GNU Make a me nā faila poʻomanaʻo GNU C Library no ka hoʻolālā kiʻi. armhf
), a me nā poʻomanaʻo OpenSSL, helu helu console bc
, bison
и flex
: apt install crossbuild-essential-armhf bison flex libssl-dev bc
. No ka mea, ʻimi ka mea hoʻoili paʻamau i kahi faila zImage
ma ka ʻōnaehana faila o ka ʻāpana boot, ʻo ia ka manawa e wāwahi i ka flash drive.
- He lōʻihi loa ka hoʻopaʻa ʻana i ka kernel, no laila e hoʻoiho wale wau:
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.xz
. Wehe a hele i ka papa kuhikuhi kumu:tar -xf linux-5.9.1.tar.xz && cd linux-5.9.1
- E hoʻonohonoho ma mua o ka hōʻuluʻulu ʻana:
make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig
. Aia ka config i ka papa kuhikuhiarch/arm/configs/
. Inā ʻaʻohe mea, hiki iā ʻoe ke hoʻāʻo e ʻimi a hoʻoiho i kahi mea i mākaukau a kau i ka inoa o ka faila ma kēia papa kuhikuhi i ka ʻāpana.KBUILD_DEFCONFIG
. I nā hihia koʻikoʻi, e hele koke i ka paukū aʻe. - Hiki iā ʻoe ke hoʻololi i nā hoʻonohonoho:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
- A hui pū i ke kiʻi:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
- I kēia manawa hiki iā ʻoe ke kope i ka faila kernel:
cp arch/arm/boot/zImage /mnt/boot/
- A me nā faila mai DeviceTree (ka wehewehe ʻana i nā lako lako i loaʻa ma ka papa):
cp arch/arm/boot/dts/*.dtb /mnt/boot/
- A e hoʻokomo i nā modula i hui ʻia e like me nā faila kaʻawale:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=/mnt/ modules_install
Ua mākaukau ke ʻano. Hiki iā ʻoe ke wehe i nā mea a pau: umount /mnt/boot/ /mnt/
Das U Boot
Ma muli o ka launa pū ʻana o ka bootloader, ʻo ka papa ponoʻī, kahi mea mālama, a me kahi mea koho USB-to-UART ua lawa ia e hoʻāʻo ai i kāna hana. ʻO ia, hiki iā ʻoe ke hoʻopanee i ka kernel a me ka OS ma hope.
Manaʻo ka hapa nui o nā mea hana e hoʻohana iā Das U-Boot no ka boot mua. Hāʻawi pinepine ʻia ke kākoʻo piha ma kāna ʻōpala ponoʻī, akā mai poina i ka hāʻawi ʻana i ka upstream. I koʻu hihia, kākoʻo ʻia ka papa i loko
ʻOhi mākou i ka bootloader iā ia iho:
- Hoʻopili i ka lālā paʻa o ka waihona:
git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10
- E hele kāua i ka papa kuhikuhi pono'ī:
cd u-boot
- Ke hoʻomākaukau nei i ka hoʻonohonoho kūkulu:
make mx6ull_14x14_evk_defconfig
. Hana wale kēia inā aia ka hoʻonohonoho i loko o Das U-Boot ponoʻī, inā ʻaʻole pono ʻoe e ʻimi i ka config o ka mea hana a hoʻokomo i ke kumu o ka waihona i ka faila..config
, a i ʻole i hui ʻia ma kahi ʻano ʻē aʻe i ʻōlelo ʻia e ka mea hana. - ʻOhi mākou i ke kiʻi bootloader iā ia iho me kahi cross-compiler
armhf
:make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx
ʻO ka hopena, loaʻa iā mākou ka faila u-boot.imx
, he kiʻi mākaukau kēia i hiki ke kākau ʻia i ka USB flash drive. Kākau mākou i ke kāleka SD, e lele ana i ka 1024 bytes mua. No ke aha wau i koho ai i ka pahuhopu u-boot.imx
? No ke aha i hala ʻole ai i ka 1024 bytes? ʻO kēia ka mea a lākou e manaʻo nei e hana i loko
Pau, hiki iā ʻoe ke hoʻoiho. Pono ka bootloader e hōʻike i kāna ʻano ponoʻī, kekahi ʻike e pili ana i ka papa, a e hoʻāʻo e ʻimi i ke kiʻi kernel ma ka pā. Inā hāʻule, e hoʻāʻo ʻo ia e boot ma luna o ka pūnaewele. Ma keʻano laulā, kikoʻī loa ka hoʻopuka, hiki iā ʻoe ke ʻike i kahi hewa inā pilikia.
Ma kahi o ka hopena
Ua ʻike anei ʻoe ʻaʻole iwi ka lae o ka dolphin? He maka ʻekolu ia, he lens momona no ka echolocation!
Source: www.habr.com