Turinys:

Prieiga prie nuotolinės šakninių failų sistemos naudojant DB410 kaip eterneto raktą: 6 veiksmai
Prieiga prie nuotolinės šakninių failų sistemos naudojant DB410 kaip eterneto raktą: 6 veiksmai

Video: Prieiga prie nuotolinės šakninių failų sistemos naudojant DB410 kaip eterneto raktą: 6 veiksmai

Video: Prieiga prie nuotolinės šakninių failų sistemos naudojant DB410 kaip eterneto raktą: 6 veiksmai
Video: Kriptografinės sistemos 2024, Lapkritis
Anonim
Prieiga prie nuotolinės šakninių failų sistemos naudojant „DB410“kaip „Ethernet“raktą
Prieiga prie nuotolinės šakninių failų sistemos naudojant „DB410“kaip „Ethernet“raktą

Tikslai:

  • Įdiekite įrankių grandinę ir perkompiliuokite branduolį, kad įterptumėte USB Ethernet CDC programėlės palaikymą;
  • Atkurkite boot.img iš „Linaro“, kad paleistumėte USB Ethernet CDC;
  • Sukurti NFS serverį pagrindinei failų sistemai;
  • IP konfigūracija DEVICE ir HOST.

1 žingsnis: reikalavimai

Jums reikės šių itenų:

  1. „DragonBoard ™ 410c“(čia pavadintas ĮRENGINIS);
  2. Kompiuteris naudojant „Ubuntu 16.04.3“atnaujintas (čia pavadintas HOST) su interneto ryšiu ir SDCard lizdu;
  3. Švarus „Linaro“kūrėjo 431 versijos diegimas - nuoroda: „Linaro Debian v431“momentinė nuotrauka
  4. HDMI monitorius;
  5. USB klaviatūra;
  6. 8 Gb SDCard;
  7. USB kabelis, uUSB USB, kad prijungtumėte DEVICE prie HOST.

2 veiksmas: pagrindinio kompiuterio konfigūravimas sukurti branduolį ir branduolio kūrimas HOST

Pirma, prieš tęsdami sukursime visus katalogus. Taigi:

$ cd ~

$ mkdir db410remoteroot $ cd db410remoteroot $ mkdir toolchain $ mkdir db410c-modules

Deja, „Linaro“naudojamas „Linux“branduolys (431 versija) nepalaiko USB eterneto programėlės, todėl šiai konkrečiai versijai „Linux“branduolys turi būti atkurtas iš naujo. Atsisiųskite „Linaro“įrankių grandinę, kad sukurtumėte ir įdiegtumėte „Linux“branduolį „Dragonboard410c“iš x86 pagrindinio kompiuterio.

$ wget

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

Dabar įdiekite paketus, reikalingus branduoliui sukurti:

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

Gaukite „Linux“branduolio šaltinio „Clone Qualcomm“nukreipimo komandos „Linux“saugyklą:

$ git klonas

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

Dabar nustatykite kompiliavimo aplinkos kintamuosius:

$ export ARCH = arm64

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

Šiuo metu mes turime pridėti modulius prie USB Ethernet CDC branduolyje. Aš tai padariau anksčiau ir tai galite padaryti šio žingsnio pabaigoje. Aš pašalinau keletą itenų, bet tai veikia.

Prieš kompiliuodami, ištaisykite branduolio klaidą į tvarkykles/mmc/host/sdhci-msm.c, pakeisdami 1150 eilutės struktūrą į:

statinė konstravimo struktūra 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};

Išspauskite configfile.zip, nukopijuokite.config failą į branduolio katalogą, sukurkite branduolį, modulius ir įdiekite modulius kataloge:

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

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

Nuoroda: 96Boards Documentation

3 veiksmas: atkurkite „Boot.img“HOST

Šiame žingsnyje turime atidaryti initrd atvaizdą, įdėti į modulį sukurtus modulius, sukonfigūruoti sistemą paleisti tuos modulius ir iš naujo sukurti initrd.img naudodami naują branduolio komandų eilutę, kad nuotoliniu būdu būtų galima paleisti šakninę failų sistemą.

Taigi, pirmiausia turime atsisiųsti initrd.img iš linaro svetainės:

$ cd..

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

Dabar, atsisiuntę, atspauskite ir išskleiskite initrd:

$ zcat ramdisk.img | cpio -idmv

Šiame kataloge yra šakninė failų sistema, kurią inicializuoja branduolys, todėl sukonfigūruosime USB eterneto CDC modulius ir NFS nuotolinius parametrus, tokius kaip NFS serverio IP ir eternetas (usb).

Dabar sukonfigūruokime kai kuriuos failus:

conf/initramfs.conf:

MODULIAI = dauguma

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

Sukurkite katalogo init-premount katalogo scenarijuose/

$ mkdir scenarijai/init-premount

ir pridėkite failus į ką tik sukurtą katalogą:

ĮSAKYMAS

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

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

usb

#!/bin/sh

PREREQ = "" prereqs () {echo "$ PREREQ"} atvejis $ 1 in # get išankstiniai reikalavimai prereqs) prereqs exit 0;; esac modprobe usb_f_ecm modprobe libcomposite modprobe usb_f_rndis modprobe g_ether

Nepamirškite naudoti chmod USB faile, kad jis būtų vykdomas:

$ chmod +x scenarijai/init-premount/usb

Dabar nukopijuokite visą katalogą su moduliais iš db410c-modules (2 ŽINGSNIS) į lib/modules in initrd:

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

Pašalinkite visus failus iš lib/modules/4.14.96-xxxx-dirty, išskyrus visus modulių failus.* Ir tą failų sąrašą:

branduolys/tvarkyklės/usb/gadget/legacy/g_ether.ko

branduolis/tvarkyklės/usb/gadget/legacy/g_mass_storage.ko branduolys/tvarkyklės/usb/gadget/legacy/g_cdc.ko branduolys/tvarkyklės/usb/gadget/legacy/g_serial.ko branduolys/drivers/usb/gadget/function/usb_f_mass_storage.ko branduolys/tvarkyklės/usb/gadget/function/usb_f_acm.ko branduolys/tvarkyklės/usb/gadget/function/u_ether.ko branduolys/tvarkyklės/usb/gadget/function/usb_f_obex.ko branduolys/tvarkyklės/usb/gadget/function /usb_f_serial.ko branduolys/tvarkyklės/usb/gadget/function/usb_f_ecm.ko branduolys/tvarkyklės/usb/gadget/function/usb_f_rndis.ko branduolys/tvarkyklės/usb/gadget/function/u_serial.ko branduolys/tvarkyklės/usb/gadget /function/usb_f_fs.ko branduolys/tvarkyklės/usb/gadget/function/usb_f_ecm_subset.ko branduolys/tvarkyklės/usb/gadget/libcomposite.ko

Šie failai yra visi moduliai, reikalingi paleidžiant USB Ethernet CDC.

Galiausiai supakuokite ir suspauskite pradinį vaizdą:

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

Bent jau branduolio vaizdas ir DTB failas turi būti supakuoti į „Android“įkrovos atvaizdą. Tokį vaizdą galima sukurti naudojant abootimg įrankį.

Eikime į branduolio katalogą ir naudokime žemiau esančia komanda, kad sukurtume vaizdą ir pridėtume DTB suspaustame branduolio vaizde:

$ cd../kernel

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

Galiausiai sukurkite įkrovos vaizdą (čia mūsų rootfs yra nuotolinis skaidinys 10.42.0.1)

abootimg --create boot -db410c.img -k Image.gz+dtb -r initrd_nfs.img -c pagesize = 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: išjungta rw rootwait konsolė = tty0 konsolė = ttyMSM0, 115200n8"

Nuorodos:

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

4 veiksmas: šakninių failų sistemos kūrimas HOST

Dabar turime naują įkrovos vaizdą, skirtą atnaujinti „dragonboard 410c“. Bet mums reikia šakninės failų sistemos nuotoliniame serveryje, kad galėtume paleisti modulius, paslaugas ir programas. Šiame etape mes sukursime bendrinamą katalogą priegloboje, kad išsaugotume visus šiuos duomenis. Tokiu būdu atsisiųskime „rootfs“failų sistemą iš „linaro“svetainės su ta pačia versija, kuri naudojama „initrd“. Taigi, grįžkite į vieną katalogą ir atsisiųskite linaro-developer rootfs atvaizdą su 431 versija.

$ cd..

$ wget

Išspauskite šį failą

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

Naudodami šį failą, įrašykime visą vaizdą į sdcard, kad galėtumėte pasiekti visus skaidinius ir nukopijuoti rootfs failus. Taigi įsitikinkite, kad „uSDCard“duomenų atsarginės kopijos yra sukurtos, nes viskas, kas yra SDCard, bus prarasta.

Norėdami rasti SDCard įrenginio pavadinimą, pašalinkite SDCard ir paleiskite šią komandą:

$ lsblk

Išsaugokite mintyse visus atpažintus diskų pavadinimus. Dabar įdėkite SDCard, palaukite ir vėl vykdykite komandą:

$ lsblk

Atkreipkite dėmesį į naujai atpažįstamą diską. Tai bus jūsų SDCard. Prisiminkite savo vardą ir pakeiskite SDCard įrenginio pavadinimo parametrą „of =“ir būtinai naudokite įrenginio pavadinimą be skaidinio, pvz.: /dev /mmcblk0

$ sudo dd if = dragonboard-410c-sdcard-developer-buster-431.img =/dev/XXX bs = 4M oflag = sinchronizavimo būsena = progresas

Pastabos:

  • Šiai komandai įvykdyti prireiks šiek tiek laiko. Būkite kantrūs ir venkite kištis į terminalą, kol procesas nesibaigs.
  • Kai SD kortelė mirksi, išimkite ją iš pagrindinio kompiuterio.

Nuoroda: 96 lentų dokumentacija

5 veiksmas: sukurkite serverio NFS HOST ir nukopijuokite failus

Šiuo metu turime įkrovos vaizdą, kuris bus perkeltas į „dragonboard 410c“ir SDCard su „rootfs“failų sistema, skirta mūsų moduliams, paslaugoms ir programoms. Kitas žingsnis yra sukurti nuotolinį katalogą, kad būtų galima prijungti USB Ethernet įrenginį prie HOST rootfs failų sistemos. Tai galima padaryti naudojant paketą iš „Ubuntu“pavadinimu nfs-kernel-server.

Šis paketas įdiegia NFS paslaugą į „Ubuntu“, leidžiančią bendrinti kai kuriuos kai kurių tinklo įrenginių katalogus, mes galime sukonfigūruoti, kuris katalogas bus naudojamas kiekvienam įrenginiui, naudojant jūsų IP.

Taigi, įdiekime paketą ir sukonfigūruokime.

$ sudo apt-get install nfs-kernel-server

NFS paslauga paleidžiama automatiškai. Norėdami valdyti NFS paslaugas, naudokite:

$ sudo service nfs-kernel-server restart // norėdami iš naujo paleisti, arba naudokite „stop“arba „start“, jei reikia.

Norėdami patikrinti NFS paslaugos būseną iš komandinės eilutės, naudokite:

$ sudo paslaugos nfs-branduolio serverio būsena

nfsd veikia // Paslauga aukštyn nfsd neveikia // Paslauga neveikia

Dabar sukurkime viršutinį katalogą /srv /nfs ir pagal jį sukurkite pakatalogį kiekvienai NFS įdiegtai šakninei failų sistemai. Čia įtraukiame bendrinamą šakninę failų sistemą, kad išlaikytume šakninę failų sistemą:

$ sudo mkdir -p /srv /nfs

$ sudo mkdir -p/srv/nfs/rootfs

Dabar NFS serveris reikalauja, kad /etc /export būtų tinkamai sukonfigūruotas, kad būtų galima kontroliuoti prieigą prie kiekvieno NFS failų sistemos katalogo prie konkrečių kompiuterių. Šiuo atveju pagrindiniai kompiuteriai identifikuojami pagal jų IP adresą. Taigi, kiekvienai sukurtajai šakninei failų sistemai pridėkite eksporto valdymo eilutę prie /etc /export, jei reikia, pakoreguodami vietinį IP adresą ir katalogų pavadinimo schemą. Šioje pamokoje mes visada naudojame:

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

Dar kartą įdėkite SDCard kortelę, įdėkite ją ir nukopijuokite visą rootfs failų sistemą į/srv/nfs/rootfs, iš naujo paleiskite NFS paslaugą, kad atnaujintumėte katalogą naudodami naujus nukopijuotus failus.

Be to, mums reikia nukopijuoti naujų modulių failus į rootfs failų sistemą, nes branduolį surinkome atlikdami 2 veiksmą. Taigi, nukopijuokite visus katalogus į ~/db410c-modules/į/srv/nfs/rootfs.

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

Įsitikinkite, kad šiuos katalogus mato NFS tarnyba. Arba:

$ sudo exportfs -a

Nuoroda: TFTP/NFS šaknų failų sistema

6 veiksmas: „Dragonboard 410c“įkrovos vaizdo atnaujinimas ir tinklo sąsajų konfigūravimas

Anksti padarėme visus žingsnius, kad įdiegtume nuotolinę „rootfs“failų sistemą, dabar turime atnaujinti įkrovos vaizdą „dragonboard 410c“viduje, tam prijunkite savo USB kabelį prie kompiuterio ir prie „dragonboard“USB jungties. Taigi įsitikinkite, kad „fastboot“yra nustatytas pagrindiniame kompiuteryje, jei neįdiegiate naudodami:

$ sudo apt install fastboot

Dabar, kad atnaujintumėte vaizdą, paleiskite „dragonboard“į greito paleidimo režimą atlikdami šiuos veiksmus:

  • Paspauskite ir palaikykite „Vol“(-) mygtuką „DragonBoard 410c“, tai yra S4 mygtukas. „DragonBoard ™ 410c“vis tiek neturėtų būti įjungtas
  • Laikydami nuspaudę „Vol“(-) mygtuką, įjunkite „DragonBoard 410c“, prijungdami jį
  • Kai „DragonBoard 410c“bus prijungtas prie maitinimo šaltinio, atleiskite „Vol“(-) mygtuką.
  • Palaukite apie 20 sekundžių.
  • Lenta turėtų paleisti greito įkrovos režimą.

Iš prijungto pagrindinio kompiuterio terminalo lango paleiskite šias komandas:

$ sudo greito paleidimo įrenginiai

Paprastai tai bus parodyta žemiau

de82318 greitas įkrovimas

Šiuo metu turėtumėte būti prijungtas prie „DragonBoard 410c“naudodami USB -microUSB kabelį. „DragonBoard 410c“turėtų būti įjungtas greito įkrovos režimu ir paruoštas blykstelėti su atitinkamais vaizdais. Atnaujinkime įkrovos vaizdą naudodami mūsų įkrovos vaizdą:

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

Ir iš naujo paleiskite plokštę

$ sudo greito paleidimo iš naujo

Dabar jūsų HOST aptiks naują sąsają, pavadintą usb0, tačiau ji dar neturi IP. Taigi, pridėkite statinį IP prie šios sąsajos naudodami:

$ sudo ifconfig usb0 10.42.0.1 netmask 255.255.255.0 up

Arba įveskite „Konfigūracija“HOST, „tinklo“elemente, nustatydami USB eternetui statinį tos sąsajos IP.

Dabar iš naujo paleiskite „dragonboard“ir patikrinkite sistemos paleidimą, bandydami prisijungti naudodami ssh:

$ ssh [email protected]

Nuorodos:

  • 96 lentų dokumentacija
  • HowtoForge - 6 punktas

Rekomenduojamas: