GNU/Linux ARM taula batean abiaraztea hutsetik (Kali eta iMX.6 erabiliz adibide gisa)

tl: dr: ARM ordenagailu baterako Kali Linux irudi bat eraikitzen ari naiz, programan debootstrap, linux ΠΈ u-boot.

GNU/Linux ARM taula batean abiaraztea hutsetik (Kali eta iMX.6 erabiliz adibide gisa)

Oso ezaguna ez den plaka bakarreko softwareren bat erosi baduzu, baliteke zure gogoko banaketaren irudirik ez izatearen aurrean. Gutxi gorabehera gauza bera gertatu zen aurreikusitako Flipper One. Ez dago Kali Linux IMX6rako (prestatzen ari naiz), beraz, neuk muntatu behar dut.

Deskargatzeko prozesua nahiko erraza da:

  1. Hardwarea hasieratzen da.
  2. Biltegiratze-gailuko eremu batzuetatik (SD txartela/eMMC/etab) abiarazlea irakurtzen eta exekutatzen da.
  3. Abio-kargatzaileak sistema eragilearen nukleoa bilatzen du eta memoria eremu batean kargatzen du eta exekutatzen du.
  4. Nukleoak gainerako sistema eragilea kargatzen du.

Xehetasun maila hau nahikoa da nire zereginerako, xehetasunak irakur ditzakezu beste artikulu batean. Goian aipatutako "batzuk" eremuak desberdinak dira taula batetik bestera, eta horrek instalazio-zailtasun batzuk sortzen ditu. ARM zerbitzariaren plataformak kargatzen estandarizatu nahian UEFI erabiliz, baina guztion eskura ez dagoen arren, dena bereizita muntatu beharko duzu.

Erro fitxategi sistema eraikitzea

Lehenik eta behin atalak prestatu behar dituzu. Das U-Boot-ek fitxategi-sistema desberdinak onartzen ditu, FAT32 aukeratu dut /boot eta ext3 errorako, hau da Kali-ren ARM-en irudiaren diseinu estandarra. GNU Parted erabiliko dut, baina gauza bera egin dezakezu modu ezagunago batean fdisk. Zuk ere beharko duzu dosfstools ΠΈ e2fsprogs fitxategi sistema bat sortzeko: apt install parted dosfstools e2fsprogs.

SD txartela markatzen dugu:

  1. Markatu SD txartela MBR partizioa erabiltzen duela: parted -s /dev/mmcblk0 mklabel msdos
  2. Sortu atal bat azpian /boot 128 megabyterako: parted -s /dev/mmcblk0 mkpart primary fat32 1MiB 128MiB. Galdutako lehen megabytea markaketa berarentzat eta abiarazterako utzi behar da.
  3. Erroko fitxategi sistema bat sortzen dugu geratzen den edukiera osorako: parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
  4. Bat-batean zure partizio-fitxategiak sortu ez badira edo aldatu ez badira, `partprobe` exekutatu behar duzu, orduan partizio-taula berriro irakurriko da.
  5. Sortu fitxategi-sistema etiketarekin abiarazteko partiziorako BOOT: mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
  6. Sortu erroko fitxategi-sistema etiketa batekin ROOTFS: mkfs.ext3 -L ROOTFS /dev/mmcblk0p2

Bikaina, orain bete dezakezu. Horretarako, gainera, beharko duzu debootstrap, Debian bezalako sistema eragileetarako erro fitxategi-sistemak sortzeko utilitatea: apt install debootstrap.

FS biltzen dugu:

  1. Muntatu partizioa /mnt/ (erabili muntaketa-puntu erosoagoa): mount /dev/mmcblk0p2 /mnt
  2. Egia esan, fitxategi-sistema betetzen dugu: debootstrap --foreign --include=qemu-user-static --arch armhf kali-rolling /mnt/ http://http.kali.org/kali. Parametroa --include Pakete batzuk instalatu behar direla adierazten du, QEMU emuladore estatiko bat zehaztu dut. Burutzeko aukera ematen du chroot ARM ingurunean. Gainerako aukeren esanahia hemen aurki daiteke man debootstrap. Ez ahaztu ARM plaka guztiek ez dutela arkitektura onartzen armhf.
  3. Arkitekturaren ezberdintasuna dela eta debootstrap bi fasetan egiten da, bigarrena honela egiten da: chroot /mnt/ /debootstrap/debootstrap --second-stage
  4. Orain izorratu behar duzu: chroot /mnt /bin/bash
  5. Betetzen dugu /etc/hosts ΠΈ /etc/hostname xede FS. Bete zure tokiko ordenagailuko edukia, gogoratu ostalari-izena ordezkatzeaz.
  6. Beste guztia pertsonaliza dezakezu. Batez ere, instalatzen dut locales (biltegiko gakoak), tokiak eta ordu-eremua birkonfiguratu (dpkg-reconfigure locales tzdata). Ez ahaztu pasahitza ezartzea komandoarekin passwd.
  7. Ezarri pasahitz bat root taldeak passwd.
  8. Niretzako irudiaren prestaketa betetzearekin amaitzen da /etc/fstab barruan /mnt/.

Aurretik sortutako etiketen arabera igoko dut, beraz, edukia honelakoa izango da:

LABEL=ROOTFS/auto errors=remount-ro 0 1
LABEL=BOOT /boot auto lehenetsiak 0 0

Azkenik, abioko partizioa munta dezakezu, nukleorako beharko dugu: `mount /dev/mmcblk0p1 /mnt/boot/`

Linux eraikitzea

Nukleoa (eta ondoren abiarazlea) Debian Testing-en eraikitzeko, helburu arkitekturarako GCC, GNU Make eta GNU C Library goiburuko fitxategien multzo estandar bat instalatu behar duzu (niretzat armhf), baita OpenSSL goiburuak ere, kontsolaren kalkulagailua bc, bison ΠΈ flex: apt install crossbuild-essential-armhf bison flex libssl-dev bc. Kargatzaile lehenetsiak fitxategia bilatzen duenez zImage abioko partizioaren fitxategi-sisteman, flash unitatea zatitzeko garaia da.

  1. Nukleoa klonatzeko denbora gehiegi behar da, beraz, deskargatuko dut: wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.xz. Despaketeatu eta joan gaitezen iturriak dituen direktoriora: tar -xf linux-5.9.1.tar.xz && cd linux-5.9.1
  2. Konfiguratu konpilatu aurretik: make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig. Konfigurazioa direktorioan dago arch/arm/configs/. Ez badago, saia zaitezke prest egindako bat bilatzen eta deskargatzen eta direktorio honetako fitxategiaren izena parametro gisa pasa dezakezu KBUILD_DEFCONFIG. Azken aukera gisa, berehala joan hurrengo puntura.
  3. Aukeran ezarpenak doi ditzakezu: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
  4. Eta gurutzatu irudia: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
  5. Orain nukleoaren fitxategia kopiatu dezakezu: cp arch/arm/boot/zImage /mnt/boot/
  6. Eta DeviceTree-ko fitxategiak (arbeleko hardwarearen deskribapena): cp arch/arm/boot/dts/*.dtb /mnt/boot/
  7. Eta instalatu bildutako moduluak fitxategi bereizi moduan: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=/mnt/ modules_install

Nukleoa prest dago. Dena desmuntatu dezakezu: umount /mnt/boot/ /mnt/

Das U-Boot

Abio-kargatzailea interaktiboa denez, bere funtzionamendua probatzeko behar duzun guztia plaka bera, biltegiratze gailu bat eta, aukeran, USB-to-UART gailu bat da. Hau da, nukleoa eta OS geroago atzera ditzakezu.

Fabrikatzaile gehienek Das U-Boot erabiltzea eskaintzen dute hasierako abiarazterako. Laguntza osoa beren sardexkatan ematen da normalean, baina ez dute ahazten goranzko ekarpena egitea. Nire kasuan, taula onartzen da linea nagusiaBeraz, sardexka Ez ikusi egin nion.

Munta dezagun abiarazlea bera:

  1. Biltegiaren adar egonkorra klonatzen dugu: git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10
  2. Goazen direktoriora bera: cd u-boot
  3. Eraikitzeko konfigurazioa prestatzen: make mx6ull_14x14_evk_defconfig. Honek bakarrik funtzionatzen du konfigurazioa Das U-Boot-en bertan badago, bestela fabrikatzailearen konfigurazioa bilatu eta fitxategi batean biltegiaren erroan jarri beharko duzu. .config, edo muntatu fabrikatzaileak gomendatutako beste edozein modutan.
  4. Abio-kargagailuaren irudia bera muntatzen dugu konpiladore gurutzatua erabiliz armhf: make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx

Ondorioz, fitxategia lortuko dugu u-boot.imx, flash drive batean idatz daitekeen prest egindako irudia da. SD txartelean idazten dugu, lehen 1024 byteak saltatuz. Zergatik aukeratu nuen Target u-boot.imx? Zergatik galdu ditut zehazki 1024 byte? Hauxe da egitea proposatzen dutena dokumentazioa. Beste plaka batzuen kasuan, irudiak eraikitzeko eta grabatzeko prozesua apur bat desberdina izan daiteke.

Eginda, abiarazi dezakezu. Abio-kargatzaileak bere bertsioaren berri eman behar du, arbelari buruzko informazio batzuk eta partizioan nukleoaren irudia bilatzen saiatu behar du. Arrakastarik ez badu, saretik abiarazten saiatuko da. Oro har, irteera nahiko zehatza da, akatsa aurkitu dezakezu arazoren bat izanez gero.

Horren ordez Ondorio baten

Ba al zenekien izurdearen kopeta hezurtsua ez dela? Hirugarren begi bat da literalki, ekolokalizaziorako lente gantz bat!

GNU/Linux ARM taula batean abiaraztea hutsetik (Kali eta iMX.6 erabiliz adibide gisa)

GNU/Linux ARM taula batean abiaraztea hutsetik (Kali eta iMX.6 erabiliz adibide gisa)

Iturria: www.habr.com