Obsah:

Prístup k vzdialenému koreňovému systému súborov pomocou DB410 ako ethernetového kľúča: 6 krokov
Prístup k vzdialenému koreňovému systému súborov pomocou DB410 ako ethernetového kľúča: 6 krokov

Video: Prístup k vzdialenému koreňovému systému súborov pomocou DB410 ako ethernetového kľúča: 6 krokov

Video: Prístup k vzdialenému koreňovému systému súborov pomocou DB410 ako ethernetového kľúča: 6 krokov
Video: How to Use TeamViewer on Mac 2024, November
Anonim
Prístup k vzdialenému koreňovému súborovému systému pomocou DB410 ako ethernetového kľúča
Prístup k vzdialenému koreňovému súborovému systému pomocou DB410 ako ethernetového kľúča

Ciele:

  • Nainštalujte si reťazec nástrojov a skomprimujte jadro, aby ste vložili podporu modulu USB Ethernet CDC Gadget;
  • Znova vytvorte boot.img z Linaro na zavedenie USB Ethernet CDC;
  • Vytvorte server NFS na hostenie koreňového súborového systému;
  • Konfigurácia IP v ZARIADENÍ a HOST.

Krok 1: Požiadavky

Budete potrebovať nasledujúce položky:

  1. DragonBoard ™ 410c (tu pomenovaný ZARIADENIE);
  2. Aktualizovaný počítač s operačným systémom Ubuntu 16.04.3 (tu pomenovaný HOST) s pripojením na internet a zásuvkou SDCard;
  3. Čistá inštalácia Linaro - vývojár verzie 431 - Link: Snapshot Linaro Debian v431
  4. Monitor HDMI;
  5. Klávesnica USB;
  6. 8 GB SD karta;
  7. Kábel USB, uUSB USB na pripojenie ZARIADENIA na HOST.

Krok 2: Konfigurácia hostiteľa na vytváranie jadra a budovanie jadra na HOST

Predtým než budeme pokračovať, najskôr vytvoríme všetky adresáre. Takže:

$ cd ~

$ mkdir db410remoteroot $ cd db410remoteroot $ mkdir reťazec nástrojov $ mkdir db410c-moduly

Žiaľ, linuxové jadro používané Linaro (Verzia 431) nemá podporu pre gadget USB Ethernet, kvôli tomu je potrebné Linuxové jadro pre túto konkrétnu verziu znova vytvoriť. Stiahnite si reťazec nástrojov Linaro a vytvorte a nasaďte linuxové jadro na serveri Dragonboard410c z hostiteľského počítača x86.

$ wget

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

Teraz nainštalujte balíky, ktoré sú potrebné na zostavenie jadra:

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

Získať zdroj jadra Linuxu Klon Úložisko tímu Qualcomm Landing Team Linux:

$ git clone

$ cd jadro $ git pokladňa origin/release/qcomlt-4.14 -b my-custom-4.14

Teraz nastavte premenné prostredia kompilácie:

$ export ARCH = arm64

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

V tomto mieste musíme pridať moduly do USB Ethernet CDC v jadre. Urobil som to predtým a na konci tohto kroku to môžete získať. Odstránil som nejaké položky, ale funguje to.

Pred kompiláciou opravte chybu jadra v súboroch drivers/mmc/host/sdhci-msm.c a zmeňte štruktúru v riadku 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};

Rozbaľte súbor configfile.zip, skopírujte súbor.config do adresára jadra, vytvorte jadro, moduly a nainštalujte moduly do adresára:

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

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

Referencia: Dokumentácia 96Boards

Krok 3: Znova vytvorte súbor Boot.img na HOST

V tomto kroku musíme otvoriť obrázok initrd, vložiť moduly zabudované do obrazu, nakonfigurovať systém na spustenie týchto modulov a znova vytvoriť súbor initrd.img s novým príkazovým riadkom jadra na vzdialené spustenie koreňového súborového systému.

Najprv teda musíme stiahnuť súbor initrd.img z webu linaro:

$ cd..

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

Teraz po stiahnutí dekomprimujte a rozbaľte súbor initrd:

$ zcat ramdisk.img | cpio -idmv

V tomto adresári máme koreňový súborový systém, ktorý jadro používa pri inicializácii, takže nakonfigurujeme moduly USB Ethernet CDC a vzdialené parametre NFS, ako sú IP adresa servera NFS a ethernet (usb).

Teraz nakonfigurujme niektoré súbory:

conf/initramfs.conf:

MODULY = väčšina

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

Vytvorte adresár init-premount v adresárových skriptoch/

$ mkdir skripty/init-premount

a pridajte súbory do tohto práve vytvoreného adresára:

OBJEDNAŤ

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

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

usb

#!/bin/sh

PREREQ = "" prereqs () {echo "$ PREREQ"} prípad $ 1 v # get prerequisites prereqs) prereqs exit 0;; esac modprobe usb_f_ecm modprobe libcomposite modprobe usb_f_rndis modprobe g_ether

