Kazalo:

Dostop do oddaljenega korenskega datotečnega sistema z uporabo DB410 kot ethernetnega ključa: 6 korakov
Dostop do oddaljenega korenskega datotečnega sistema z uporabo DB410 kot ethernetnega ključa: 6 korakov

Video: Dostop do oddaljenega korenskega datotečnega sistema z uporabo DB410 kot ethernetnega ključa: 6 korakov

Video: Dostop do oddaljenega korenskega datotečnega sistema z uporabo DB410 kot ethernetnega ključa: 6 korakov
Video: Основы горизонтально масштабируемых вычислений Джеймса Каффа 2024, December
Anonim
Dostop do oddaljenega korenskega datotečnega sistema z uporabo DB410 kot ethernetnega ključa
Dostop do oddaljenega korenskega datotečnega sistema z uporabo DB410 kot ethernetnega ključa

Cilji:

  • Namestite verigo orodij in znova sestavite jedro, da vstavite podporo za pripomočke CDC USB Ethernet CDC;
  • Ponovno ustvarite boot.img iz Linara za zagon USB Ethernet CDC;
  • Ustvarite strežnik NFS za gostovanje korenskega datotečnega sistema;
  • Konfiguracija IP v DEVICE in HOST.

1. korak: Zahteve

Potrebovali boste naslednje elemente:

  1. DragonBoard ™ 410c (tukaj imenovan DEVICE);
  2. Računalnik, ki uporablja Ubuntu 16.04.3, posodobljen (imenovan tukaj HOST) z internetno povezavo in režo za kartico SDCard;
  3. Čista namestitev različice 431 za razvijalce Linaro - Povezava: Posnetek Linaro Debian v431
  4. Monitor HDMI;
  5. USB tipkovnica;
  6. SD kartica 8 Gb;
  7. Kabel USB, uUSB USB za priključitev NAPRAVE na HOST.

2. korak: Konfiguriranje gostitelja za izdelavo jedra in gradnjo jedra v gostitelju

Najprej bomo ustvarili vse imenike, preden bomo nadaljevali. Torej:

$ cd ~

$ mkdir db410remoteroot $ cd db410remoteroot $ mkdir veriga orodij $ mkdir db410c-moduli

Na žalost jedro Linuxa, ki ga uporablja Linaro (različica 431), nima podpore za pripomoček USB Ethernet, zato je treba jedro Linuxa za to različico obnoviti. Prenesite Linaro toolchain za izdelavo in uvajanje jedra Linuxa na Dragonboard410c z gostiteljskega stroja x86.

$ wget

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

Zdaj namestite pakete, ki so potrebni za izdelavo jedra:

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

Pridobite vir jedra Linuxa Clone Qualcomm ciljno skupino za Linux:

klon $ git

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

Zdaj nastavite spremenljivke okolja kompilacije:

$ izvoz ARCH = arm64

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

Na tej točki moramo module dodati v jedro USB Ethernet CDC. To sem že počel in to lahko dobite na koncu tega koraka. Odstranil sem nekaj itens, vendar deluje.

Pred prevajanjem popravite napako jedra v drivers/mmc/host/sdhci-msm.c in spremenite strukturo v vrstici 1150 na:

statična konstrukcija const 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};

Razpakirajte configfile.zip, kopirajte datoteko.config v imenik jedra, sestavite jedro, module in namestite module v imenik:

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

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

Referenca: 96Boards Documentation

3. korak: Ponovno zgradite Boot.img v HOST

V tem koraku moramo odpreti sliko initrd, vstaviti v sliko vgrajene module, konfigurirati sistem za zagon teh modulov in obnoviti initrd.img z novo ukazno vrstico jedra za daljinski zagon korenskega datotečnega sistema.

Torej, najprej moramo prenesti initrd.img s spletnega mesta linaro:

$ cd..

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

Po prenosu raztegnite in izvlecite initrd:

$ zcat ramdisk.img | cpio -idmv

V tem imeniku imamo korenski datotečni sistem, ki ga jedro uporablja pri inicializaciji, zato bomo konfigurirali module USB Ethernet CDC in oddaljene parametre NFS, kot sta IP strežnika NFS in ethernet (usb), ki sta tukaj potrebna.

Zdaj pa nastavimo nekaj datotek:

conf/initramfs.conf:

MODULI = večina

BUSYBOX = samodejno KOMPRESIRANJE = gzip DEVICE = usb0 NFSROOT = samodejno RUNSIZE = 10%

Ustvarite imenik init-premiount v imeniških skriptah/

$ mkdir skripte/init-premiount

