Sadržaj:

Pristup udaljenom korijenskom datotečnom sustavu pomoću DB410 kao Ethernet ključa: 6 koraka
Pristup udaljenom korijenskom datotečnom sustavu pomoću DB410 kao Ethernet ključa: 6 koraka

Video: Pristup udaljenom korijenskom datotečnom sustavu pomoću DB410 kao Ethernet ključa: 6 koraka

Video: Pristup udaljenom korijenskom datotečnom sustavu pomoću DB410 kao Ethernet ključa: 6 koraka
Video: 25 открытий в тропических лесах Амазонки, которые никто не может объяснить 2024, Novembar
Anonim
Pristup udaljenom korijenskom datotečnom sustavu pomoću DB410 kao Ethernet ključa
Pristup udaljenom korijenskom datotečnom sustavu pomoću DB410 kao Ethernet ključa

Ciljevi:

  • Instalirajte lanac alata i ponovo kompajlirajte jezgro da biste umetnuli podršku za USB Ethernet CDC Gadget;
  • Ponovo kreirajte boot.img iz Linara za pokretanje USB Ethernet CDC -a;
  • Kreirajte NFS server za hostovanje root datotečnog sistema;
  • IP konfiguracija u DEVICE i HOST.

Korak 1: Zahtjevi

Trebat će vam sljedeće stavke:

  1. DragonBoard ™ 410c (ovdje nazvan DEVICE);
  2. PC koji koristi Ubuntu 16.04.3 ažuriran (ovdje nazvan HOST) sa internetskom vezom i slotom za SD karticu;
  3. Čista instalacija Linaro -developer verzije 431 - Veza: Snimak Linaro Debian v431
  4. HDMI monitor;
  5. USB tastatura;
  6. SD kartica od 8 Gb;
  7. USB kabel, uUSB USB za spajanje UREĐAJA na HOST.

Korak 2: Konfiguriranje hosta za izgradnju jezgre i izgradnje jezgre u HOST -u

Prvo ćemo stvoriti sve direktorije prije nego nastavimo. Dakle:

$ cd ~

$ mkdir db410remoteroot $ cd db410remoteroot $ mkdir lanac alata $ mkdir db410c-moduli

Nažalost, linux kernel koji koristi Linaro (verzija 431) nema podršku za USB Ethernet gadget, zbog toga se Linux kernel mora obnoviti za ovu određenu verziju. Preuzmite Linaro lanac alata za izgradnju i implementaciju linux kernela na Dragonboard410c sa x86 host mašine.

$ wget

$ tar -xf gcc-*-x86_64_aarch64-linux-gnu.tar.xz -C./toolchain --strip-components = 1

Sada instalirajte pakete koji su potrebni za izgradnju kernela:

$ sudo apt update && sudo apt-get install git build-essential abootimg kernel-paket fakeroot libncurses5-dev libssl-dev ccache

Nabavite Linux Kernel izvor Klonirajte Qualcomm odredišni tim Linux spremište:

klon $ git

$ cd jezgro $ git checkout origin/release/qcomlt-4.14 -b my-custom-4.14

Sada postavite varijable okruženja kompilacije:

$ export ARCH = arm64

$ export CROSS_COMPILE = $ (pwd) /../ lanac alata/bin/aarch64-linux-gnu-

U ovom trenutku moramo dodati module na USB Ethernet CDC u kernelu. To sam već radio i to možete dobiti na kraju ovog koraka. Uklonio sam neke itens, ali radi.

Prije kompajliranja, ispravite grešku jezgre u drivers/mmc/host/sdhci-msm.c promjenom strukture u liniji 1150 na:

static const struct sdhci_ops sdhci_msm_ops = {

.reset = sdhci_reset,.set_clock = sdhci_msm_set_clock,.get_min_clock = sdhci_msm_get_min_clock,.get_max_clock = sdhci_msm_get_max_clock,.set_bus_width = sdhci_set_bus_width,.set_uhs_signaling = sdhci_msm_set_uhs_signaling,.voltage_switch = sdhci_msm_voltage_switch, #ifdef CONFIG_MMC_SDHCI_IO_ACCESSORS.write_w = sdhci_msm_write_w, #endif};

Raspakirajte configfile.zip, kopirajte.config datoteku u direktorij jezgre, sastavite jezgru, module i instalirajte module u direktorij:

$ make -j $ (nproc) Image.gz dtbs

$ make -j $ (nproc) moduli $ make modules_install INSTALL_MOD_PATH =../db410c -modules

Referenca: 96Boards Documentation

Korak 3: Obnovite Boot.img u HOST -u

U ovom koraku moramo otvoriti initrd sliku, staviti module ugrađene u sliku, konfigurirati sistem za pokretanje tih modula i obnoviti initrd.img s novom kernel komandnom linijom za daljinsko pokretanje root datotečnog sistema.

Dakle, prvo moramo preuzeti initrd.img sa linaro web stranice:

$ cd..

$ mkdir inird_nfs $ cd initrd_nfs $ wget -O ramdisk.img

Sada, nakon preuzimanja, raspakirajte i raspakirajte initrd:

$ zcat ramdisk.img | cpio -idmv

U ovom direktoriju imamo root datotečni sistem koji kernel koristi pri inicijalizaciji, pa ćemo konfigurirati USB Ethernet CDC module i NFS udaljene parametre kao što su IP servera NFS -a i ethernet (usb) koji su ovdje potrebni.

Sada, konfigurirajmo neke datoteke:

conf/initramfs.conf:

MODULI = većina

BUSYBOX = auto COMPRESS = gzip DEVICE = usb0 NFSROOT = auto RUNSIZE = 10%

Kreirajte direktorij init-premount u skriptama direktorija/

$ mkdir skripte/init-premount

i dodajte datoteke u ove upravo kreirane direktorije:

NARUČI

/scripts/init-premount/usb "$@"

[-e /conf/param.conf] &&. /conf/param.conf

USB

#!/bin/sh

PREREQ = "" prereqs () {echo "$ PREREQ"} slučaj $ 1 u # get preduvjete prereqs) prereqs izlaz 0;; esac modprobe usb_f_ecm modprobe libcomposite modprobe usb_f_rndis modprobe g_ether

Ne zaboravite upotrijebiti chmod u USB datoteci kako bi bila izvršna:

$ chmod +x skripte/init-premount/usb

Sada kopirajte sav direktorij s modulima iz db410c-modules (STEP 2) u lib/modules u initrd:

$ cp -R../db410-modules/lib usr/

Uklonite sve datoteke u lib/modules/4.14.96-xxxx-dirty osim svih datoteka modula.* I te liste datoteka:

kernel/upravljački programi/usb/gadget/legacy/g_ether.ko

kernel/upravljački programi/usb/gadget/legacy/g_mass_storage.ko kernel/drivers/usb/gadget/legacy/g_cdc.ko kernel/drivers/usb/gadget/legacy/g_serial.ko kernel/drivers/usb/gadget/function/usb_f_mass_storage.ko jezgro/upravljački programi/usb/gadget/funkcija/usb_f_acm.ko kernel/upravljački programi/usb/gadget/funkcija/u_ether.ko jezgro/upravljački programi/usb/gadget/funkcija/usb_f_obex.ko kernel/upravljački programi/usb/gadget/funkcija /usb_f_serial.ko kernel/drivers/usb/gadget/function/usb_f_ecm.ko kernel/drivers/usb/gadget/function/usb_f_rndis.ko kernel/drivers/usb/gadget/function/u_serial.ko kernel/drivers/usb/gadget /function/usb_f_fs.ko kernel/drivers/usb/gadget/function/usb_f_ecm_subset.ko kernel/drivers/usb/gadget/libcomposite.ko

Sve te datoteke su svi moduli potrebni za pokretanje USB Ethernet CDC -a.

Na kraju prepakirajte i komprimirajte initrd sliku:

$ find. | cpio -o -H newc | gzip -9>../kernel/initrd_nfs.img

Barem, slika jezgre i DTB datoteka moraju biti upakirane u Android sliku za pokretanje. Takva se slika može generirati pomoću alata za aktivaciju.

Idemo u direktorij jezgre i upotrijebimo naredbu ispod za izradu slike i dodavanje DTB -a u komprimiranu sliku jezgre:

$ cd../kernel

$ cat arch/$ ARCH/boot/Image.gz arch/$ ARCH/boot/dts/qcom/apq8016-sbc.dtb> Image.gz+dtb

I na kraju, generirajte sliku za pokretanje (ovdje se naši rootfovi nalaze na udaljenoj particiji u 10.42.0.1)

abootimg --napravi boot -db410c.img -k Image.gz+dtb -r initrd_nfs.img -c pageize = 2048

-c kerneladdr = 0x80008000 -c ramdiskaddr = 0x81000000 -c cmdline = "root =/dev/nfs nfsroot = 10.42.0.1:/srv/nfs/rootfs ip = 10.42.0.2: 10.42.0.1: 10.42.0.1: 255.255.255.0: db410c: usb0: isključeno rw rootwait konzola = tty0 konzola = ttyMSM0, 115200n8"

Reference:

  • https://access.redhat.com/solutions/24029
  • 96Dokumentacija odbora

Korak 4: Kreiranje korijenskog datotečnog sustava u HOST -u

Sada imamo novu sliku za pokretanje za ažuriranje dragonboard 410c. Ali potreban nam je root datotečni sistem na udaljenom serveru za pokretanje modula, usluga i aplikacija. U ovom koraku izgradit ćemo dijeljeni direktorij na hostu za spremanje svih ovih podataka. Na taj način preuzmimo rootfs datotečni sistem sa linaro web lokacije sa istom verzijom koja se koristi u initrd -u. Dakle, vratite se u jedan direktorij i preuzmite sliku rootfa linaro-developera s verzijom 431.

$ cd..

$ wget

Raspakirajte ovu datoteku

$ unzip dragonboard-410c-sdcard-developer-buster-431.zip

Koristeći ovu datoteku, zapisujmo svu sliku na sdcard za pristup svim particijama i kopiranje rootfs datoteka. Stoga osigurajte sigurnosnu kopiju podataka s USB kartice jer će sve na SD kartici biti izgubljeno.

Da biste pronašli naziv svog SDCard uređaja, uklonite SDCard i pokrenite sljedeću naredbu:

$ lsblk

Spremite u svoj um sva prepoznata imena diskova. Sada umetnite SDCard karticu, pričekajte trenutak i ponovo izvedite naredbu:

$ lsblk

Zabilježite novo prepoznati disk. Ovo će biti vaša SD kartica. Zapamtite svoje ime i promijenite parametar "of =" za naziv vašeg SDCard uređaja i svakako koristite naziv uređaja bez particije, npr.: /dev /mmcblk0

$ sudo dd if = dragonboard-410c-sdcard-developer-buster-431.img od =/dev/XXX bs = 4M oflag = status sinhronizacije = napredak

Napomene:

  • Izvođenje ove naredbe će potrajati neko vrijeme. Budite strpljivi i izbjegavajte ometanje terminala dok se proces ne završi.
  • Kada SD kartica prestane da treperi, uklonite je sa računara domaćina.

Referenca: dokumentacija 96 ploča

Korak 5: Kreiranje NFS servera u HOST -u i kopiranje datoteka

U ovom trenutku imamo sliku za pokretanje koju treba umetnuti u dragonboard 410c i SDCard karticu s rootfs datotečnim sistemom za naše module, usluge i aplikacije. Sljedeći korak je stvaranje udaljenog direktorija za povezivanje USB Ethernet uređaja UREĐAJ sa HOST rootfs datotečnim sistemom. To se može učiniti pomoću paketa iz Ubuntu-a pod nazivom nfs-kernel-server.

Ovaj paket instalira NFS uslugu u Ubuntu što omogućava dijeljenje nekih direktorija za neke uređaje na mreži. Možemo konfigurirati koji će se direktorij koristiti za svaki uređaj pomoću vašeg IP -a.

Dakle, instalirajmo paket i konfigurirajmo ga.

$ sudo apt-get install nfs-kernel-server

NFS usluga automatski se pokreće. Za kontrolu NFS usluga koristite:

$ sudo service nfs-kernel-server restart // za ponovno pokretanje ili koristite 'stop' ili 'start' prema potrebi.

Za provjeru statusa NFS usluge iz naredbenog retka koristite:

$ sudo servis nfs-kernel-server status

nfsd pokrenut // Usluga je gore nfsd ne radi // Usluga je dolje

Sada, kreirajmo top direktorij /srv /nfs, i stvorimo poddirektorij pod tim za svaki potrebni root datotečni sustav montiran na NFS -u. Ovdje uključujemo zajednički root datotečni sistem kako bismo zadržali naš root datotečni sistem:

$ sudo mkdir -p /srv /nfs

$ sudo mkdir -p/srv/nfs/rootfs

Sada, NFS poslužitelj zahtijeva /etc /export da bude ispravno konfiguriran, za kontrolu pristupa svakom direktoriju NFS datotečnog sistema određenim hostovima. U ovom slučaju hostovi se identificiraju prema njihovoj IP adresi. Dakle, za svaki korijenski datotečni sistem koji je kreiran, dodajte liniju za kontrolu izvoza u /etc /export, prilagođavajući vašu lokalnu IP adresu i shemu imenovanja direktorija ako je potrebno. U ovom vodiču uvijek koristimo sljedeće:

/srv/nfs/rootfs 10.42.0.2 (rw, sync, no_root_squash, no_subtree_check)

Ponovo umetnite SDCard karticu, montirajte je i kopirajte sav rootfs datotečni sistem u/srv/nfs/rootfs, ponovo pokrenite NFS uslugu kako biste ažurirali direktorij pomoću novih kopiranih datoteka.

Dodatno, moramo kopirati nove datoteke modula u datotečni sistem rootfs jer smo kernel kompajlirali u koraku 2. Dakle, kopirajte sve direktorije u ~/db410c-modules/u/srv/nfs/rootfs.

$ sudo cp -R ~/db410c -modules/*/srv/nfs/rootfs/

Pobrinite se da NFS servis učini vidljivim ove direktorije. Ili:

$ sudo exportfs -a

Referenca: TFTP/NFS korijenski sistem datoteka

Korak 6: Ažuriranje Dragonboard 410c Boot slike i konfiguriranje mrežnih sučelja

Rano smo poduzeli sve korake za implementaciju udaljenog rootfs datotečnog sistema, sada nam je potrebno ažurirati sliku za pokretanje unutar dragonboard 410c, za to spojite svoj USB kabel na računalo i na dragonboard uUSB konektor. Stoga provjerite je li fastboot postavljen na računaru domaćinu, ako nije instaliran pomoću:

$ sudo apt install fastboot

Sada za ažuriranje slike pokrenite de dragonboard u način brzog pokretanja slijedeći ove korake:

  • Pritisnite i držite tipku Vol (-) na DragonBoard 410c, ovo je dugme S4. DragonBoard ™ 410c i dalje ne bi trebao biti uključen
  • Dok držite tipku Vol (-), uključite DragonBoard 410c tako da ga uključite
  • Nakon što je DragonBoard 410c uključen u napajanje, otpustite dugme Vol (-).
  • Sačekajte oko 20 sekundi.
  • Ploča bi se trebala pokrenuti u načinu brzog pokretanja.

Iz prozora terminala povezanog računara hosta pokrenite sljedeće naredbe:

$ sudo uređaji za brzo pokretanje

Obično će se prikazati kao ispod

de82318 fastboot

U ovom trenutku trebali biste biti povezani s DragonBoard 410c pomoću USB na microUSB kabela. Vaš DragonBoard 410c bi trebao biti pokrenut u fastboot modu i spreman za flešovanje sa odgovarajućim slikama. Ažurirajmo sliku pokretanja s našom slikom pokretanja:

$ sudo fastboot flash boot ~/db410remoteroot/kernel/initrd_nfs.img

I ponovo pokrenite ploču

$ sudo fastboot ponovno pokretanje

Sada će vaš HOST otkriti novo sučelje pod nazivom usb0, ali još nema IP. Dakle, dodajte statički IP u ovo sučelje koristeći:

$ sudo ifconfig usb0 10.42.0.1 maska mreže 255.255.255.0 gore

Ili unesite "Konfiguracija" na HOST -u, u stavku "mreža", postavivši USB Ethernet na statički IP tog sučelja.

Sada ponovo pokrenite dragonboard i provjerite pokretanje sistema, pokušavajući se povezati pomoću ssh:

$ ssh [email protected]

Reference:

  • Dokumentacija 96 ploča
  • HowtoForge - Stavka 6

Preporučuje se: