Cychwyn GNU/Linux ar fwrdd ARM o'r dechrau (gan ddefnyddio Kali ac iMX.6 fel enghraifft)

tl; dr: Rwy'n adeiladu delwedd Kali Linux ar gyfer cyfrifiadur ARM, yn y rhaglen debootstrap, linux и u-boot.

Cychwyn GNU/Linux ar fwrdd ARM o'r dechrau (gan ddefnyddio Kali ac iMX.6 fel enghraifft)

Os prynoch chi rai meddalwedd un bwrdd nad yw'n boblogaidd iawn, efallai y byddwch chi'n wynebu diffyg delwedd o'ch hoff ddosbarthiad ar ei gyfer. Digwyddodd tua'r un peth gyda cynlluniedig Flipper Un. Yn syml, nid oes Kali Linux ar gyfer IMX6 (dwi'n paratoi), felly mae'n rhaid i mi ei ymgynnull fy hun.

Mae'r broses lawrlwytho yn eithaf syml:

  1. Mae'r caledwedd yn cael ei gychwyn.
  2. O ryw ardal ar y ddyfais storio (cerdyn SD / eMMC / ac ati) mae'r cychwynnwr yn cael ei ddarllen a'i weithredu.
  3. Mae'r cychwynnwr yn edrych am gnewyllyn y system weithredu ac yn ei lwytho i ryw ardal cof a'i weithredu.
  4. Mae'r cnewyllyn yn llwytho gweddill yr OS.

Mae'r lefel hon o fanylder yn ddigon ar gyfer fy nhasg, gallwch ddarllen y manylion mewn erthygl arall. Mae'r ardaloedd “rhai” a grybwyllir uchod yn amrywio o fwrdd i fwrdd, sy'n creu rhai anawsterau gosod. Llwytho llwyfannau gweinydd ARM ceisio safoni gan ddefnyddio UEFI, ond er nad yw hyn ar gael i bawb, bydd yn rhaid i chi gydosod popeth ar wahân.

Adeiladu'r system ffeiliau gwraidd

Yn gyntaf mae angen i chi baratoi'r adrannau. Mae Das U-Boot yn cefnogi systemau ffeil gwahanol, dewisais FAT32 ar gyfer /boot ac ext3 ar gyfer gwraidd, dyma'r cynllun delwedd safonol ar gyfer Kali ar ARM. Byddaf yn defnyddio GNU Parted, ond gallwch chi wneud yr un peth mewn ffordd fwy cyfarwydd fdisk. Bydd angen i chi hefyd dosfstools и e2fsprogs i greu system ffeiliau: apt install parted dosfstools e2fsprogs.

Rydym yn marcio'r cerdyn SD:

  1. Marciwch y cerdyn SD fel un sy'n defnyddio rhaniad MBR: parted -s /dev/mmcblk0 mklabel msdos
  2. Creu adran o dan /boot am 128 megabeit: parted -s /dev/mmcblk0 mkpart primary fat32 1MiB 128MiB. Rhaid gadael y megabeit cyntaf a gollwyd ar gyfer y marcio ei hun ac ar gyfer y cychwynnydd.
  3. Rydym yn creu system ffeiliau gwraidd ar gyfer yr holl gapasiti sy'n weddill: parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
  4. Os yn sydyn nad yw'ch ffeiliau rhaniad wedi'u creu neu heb eu newid, mae angen i chi redeg `partprobe`, yna bydd y tabl rhaniad yn cael ei ail-ddarllen.
  5. Creu system ffeiliau ar gyfer y rhaniad cychwyn gyda'r label BOOT: mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
  6. Creu system ffeiliau gwraidd gyda label ROOTFS: mkfs.ext3 -L ROOTFS /dev/mmcblk0p2

Gwych, nawr gallwch chi ei lenwi. Ar gyfer hyn bydd angen i chi hefyd debootstrap, cyfleustodau ar gyfer creu systemau ffeiliau gwraidd ar gyfer systemau gweithredu tebyg i Debian: apt install debootstrap.

Rydym yn casglu FS:

  1. Gosodwch y rhaniad i mewn /mnt/ (defnyddiwch bwynt gosod mwy cyfleus): mount /dev/mmcblk0p2 /mnt
  2. Rydyn ni'n llenwi'r system ffeiliau mewn gwirionedd: debootstrap --foreign --include=qemu-user-static --arch armhf kali-rolling /mnt/ http://http.kali.org/kali. Paramedr --include yn nodi gosod rhai pecynnau hefyd, nodais efelychydd QEMU a adeiladwyd yn statig. Mae'n caniatáu ichi berfformio chroot yn yr amgylchedd ARM. Gellir dod o hyd i ystyr yr opsiynau sy'n weddill yn man debootstrap. Peidiwch ag anghofio nad yw pob bwrdd ARM yn cefnogi'r bensaernïaeth armhf.
  3. Oherwydd y gwahaniaeth mewn pensaernïaeth debootstrap yn cael ei berfformio mewn dau gam, mae'r ail yn cael ei berfformio fel hyn: chroot /mnt/ /debootstrap/debootstrap --second-stage
  4. Nawr mae angen i chi ei sgriwio i fyny: chroot /mnt /bin/bash
  5. Rydyn ni'n llenwi /etc/hosts и /etc/hostname targed FS. Llenwch yr un peth â'r cynnwys ar eich cyfrifiadur lleol, cofiwch ddisodli'r enw gwesteiwr.
  6. Gallwch chi addasu popeth arall. Yn benodol, rwy'n gosod locales (allweddi cadwrfa), ail-ffurfweddu locales a pharth amser (dpkg-reconfigure locales tzdata). Peidiwch ag anghofio gosod y cyfrinair gyda'r gorchymyn passwd.
  7. Gosod cyfrinair ar gyfer root tîm passwd.
  8. Mae paratoi'r ddelwedd i mi yn gorffen gyda llenwi /etc/fstab y tu mewn /mnt/.

Byddaf yn uwchlwytho yn unol â'r tagiau a grëwyd yn flaenorol, felly bydd y cynnwys fel hyn:

LABEL=ROOTFS / gwallau auto=remount-ro 0 1
Mae LABEL=BOOT /boot auto yn rhagosodedig 0 0

Yn olaf, gallwch chi osod y rhaniad cychwyn, bydd ei angen arnom ar gyfer y cnewyllyn: `mount /dev/mmcblk0p1 /mnt/boot/`

Adeiladu Linux

I adeiladu'r cnewyllyn (ac yna'r cychwynnydd) ar Debian Testing, mae angen i chi osod set safonol o ffeiliau pennawd Llyfrgell GCC, GNU Make a GNU C ar gyfer y bensaernïaeth darged (i mi armhf), yn ogystal â phenawdau OpenSSL, cyfrifiannell consol bc, bison и flex: apt install crossbuild-essential-armhf bison flex libssl-dev bc. Gan fod y llwythwr rhagosodedig yn chwilio am y ffeil zImage ar system ffeiliau'r rhaniad cychwyn, mae'n bryd rhannu'r gyriant fflach.

  1. Mae'n cymryd gormod o amser i glonio'r cnewyllyn, felly byddaf yn lawrlwytho: wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.xz. Gadewch i ni ddadbacio a mynd i'r cyfeiriadur ffynhonnell: tar -xf linux-5.9.1.tar.xz && cd linux-5.9.1
  2. Ffurfweddu cyn llunio: make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig. Mae'r ffurfwedd wedi'i lleoli yn y cyfeiriadur arch/arm/configs/. Os nad oes un, gallwch geisio dod o hyd i un parod a'i lawrlwytho a phasio enw'r ffeil yn y cyfeiriadur hwn fel paramedr KBUILD_DEFCONFIG. Fel dewis olaf, symudwch ymlaen ar unwaith i'r pwynt nesaf.
  3. Yn ddewisol gallwch chi newid y gosodiadau: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
  4. A chroes-grynhoi'r ddelwedd: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
  5. Nawr gallwch chi gopïo'r ffeil cnewyllyn: cp arch/arm/boot/zImage /mnt/boot/
  6. A ffeiliau o DeviceTree (disgrifiad o'r caledwedd ar y bwrdd): cp arch/arm/boot/dts/*.dtb /mnt/boot/
  7. A gosodwch y modiwlau a gasglwyd ar ffurf ffeiliau ar wahân: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=/mnt/ modules_install

Mae'r cnewyllyn yn barod. Gallwch ddadosod popeth: umount /mnt/boot/ /mnt/

Das U-Boot

Gan fod y cychwynnwr yn rhyngweithiol, y cyfan sydd ei angen arnoch i brofi ei weithrediad yw'r bwrdd ei hun, dyfais storio, ac yn ddewisol dyfais USB-i-UART. Hynny yw, gallwch chi ohirio'r cnewyllyn a'r OS yn ddiweddarach.

Mae mwyafrif helaeth y gwneuthurwyr yn cynnig defnyddio Das U-Boot ar gyfer y cychwyn cyntaf. Darperir cefnogaeth lawn fel arfer yn eu fforc eu hunain, ond nid ydynt yn anghofio cyfrannu at yr afon i fyny'r afon. Yn fy achos i, cefnogir y bwrdd yn prif linellfelly fforch Fe wnes i ei anwybyddu.

Gadewch i ni ymgynnull y cychwynnwr ei hun:

  1. Rydym yn clonio cangen sefydlog yr ystorfa: git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10
  2. Awn i'r cyfeiriadur ei hun: cd u-boot
  3. Paratoi'r cyfluniad adeiladu: make mx6ull_14x14_evk_defconfig. Mae hyn ond yn gweithio os yw'r ffurfweddiad yn Das U-Boot ei hun, fel arall bydd angen i chi ddod o hyd i ffurfwedd y gwneuthurwr a'i roi yng ngwraidd yr ystorfa mewn ffeil .config, neu ymgynnull mewn unrhyw fodd arall a argymhellir gan y gwneuthurwr.
  4. Rydyn ni'n cydosod delwedd y cychwynnwr ei hun gan ddefnyddio traws-grynhoydd armhf: make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx

O ganlyniad rydym yn cael y ffeil u-boot.imx, mae hwn yn ddelwedd parod y gellir ei ysgrifennu i yriant fflach. Rydyn ni'n ysgrifennu at y cerdyn SD, gan hepgor y 1024 bytes cyntaf. Pam dewisais i Target u-boot.imx? Pam wnes i fethu union 1024 beit? Dyma beth maen nhw'n bwriadu ei wneud yn dogfennaeth. Ar gyfer byrddau eraill, gall y broses adeiladu a chofnodi delweddau fod ychydig yn wahanol.

Wedi'i wneud, gallwch chi gychwyn. Rhaid i'r cychwynnwr adrodd ar ei fersiwn ei hun, rhywfaint o wybodaeth am y bwrdd, a cheisio dod o hyd i'r ddelwedd cnewyllyn ar y rhaniad. Os yw'n aflwyddiannus, bydd yn ceisio cychwyn dros y rhwydwaith. Yn gyffredinol, mae'r allbwn yn eithaf manwl, gallwch ddod o hyd i'r gwall os oes problem.

Yn hytrach na i gasgliad

Oeddech chi'n gwybod nad yw talcen dolffin yn esgyrnog? Mae'n llythrennol trydydd llygad, lens brasterog ar gyfer ecoleoli!

Cychwyn GNU/Linux ar fwrdd ARM o'r dechrau (gan ddefnyddio Kali ac iMX.6 fel enghraifft)

Cychwyn GNU/Linux ar fwrdd ARM o'r dechrau (gan ddefnyddio Kali ac iMX.6 fel enghraifft)

Ffynhonnell: hab.com