Tuanze GNU/Linux kwenye ubao wa ARM kuanzia mwanzo (kwa kutumia Kali na iMX.6 kama mfano)

tl; dr: kujenga picha ya Kali Linux kwa kompyuta ya ARM, katika programu debootstrap, linux и u-boot.

Tuanze GNU/Linux kwenye ubao wa ARM kuanzia mwanzo (kwa kutumia Kali na iMX.6 kama mfano)

Ikiwa ulinunua programu isiyo maarufu sana ya ubao mmoja, unaweza kukabiliwa na ukosefu wa picha ya usambazaji unaopenda kwa hiyo. Takriban kitu kimoja kilifanyika na iliyopangwa Flipper OneKali Linux Hakuna mtu wa IMX6 (ninaandaa moja), kwa hivyo lazima niikusanye mwenyewe.

Mchakato wa kupakua ni rahisi sana:

  1. Vifaa vimeanzishwa.
  2. Kutoka kwa eneo fulani kwenye kifaa cha kuhifadhi (kadi ya SD/eMMC/n.k) kipakiaji kinasomwa na kutekelezwa.
  3. Bootloader hutafuta kernel ya mfumo wa uendeshaji na kuipakia kwenye eneo fulani la kumbukumbu na kuitekeleza.
  4. Kernel hupakia OS iliyobaki.

Kiwango hiki cha maelezo kinatosha kwa kazi yangu, unaweza kusoma maelezo katika makala nyingine. Maeneo "baadhi" yaliyotajwa hapo juu yanatofautiana kutoka kwa ubao hadi ubao, ambayo hujenga matatizo fulani ya ufungaji. Inapakia mifumo ya seva ya ARM kujaribu kusanifisha kutumia UEFI, lakini wakati hii haipatikani kwa kila mtu, itabidi kukusanya kila kitu kando.

Kuunda mfumo wa faili wa mizizi

Kwanza unahitaji kuandaa sehemu. Das U-Boot inasaidia mifumo tofauti ya faili, nilichagua FAT32 kwa /boot na ext3 kwa mzizi, huu ndio mpangilio wa kawaida wa picha wa Kali kwenye ARM. Nitatumia GNU Iliyogawanywa, lakini unaweza kufanya vivyo hivyo kwa njia inayojulikana zaidi fdisk. Utahitaji pia dosfstools и e2fsprogs kuunda mfumo wa faili: apt install parted dosfstools e2fsprogs.

Tunaweka alama kwenye kadi ya SD:

  1. Weka alama kwenye kadi ya SD kama kutumia ugawaji wa MBR: parted -s /dev/mmcblk0 mklabel msdos
  2. Unda sehemu chini /boot kwa megabytes 128: parted -s /dev/mmcblk0 mkpart primary fat32 1MiB 128MiB. Megabyte ya kwanza iliyokosa lazima iachwe kwa markup yenyewe na kwa bootloader.
  3. Tunaunda mfumo wa faili wa mizizi kwa uwezo mzima uliobaki: parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
  4. Ikiwa ghafla faili zako za kizigeu hazijaundwa au hazijabadilika, unahitaji kuendesha `partprobe`, kisha jedwali la kizigeu litasomwa tena.
  5. Unda mfumo wa faili kwa kizigeu cha buti na lebo BOOT: mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
  6. Unda mfumo wa faili wa mizizi na lebo ROOTFS: mkfs.ext3 -L ROOTFS /dev/mmcblk0p2

Vizuri, sasa unaweza kuijaza. Kwa hili utahitaji zaidi debootstrap, matumizi ya kuunda FS ya mizizi Debian- mifumo ya uendeshaji inayofanana: apt install debootstrap.

Tunakusanya FS:

  1. Weka kizigeu ndani /mnt/ (tumia sehemu ya mlima inayofaa zaidi): mount /dev/mmcblk0p2 /mnt
  2. Kwa kweli tunajaza mfumo wa faili: debootstrap --foreign --include=qemu-user-static --arch armhf kali-rolling /mnt/ http://http.kali.org/kali. Kigezo --include inaonyesha kusakinisha vifurushi vingine, nilitaja emulator ya QEMU iliyojengwa kwa takwimu. Inakuruhusu kufanya chroot katika mazingira ya ARM. Maana ya chaguzi zilizobaki zinaweza kupatikana katika man debootstrap. Usisahau kwamba sio kila bodi ya ARM inasaidia usanifu armhf.
  3. Kwa sababu ya tofauti katika usanifu debootstrap inafanywa kwa hatua mbili, ya pili inafanywa kama hii: chroot /mnt/ /debootstrap/debootstrap --second-stage
  4. Sasa unahitaji kuifuta: chroot /mnt /bin/bash
  5. Tunajaza /etc/hosts и /etc/hostname lengo la FS. Jaza sawa na yaliyomo kwenye kompyuta yako ya karibu, kumbuka tu kubadilisha jina la mwenyeji.
  6. Unaweza kubinafsisha kila kitu kingine. Hasa, mimi kufunga locales (funguo za hazina), rekebisha eneo na eneo la saa (dpkg-reconfigure locales tzdata) Usisahau kuweka nenosiri kwa amri passwd.
  7. Weka nenosiri kwa root timu passwd.
  8. Maandalizi ya picha kwangu yanaisha na kujaza /etc/fstab ndani /mnt/.