in dodajte datoteke v pravkar ustvarjeni imenik:

NAROČI

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

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

usb

#!/bin/sh

PREREQ = "" prereqs () {echo "$ PREREQ"} primer $ 1 v # dobite predpogoje prereqs) prereqs izhod 0;; esac modprobe usb_f_ecm modprobe libcomposite modprobe usb_f_rndis modprobe g_ether

Ne pozabite uporabiti chmod v usb datoteki, da bo izvedljiva:

$ chmod +x skripti/init-premount/usb

Zdaj kopirajte ves imenik z moduli iz modulov db410c (STEP 2) v lib/modules v initrd:

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

Odstranite vse datoteke v lib/modules/4.14.96-xxxx-umazano, razen vseh datotek.* In tega seznama datotek:

kernel/drivers/usb/gadget/legacy/g_ether.ko

kernel/drivers/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 jedro/gonilniki/usb/pripomoček/funkcija/usb_f_acm.ko jedro/gonilniki/usb/pripomoček/funkcija/u_ether.ko jedro/gonilniki/usb/pripomoček/funkcija/usb_f_obex.ko jedro/gonilniki/usb/pripomoček/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 jedro/drivers/usb/gadget/function/usb_f_ecm_subset.ko kernel/drivers/usb/gadget/libcomposite.ko

Vse te datoteke so vsi moduli, potrebni za zagon USB Ethernet CDC.

Končno prepakirajte in stisnite sliko initrd:

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

Vsaj sliko jedra in datoteko DTB je treba zapakirati v zagonsko sliko Android. Takšno sliko lahko ustvarite z orodjem abootimg.

Vstopimo v imenik jedra in s spodnjim ukazom sestavimo sliko in dodamo DTB v stisnjeno sliko jedra:

$ cd../jedro

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

In končno, ustvarite zagonsko sliko (tukaj je naš rootfs oddaljena particija v 10.42.0.1)

abootimg -ustvari 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: off rw rootwait console = tty0 console = ttyMSM0, 115200n8"

Reference:

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

4. korak: Ustvarjanje korenskega datotečnega sistema v HOSTU

Zdaj imamo novo zagonsko sliko za posodobitev dragonboard 410c. Za zagon modulov, storitev in aplikacij potrebujemo korenski datotečni sistem na oddaljenem strežniku. V tem koraku bomo v gostitelju zgradili imenik v skupni rabi, da shranimo vse te podatke. Na ta način prenesite datotečni sistem rootfs s spletnega mesta linaro z isto različico, ki je bila uporabljena v initrd. Torej, pojdite nazaj v en imenik in prenesite podobo rootfs linaro-developer z različico 431.

$ cd..

$ wget

Razpakirajte to datoteko

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

S to datoteko zapišemo vso sliko na kartico sdcard za dostop do vseh particij in kopiranje datotek rootfs. Zato poskrbite za varnostno kopijo podatkov iz kartice usDCard, ker bo vse na kartici SD izgubljeno.

Če želite poiskati ime naprave SDCard, odstranite kartico SDC in zaženite naslednji ukaz:

$ lsblk

Shranite v mislih vsa priznana imena diskov. Zdaj vstavite kartico SDC, počakajte trenutek in znova izvedite ukaz:

$ lsblk

Bodite pozorni na novo prepoznani disk. To bo vaša kartica SD. Zapomnite si svoje ime in spremenite parameter "of =" za ime naprave SDCard in ime naprave uporabite brez particije, npr.: /dev /mmcblk0

$ sudo dd if = dragonboard-410c-sdcard-developer-buster-431.img of =/dev/XXX bs = 4M oflag = stanje sinhronizacije = napredek

Opombe:

  • Ta ukaz bo trajal nekaj časa. Bodite potrpežljivi in se izogibajte poseganju v terminal, dokler se postopek ne konča.
  • Ko kartica SD utripa, jo odstranite iz gostiteljskega računalnika.

Referenca: dokumentacija 96 plošč

5. korak: Ustvarjanje strežnika NFS v HOSTU in kopiranje datotek

Na tej točki imamo zagonsko sliko, ki jo lahko vstavimo v dragonboard 410c in kartico SDC z datotečnim sistemom rootfs za naše module, storitve in aplikacije. Naslednji korak je ustvarjanje oddaljenega imenika za povezovanje vmesnika USB Ethernet DEVICE z datotečnim sistemom HOST rootfs. To lahko storite s paketom iz Ubuntuja z imenom nfs-kernel-server.

Ta paket namesti storitev NFS v Ubuntu, ki omogoča skupno rabo nekaterih imenikov za nekatere naprave v omrežju. Z vašim IP -jem lahko nastavimo, kateri imenik bo uporabljen za vsako napravo.

Torej, namestimo paket in ga konfiguriramo.

$ sudo apt-get namestite nfs-kernel-server

Storitev NFS se samodejno zažene. Za nadzor storitev NFS uporabite:

$ sudo storitev nfs-kernel-server restart // za ponovni zagon ali po potrebi uporabite 'stop' ali 'start'.

Za preverjanje stanja storitve NFS iz ukazne vrstice uporabite:

Stanje storitve $ sudo nfs-kernel-server

nfsd teče // Storitev je gor nfsd se ne izvaja // Storitev ni delovala

Zdaj pa ustvarimo top imenik /srv /nfs in pod njim ustvarimo podimenik za vsak zahtevani korenski datotečni sistem NFS. Tukaj vključujemo korenski datotečni sistem v skupni rabi, da ohranimo naš korenski datotečni sistem:

$ sudo mkdir -p /srv /nfs

$ sudo mkdir -p/srv/nfs/rootfs

Zdaj strežnik NFS zahteva, da je /etc /export pravilno konfiguriran za nadzor dostopa do vsakega imenika datotečnega sistema NFS do določenih gostiteljev. V tem primeru so gostitelji identificirani po naslovu IP. Zato za vsak ustvarjeni korenski datotečni sistem dodajte kontrolno vrstico za izvoz v /etc /export in po potrebi prilagodite svoj lokalni naslov IP in shemo poimenovanja imenikov. V tej vadnici vedno uporabljamo:

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

Znova vstavite kartico SDC, jo namestite in kopirajte ves datotečni sistem rootfs v/srv/nfs/rootfs, znova zaženite storitev NFS, da posodobite imenik z novimi kopiranimi datotekami.

Poleg tega moramo datoteke novih modulov kopirati v datotečni sistem rootfs, ker smo jedro sestavili v 2. koraku. Torej, kopirajte vse imenike v ~/db410c-modules/v/srv/nfs/rootfs.

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

Poskrbite, da bo storitev NFS vidna. Ali:

$ sudo exportfs -a

Sklic: Korenski datotečni sistem TFTP/NFS

6. korak: Posodobitev zagonske slike Dragonboard 410c in konfiguriranje omrežnih vmesnikov

Zgodaj smo naredili vse korake za implementacijo oddaljenega datotečnega sistema rootfs, zdaj moramo posodobiti zagonsko podobo znotraj dragonboard 410c, za to svoj USB kabel priključite na osebni računalnik in na priključek uUSB dragonboard. Zato se prepričajte, da je fastboot nastavljen na gostiteljskem računalniku, če ne namestite z:

$ sudo apt namestite fastboot

Zdaj, da posodobite sliko, zaženite de dragonboard v načinu hitrega zagona po teh korakih:

  • Pritisnite in držite gumb Vol (-) na DragonBoard 410c, to je gumb S4. DragonBoard ™ 410c še vedno NE sme biti vklopljen
  • Držite gumb Vol (-), vklopite DragonBoard 410c tako, da ga priključite
  • Ko je DragonBoard 410c priključen na napajanje, spustite gumb Vol (-).
  • Počakajte približno 20 sekund.
  • Plošča se mora zagnati v načinu hitrega zagona.

V oknu terminala povezanega gostiteljskega stroja zaženite naslednje ukaze:

$ sudo naprave za hiter zagon

Običajno se prikaže kot spodaj

de82318 hitri zagon

Na tej točki morate biti povezani s svojim DragonBoard 410c s kablom USB na microUSB. Vaš DragonBoard 410c je treba zagnati v način hitrega zagona in ga pripraviti za bliskanje z ustreznimi slikami. Posodobimo zagonsko sliko z našo zagonsko sliko:

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

In znova zaženite ploščo

$ sudo fastboot ponovni zagon

Zdaj bo vaš HOST zaznal nov vmesnik z imenom usb0, vendar še nima IP -ja. Torej temu vmesniku dodajte statični IP z uporabo:

$ sudo ifconfig usb0 10.42.0.1 maska omrežja 255.255.255.0 navzgor

Ali pa vnesite "Konfiguracija" na HOST, v postavki "omrežje" in nastavite statični IP tega vmesnika za USB Ethernet.

Zdaj znova zaženite dragonboard in preverite zagon sistema ter se poskusite povezati s ssh:

$ ssh [email protected]

Reference:

  • Dokumentacija o 96 ploščah
  • HowtoForge - postavka 6

Priporočena: