Kuyambira GNU/Linux pa bolodi la ARM kuyambira poyambira (pogwiritsa ntchito Kali ndi iMX.6 monga chitsanzo)

tl; dr: Ndikupanga chithunzi cha Kali Linux pakompyuta ya ARM, mu pulogalamuyi debootstrap, linux ΠΈ u-boot.

Kuyambira GNU/Linux pa bolodi la ARM kuyambira poyambira (pogwiritsa ntchito Kali ndi iMX.6 monga chitsanzo)

Ngati mudagula pulogalamu ya bolodi yomwe si yotchuka kwambiri, mutha kukumana ndi kusowa kwa chithunzi cha zomwe mumakonda kuzigawa. Pafupifupi chinthu chomwecho chinachitika ndi anakonza Flipper One. Palibe Kali Linux ya IMX6 (ndikukonzekera), kotero ndiyenera kuyisonkhanitsa ndekha.

Njira yotsitsa ndiyosavuta:

  1. Hardware imayambitsidwa.
  2. Kuchokera kumalo ena pa chipangizo chosungira (SD card/eMMC/etc) bootloader imawerengedwa ndi kuchitidwa.
  3. Bootloader imayang'ana kernel yogwiritsira ntchito ndikuyiyika kumalo ena okumbukira ndikuichita.
  4. Kernel imanyamula OS yonse.

Izi mlingo mwatsatanetsatane ndi zokwanira ntchito yanga, mukhoza kuwerenga mwatsatanetsatane m'nkhani ina. Madera "ena" omwe atchulidwa pamwambapa amasiyana ndi bolodi, zomwe zimabweretsa zovuta kuziyika. Kutsegula mapulatifomu a seva ya ARM kuyesera kukhazikika kugwiritsa ntchito UEFI, koma ngakhale izi sizipezeka kwa aliyense, muyenera kusonkhanitsa chilichonse padera.

Kupanga mizu file system

Choyamba muyenera kukonzekera magawo. Das U-Boot imathandizira mafayilo osiyanasiyana, ndinasankha FAT32 /boot ndi ext3 ya mizu, iyi ndiye mawonekedwe azithunzi a Kali pa ARM. Ndigwiritsa ntchito GNU Parted, koma mutha kuchita zomwezo mwanjira yodziwika bwino fdisk. Mudzafunikanso dosfstools ΠΈ e2fsprogs kupanga fayilo ya fayilo: apt install parted dosfstools e2fsprogs.

Timalemba khadi la SD:

  1. Lembani khadi la SD ngati kugwiritsa ntchito magawo a MBR: parted -s /dev/mmcblk0 mklabel msdos
  2. Pangani gawo pansi /boot pa 128 megabytes: parted -s /dev/mmcblk0 mkpart primary fat32 1MiB 128MiB. Megabyte yoyamba yomwe idaphonya iyenera kusiyidwa kuti ipangike yokha komanso ya bootloader.
  3. Timapanga mizu yamafayilo amtundu wonse wotsalira: parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
  4. Ngati mwadzidzidzi mafayilo anu ogawa sanapangidwe kapena sanasinthidwe, muyenera kuthamanga `partprobe`, ndiye kuti tebulo la magawo lidzawerengedwanso.
  5. Pangani dongosolo la fayilo la magawo a boot ndi chizindikiro BOOT: mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
  6. Pangani mizu ya fayilo yokhala ndi chizindikiro ROOTFS: mkfs.ext3 -L ROOTFS /dev/mmcblk0p2

Zabwino, tsopano mutha kuzidzaza. Kwa izi mudzafunikanso debootstrap, chida chopangira ma fayilo a mizu yamakina ogwiritsira ntchito ngati Debian: apt install debootstrap.

Timasonkhanitsa FS:

  1. Ikani partition mkati /mnt/ (gwiritsani ntchito malo okwera osavuta): mount /dev/mmcblk0p2 /mnt
  2. Timadzaza fayilo yamafayilo: debootstrap --foreign --include=qemu-user-static --arch armhf kali-rolling /mnt/ http://http.kali.org/kali. Parameter --include ikuwonetsa kuwonjezeranso ma phukusi ena, ndidatchula emulator ya QEMU yomangidwa mokhazikika. Zimakuthandizani kuti muzichita chroot m'malo a ARM. Tanthauzo la zosankha zotsalira zitha kupezeka mu man debootstrap. Musaiwale kuti si gulu lililonse la ARM lomwe limathandizira kamangidwe kake armhf.
  3. Chifukwa cha kusiyana kwa zomangamanga debootstrap ikuchitika mu magawo awiri, yachiwiri ikuchitika motere: chroot /mnt/ /debootstrap/debootstrap --second-stage
  4. Tsopano muyenera kuwononga: chroot /mnt /bin/bash
  5. Timadzaza /etc/hosts ΠΈ /etc/hostname cholinga FS. Lembani zofanana ndi zomwe zili pa kompyuta yanu, ingokumbukirani kusintha dzina la alendo.
  6. Mutha kusintha zina zonse. Makamaka, ndimayika locales (makiyi osungira), sinthaninso madera ndi nthawi yanthawi (dpkg-reconfigure locales tzdata). Musaiwale kukhazikitsa mawu achinsinsi ndi lamulo passwd.
  7. Khazikitsani mawu achinsinsi root gulu passwd.
  8. Kukonzekera kwa fano kwa ine kumathera ndi kudzazidwa /etc/fstab mkati /mnt/.

