E hoʻomaka ana i ka GNU/Linux ma kahi papa ARM mai ka wā kahiko (e hoʻohana ana iā Kali a me iMX.6 ma ke ʻano he laʻana)

tl: Ke kūkulu nei au i kiʻi Kali Linux no kahi kamepiula ARM, ma ka papahana debootstrap, linux и u-boot.

E hoʻomaka ana i ka GNU/Linux ma kahi papa ARM mai ka wā kahiko (e hoʻohana ana iā Kali a me iMX.6 ma ke ʻano he laʻana)

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 i hoʻolālā ʻia ʻo Flipper One. ʻAʻohe Kali Linux no IMX6 (Ke kuke nei au), no laila pono wau e hōʻuluʻulu iaʻu iho.

He mea maʻalahi ke kaʻina hoʻoiho:

  1. Hoʻomaka ʻia ka paʻahana.
  2. Mai kekahi wahi ma ka waihona waihona (kāleka SD / eMMC / etc) heluhelu ʻia ka bootloader a hoʻokō ʻia.
  3. 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ō.
  4. 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ʻī i kekahi ʻatikala ʻē aʻe. ʻOkoʻa nā wahi "kekahi" i ʻōlelo ʻia ma luna mai kēlā me kēia papa, kahi e hana ai i nā pilikia hoʻonohonoho. Ke hoʻouka nei i nā kahua kikowaena ARM e ho'āʻo ana e hoʻohālikelike me ka hoʻohana ʻana iā UEFI, akā ʻoiai ʻaʻole i loaʻa i nā mea āpau, pono ʻoe e hōʻiliʻili i nā mea āpau.

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:

  1. E kaha i ke kāleka SD e like me ka hoʻohana ʻana i ka ʻāpana MBR: parted -s /dev/mmcblk0 mklabel msdos
  2. 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.
  3. E hana i kahi kumu FS no ke koena o ka mana: parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
  4. 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.
  5. E hana i kahi ʻōnaehana file partition boot i kapa ʻia BOOT: mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
  6. 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:

  1. E kau i ka paku i /mnt/ (e hoʻohana i kahi wahi mauna maʻalahi no ʻoe iho): mount /dev/mmcblk0p2 /mnt
  2. 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 hana chroot i ke kaiapuni ARM. Hiki ke ʻike ʻia ke ʻano o nā koho ʻē aʻe ma man debootstrap. Mai poina ʻaʻole kākoʻo kēlā me kēia papa ARM i ka hoʻolālā armhf.
  3. 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
  4. I kēia manawa pono ʻoe e wili: chroot /mnt /bin/bash
  5. 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ō.
  6. 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 kauoha passwd.
  7. E hoʻonoho i ka ʻōlelo huna no root hui passwd.
  8. 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.

  1. 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
  2. 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 kuhikuhi arch/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.
  3. Hiki iā ʻoe ke hoʻololi i nā hoʻonohonoho: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
  4. A hui pū i ke kiʻi: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
  5. I kēia manawa hiki iā ʻoe ke kope i ka faila kernel: cp arch/arm/boot/zImage /mnt/boot/
  6. 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/
  7. 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 laina nuiʻo ia ke kumu lāʻau Ua nānā ʻole au.

ʻOhi mākou i ka bootloader iā ia iho:

  1. 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
  2. E hele kāua i ka papa kuhikuhi pono'ī: cd u-boot
  3. 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.
  4. ʻ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 palapala. No nā papa ʻē aʻe, ʻokoʻa iki ke kūkulu ʻana i ke kiʻi a me ke kaʻina hana kuni.

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!

E hoʻomaka ana i ka GNU/Linux ma kahi papa ARM mai ka wā kahiko (e hoʻohana ana iā Kali a me iMX.6 ma ke ʻano he laʻana)

E hoʻomaka ana i ka GNU/Linux ma kahi papa ARM mai ka wā kahiko (e hoʻohana ana iā Kali a me iMX.6 ma ke ʻano he laʻana)

Source: www.habr.com