INHOUDSOPGAWE:

Toegang tot eksterne wortellêersisteem met behulp van DB410 as 'n Ethernet -Dongle: 6 stappe
Toegang tot eksterne wortellêersisteem met behulp van DB410 as 'n Ethernet -Dongle: 6 stappe

Video: Toegang tot eksterne wortellêersisteem met behulp van DB410 as 'n Ethernet -Dongle: 6 stappe

Video: Toegang tot eksterne wortellêersisteem met behulp van DB410 as 'n Ethernet -Dongle: 6 stappe
Video: Быстрая укладка плитки на стены в санузле. ПЕРЕДЕЛКА ХРУЩЕВКИ от А до Я #27 2024, Julie
Anonim
Toegang tot eksterne wortellêersisteem met behulp van DB410 as 'n Ethernet -Dongle
Toegang tot eksterne wortellêersisteem met behulp van DB410 as 'n Ethernet -Dongle

Doelwitte:

  • Installeer werktuigketting en stel die kern weer saam om USB Ethernet CDC Gadget -ondersteuning in te voeg;
  • Herskep boot.img van Linaro om USB Ethernet CDC op te laai;
  • Skep NFS -bediener om die wortellêerstelsel te huisves;
  • IP -opset in DEVICE en HOST.

Stap 1: vereistes

U benodig die volgende items:

  1. 'N DragonBoard ™ 410c (hier genoem APPARAAT);
  2. 'N PC met Ubuntu 16.04.3 opgedateer (hier genoem HOST) met internetverbinding en SDCard -gleuf;
  3. 'N Skoon installasie van Linaro -ontwikkelaar weergawe 431 - Skakel: Snapshot Linaro Debian v431
  4. 'N HDMI -monitor;
  5. 'N USB -sleutelbord;
  6. 'N 8 GB SDCard;
  7. 'N USB -kabel, uUSB USB om die APPARAAT op HOST aan te sluit.

Stap 2: Konfigureer gasheer om kern te bou en kern in die HOST te bou

Eerstens maak ons alle gidse voordat ons kan voortgaan. Dus:

$ cd ~

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

Ongelukkig het Linux -kernel wat deur Linaro (weergawe 431) gebruik word, geen ondersteuning vir USB Ethernet -gadget nie, daarom moet Linux -kern vir hierdie spesifieke weergawe herbou word. Laai Linaro toolchain af om Linux -kernel op Dragonboard410c te bou en te implementeer vanaf die x86 -gasheermasjien.

$ wget

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

Installeer nou pakkette wat nodig is om die kern te bou:

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

Kry Linux Kernel source Clone Qualcomm landing team Linux repository:

$ git kloon

$ cd kernel $ git afrekening oorsprong/release/qcomlt-4.14 -b my-custom-4.14

Stel nou samestellingsomgewingsveranderlikes in:

$ uitvoer ARCH = arm64

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

Op hierdie punt moet ons die modules by USB Ethernet CDC in die kern voeg. Ek het dit voorheen gedoen, en u kan dit aan die einde van hierdie stap kry. Ek het 'n paar itens verwyder, maar dit werk.

Voordat u dit saamstel, moet u 'n kernfout regstel in drivers/mmc/host/sdhci-msm.c en die struktuur in reël 1150 verander na:

statiese 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};

Pak configfile.zip uit, kopieer.config -lêer na kernmap, bou kernel, modules en installeer modules in 'n gids:

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

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

Verwysing: 96Board Dokumentasie

Stap 3: Herbou Boot.img in die HOST

In hierdie stap moet ons die initrd -beeld oopmaak, die modules in die prentjie plaas, die stelsel instel om die modules te begin en 'n initrd.img te herbou met 'n nuwe kernopdragreël om die wortellêerstelsel op afstand te begin.

Dus, eers moet ons initrd.img aflaai van die linaro -webwerf:

$ cd..

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

Na aflaai, pak die initrd uit en haal dit uit:

$ zcat ramdisk.img | cpio -idmv

In hierdie gids het ons die wortellêerstelsel wat die kern gebruik vir die inisialisering, dus stel ons USB Ethernet CDC -modules en NFS -afstandparameters in, soos NFS -bediener -IP en ethernet (usb) wat hier benodig word.

Kom ons stel nou 'n paar lêers op:

conf/initramfs.conf:

MODULES = meeste

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

Skep die gids init-premount in die gidsskrifte/

$ mkdir scripts/init-premount

en voeg die lêers by in die pas gemaakte gids:

ORDE

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

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

usb

#!/bin/sh

PREREQ = "" prereqs () {echo "$ PREREQ"} case $ 1 in # get pre-requisites prereqs) prereqs exit 0;; esac modprobe usb_f_ecm modprobe libcomposite modprobe usb_f_rndis modprobe g_ether