Nezabudnite použiť chmod v súbore USB, aby bol spustiteľný:

$ chmod +x skriptov/init-premount/usb

Teraz skopírujte celý adresár s modulmi z db410c-modules (KROK 2) do lib/modules v initrd:

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

Odstráňte všetky súbory v súbore lib/modules/4.14.96-xxxx-dirty okrem modulu všetkých súborov.* A uvedeného zoznamu súborov:

jadro/ovládače/usb/gadget/legacy/g_ether.ko

jadro/ovládače/usb/gadget/legacy/g_mass_storage.ko jadro/ovládače/usb/gadget/legacy/g_cdc.ko jadro/ovládače/usb/gadget/legacy/g_serial.ko jadro/ovládače/usb/gadget/funkcia/usb_f_mass_storage.ko kernel/drivers/usb/gadget/function/usb_f_acm.ko kernel/drivers/usb/gadget/function/u_ether.ko kernel/drivers/usb/gadget/function/usb_f_obex.ko kernel/drivers/usb/gadget/function /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 jadro/ovládače/usb/gadget/funkcia/usb_f_ecm_subset.ko jadro/ovládače/usb/gadget/libcomposite.ko

Tieto súbory sú všetky moduly potrebné na spustenie USB Ethernet CDC.

Nakoniec znova zabaľte a skomprimujte úvodný obrázok:

$ nájsť. | cpio -o -H newc | gzip -9>../kernel/initrd_nfs.img

Do zavádzacieho obrazu systému Android je potrebné zabaliť aspoň obrázok jadra a súbor DTB. Takýto obrázok je možné vygenerovať pomocou nástroja abootimg.

Prejdeme do adresára jadra a pomocou nižšie uvedeného príkazu vytvoríme obraz a pridáme DTB do komprimovaného obrazu jadra:

$ cd../kernel

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

A nakoniec vygenerujte bootovací obrázok (tu náš rootfs nachádza vzdialený oddiel v 10.42.0.1)

abootimg -vytvorte boot -db410c.img -k Image.gz+dtb -r initrd_nfs.img -c veľkosť stránky = 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 = konzola tty0 = ttyMSM0, 115200n8"

Referencie:

  • https://access.redhat.com/solutions/24029
  • Dokumentácia 96 dosiek

Krok 4: Vytvorenie koreňového súborového systému na HOST

Teraz sme dostali nový bootovací obraz na aktualizáciu dragonboard 410c. Na spustenie modulov, služieb a aplikácií však potrebujeme koreňový súborový systém na vzdialenom serveri. V tomto kroku v hostiteľovi vybudujeme zdieľaný adresár na uloženie všetkých týchto údajov. Tak si stiahneme súborový systém rootfs z webu linaro s rovnakou verziou, aká bola použitá v initrd. Vráťte sa teda o jeden adresár a stiahnite si obrázok linaro-developer rootfs s verziou 431.

$ cd..

$ wget

Rozbaľte tento súbor

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

Pomocou tohto súboru napíšeme všetok obrázok na kartu sd, aby sme získali prístup ku všetkým oddielom, a skopírujeme súbory rootfs. Zaistite teda zálohovanie údajov z karty uSDCard, pretože sa stratí všetko na karte SDCard.

Ak chcete nájsť názov zariadenia SDCard, vyberte kartu SDCard a spustite nasledujúci príkaz:

$ lsblk

Uložte si do pamäte všetky rozpoznané názvy diskov. Teraz vložte kartu SD, chvíľu počkajte a znova spustite príkaz:

$ lsblk

Všimnite si novo rozpoznaného disku. Toto bude vaša karta SDCard. Zapamätajte si svoje meno a zmeňte parameter „of =“pre názov zariadenia SDCard a názov zariadenia používajte bez oddielu, p.e.: /dev /mmcblk0

$ sudo dd if = dragonboard-410c-sdcard-developer-buster-431.img of =/dev/XXX bs = 4M oflag = stav synchronizácie = priebeh

Poznámky:

  • Vykonanie tohto príkazu bude nejaký čas trvať. Buďte trpezliví a vyhnite sa manipulácii s terminálom, kým sa proces neskončí.
  • Hneď ako karta SD začne blikať, vyberte ju z hostiteľského počítača.

Referencia: dokumentácia 96 tabúľ

Krok 5: Vytvorenie servera NFS v hostiteľovi HOST a kopírovanie súborov

V tomto bode máme bootovací obraz, ktorý sa má flashovať do dragonboard 410c a karty SDCard so súborovým systémom rootfs pre naše moduly, služby a aplikácie. Ďalším krokom je vytvorenie vzdialeného adresára na prepojenie zariadenia USB Ethernet DEVICE so súborovým systémom HOST rootfs. To sa dá urobiť pomocou balíka z Ubuntu s názvom nfs-kernel-server.