Ndiyika molingana ndi ma tag omwe adapangidwa kale, kuti zomwe zilimo zikhale motere:

LABEL=ROOTFS / auto errors=remount-ro 0 1
LABEL=BOOT /zosintha zokha zokha 0 0

Pomaliza, mutha kuyika gawo la boot, tidzalifuna pa kernel: `mount /dev/mmcblk0p1 /mnt/boot/`

Kupanga kwa Linux

Kuti mupange kernel (ndiyeno bootloader) pa Kuyesa kwa Debian, muyenera kukhazikitsa ma GCC, GNU Make ndi mafayilo amutu a GNU C Library pazomanga zomwe mukufuna (kwa ine. armhf), komanso mitu ya OpenSSL, chowerengera chotonthoza bc, bison ΠΈ flex: apt install crossbuild-essential-armhf bison flex libssl-dev bc. Popeza chosasintha Loader amayang'ana wapamwamba zImage pa fayilo ya gawo la boot, ndi nthawi yogawanitsa flash drive.

  1. Zimatenga nthawi yayitali kuti mupange kernel, kotero ndingotsitsa: wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.xz. Tiyeni titulutse ndikupita ku source directory: tar -xf linux-5.9.1.tar.xz && cd linux-5.9.1
  2. Konzani musanaphatikize: make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig. Ma config ali mu chikwatu arch/arm/configs/. Ngati palibe, mutha kuyesa kupeza ndikutsitsa yomwe idapangidwa kale ndikudutsa dzina la fayilo mu bukhuli ngati parameter. KBUILD_DEFCONFIG. Monga chomaliza, nthawi yomweyo pitani ku mfundo yotsatira.
  3. Mwachidziwitso, mutha kusintha makonda: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
  4. Ndipo phatikizani chithunzicho: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
  5. Tsopano mutha kukopera fayilo ya kernel: cp arch/arm/boot/zImage /mnt/boot/
  6. Ndipo mafayilo ochokera ku DeviceTree (mafotokozedwe a hardware pa bolodi): cp arch/arm/boot/dts/*.dtb /mnt/boot/
  7. Ndipo ikani ma module omwe amasonkhanitsidwa ngati mafayilo osiyana: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=/mnt/ modules_install

Njere yakonzeka. Mutha kutsitsa chilichonse: umount /mnt/boot/ /mnt/

Ndi U-Boot

Popeza bootloader imagwira ntchito, zonse zomwe mukufunikira kuti muyese ntchito yake ndi bolodi lokha, chipangizo chosungirako, komanso chipangizo cha USB-to-UART. Ndiye kuti, mutha kuyimitsa kernel ndi OS pambuyo pake.

Ambiri opanga amapereka kugwiritsa ntchito Das U-Boot pa boot yoyamba. Thandizo lathunthu nthawi zambiri limaperekedwa mphanda yawo, koma samayiwala kuthandizira kumtunda. Kwa ine, bolodi imathandizidwa mu mainlinechifukwa chake foloko Ndinazinyalanyaza.

Tiyeni tisonkhanitse bootloader yokha:

  1. Timagwirizanitsa nthambi yokhazikika ya repository: git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10
  2. Tiyeni tipite ku chikwatu chomwechi: cd u-boot
  3. Kukonzekera dongosolo la kumanga: make mx6ull_14x14_evk_defconfig. Izi zimangogwira ntchito ngati kasinthidwe kali mu Das U-Boot palokha, apo ayi muyenera kupeza masinthidwe a wopanga ndikuyika muzu wa chosungira mufayilo. .config, kapena kusonkhanitsa m'njira ina iliyonse yovomerezedwa ndi wopanga.
  4. Timasonkhanitsa chithunzi cha bootloader palokha pogwiritsa ntchito cross-compiler armhf: make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx

Chifukwa chake timapeza fayilo u-boot.imx, ichi ndi chithunzi chokonzekera chomwe chingalembedwe ku flash drive. Timalembera ku khadi la SD, kudumpha ma byte 1024 oyamba. Chifukwa chiyani ndasankha Target u-boot.imx? Chifukwa chiyani ndaphonya ndendende ma byte 1024? Izi ndi zomwe akufuna kuchita zolemba. Kwa matabwa ena, kupanga zithunzi ndi kujambula kungakhale kosiyana pang'ono.

Mwamaliza, mukhoza kuyamba. Bootloader iyenera kufotokoza mtundu wake, zambiri za bolodi, ndikuyesera kupeza chithunzi cha kernel pagawo. Ngati sichikuyenda bwino, iyesa kuyambitsa pa netiweki. Ambiri, linanena bungwe mwatsatanetsatane, mukhoza kupeza cholakwika ngati pali vuto.

M'malo mapeto

Kodi mumadziwa kuti chipumi cha dolphin sichimafupa? Ndilo diso lachitatu, lens yamafuta ya echolocation!

Kuyambira GNU/Linux pa bolodi la ARM kuyambira poyambira (pogwiritsa ntchito Kali ndi iMX.6 monga chitsanzo)

Kuyambira GNU/Linux pa bolodi la ARM kuyambira poyambira (pogwiritsa ntchito Kali ndi iMX.6 monga chitsanzo)

Source: www.habr.com