tl; drα αααα»ααααα»ααααααΎαααΌαααΆα Kali Linux αααααΆαααα»αααααΌααα ARM αα
αααα»ααααααα·ααΈ debootstrap
, linux
ΠΈ u-boot
.
ααααα·αααΎα’αααααΆααα·ααααααα·ααΈ single-board ααααα·αααΌαααααα·αααα½αα
ααα½α α’αααα’αΆα
ααααααα»αααΉαααΆαααααααΆαααΌαααΆαααααΆαα
ααα
αΆααααα’αααα
αΌαα
α·ααααααααΆααααΆα αααα ααααΆααΏααααααααααΆαααΎαα‘αΎαααΆαα½α
ααααΎαααΆαααΆαααααΊααΆααααααΆααα
- αααααααΉαααααΌαααΆαα αΆααααααΎαα
- ααΈααααααα½αα ααα½ααα ααΎα§ααααααααα»α (SD card/eMMC/etc) αααααα·ααΈα αΆααααααΎαααααααααααααΌαααΆαα’αΆα αα·αααααα·ααααα·α
- αααααα·ααΈα αΆααααααΎααααααααααααααααααΊαααααααααααααααα·ααααα·ααΆα α αΎααααα»αααΆαα αααα»ααααααα’αααα αα αΆααα½αα ααα½α α αΎαααααΎαααΆαααΆα
- ααΊααααααα»α OS ααααα αααα
ααααα·αααααααααΆααααα’α·ααααααΊαααααααααΆαααααααΆααααΆααα·α
αα
αααααααα»α α’αααα’αΆα
α’αΆαααααααΆααααα’α·α
ααΆααααΆαααααααααα―αααΆαααΆ root
ααααΌαα’αααααααΌααααα
ααααααα Das U-Boot ααΆααααααααααααα―αααΆαααααααααααΆ αααα»αααΆαααααΎαααΎα FAT32 αααααΆαα /boot
αα·α ext3 αααααΆαα root αααααΊααΆαααααααΌαααΆααααααααΆααααααΆαα Kali αα
ααΎ ARM α αααα»αααΉαααααΎ GNU Parted ααα»ααααα’αααα’αΆα
ααααΎααΌα
ααααΆαααααΆααααααααααααΆααααααΆααααΆααααα fdisk
. α’αααααααΉαααααΌαααΆααααααα dosfstools
ΠΈ e2fsprogs
ααΎααααΈαααααΎαααααααααα―αααΆαα apt install parted dosfstools e2fsprogs
.
ααΎααααααΆααααΆαα’ααααΈα
- αααααΆααααΆαα’ααααΈααΆαααα»αααααΎααΆααααα
αα MBRα
parted -s /dev/mmcblk0 mklabel msdos
- αααααΎαααααααα½ααα
ααααα
/boot
αααααΆαα 128 ααααΆαααparted -s /dev/mmcblk0 mkpart primary fat32 1MiB 128MiB
. ααααΆααααααΌααααααααΆαααααΌααααα»ααααααΆααααΆααααααΆαααααα½αααΆ αα·ααααααΆαααααααα·ααΈα αΆααααααΎαααααααααα - ααΎααααααΎαααααααααα―αααΆα root αααααΆαααααααααΆαααααα
αααααΆααααΌαα
parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
- ααααα·αααΎααααΆαααααα―αααΆαααΆαααΆαααααα’ααααα·αααααΌαααΆααααααΎα α¬αα·αααΆαααααΆααααααΌααα α’αααααααΌαααααΎαααΆα 'partprobe' αααααΆααΆαααΆαααΆαααΉαααααΌαααΆαα’αΆαα‘αΎααα·αα
- αααααΎαααααααααα―αααΆααααααΆααααΆαααΆαα
αΆααααααΎαααΆαα½αααααΆα
BOOT
:mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
- αααααΎαααααααααα―αααΆα root ααΆαα½αααααΆααα½αα
ROOTFS
:mkfs.ext3 -L ROOTFS /dev/mmcblk0p2
ααα’ααΆαα α₯α‘αΌαα’αααα’αΆα
αααααααΆααΆαα αααααΆααααΆααααα’αααααΉαααααΌαααΆααααααα debootstrap
α§αααααααααΎααααΆαααααααΆαααααααΎαααααααααα―αααΆα root αααααΆααααααααααααααα·ααααα·ααΆαααΌα
αααααα apt install debootstrap
.
ααΎααααααΌα FS:
- ααα‘αΎαααΆαααΆααα
αααα»α
/mnt/
(ααααΎα ααα»α αααααααααΆααααα½αααΆα)αmount /dev/mmcblk0p2 /mnt
- ααΎααα·αααΆαααααααααααααα―αααΆαα
debootstrap --foreign --include=qemu-user-static --arch armhf kali-rolling /mnt/ http://http.kali.org/kali
. αααΆαααΆαααααα--include
αααα αΆαααΈααΆαααα‘αΎααααα αααα½αα ααα½αααααααααα αααα»αααΆααααααΆααααΈαααααα·ααΈααααΆααααΆα QEMU αααααΆαααΆααααα‘αΎαααααα·αα·ααααα ααΆα’αα»ααααΆαα±ααα’αααα’αα»ααααchroot
αα αααα»αααα·ααααΆα ARM α α’αααααααααααααΎαααααα αααα’αΆα ααααΆααα αααα»αman debootstrap
. αα»αααααα ααΆαα·ααααααααααααα»αααααΉααααΆαα·ααΆα ARM ααΆααααααααΆααααααααααααααarmhf
. - αααααΆαααααΆααα»αααααΆααααααΆαααααααα
debootstrap
ααααΌαααΆαα’αα»ααααααΆααΈαααααΆααααΆα, ααΈααΈαααααΌαααΆαα’αα»ααααααΌα ααα:chroot /mnt/ /debootstrap/debootstrap --second-stage
- α₯α‘αΌαα’αααααααΌααα·αααΆα
chroot /mnt /bin/bash
- αααααβαααα»α
/etc/hosts
ΠΈ/etc/hostname
ααααα FS α αααααααΌα ααααΆααΉαααΆαα·ααΆαα ααΎαα»αααααΌαααααΌαααααΆαααααα’ααα ααααΆααααα αΆαααΆααααΌααααα½αααααααααΆαααΈαα - α’αααα’αΆα
ααααΌαααΆαααααα’αααΈαααααααααα ααΆαα·ααααααα»αααα‘αΎα
locales
(ααααααΆαα) ααααααα ααΆααααααααααΌαααααΆα αα·αααααααααααααΆα‘αΎααα·α (dpkg-reconfigure locales tzdata
) αα»αααααα αααααααΆααααααααΆαααααααααΎααΆααααααααΆpasswd
. - αααααααΆααααααααΆαααααααΆαα
root
αααα»αpasswd
. - ααΆααααα
αααΌαααΆααααααΆαααααα»ααααα
αααααααΆαααααα
/etc/fstab
αα ααΆααααα»α/mnt/
.
αααα»αααΉααααα αααααα’αα»αααααΆαααααΆααααααΆααααααΎαααΈαα»α ααΌα ααααααααΉαααΆαααΉαααΆαααΌα αααα
LABEL=ROOTFS / ααα α»αααααααααααααα·=remount-ro 0 1
LABEL=BOOT /boot auto ααααΆαααΎα 0 0
ααΆα α»αααααα α’αααα’αΆα ααααααΆαααΆαα αΆααααααΎαααΆα ααΎαααΉαααααΌαααΆαααΆαααααΆααααΊαααα `mount /dev/mmcblk0p1 /mnt/boot/`
ααΈαα»α αααααΎα
ααΎααααΈαααααΎαααΊααα (α αΎααααααΆαααααααααα·ααΈα
αΆααααααΎααααααααα) αα
ααΎ Debian Testing α’αααααααΌαααα‘αΎααααα»ααααααααΆαααα―αααΆαααααααΆ GCC, GNU Make αα·α GNU C αααααΆααααααΆααααααααααααα
(αααααΆαααααα»α armhf
) ααααΌα
ααΆααααααΆ OpenSSL αααΆαααΈααα·αααααα»αααΌαα bc
, bison
ΠΈ flex
: apt install crossbuild-essential-armhf bison flex libssl-dev bc
. α
αΆααααΆααααΈαααααα·ααΈααΆαααααααΆαααΎααααααααα―αααΆα zImage
αα
ααΎααααααααα―αααΆαααααΆαααΆαα
αΆααααααΎα ααΆαααααααααααααΌαααααα flash drive α
- ααΆααααΌαααΆααααααΌαααααααα»αααΆαααααΌαααΊααα ααΌα
αααααααα»αααααΆααααααΆαααα
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.xz
. α αΌαααααΆααααα αα α αΎαα αΌααα ααΆααααααααααtar -xf linux-5.9.1.tar.xz && cd linux-5.9.1
- ααααααα
ααΆαααααααααα»ααααα
αααααα
make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig
. ααΆααααααααΆαααΈααΆαααα αααα»αααarch/arm/configs/
. ααααα·αααΎαα·αααΆααα α’αααα’αΆα ααααΆααΆαααααααα αα·αααΆαααα―αααΆααααααααααα½α ααΆααααα α αΎααααααΌααααααα―αααΆααα αααα»ααααααααΆαααΆαααΆααααααKBUILD_DEFCONFIG
. ααΆαααααααΆαα α»αααααα ααΌααααααα α ααα»α αααααΆααααααΆααα - ααΆαααααΎα α’αααα’αΆα
ααααααααΆααααααα
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
- α αΎαα
αααααααΌαααΆαα
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
- α₯α‘αΌαα’αααα’αΆα
α
ααααα―αααΆαααΊαααα
cp arch/arm/boot/zImage /mnt/boot/
- αα·αα―αααΆαααΈ DeviceTree (ααΆααα·αααααΆα’αααΈαααααααΉααα
ααΎααααΆα):
cp arch/arm/boot/dts/*.dtb /mnt/boot/
- α αΎαααα‘αΎααααΌαα»αααααααααΌαααΆααααα»αααααααααΆα―αααΆαααΆα
ααααα‘ααα
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=/mnt/ modules_install
ααΊααααα½α
ααΆααα α’αααα’αΆα
ααααΆα
αα’αααΈαααααααααΆαα umount /mnt/boot/ /mnt/
Das U-Boot
αααααΆααααααα·ααΈα αΆααααααΎαααααααααααΆαα’αααααααα α’αααΈαααα’αααααααΌαααααΎααΎααααΈααΆαααααααααα·ααααα·ααΆαααααααΆααΊααααααααα½αα―α α§ααααααααα»α αα·αααΆαααααΎαα§ααααα USB-to-UART α αααααΊα’αααα’αΆα αααααΆααααααΊααα αα·α OS αααααΆααααααααααα
αααα»αα αα»αααα·αααΆαα
αααΎααααααααΌαααΆαααααΎααααΆαα Das U-Boot αααααΆααααΆαα
αΆααααααΎαααααΌαα ααΆαααΆαααααααααα αΉα ααΆααααααΆααααΌαααΆααααααααααααααααα½ααα ααα»αααααα½ααααα·αααααα
α
αΌααα½ααα·ααΆαααΆαααααααααααΉααααααα αααα»αααααΈαααααααα»α αααα»αααααΉααααΆαα·ααΆαααααΌαααΆαααΆαααααα
αααα»α
ααααααααΌααααα»α bootloader ααααααα½αα―αα
- ααΎαααααΌαααΆααΆαααααΆααααααααΆαααααααΆααα
git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10
- ααααα
αααααα½αα―αα
cd u-boot
- αααα»ααααα
ααα
ααΆαααααααααααααα
make mx6ull_14x14_evk_defconfig
. ααΆααααΎαααΆαααΆααα»αααααΆααααΆαααααααα ααΆαααααααααααα·ααα αααα»α Das U-Boot αααα½αααΆ ααΎαα·αααΌα αααααα α’αααααΉαααααΌααααααααααΆααααααααααα’αααααα·α α αΎαααΆααααΆαα αααα»αα«αααααααΆαααα αααα»αα―αααΆααα½αα.config
α¬αααααΌααααα»αααΆααααααααααααααααααΆαααααΆαααααααα»αα αα»αααα·αα - ααΎααααααΌααααα»αααΌαααΆα bootloader ααααααα½αα―ααααααααΎ cross-compiler
armhf
:make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx
ααΆααααααααΎαααα½αααΆαα―αααΆα u-boot.imx
αααααΆααΌαααΆααααααααααα½α
ααΆααααα
αααα’αΆα
ααααααα
ααΆαα flash driveα ααΎαααααααα
ααΆα SD ααααααα 1024 ααααααΌαα α ααα»α’αααΈααΆαααΆαααα»αααααΎαααΎαααααα
u-boot.imx
? α ααα»α’αααΈααΆαααΆαααα»αααααΆα 1024 αα? αααααΊααΆα’αααΈααααα½αααααααΎα±ααααααΎαα
αααα»α
αα½α ααΆαα α’αααα’αΆα α αΆααααααΎαααΆαα αααααα·ααΈα αΆααααααΎαααααααααααααΌαααααΆαααΆαααα’αααΈααααααααΆαααααα½αααααααΆ ααααααΆααα½αα ααα½αα’αααΈααααΆα α αΎαααααΆααΆααααααααααΌαααΆαααΊααααα ααΎααΆαααΆαα ααααα·αααΎαα·ααααααα ααΆααΉαααααΆααΆαα αΆααααααΎααα ααΎαααααΆαα ααΆααΌαα ααααααααΊαααα’α·αααΆααα’αααα’αΆα ααααΎαααα α»αααααα·αααΎααΆααααα αΆα
αααα½αα±ααααΆαααααα·ααααΆααα½α
ααΎα’αααααΉαααααΆ ααααΆαααααααααααααααα·ααααααΆααα’αΉα? ααΆβααΆβαααααβααΈβααΈ ααΆβαααβααααΆααβαααααΆααβααβα’αααΌ!
ααααα: www.habr.com