Tento balík nainštaluje službu NFS do Ubuntu, ktorá umožňuje zdieľať niektoré adresáre pre niektoré zariadenia v sieti, pričom pomocou vašej IP môžeme nakonfigurovať, ktorý adresár sa bude používať pre každé zariadenie.

Nainštalujme teda balík a nakonfigurujeme ho.

$ sudo apt-get install nfs-kernel-server

Služba NFS sa spustí automaticky. Na ovládanie služieb NFS použite:

$ sudo service nfs-kernel-server restart // na reštartovanie, alebo použite 'stop' alebo 'štart' podľa potreby.

Na kontrolu stavu služby NFS z príkazového riadka použite:

$ sudo service nfs-kernel-server status

nfsd beží // Služba je spustená nfsd nefunguje // Služba je vypnutá

Teraz vytvoríme vrchný adresár /srv /nfs a pod ním vytvoríme podadresár pre každý požadovaný koreňový súborový systém pripojený k systému NFS. Tu uvádzame zdieľaný koreňový súborový systém, ktorý zachová náš koreňový súborový systém:

$ sudo mkdir -p /srv /nfs

$ sudo mkdir -p/srv/nfs/rootfs

Server NFS teraz vyžaduje, aby /etc /exports bol správne nakonfigurovaný, aby riadil prístup ku každému adresáru súborového systému NFS konkrétnym hostiteľom. V tomto prípade sú hostitelia identifikovaní podľa svojej IP adresy. Preto pre každý vytvorený koreňový súborový systém pridajte riadok exportu do súboru /etc /exports, v prípade potreby upravte podľa svojej lokálnej adresy IP a schémy pomenovania adresárov. V tomto návode vždy používame:

/srv/nfs/rootfs 10.42.0.2 (rw, synchronizácia, no_root_squash, no_subtree_check)

Znova vložte kartu SDCard, pripojte ju a skopírujte všetok súborový systém rootfs do/srv/nfs/rootfs, reštartujte službu NFS a aktualizujte adresár pomocou nových skopírovaných súborov.

Okrem toho musíme skopírovať súbory nových modulov do súborového systému rootfs, pretože sme jadro skompilovali v kroku 2. Skopírujte teda všetky adresáre v adresári ~/db410c-modules/do/srv/nfs/rootfs.

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

Zaistite, aby služba NFS tieto adresáre zviditeľňovala. Buď:

$ sudo exportfs -a

Referencia: Koreňový systém súborov TFTP/NFS

Krok 6: Aktualizácia bootovacieho obrazu Dragonboard 410c a konfigurácia sieťových rozhraní

Na začiatku sme vykonali všetky kroky k implementácii vzdialeného súborového systému rootfs, teraz potrebujeme aktualizovať bootovací obraz v počítači dragonboard 410c, aby ste k nemu pripojili kábel USB k počítaču a konektoru uUSB na dragonboarde. Preto sa uistite, že je na hostiteľskom počítači nastavené rýchle spustenie, ak nie je nainštalované pomocou:

$ sudo apt nainštalovať fastboot

Teraz, aby ste aktualizovali obrázok, spustite dragonboard do režimu rýchleho spustenia podľa týchto krokov:

  • Stlačte a podržte tlačidlo Vol (-) na DragonBoard 410c, toto je tlačidlo S4. DragonBoard ™ 410c by stále NEMAL byť zapnutý
  • Podržte tlačidlo Vol (-) a zapnite DragonBoard 410c zapojením
  • Akonáhle je DragonBoard 410c zapojený do napájania, podržte tlačidlo Vol (-).
  • Počkajte asi 20 sekúnd.
  • Doska by sa mala spustiť v režime rýchleho spustenia.

V okne terminálu pripojeného hostiteľského počítača spustite nasledujúce príkazy:

$ sudo fastboot zariadenia

Spravidla sa zobrazí ako nižšie

de82318 rýchle spustenie

V tomto mieste by ste mali byť pripojení k DragonBoard 410c káblom USB na microUSB. Váš DragonBoard 410c by mal byť zavedený do režimu rýchleho spustenia a pripravený na spustenie záblesku s príslušnými obrázkami. Aktualizujme bootovací obrázok pomocou nášho bootovacieho obrázku:

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

A reštartujte dosku

$ sudo fastboot reštart

Váš HOST teraz zistí nové rozhranie s názvom usb0, ale zatiaľ nemá IP. Pridajte teda do tohto rozhrania statickú IP adresu pomocou:

$ sudo ifconfig usb0 10.42.0.1 maska siete 255.255.255.0 hore

Alebo zadajte do „Konfigurácie“na serveri HOST, do položky „sieť“a nastavte USB Ethernet na toto rozhranie ako statickú adresu IP.

Teraz znova reštartujte dragonboard a overte spustenie systému a pokúste sa pripojiť pomocou ssh:

$ ssh [email protected]

Referencie:

  • Dokumentácia 96 dosiek
  • HowtoForge - položka 6

Odporúča: