Destpêkirina GNU/Linux li ser panelek ARM ji nû ve (bikaranîna Kali û iMX.6 wekî mînak)

tl; dr: Ez wêneyek Kali Linux ji bo komputerek ARM, di bernameyê de çêdikim debootstrap, linux и u-boot.

Destpêkirina GNU/Linux li ser panelek ARM ji nû ve (bikaranîna Kali û iMX.6 wekî mînak)

Ger we hin nermalava yek-boardê ya ne pir populer kirî, dibe ku hûn ji bo wê bi nebûna wêneyek belavkirina xweya bijare re rû bi rû bimînin. Nêzîkî heman tişt pê re çêbû plankirî Flipper One. Ji bo IMX6 tenê Kali Linux tune (Ez amade dikim), ji ber vê yekê divê ez bi xwe bicivînim.

Pêvajoya dakêşanê pir hêsan e:

  1. The hardware dest pê kirin.
  2. Ji hin devera li ser cîhaza hilanînê (qerta SD / eMMC / hwd) bootloader tê xwendin û darvekirin.
  3. Bootloader li kernelê pergala xebitandinê digere û wê li hin devera bîranînê bar dike û dimeşîne.
  4. Kernel OS-ya mayî bar dike.

Ev asta hûrgulî ji bo karê min bes e, hûn dikarin hûrguliyan bixwînin di gotarek din de. Deverên "hin" ên ku li jor hatine destnîşan kirin ji panelê heya panelê cûda dibin, ku hin zehmetiyên sazkirinê diafirîne. Barkirina platformên servera ARM hewl didin ku standard bikin UEFI bikar bînin, lê her çend ev ji her kesî re ne berdest e, hûn neçar in ku her tiştî ji hev cuda bicivînin.

Avakirina pergala pelê root

Pêşî hûn hewce ne ku beşan amade bikin. Das U-Boot pergalên pelan ên cihêreng piştgirî dike, min ji bo FAT32 hilbijart /boot û ext3 ji bo root, ev nexşeya wêneya standard ji bo Kali li ser ARM ye. Ez ê GNU Parted bikar bînim, lê hûn dikarin bi awayek nastir heman tiştî bikin fdisk. Hûn jî hewce ne dosfstools и e2fsprogs ji bo afirandina pergala pelan: apt install parted dosfstools e2fsprogs.

Em qerta SD destnîşan dikin:

  1. Karta SD wekî dabeşkirina MBR bikar tîne nîşan bikin: parted -s /dev/mmcblk0 mklabel msdos
  2. Di bin de beşek çêbikin /boot ji bo 128 megabytes: parted -s /dev/mmcblk0 mkpart primary fat32 1MiB 128MiB. Megabyteya yekem a windakirî divê ji bo nîşankirinê bixwe û ji bo bootloader were hiştin.
  3. Em ji bo tevahiya kapasîteya mayî pergalek pelê root diafirînin: parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
  4. Ger ji nişka ve pelên dabeşkirina we nehatibin çêkirin an nehatine guhertin, hûn hewce ne ku `partprobe` bimeşînin, wê hingê tabloya dabeşkirinê dê ji nû ve were xwendin.
  5. Bi labelê re ji bo dabeşkirina bootê pergala pelan biafirînin BOOT: mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
  6. Pergalek pelê ya root bi labelek çêbikin ROOTFS: mkfs.ext3 -L ROOTFS /dev/mmcblk0p2

Baş e, naha hûn dikarin wê tijî bikin. Ji bo vê yekê hûn ê bêtir hewce ne debootstrap, amûrek ji bo afirandina pergalên pelên root ên ji bo pergalên xebitandinê yên mîna Debian: apt install debootstrap.

Em FS berhev dikin:

  1. Dabeşkirinê tê de bixin /mnt/ (Xalek mountek hêsantir bikar bînin): mount /dev/mmcblk0p2 /mnt
  2. Em bi rastî pergala pelan dagirtin: debootstrap --foreign --include=qemu-user-static --arch armhf kali-rolling /mnt/ http://http.kali.org/kali. Parametre --include destnîşan dike ku hin pakêtan jî saz bikin, min emulatorek QEMU ya statîk çêkirî destnîşan kir. Ew destûrê dide we ku hûn pêk bînin chroot di hawîrdora ARM de. Wateya vebijarkên mayî di nav de tê dîtin man debootstrap. Ji bîr nekin ku ne her panela ARM mîmariyê piştgirî dike armhf.
  3. Ji ber cudahiya mîmariyê debootstrap di du qonaxan de pêk tê, ya duyemîn bi vî rengî tê kirin: chroot /mnt/ /debootstrap/debootstrap --second-stage
  4. Naha hûn hewce ne ku wê qul bikin: chroot /mnt /bin/bash
  5. Lenet ji te /etc/hosts и /etc/hostname hedef FS. Heman naveroka li ser komputera xweya herêmî dagirin, tenê ji bîr mekin ku navê mêvandar biguhezînin.
  6. Hûn dikarin her tiştê din xweş bikin. Bi taybetî, ez saz dikim locales (bişkojkên depoyê), cih û devera demjimêr ji nû ve mîheng bikin (dpkg-reconfigure locales tzdata). Ji bîr nekin ku şîfreya bi fermanê saz bikin passwd.
  7. Ji bo şîfreyek saz bikin root kom passwd.
  8. Amadekirina wêneyê ji bo min bi dagirtinê diqede /etc/fstab hundur /mnt/.

Ez ê li gorî etîketên ku berê hatine afirandin bar bikim, ji ber vê yekê naverok dê wiha be:

LABEL = ROOTFS / xeletiyên otomatîk = veavakirina-ro 0 1
LABEL=BOOT /boot oto default 0 0

Di dawiyê de, hûn dikarin dabeşkirina bootê siwar bikin, em ê ji bo kernelê jê re hewce bikin: `mount /dev/mmcblk0p1 /mnt/boot/`

Avakirina Linux

Ji bo avakirina kernel (û dûv re jî bootloader) li ser Testkirina Debian, hûn hewce ne ku komek standard a pelên sernavê GCC, GNU Make û Pirtûkxaneya GNU C ji bo mîmariya armanc saz bikin (ji bo min armhf), û her weha sernavên OpenSSL, hesabkerê konsolê bc, bison и flex: apt install crossbuild-essential-armhf bison flex libssl-dev bc. Ji ber ku barkera xwerû li pelê digere zImage li ser pergala pelê ya dabeşkirina bootê, wextê dabeşkirina ajokera flashê ye.

  1. Ji bo klonkirina kernelê pir dirêj digire, ji ber vê yekê ez ê tenê dakêşim: wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.xz. Ka em pak bikin û biçin pelrêça çavkanî: tar -xf linux-5.9.1.tar.xz && cd linux-5.9.1
  2. Berî berhevkirinê mîheng bikin: make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig. Vesazkirin di pelrêçê de ye arch/arm/configs/. Heke tune be, hûn dikarin biceribînin ku yekî amade bibînin û dakêşin û navê pelê di vê pelrêçê de wekî parametre derbas bikin. KBUILD_DEFCONFIG. Wekî çareya paşîn, tavilê derbasî xala din bibin.
  3. Vebijarkî hûn dikarin mîhengan biguhezînin: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
  4. Û wêneyê bi hev re berhev bikin: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
  5. Naha hûn dikarin pelê kernel kopî bikin: cp arch/arm/boot/zImage /mnt/boot/
  6. Û pelên ji DeviceTree (danasîna hardware li ser panelê): cp arch/arm/boot/dts/*.dtb /mnt/boot/
  7. Û modulên ku di forma pelên cûda de hatine berhev kirin saz bikin: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=/mnt/ modules_install

Kernel amade ye. Hûn dikarin her tiştî rakin: umount /mnt/boot/ /mnt/

Das U-Boot

Ji ber ku bootloader înteraktîf e, ya ku hûn hewce ne ku hûn xebata wê biceribînin panel bixwe ye, amûrek hilanînê, û vebijarkî amûrek USB-to-UART e. Ango, hûn dikarin kernel û OS-ê ji bo paşê paşde bixin.

Piraniya hilberîneran pêşniyar dikin ku ji bo boota destpêkê Das U-Boot bikar bînin. Piştgiriya bêkêmasî bi gelemperî di qulika wan de tê peyda kirin, lê ew ji bîr nakin ku beşdarî jor de bibin. Di doza min de, panel tê piştgirî kirin serekeJi ber vê yekê milêv Min guh neda.

Ka em bixwe bootloader kom bikin:

  1. Em şaxê stabîl a depoyê klon dikin: git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10
  2. Ka em biçin pelrêça bixwe: cd u-boot
  3. Amadekirina veavakirina avakirinê: make mx6ull_14x14_evk_defconfig. Ev tenê kar dike heke veavakirin di Das U-Boot bixwe de be, wekî din hûn ê hewce bikin ku konfigurasyona çêkerê bibînin û wê têxin nav koka depoyê di pelê de. .config, an bi rengek din ku ji hêla çêker ve hatî pêşniyar kirin bicivînin.
  4. Em wêneya bootloader bixwe bi karanîna xaç-berhevkar kom dikin armhf: make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx

Di encamê de em pelê digirin u-boot.imx, ev wêneyek amade ye ku dikare li ajokerek flashê were nivîsandin. Em ji qerta SD-ê re dinivîsin, 1024 baytên pêşîn diavêjin. Çima min Target hilbijart u-boot.imx? Çima min tam 1024 bytes winda kir? Ya ku ew pêşniyar dikin ku bikin ev e belgekirin. Ji bo panelên din, dibe ku pêvajoya avakirina wêne û tomarkirinê hinekî cûda be.

Kirin, hûn dikarin boot bikin. Pêdivî ye ku bootloader guhertoya xwe, hin agahdariya li ser panelê ragihîne, û hewl bide ku wêneya kernelê li ser dabeşkirinê bibîne. Heke neserketî be, ew ê hewl bide ku li ser torê boot bike. Bi gelemperî, encam pir berfireh e, heke pirsgirêkek hebe hûn dikarin xeletiyê bibînin.

Şûna encamê

We dizanibû ku eniya delfînê ne hestî ye? Ew bi rastî çavê sêyem e, lensek rûn e ji bo ekolokasyonê!

Destpêkirina GNU/Linux li ser panelek ARM ji nû ve (bikaranîna Kali û iMX.6 wekî mînak)

Destpêkirina GNU/Linux li ser panelek ARM ji nû ve (bikaranîna Kali û iMX.6 wekî mînak)

Source: www.habr.com