Fara GNU/Linux akan allon ARM daga karce (ta amfani da Kali da iMX.6 a matsayin misali)

tl; dr: Ina gina hoton Kali Linux don kwamfutar ARM, a cikin shirin debootstrap, linux и u-boot.

Fara GNU/Linux akan allon ARM daga karce (ta amfani da Kali da iMX.6 a matsayin misali)

Idan kun sayi wasu da ba shahararriyar mai biyan kuɗi ɗaya ba, za ku iya fuskantar rashin hoton kayan rarraba da kuka fi so. Haka abin ya faru da yawa shirin Flipper One. Babu kawai Kali Linux don IMX6 (Ina dafa abinci), don haka dole in haɗa shi da kaina.

Tsarin zazzagewa abu ne mai sauƙi:

  1. An fara kayan aikin.
  2. Daga wani yanki akan na'urar ajiya (katin SD/eMMC/da sauransu) ana karantawa kuma ana aiwatar da bootloader.
  3. Loader yana neman kernel na tsarin aiki kuma ya loda shi zuwa wani yanki na ƙwaƙwalwar ajiya yana aiwatar da shi.
  4. Kwayar tana loda sauran OS.

Don aikina, wannan matakin daki-daki ya isa, zaku iya karanta cikakkun bayanai a wani labarin. Yankunan “wasu” da aka ambata a sama sun bambanta daga allon zuwa allo, wanda ke haifar da wasu matsalolin shigarwa. Ana loda dandamalin sabar ARM ƙoƙarin daidaitawa ta amfani da UEFI, amma muddin ba a samuwa ga kowa ba, dole ne ku tattara komai daban.

Gina tushen tsarin fayil

Da farko kuna buƙatar shirya sassan. Das U-Boot yana goyan bayan tsarin fayil daban-daban, na zaɓi FAT32 don /boot da ext3 don tushen, wannan shine daidaitaccen alamar hoto don Kali a ƙarƙashin ARM. Zan yi amfani da GNU Parted, amma kuna iya yin daidai da saba fdisk. Hakanan zaka buƙaci dosfstools и e2fsprogs don ƙirƙirar tsarin fayil: apt install parted dosfstools e2fsprogs.