Nitapakia kwa mujibu wa lebo zilizoundwa awali, kwa hivyo maudhui yatakuwa kama hii:

LABEL=ROOTFS / auto errors=remount-ro 0 1
LABEL=BOOT /chaguo-msingi otomatiki 0 0

Mwishowe, unaweza kuweka kizigeu cha buti, tutaihitaji kwa kernel: `mount /dev/mmcblk0p1 /mnt/boot/`

Mkutano Linux

Ili kujenga kernel (na bootloader baadaye) Debian Upimaji unahitaji kusakinisha seti ya kawaida ya faili za kichwa cha GCC, GNU Make, na GNU C Library kwa usanifu lengwa (Nina armhf), pamoja na vichwa vya OpenSSL, kikokotoo cha koni bc, bison и flex: apt install crossbuild-essential-armhf bison flex libssl-dev bc. Kwa kuwa kipakiaji chaguo-msingi hutafuta faili zImage kwenye mfumo wa faili wa ugawaji wa boot, ni wakati wa kugawanya gari la flash.

  1. Inachukua muda mrefu sana kuunda kernel, kwa hivyo nitapakua tu: wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.xz. Wacha tufungue na tuende kwenye saraka ya chanzo: tar -xf linux-5.9.1.tar.xz && cd linux-5.9.1
  2. Sanidi kabla ya mkusanyiko: make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig. Mipangilio iko kwenye saraka arch/arm/configs/. Ikiwa hakuna, unaweza kujaribu kupata na kupakua iliyotengenezwa tayari na kupitisha jina la faili kwenye saraka hii kama parameta. KBUILD_DEFCONFIG. Kama suluhu ya mwisho, mara moja nenda kwenye hatua inayofuata.
  3. Kwa hiari unaweza kurekebisha mipangilio: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
  4. Na unganisha picha: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
  5. Sasa unaweza kunakili faili ya kernel: cp arch/arm/boot/zImage /mnt/boot/
  6. Na faili kutoka kwa DeviceTree (maelezo ya vifaa kwenye ubao): cp arch/arm/boot/dts/*.dtb /mnt/boot/
  7. Na usakinishe moduli zilizokusanywa kwa namna ya faili tofauti: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=/mnt/ modules_install

Punje iko tayari. Unaweza kushusha kila kitu: umount /mnt/boot/ /mnt/

Das U-Boot

Kwa kuwa bootloader inaingiliana, unachohitaji ili kupima uendeshaji wake ni bodi yenyewe, kifaa cha kuhifadhi, na kwa hiari kifaa cha USB-to-UART. Hiyo ni, unaweza kuahirisha kernel na OS kwa baadaye.

Watengenezaji wengi wanapendekeza kutumia Das U-Boot kwa buti ya kwanza. Usaidizi kamili hutolewa kwa uma wao wenyewe, lakini hawasahau kuchangia kwenye mto. Kwa upande wangu, bodi inaungwa mkono katika njia kuuHivyo uma Nilipuuza.

Wacha tukusanye bootloader yenyewe:

  1. Tunatengeneza tawi thabiti la hazina: git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10
  2. Wacha tuende kwenye saraka yenyewe: cd u-boot
  3. Kuandaa usanidi wa muundo: make mx6ull_14x14_evk_defconfig. Hii inafanya kazi tu ikiwa usanidi uko kwenye Das U-Boot yenyewe, vinginevyo utahitaji kupata usanidi wa mtengenezaji na kuiweka kwenye mzizi wa hazina kwenye faili. .config, au kukusanyika kwa njia nyingine yoyote iliyopendekezwa na mtengenezaji.
  4. Tunakusanya picha ya bootloader yenyewe kwa kutumia mkusanyaji wa msalaba armhf: make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx

Kama matokeo, tunapata faili u-boot.imx, hii ni picha iliyopangwa tayari ambayo inaweza kuandikwa kwenye gari la flash. Tunaandika kwa kadi ya SD, kuruka baiti 1024 za kwanza. Kwa nini nilichagua Target u-boot.imx? Kwa nini nilikosa hasa ka 1024? Hivi ndivyo wanapendekeza kufanya ndani nyaraka. Kwa bodi zingine, ujenzi wa picha na mchakato wa kurekodi unaweza kuwa tofauti kidogo.

Imekamilika, unaweza kuwasha. Kiboreshaji cha boot lazima kiripoti toleo lake mwenyewe, habari fulani kuhusu ubao, na jaribu kupata picha ya kernel kwenye kizigeu. Ikiwa haitafanikiwa, itajaribu kuwasha mtandao. Kwa ujumla, matokeo ni ya kina kabisa, unaweza kupata kosa ikiwa kuna shida.

Badala ya hitimisho

Je! unajua kuwa paji la uso la pomboo sio mfupa? Kwa kweli ni jicho la tatu, lenzi ya mafuta kwa echolocation!

Tuanze GNU/Linux kwenye ubao wa ARM kuanzia mwanzo (kwa kutumia Kali na iMX.6 kama mfano)

Tuanze GNU/Linux kwenye ubao wa ARM kuanzia mwanzo (kwa kutumia Kali na iMX.6 kama mfano)

Chanzo: mapenzi.com

Nunua upangishaji wa kuaminika wa tovuti zilizo na ulinzi wa DDoS, seva za VPS VDS 🔥 Nunua upangishaji wa tovuti unaoaminika kwa ulinzi wa DDoS, seva za VPS VDS | ProHoster