Bibẹrẹ GNU/Linux lori igbimọ ARM lati ibere (lilo Kali ati iMX.6 gẹgẹbi apẹẹrẹ)

tl; dr: Mo n kọ aworan Kali Linux kan fun kọnputa ARM, ninu eto naa debootstrap, linux и u-boot.

Bibẹrẹ GNU/Linux lori igbimọ ARM lati ibere (lilo Kali ati iMX.6 gẹgẹbi apẹẹrẹ)

Ti o ba ra diẹ ninu sọfitiwia igbimọ-ẹyọkan ti o gbajumọ pupọ, o le dojuko aini aworan ti pinpin ayanfẹ rẹ fun rẹ. Ni isunmọ ohun kanna ṣẹlẹ pẹlu ngbero Flipper Ọkan. Ni irọrun ko si Kali Linux fun IMX6 (Mo n murasilẹ), nitorinaa Mo ni lati pejọ funrararẹ.

Ilana igbasilẹ jẹ ohun rọrun:

  1. Awọn hardware ti wa ni initialized.
  2. Lati agbegbe kan lori ẹrọ ibi ipamọ (kaadi SD/eMMC/ati bẹbẹ lọ) bootloader ti wa ni kika ati ṣiṣẹ.
  3. Bootloader n wa ekuro ẹrọ iṣẹ ati gbe e sinu agbegbe iranti diẹ ati ṣiṣe rẹ.
  4. Ekuro n gbe iyoku OS naa.

Ipele alaye yii ti to fun iṣẹ-ṣiṣe mi, o le ka awọn alaye naa ni nkan miiran. Awọn agbegbe “diẹ ninu” ti a mẹnuba loke yatọ lati igbimọ si ọkọ, eyiti o ṣẹda diẹ ninu awọn iṣoro fifi sori ẹrọ. Nkojọpọ awọn iru ẹrọ olupin ARM gbiyanju lati standardize lilo UEFI, ṣugbọn lakoko ti eyi ko wa fun gbogbo eniyan, iwọ yoo ni lati pejọ ohun gbogbo lọtọ.

Ṣiṣe eto faili root

Ni akọkọ o nilo lati ṣeto awọn apakan. Das U-Boot ṣe atilẹyin awọn ọna ṣiṣe faili oriṣiriṣi, Mo yan FAT32 fun /boot ati ext3 fun gbongbo, eyi ni ipilẹ aworan boṣewa fun Kali lori ARM. Emi yoo lo GNU Parted, ṣugbọn o le ṣe kanna ni ọna ti o faramọ diẹ sii fdisk. Iwọ yoo tun nilo dosfstools и e2fsprogs lati ṣẹda eto faili kan: apt install parted dosfstools e2fsprogs.

A samisi kaadi SD:

  1. Samisi kaadi SD bi lilo ipin MBR: parted -s /dev/mmcblk0 mklabel msdos
  2. Ṣẹda a apakan labẹ /boot fun 128 megabyte: parted -s /dev/mmcblk0 mkpart primary fat32 1MiB 128MiB. Megabyte akọkọ ti o padanu gbọdọ jẹ osi fun isamisi funrararẹ ati fun bootloader.
  3. A ṣẹda eto faili gbongbo fun gbogbo agbara ti o ku: parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
  4. Ti awọn faili ipin rẹ ko ba ti ṣẹda lojiji tabi ko yipada, o nilo lati ṣiṣẹ `partprobe`, lẹhinna tabili ipin yoo tun ka.
  5. Ṣẹda eto faili kan fun ipin bata pẹlu aami naa BOOT: mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
  6. Ṣẹda eto faili gbongbo pẹlu aami kan ROOTFS: mkfs.ext3 -L ROOTFS /dev/mmcblk0p2

Nla, bayi o le fọwọsi. Fun eyi iwọ yoo nilo afikun debootstrap, IwUlO kan fun ṣiṣẹda awọn ọna ṣiṣe faili root fun awọn ọna ṣiṣe ti o dabi Debian: apt install debootstrap.

A gba FS:

  1. Gbe awọn ipin sinu /mnt/ (lo aaye oke ti o rọrun diẹ sii): mount /dev/mmcblk0p2 /mnt
  2. A kun eto faili gangan: debootstrap --foreign --include=qemu-user-static --arch armhf kali-rolling /mnt/ http://http.kali.org/kali... Paramita --include tọkasi afikun ohun ti a fi sori ẹrọ diẹ ninu awọn jo, Mo pato kan statically itumọ ti QEMU emulator. O faye gba o lati ṣe chroot ni agbegbe ARM. Itumọ awọn aṣayan ti o ku ni a le rii ni man debootstrap. Maṣe gbagbe pe kii ṣe gbogbo igbimọ ARM ṣe atilẹyin faaji armhf.
  3. Nitori iyatọ ninu faaji debootstrap A ṣe ni awọn ipele meji, keji ni a ṣe bi eleyi: chroot /mnt/ /debootstrap/debootstrap --second-stage
  4. Bayi o nilo lati yi o soke: chroot /mnt /bin/bash
  5. Pon si /etc/hosts и /etc/hostname afojusun FS. Fọwọsi kanna gẹgẹbi akoonu lori kọnputa agbegbe rẹ, kan ranti lati rọpo orukọ olupin naa.
  6. O le ṣe akanṣe ohun gbogbo miiran. Ni pato, Mo fi sori ẹrọ locales (awọn bọtini ibi ipamọ), tunto awọn agbegbe ati agbegbe aago (dpkg-reconfigure locales tzdata). Maṣe gbagbe lati ṣeto ọrọ igbaniwọle pẹlu aṣẹ naa passwd.
  7. Ṣeto ọrọ igbaniwọle kan fun root egbe passwd.
  8. Igbaradi ti aworan fun mi pari pẹlu kikun /etc/fstab inu /mnt/.

Emi yoo gbejade ni ibamu pẹlu awọn afi ti a ṣẹda tẹlẹ, nitorinaa akoonu yoo dabi eyi:

LABEL=ROOTFS/aṣiṣe adaṣe=remount-ro 0 1
LABEL=BOOT/bata awọn aiyipada aifọwọyi 0 0

Ni ipari, o le gbe ipin bata, a yoo nilo rẹ fun ekuro: `mount /dev/mmcblk0p1 /mnt/boot/`

Linux kọ

Lati kọ ekuro (ati lẹhinna bootloader) lori Idanwo Debian, o nilo lati fi sori ẹrọ ipilẹ boṣewa ti GCC, GNU Make ati awọn faili akọsori GNU C Library fun faaji ibi-afẹde (fun mi armhf), bakanna bi awọn akọle OpenSSL, ẹrọ iṣiro console bc, bison и flex: apt install crossbuild-essential-armhf bison flex libssl-dev bc. Niwọn igba ti agberu aiyipada n wa faili naa zImage lori eto faili ti ipin bata, o to akoko lati pin kọnputa filasi naa.

  1. Yoo pẹ ju lati ṣe ẹda ekuro, nitorinaa Emi yoo kan ṣe igbasilẹ: wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.xz. Jẹ ki a tu silẹ ki a lọ si itọsọna orisun: tar -xf linux-5.9.1.tar.xz && cd linux-5.9.1
  2. Ṣe atunto ṣaaju akopọ: make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig. Awọn atunto ti wa ni be ninu awọn liana arch/arm/configs/. Ti ko ba si, o le gbiyanju lati wa ati ṣe igbasilẹ eyi ti a ti ṣetan ki o kọja orukọ faili ninu itọsọna yii bi paramita kan KBUILD_DEFCONFIG. Bi ohun asegbeyin ti, lẹsẹkẹsẹ gbe lori si awọn tókàn ojuami.
  3. Ni yiyan o le tweak awọn eto: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
  4. Ati ki o ṣe akopọ aworan naa: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
  5. Bayi o le daakọ faili kernel naa: cp arch/arm/boot/zImage /mnt/boot/
  6. Ati awọn faili lati DeviceTree (apejuwe ti ohun elo lori igbimọ): cp arch/arm/boot/dts/*.dtb /mnt/boot/
  7. Ati fi sori ẹrọ awọn modulu ti a gba ni irisi awọn faili lọtọ: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=/mnt/ modules_install

Ekuro ti šetan. O le yọ ohun gbogbo kuro: umount /mnt/boot/ /mnt/

Das U-Boot

Niwọn igba ti bootloader jẹ ibaraenisepo, gbogbo ohun ti o nilo lati ṣe idanwo iṣẹ rẹ ni igbimọ funrararẹ, ẹrọ ipamọ, ati yiyan ẹrọ USB-si-UART. Iyẹn ni, o le sun siwaju kernel ati OS fun nigbamii.

Pupọ julọ ti awọn aṣelọpọ nfunni lati lo Das U-Boot fun bata ibẹrẹ. Atilẹyin kikun ni a pese nigbagbogbo ni orita tiwọn, ṣugbọn wọn ko gbagbe lati ṣe alabapin si oke. Ninu ọran mi, igbimọ naa ni atilẹyin ni akọkọ, nitorina orita Mo ti foju rẹ.

Jẹ ki a ṣajọpọ bootloader funrararẹ:

  1. A ṣe ẹda ẹka iduroṣinṣin ti ibi ipamọ: git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10
  2. Jẹ ki a lọ si itọsọna funrararẹ: cd u-boot
  3. Ngbaradi iṣeto ni kikọ: make mx6ull_14x14_evk_defconfig. Eyi ṣiṣẹ nikan ti iṣeto ba wa ni Das U-Boot funrararẹ, bibẹẹkọ iwọ yoo nilo lati wa atunto olupese ati fi sii ni gbongbo ibi ipamọ ninu faili kan. .config, tabi pejọ ni ọna miiran ti a ṣeduro nipasẹ olupese.
  4. A ṣe apejọ aworan bootloader funrararẹ nipa lilo alakopọ-agbelebu armhf: make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx

Bi abajade, a gba faili naa u-boot.imx, Eyi jẹ aworan ti a ti ṣetan ti o le kọ si kọnputa filasi. A kọ si kaadi SD, fo akọkọ 1024 awọn baiti. Kí nìdí ni mo yan Àkọlé u-boot.imx? Kini idi ti Mo padanu 1024 baiti gangan? Eyi ni ohun ti wọn daba lati ṣe ninu iwe. Fun awọn igbimọ miiran, ile aworan ati ilana igbasilẹ le jẹ iyatọ diẹ.

Ti pari, o le bata. Awọn bootloader gbọdọ jabo awọn oniwe-ara version, diẹ ninu awọn alaye nipa awọn ọkọ, ati ki o gbiyanju lati wa awọn ekuro aworan lori ipin. Ti ko ba ṣaṣeyọri, yoo gbiyanju lati bata lori nẹtiwọọki naa. Ni gbogbogbo, abajade jẹ alaye pupọ, o le rii aṣiṣe ti iṣoro kan ba wa.

Dipo ti pinnu

Njẹ o mọ pe iwaju ori ẹja ko ni eegun? O jẹ gangan oju kẹta, lẹnsi ọra fun iwoyi!

Bibẹrẹ GNU/Linux lori igbimọ ARM lati ibere (lilo Kali ati iMX.6 gẹgẹbi apẹẹrẹ)

Bibẹrẹ GNU/Linux lori igbimọ ARM lati ibere (lilo Kali ati iMX.6 gẹgẹbi apẹẹrẹ)

orisun: www.habr.com