Rarraba katin SD:

  1. Alama katin SD kamar yadda ake amfani da rarrabuwar MBR: parted -s /dev/mmcblk0 mklabel msdos
  2. Ƙirƙiri sashe don /boot don 128 megabyte: parted -s /dev/mmcblk0 mkpart primary fat32 1MiB 128MiB. Dole ne a bar megabyte na farko da aka rasa don alamar da kanta da kuma na bootloader.
  3. Ƙirƙiri tushen FS don sauran ƙarfin: parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
  4. Idan ba zato ba tsammani ba ku ƙirƙira ko canza fayilolin bangare ba, kuna buƙatar aiwatar da `partprobe', sannan za a sake karanta teburin ɓangaren.
  5. Ƙirƙiri tsarin fayil ɗin ɓangaren taya mai lakabi BOOT: mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
  6. Ƙirƙiri tushen tsarin fayil tare da lakabi ROOTFS: mkfs.ext3 -L ROOTFS /dev/mmcblk0p2

Mai girma, yanzu za ku iya cika shi. Wannan kuma zai buƙaci debootstrap, mai amfani don ƙirƙirar tushen FS akan tsarin aiki kamar Debian: apt install debootstrap.

Muna tattara FS:

  1. Dutsen bangare zuwa /mnt/ (Yi amfani da wurin tudu mafi dacewa da kanka): mount /dev/mmcblk0p2 /mnt
  2. A gaskiya mun cika tsarin fayil: debootstrap --foreign --include=qemu-user-static --arch armhf kali-rolling /mnt/ http://http.kali.org/kali. Siga --include ya ƙayyade don ƙara shigar da wasu fakiti, Na ƙayyadadden ƙirar ƙirar QEMU da aka gina a tsaye. Yana ba ku damar yin aiki chroot zuwa yanayin ARM. Ana iya samun ma'anar sauran zaɓuɓɓuka a ciki man debootstrap. Kar a manta cewa ba kowane kwamiti na ARM ke goyan bayan gine-gine ba armhf.
  3. Saboda bambancin gine-gine debootstrap ana yin shi a matakai biyu, na biyu kuma ana yin shi kamar haka: chroot /mnt/ /debootstrap/debootstrap --second-stage
  4. Yanzu kuna buƙatar juyawa: chroot /mnt /bin/bash
  5. Mun cika /etc/hosts и /etc/hostname manufa FS. Cika iri ɗaya da abun ciki akan kwamfutar gida, ku tuna maye gurbin sunan mai masauki kawai.
  6. Kuna iya siffanta komai. Musamman, na shigar locales (maɓallai na ajiya), sake saita wurare da yankin lokaci (dpkg-reconfigure locales tzdata). Kar a manta saita kalmar sirri tare da umarnin passwd.
  7. Saita kalmar sirri don root tawaga passwd.
  8. Ana kammala shirye-shiryen hoton a gare ni ta hanyar cikawa /etc/fstab a ciki /mnt/.

Zan loda daidai da tags ɗin da aka ƙirƙira a baya, don haka abun ciki zai kasance kamar haka:

LABEL = Tushen / kurakurai ta atomatik = remount-ro 0 1
LABEL = BOOT / Boot auto Predefined 0 0

A ƙarshe, za ku iya hawa ɓangaren taya, za mu buƙaci shi don kernel: `mount /dev/mmcblk0p1 /mnt/boot/`

Gina Linux

Don gina kernel (sannan bootloader) akan Gwajin Debian, kuna buƙatar shigar da daidaitattun saitin GCC, GNU Make da fayilolin GNU C Library don gine-ginen da aka yi niyya (Ina da armhf), da kuma masu kai na OpenSSL, kalkuleta na wasan bidiyo bc, bison и flex: apt install crossbuild-essential-armhf bison flex libssl-dev bc. Tunda tsoho mai lodi yana neman fayil zImage a kan tsarin fayil na ɓangaren taya, lokaci ya yi da za a karya filasha.

  1. Rufe kwaya ya yi tsayi da yawa, don haka kawai zan zazzage: wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.xz. Cire fakitin kuma je zuwa ga adireshin tushen: tar -xf linux-5.9.1.tar.xz && cd linux-5.9.1
  2. Saita kafin hadawa: make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig. Tsarin yana cikin kundin adireshi arch/arm/configs/. Idan babu, kuna iya ƙoƙarin nemowa da zazzage wanda aka shirya kuma ku wuce sunan fayil ɗin a cikin wannan jagorar zuwa ma'aunin. KBUILD_DEFCONFIG. A cikin matsanancin yanayi, nan da nan ci gaba zuwa sakin layi na gaba.
  3. Kuna iya canza saitunan da zaɓin zaɓi: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
  4. Kuma ku haɗa hoton: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
  5. Yanzu zaku iya kwafi fayil ɗin kernel: cp arch/arm/boot/zImage /mnt/boot/
  6. Da fayiloli daga DeviceTree (bayanin kayan aikin da ke akwai akan allo): cp arch/arm/boot/dts/*.dtb /mnt/boot/
  7. Kuma shigar da kayayyaki da aka haɗa a matsayin fayiloli daban: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=/mnt/ modules_install

An shirya kwaya. Kuna iya kwance komai: umount /mnt/boot/ /mnt/

Das U Boot

Tun da bootloader yana da ma'amala, hukumar kanta, na'urar ajiya, da na'urar USB-zuwa-UART na zaɓi sun isa don gwada aikinta. Wato, zaku iya jinkirta kernel da OS na gaba.

Yawancin masana'antun suna ba da shawarar amfani da Das U-Boot don taya na farko. Ana ba da cikakken tallafi a cikin cokali mai yatsu, amma kar a manta da bayar da gudummawa a cikin sama. A cikin yanayina, ana tallafawa hukumar a ciki babban layisaboda haka cokali mai yatsa Na yi banza da su.

Muna tattara bootloader kanta:

  1. Klone tsayayyen reshe na ma'ajiya: git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10
  2. Mu je kan directory kanta: cd u-boot
  3. Ana shirya tsarin ginawa: make mx6ull_14x14_evk_defconfig. Wannan yana aiki ne kawai idan tsarin yana cikin Das U-Boot da kansa, in ba haka ba kuna buƙatar nemo saitunan masana'anta kuma sanya shi cikin tushen ma'ajin a cikin fayil ɗin. .config, ko tattara ta wata hanyar da masana'anta suka ba da shawarar.
  4. Muna tattara hoton bootloader kanta tare da mai haɗawa da giciye armhf: make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx

A sakamakon haka, muna samun fayil ɗin u-boot.imx, wannan hoton da aka shirya ne wanda za'a iya rubutawa zuwa kebul na USB. Muna rubuta zuwa katin SD, muna tsallake 1024 bytes na farko. Me yasa na zabi manufa u-boot.imx? Me yasa aka rasa daidai 1024 bytes? Wannan shi ne abin da suke ba da shawarar yin a ciki takardun. Ga sauran allunan, tsarin ginin hoto da ƙonawa na iya ɗan bambanta.

Anyi, zaku iya saukewa. Bootloader yakamata ya ba da rahoton nau'in nasa, wasu bayanai game da allo, kuma yayi ƙoƙarin nemo hoton kernel akan ɓangaren. Idan ya kasa, zai yi ƙoƙarin yin boot akan hanyar sadarwar. Gabaɗaya, fitowar ta cika daki-daki, za ku iya samun kuskure idan akwai matsala.

Maimakon a ƙarshe

Shin ko kun san cewa goshin dabbar dolphin ba kashi ba ne? A zahiri ido na uku ne, ruwan tabarau mai kitse don ƙara girma!

Fara GNU/Linux akan allon ARM daga karce (ta amfani da Kali da iMX.6 a matsayin misali)

Fara GNU/Linux akan allon ARM daga karce (ta amfani da Kali da iMX.6 a matsayin misali)

source: www.habr.com