A’ tòiseachadh GNU/Linux air bòrd ARM bhon toiseach (a’ cleachdadh Kali agus iMX.6 mar eisimpleir)

tl; dr: Tha mi a’ togail ìomhaigh Kali Linux airson coimpiutair ARM, sa phrògram debootstrap, linux и u-boot.

A’ tòiseachadh GNU/Linux air bòrd ARM bhon toiseach (a’ cleachdadh Kali agus iMX.6 mar eisimpleir)

Ma cheannaich thu bathar-bog aon-bhòrd nach robh mòr-chòrdte, is dòcha gu bheil dìth ìomhaigh den sgaoileadh as fheàrr leat air a shon. Thachair timcheall air an aon rud le dealbhaichte Flipper One. Gu sìmplidh chan eil Kali Linux ann airson IMX6 (tha mi ag ullachadh), agus mar sin feumaidh mi a chruinneachadh mi-fhìn.

Tha am pròiseas luchdachadh sìos gu math sìmplidh:

  1. Tha am bathar-cruaidh air a thòiseachadh.
  2. Bho àite air choreigin air an inneal stòraidh (cairt SD / eMMC / msaa) tha an bootloader air a leughadh agus air a chuir gu bàs.
  3. Bidh an bootloader a’ coimhead airson kernel an t-siostaim obrachaidh agus ga luchdachadh a-steach do chuid de raon cuimhne agus ga chuir an gnìomh.
  4. Bidh an kernel a’ luchdachadh a’ chòrr den OS.

Tha an ìre mion-fhiosrachaidh seo gu leòr airson mo ghnìomh, faodaidh tu am mion-fhiosrachadh a leughadh ann an artaigil eile. Tha na raointean “cuid” a tha air an ainmeachadh gu h-àrd eadar-dhealaichte bho bhòrd gu bòrd, a tha ag adhbhrachadh duilgheadasan stàlaidh. Luchdaich a-nuas an t-ùrlar airson ARMA a' feuchainn ri riaghailteachadh a’ cleachdadh UEFI, ach ged nach eil seo ri fhaighinn leis a h-uile duine, feumaidh tu a h-uile càil a chruinneachadh air leth.

A 'togail siostam nam faidhlichean root

An toiseach feumaidh tu na h-earrannan ullachadh. Tha Das U-Boot a’ toirt taic do dhiofar shiostaman faidhle, thagh mi FAT32 airson /boot agus ext3 airson root, is e seo an cruth ìomhaigh àbhaisteach airson Kali air ARM. Cleachdaidh mi GNU Parted, ach faodaidh tu an aon rud a dhèanamh ann an dòigh nas eòlaiche fdisk. Bidh feum agad air cuideachd dosfstools и e2fsprogs gus siostam faidhle a chruthachadh: apt install parted dosfstools e2fsprogs.

Bidh sinn a’ comharrachadh a’ chairt SD:

  1. Comharraich a’ chairt SD mar a bhith a’ cleachdadh sgaradh MBR: parted -s /dev/mmcblk0 mklabel msdos
  2. Cruthaich earrann fo /boot airson 128 megabytes: parted -s /dev/mmcblk0 mkpart primary fat32 1MiB 128MiB. Feumaidh a’ chiad megabyte a chaidh a chall fhàgail airson a’ chomharradh fhèin agus airson an luchd-luaidh.
  3. Bidh sinn a’ cruthachadh siostam faidhle freumha airson a’ chomais gu lèir a tha air fhàgail: parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
  4. Mura h-eil na faidhlichean sgaradh agad gu h-obann air an cruthachadh no air an atharrachadh, feumaidh tu `partprobe` a ruith, thèid an clàr sgaradh a leughadh a-rithist.
  5. Cruthaich siostam faidhle airson an sgaradh boot leis an leubail BOOT: mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
  6. Cruthaich siostam faidhle freumh le leubail ROOTFS: mkfs.ext3 -L ROOTFS /dev/mmcblk0p2

Sgoinneil, a-nis faodaidh tu a lìonadh. Airson seo bidh feum agad air a bharrachd debootstrap, goireas airson siostaman faidhle freumh a chruthachadh airson siostaman obrachaidh coltach ri Debian: apt install debootstrap.