Moenie vergeet om chmod in usb -lêer te gebruik om dit uitvoerbaar te maak nie:

$ chmod +x scripts/init-premount/usb

Kopieer nou alle gids met die modules van db410c-modules (STAP 2) na lib/modules in initrd:

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

Verwyder alle lêers in lib/modules/4.14.96-xxxx-dirty behalwe alle lêermodules.* En die lêerlys:

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

kernel/drivers/usb/gadget/legacy/g_mass_storage.ko kern/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 kernel/drivers/usb/gadget/function/usb_f_acm.ko kernel/drivers/usb/gadget/function/u_ether.ko kern/drivers/usb/gadget/function/usb_f_obex.ko kern/drivers/usb/gadget/function /usb_f_serial.ko kern/drivers/usb/gadget/function/usb_f_ecm.ko kern/drivers/usb/gadget/function/usb_f_rndis.ko kern/drivers/usb/gadget/function/u_serial.ko kern/drivers/usb/gadget /function/usb_f_fs.ko kern/drivers/usb/gadget/function/usb_f_ecm_subset.ko kern/drivers/usb/gadget/libcomposite.ko

Hierdie lêers is almal modules wat benodig word om USB Ethernet CDC te begin.

Pak uiteindelik die oorspronklike beeld weer saam en pers dit saam:

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

Die kernbeeld en DTB -lêer moet ten minste in 'n Android -opstartbeeld gepak word. So 'n beeld kan gegenereer word met 'n abootimg -instrument.

Laat ons in die kerngids gaan en gebruik die onderstaande opdrag om 'n prentjie te bou en DTB by te voeg in die saamgeperste kernbeeld:

$ cd../kernel

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

