Sadržaj:
- Korak 1: Zahtjevi
- Korak 2: Konfiguriranje hosta za izgradnju jezgre i izgradnje jezgre u HOST -u
- Korak 3: Obnovite Boot.img u HOST -u
- Korak 4: Kreiranje korijenskog datotečnog sustava u HOST -u
- Korak 5: Kreiranje NFS servera u HOST -u i kopiranje datoteka
- Korak 6: Ažuriranje Dragonboard 410c Boot slike i konfiguriranje mrežnih sučelja
Video: Pristup udaljenom korijenskom datotečnom sustavu pomoću DB410 kao Ethernet ključa: 6 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:07
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:
- DragonBoard ™ 410c (ovdje nazvan DEVICE);
- PC koji koristi Ubuntu 16.04.3 ažuriran (ovdje nazvan HOST) sa internetskom vezom i slotom za SD karticu;
- Čista instalacija Linaro -developer verzije 431 - Veza: Snimak Linaro Debian v431
- HDMI monitor;
- USB tastatura;
- SD kartica od 8 Gb;
- 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:
Pristupite datotečnom sistemu Raspberry Pi kroz Windows: 9 koraka
Pristupite datotečnom sistemu Raspberry Pi putem Windows -a: Jeste li ikada dobili Raspberry Pi i otišli " Moram ga postaviti svaki put s monitorom, mišem i tastaturom! &Quot; Frustracija koju uzrokuje isključivanje/ponovno uključivanje monitora i tastature/miša, samo pristup Raspberry Pi -u je bez premca
Arduino kao ISP -- Nareži šesterokutnu datoteku u AVR -- Osigurač u AVR -u -- Arduino kao programer: 10 koraka
Arduino kao ISP || Nareži šesterokutnu datoteku u AVR || Osigurač u AVR -u || Arduino kao programer: ……………………… Pretplatite se na moj YouTube kanal za više video zapisa …….. Ovaj članak radi se o arduinu kao isp. Ako želite učitati heksadecimalnu datoteku ili želite postaviti osigurač u AVR, onda ne morate kupiti programer, možete učiniti
ESP - Obavještač o udaljenom ambijentu: 8 koraka
ESP-Remote Ambiance Notifier: Prototip je zasnovan na popularnom IOT čipu ESP8266.ESP8266Ovo je jeftin Wi-Fi mikročip sa punim TCP/IP stekom i mogućnostima mikrokontrolera kineskog proizvođača iz Šangaja, Espressif Systems. Procesor: L106 32-bitni RISC
Kako koristiti Wiimote kao računalni miš koristeći svijeće kao senzor !!: 3 koraka
Kako koristiti Wiimote kao računalni miš koristeći svijeće kao senzor !!: Ovaj vodič će vam pokazati kako povezati Wii daljinski upravljač (Wiimote) sa računarom i koristiti ga kao miš
Jeftino (kao u besplatnom [kao u pivu]) postolje sa više metara: 4 koraka
Jeftino (kao u besplatnom [kao i u pivu]) postolje sa više metara: Bio sam iznerviran što moram da iskrivim vrat ili nesigurno izbalansiram svoj jeftini višemetar od 4 USD negdje gdje zaista mogu PROČITATI ekran. Odlučio sam uzeti stvari u svoje ruke! Ovo je ujedno i moja prva 'strukturirana', pa ako neko ima korisne komentare