Bidh sinn a’ cruinneachadh FS:

  1. Stàlaich an sgaradh a-steach /mnt/ (cleachd puing sreap nas freagarraiche): mount /dev/mmcblk0p2 /mnt
  2. Bidh sinn gu dearbh a’ lìonadh an t-siostam faidhle: debootstrap --foreign --include=qemu-user-static --arch armhf kali-rolling /mnt/ http://http.kali.org/kali. Paramadair --include a’ comharrachadh cuid de phasganan a chuir a-steach a bharrachd, shònraich mi emuladair QEMU a chaidh a thogail gu statach. Leigidh e leat coileanadh chroot ann an àrainneachd ARM. Gheibhear brìgh nan roghainnean a tha air fhàgail ann an man debootstrap. Na dì-chuimhnich nach eil a h-uile bòrd ARM a 'toirt taic don ailtireachd armhf.
  3. Air sgàth an eadar-dhealachadh ann an ailtireachd debootstrap air a dhèanamh ann an dà ìre, tha an dàrna fear air a dhèanamh mar seo: chroot /mnt/ /debootstrap/debootstrap --second-stage
  4. A-nis feumaidh tu a sgioblachadh: chroot /mnt /bin/bash
  5. Bidh sinn a ’lìonadh a-steach /etc/hosts и /etc/hostname targaid FS. Lìon a-steach an aon rud ris an t-susbaint air a’ choimpiutair ionadail agad, dìreach cuimhnich gun cuir thu an t-ainm aoigheachd an àite.
  6. Faodaidh tu a h-uile càil eile a ghnàthachadh. Gu sònraichte, tha mi a 'stàladh locales (iuchraichean tasgaidh), ath-dhealbhaich àiteachan agus sòn ùine (dpkg-reconfigure locales tzdata). Na dìochuimhnich am facal-faire a shuidheachadh leis an àithne passwd.
  7. Suidhich facal-faire airson root sgioba passwd.
  8. Bidh ullachadh na h-ìomhaigh dhomhsa a 'crìochnachadh le lìonadh /etc/fstab taobh a-staigh /mnt/.

Luchdaichidh mi suas a rèir nan tagaichean a chaidh a chruthachadh roimhe, agus mar sin bidh an susbaint mar seo:

LABEL=ROOTFS / mearachdan fèin-ghluasadach = remount-ro 0 1
LABEL=Tha fèin-obrachail BOOT/boot a' suidheachadh 0 0

Mu dheireadh, faodaidh tu an sgaradh bròg a chuir suas, bidh feum againn air airson an kernel: `mount / dev/mmcblk0p1 / mnt/boot/`

Linux a thogail

Gus an kernel (agus an uairsin an bootloader) a thogail air Debian Testing, feumaidh tu seata àbhaisteach de fhaidhlichean cinn Leabharlann GCC, GNU Make agus GNU C a chuir a-steach airson an ailtireachd targaid (dhòmhsa armhf), a bharrachd air cinn-cinn OpenSSL, àireamhair tòcan bc, bison и flex: apt install crossbuild-essential-armhf bison flex libssl-dev bc. Leis gu bheil an luchdaidh bunaiteach a’ coimhead airson an fhaidhle zImage air siostam faidhle an sgaradh boot, tha an t-àm ann an draibhear flash a sgoltadh.

  1. Bheir e ro fhada an kernel a chlònadh, mar sin luchdaichidh mi sìos: wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.xz. Dèanamaid dì-phapadh agus rach chun eòlaire leis na stòran: tar -xf linux-5.9.1.tar.xz && cd linux-5.9.1
  2. Dèan rèiteachadh mus cuir thu ri chèile: make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig. Tha an config suidhichte anns an eòlaire arch/arm/configs/. Mura h-eil gin ann, faodaidh tu feuchainn ri fear deiseil a lorg agus a luchdachadh sìos agus ainm an fhaidhle san eòlaire seo a thoirt seachad mar pharamadair KBUILD_DEFCONFIG. Mar roghainn mu dheireadh, gluais air adhart chun ath phuing sa bhad.
  3. Roghainneil faodaidh tu na roghainnean a tweak: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
  4. Agus tar-chruinnich an ìomhaigh: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
  5. A-nis faodaidh tu am faidhle kernel a chopaigeadh: cp arch/arm/boot/zImage /mnt/boot/
  6. Agus faidhlichean bho DeviceTree (tuairisgeul air a’ bhathar-cruaidh air a’ bhòrd): cp arch/arm/boot/dts/*.dtb /mnt/boot/
  7. Agus stàlaich na modalan a chaidh a chruinneachadh ann an cruth faidhlichean fa leth: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=/mnt/ modules_install

Tha an kernel deiseil. Faodaidh tu a h-uile càil a dhì-mhunntachadh: umount /mnt/boot/ /mnt/

Das U-Boot

Leis gu bheil an bootloader eadar-ghnìomhach, chan eil agad ach deuchainn a dhèanamh air a ghnìomhachd, am bòrd fhèin, inneal stòraidh, agus gu roghnach inneal USB-gu-UART. Is e sin, faodaidh tu an kernel agus an OS a chuir dheth airson nas fhaide air adhart.

Bidh a’ mhòr-chuid de luchd-saothrachaidh a’ tabhann Das U-Boot a chleachdadh airson a’ chiad bhot. Mar as trice bidh làn thaic air a thoirt seachad nam forc fhèin, ach na dìochuimhnich cur ris an abhainn suas. Anns a 'chùis agam, tha am bòrd a' faighinn taic a-steach prìomh loidhnemar sin forc Dhiùlt mi e.

Nach cruinnich sinn an bootloader fhèin:

  1. Bidh sinn a’ clonadh meur seasmhach an stòrais: git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10
  2. Rachamaid chun an eòlaire fhèin: cd u-boot
  3. Ag ullachadh an rèiteachaidh togail: make mx6ull_14x14_evk_defconfig. Chan obraich seo ach ma tha an rèiteachadh ann an Das U-Boot fhèin, air neo feumaidh tu rèiteachadh an neach-dèanamh a lorg agus a chuir ann am freumh an stòr ann am faidhle .config, no cruinnich ann an dòigh sam bith eile a mhol an neach-dèanamh.
  4. Bidh sinn a 'cruinneachadh an ìomhaigh bootloader fhèin le bhith a' cleachdadh crois-chruinneachaidh armhf: make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx

Mar thoradh air an sin gheibh sinn am faidhle u-boot.imx, is e dealbh deiseil a tha seo a ghabhas sgrìobhadh gu draibhear flash. Bidh sinn a’ sgrìobhadh chun chairt SD, a’ leum air a’ chiad 1024 bytes. Carson a thagh mi Targaid u-boot.imx? Carson a chaill mi dìreach 1024 bytes? Seo na tha iad a’ moladh a dhèanamh ann sgrìobhainnean. Airson bùird eile, faodaidh am pròiseas togail dhealbhan agus clàraidh a bhith beagan eadar-dhealaichte.

Air a dhèanamh, faodaidh tu bròg. Feumaidh an bootloader cunntas a thoirt air an dreach aige fhèin, beagan fiosrachaidh mun bhòrd, agus feuchainn ris an ìomhaigh kernel a lorg air a ’phàirt. Mura soirbhich leis, feuchaidh e ri bròg thairis air an lìonra. San fharsaingeachd, tha an toradh gu math mionaideach, gheibh thu am mearachd ma tha duilgheadas ann.

An àite a bhith co-dhùnadh

An robh fios agad nach eil maoil leumadair sgìth? Is e gu litireil an treas sùil, lionsa geir airson mac-samhail!

A’ tòiseachadh GNU/Linux air bòrd ARM bhon toiseach (a’ cleachdadh Kali agus iMX.6 mar eisimpleir)

A’ tòiseachadh GNU/Linux air bòrd ARM bhon toiseach (a’ cleachdadh Kali agus iMX.6 mar eisimpleir)

Source: www.habr.com