En laastens, genereer die opstartbeeld (hier is ons rootfs 'n afgeleë partisie in 10.42.0.1)

abootimg -skep boot -db410c.img -k Image.gz+dtb -r initrd_nfs.img -c bladsy grootte = 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"

Verwysings:

  • https://access.redhat.com/solutions/24029
  • 96Bord Dokumentasie

Stap 4: Skep wortellêersisteem in die HOST

Nou het ons 'n nuwe opstartbeeld gekry om die dragonboard 410c op te dateer. Maar ons benodig 'n wortellêerstelsel in die afstandbediener om modules, dienste en toepassings op te laai. In hierdie stap bou ons 'n gedeelde gids in die gasheer om al hierdie data te stoor. Laat ons op die manier 'n rootfs -lêerstelsel aflaai van linaro -webwerf met dieselfde weergawe wat in initrd gebruik is. Gaan dus een gids terug en laai die linaro-ontwikkelaar-rootfs-prent af met weergawe 431.

$ cd..

$ wget

Pak hierdie lêer uit

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

Met hierdie lêer, laat ons die hele prent op 'n sdcard skryf om toegang tot alle partisies te kry en rootfs -lêers te kopieer. Maak dus seker dat die data van uSDCard gerugsteun word, want alles op SDCard gaan verlore.

Om die naam van u SDCard -toestel te vind, verwyder SDCard en voer die volgende opdrag uit:

$ lsblk

Stoor alle erkende skyfname in u gedagtes. Plaas nou SDCard, wag 'n oomblik en voer die opdrag weer uit:

$ lsblk

Let op die nuut herkenbare skyf. Dit sal u SDCard wees. Onthou u naam en verander die parameter "of =" vir die naam van u SDCard -toestel en gebruik die apparaatnaam sonder die partisie, bv.: /dev /mmcblk0

$ sudo dd if = dragonboard-410c-sdcard-developer-buster-431.img of =/dev/XXX bs = 4M oflag = sync status = progress

Notas:

  • Hierdie opdrag sal 'n rukkie neem om uit te voer. Wees geduldig en vermy om met die terminale te peuter totdat die proses voltooi is.
  • Sodra die SD -kaart klaar is met flikker, verwyder dit van die gasheerrekenaar.

Verwysing: 96 borde dokumentasie

Stap 5: Skep bediener -NFS in die HOST en kopieer lêers

Op hierdie punt het ons 'n opstartbeeld wat na dragonboard 410c en 'n SDCard met 'n rootfs -lêerstelsel vir ons modules, dienste en toepassings ingebou moet word. Die volgende stap is om 'n afgeleë gids te skep om die USB Ethernet DEVICE aan te sluit met die HOST rootfs lêerstelsel. Dit kan gedoen word met behulp van 'n pakket van Ubuntu met die naam nfs-kernel-server.

Hierdie pakket installeer 'n NFS -diens in Ubuntu wat toelaat dat sommige gidse vir sommige toestelle op die netwerk gedeel word; ons kan instel watter gids vir elke toestel gebruik sal word deur u IP te gebruik.

Dus, laat ons die pakket installeer en dit instel.

$ sudo apt-get install nfs-kernel-server

Die NFS -diens begin outomaties. Om NFS -dienste te beheer, gebruik:

$ sudo diens nfs-kernel-server herlaai // om weer te begin, of gebruik 'stop', of 'begin' as dit nodig is.

Om die status van die NFS -diens vanaf die opdragreël te kontroleer, gebruik:

$ sudo diens nfs-kernel-bedienerstatus

nfsd loop // Diens is op nfsd loop nie // Diens is af

Kom ons maak nou 'n topgids /srv /nfs en skep 'n subgids daaronder vir elke NFS -gemonteerde wortel lêerstelsel wat benodig word. Hier bevat ons 'n gedeelde wortellêerstelsel om ons wortelstelsel te behou:

$ sudo mkdir -p /srv /nfs

$ sudo mkdir -p/srv/nfs/rootfs

Die NFS -bediener vereis dat /etc /exports korrek gekonfigureer is om toegang tot elke NFS -lêerstelselgids tot spesifieke gashere te beheer. In hierdie geval word die leërskare geïdentifiseer deur hul IP -adres. Dus, vir elke wortellêerstelsel wat geskep word, voeg die uitvoerbeheerlyn by /etc /exports, en pas indien nodig aan vir u plaaslike IP -adres en skema -naamskema. In hierdie tutoriaal gebruik ons dit altyd:

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

Plaas u SDCard weer, monteer dit en kopieer alle rootfs lêerstelsel in/srv/nfs/rootfs, herlaai NFS diens om die gids op te dateer met nuwe gekopieerde lêers.

Boonop moet ons die nuwe modules se lêers in die rootfs-lêerstelsel kopieer omdat ons die kern op stap 2 saamgestel het. Kopieer dus alle dopgehou in ~/db410c-modules/na/srv/nfs/rootfs.

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

Maak seker dat hierdie kaarte deur die NFS -diens sigbaar gemaak word. Óf:

$ sudo exportfs -a

Verwysing: TFTP/NFS -wortellêersisteem

Stap 6: Dateer Dragonboard 410c -opstartbeeld op en instel netwerkinterfaces

Ons het vroegtydig alle stappe gedoen om 'n afgeleë rootfs -lêerstelsel te implementeer, en nou moet ons die opstartbeeld in die dragonboard 410c opdateer, en daarvoor moet u u USB -kabel op u rekenaar en uUSB -aansluiting op die draakbord aansluit. Maak dus seker dat fastboot op die gasheerrekenaar opgestel is, indien nie geïnstalleer met:

$ sudo apt installeer fastboot

Om die beeld op te dateer, begin die draagonboard in die fastboot -modus deur hierdie stappe te volg:

  • Druk en hou die Vol (-) -knoppie op die DragonBoard 410c ingedruk, dit is die S4-knoppie. DragonBoard ™ 410c moet steeds NIE aangeskakel wees nie
  • Terwyl u die Vol (-) -knoppie ingedruk hou, skakel die DragonBoard 410c aan deur dit aan te sluit
  • Sodra DragonBoard 410c aan die krag gekoppel is, laat u die Vol (-) knoppie los.
  • Wag ongeveer 20 sekondes.
  • Die bord moet in die fastboot -modus begin.

Voer die volgende opdragte uit die verbindingsvenster van die aangeslote gasheermasjien uit:

$ sudo fastboot -toestelle

Gewoonlik sal dit soos hieronder verskyn

de82318 fastboot

Op hierdie punt moet u aan u DragonBoard 410c gekoppel wees met 'n USB na mikroUSB -kabel. U DragonBoard 410c moet in die fastboot -modus gestart word en gereed wees om met die toepaslike beelde geflits te word. Kom ons werk die opstartbeeld op met ons selfbeeld:

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

En herbegin die bord

$ sudo fastboot herlaai

U HOST sal nou 'n nuwe koppelvlak met die naam usb0 opspoor, maar dit het nog nie 'n IP nie. Voeg dus 'n statiese IP by hierdie koppelvlak met behulp van:

$ sudo ifconfig usb0 10.42.0.1 netmasker 255.255.255.0 op

Of voer 'Configuration' in op HOST in die item 'netwerk' en stel USB Ethernet 'n statiese IP in vir die koppelvlak.

Herbegin die draakbord weer en verifieer die begin van die stelsel en probeer om verbinding te maak met ssh:

$ ssh [email protected]

Verwysings:

  • 96 borde dokumentasie
  • HowtoForge - item 6

Aanbeveel: