Innholdsfortegnelse:

Få tilgang til eksternt rotfilsystem ved bruk av DB410 som en Ethernet -dongle: 6 trinn
Få tilgang til eksternt rotfilsystem ved bruk av DB410 som en Ethernet -dongle: 6 trinn

Video: Få tilgang til eksternt rotfilsystem ved bruk av DB410 som en Ethernet -dongle: 6 trinn

Video: Få tilgang til eksternt rotfilsystem ved bruk av DB410 som en Ethernet -dongle: 6 trinn
Video: Под файловой системой: погрузитесь глубже в NTFS и ReFS! 2024, Juli
Anonim
Få tilgang til eksternt rotfilsystem ved hjelp av DB410 som en Ethernet -Dongle
Få tilgang til eksternt rotfilsystem ved hjelp av DB410 som en Ethernet -Dongle

Mål:

  • Installer verktøykjede og kompiler kjernen for å sette inn USB Ethernet CDC Gadget -støtte;
  • Gjenopprett boot.img fra Linaro for å starte USB Ethernet CDC;
  • Lag NFS -server for å være vert for rotfilsystemet;
  • IP -konfigurasjon i ENHET og HOST.

Trinn 1: Krav

Du trenger følgende itens:

  1. En DragonBoard ™ 410c (navngitt her ENHET);
  2. En PC som bruker Ubuntu 16.04.3 oppdatert (navngitt her HOST) med internettilkobling og SDCard -spor;
  3. En ren installasjon av Linaro -utvikler versjon 431 - Link: Snapshot Linaro Debian v431
  4. En HDMI -skjerm;
  5. Et USB -tastatur;
  6. Et 8 GB SDCard;
  7. En USB -kabel, uUSB USB for å koble ENHETEN på HOST.

Trinn 2: Konfigurere vert for å bygge kjerne og bygge kjerne i HOST

Først oppretter vi alle kataloger før vi kan fortsette. Så:

$ cd ~

$ mkdir db410remoteroot $ cd db410remoteroot $ mkdir verktøykjede $ mkdir db410c-moduler

Dessverre har ikke Linux -kjernen som brukes av Linaro (versjon 431) støtte for USB Ethernet -gadget, på grunn av det må Linux -kjernen bygges om for denne spesifikke versjonen. Last ned Linaro verktøykjede for å bygge og distribuere Linux -kjernen på Dragonboard410c fra x86 vertsmaskin.

$ wget

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

Installer nå pakker som kreves for å bygge kjernen:

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

Få Linux Kernel source Clone Qualcomm landing team Linux repository:

$ git klon

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

Sett nå kompilasjonsmiljøvariabler:

$ eksport ARCH = arm64

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

På dette tidspunktet må vi legge modulene til USB Ethernet CDC i kjernen. Jeg gjorde det før, og du kan få dette på slutten av dette trinnet. Jeg fjernet noen itens, men det fungerer.

Før du kompilerer, må du rette en kjernefeil i drivers/mmc/host/sdhci-msm.c og endre strukturen i linjen 1150 til:

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

Komprimer configfile.zip, kopier.config -filen til kjernekatalogen, bygg kjernen, moduler og installer moduler i en katalog:

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

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

Referanse: 96Boarddokumentasjon

Trinn 3: Ombygg Boot.img i HOST

I dette trinnet må vi åpne initrd -bildet, sette modulene som er bygget inne i bildet, konfigurere systemet til å starte modulene og bygge en initrd.img med en ny kjernekommandolinje for å starte rotfilsystemet eksternt.

Så først må vi laste ned initrd.img fra linaro nettsted:

$ cd..

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

Nå, etter nedlasting, pakker du ut og pakker ut initrd:

$ zcat ramdisk.img | cpio -idmv

I denne katalogen har vi rotfilsystemet som kjernen bruker ved initialisering, så vi konfigurerer USB Ethernet CDC -moduler og NFS -eksterne parametere som NFS -server -IP og ethernet (usb) som trengs her.

La oss konfigurere noen filer:

conf/initramfs.conf:

MODULER = de fleste

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

Opprett katalogen init-premount i katalogskriptene/

$ mkdir-skript/init-premount

og legg til filene i denne nettopp opprettede katalogen:

REKKEFØLGE

/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

Ikke glem å bruke chmod i usb -filen for å gjøre den kjørbar:

$ chmod +x scripts/init-premount/usb

Nå, kopier alle katalogene med modulene fra db410c-moduler (TRINN 2) til lib/modules i initrd:

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

Fjern alle filene i lib/modules/4.14.96-xxxx-dirty unntatt alle filmodulene.* Og den fillisten:

kjerne/drivere/usb/gadget/legacy/g_ether.ko

kjerne/drivere/usb/gadget/legacy/g_mass_storage.ko kjerne/drivere/usb/gadget/legacy/g_cdc.ko kjerne/drivere/usb/gadget/legacy/g_serial.ko kjerne/drivere/usb/gadget/funksjon/usb_f_mass_storage.ko kjerne/drivere/usb/gadget/funksjon/usb_f_acm.ko kjerne/drivere/usb/gadget/funksjon/u_ether.ko kjerne/drivere/usb/gadget/funksjon/usb_f_obex.ko kjerne/drivere/usb/gadget/funksjon /usb_f_serial.ko kjerne/drivere/usb/gadget/funksjon/usb_f_ecm.ko kjerne/drivere/usb/gadget/funksjon/usb_f_rndis.ko kjerne/drivere/usb/gadget/funksjon/u_serial.ko kjerne/drivere/usb/gadget /function/usb_f_fs.ko kjerne/drivers/usb/gadget/function/usb_f_ecm_subset.ko kjerne/drivers/usb/gadget/libcomposite.ko

Disse filene er alle moduler som trengs for å starte USB Ethernet CDC.

Endelig pakk om og komprimér initrd -bildet:

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

I det minste må kjernebildet og DTB -filen pakkes inn i et Android -oppstartsbilde. Et slikt bilde kan genereres med abootimg -verktøyet.

La oss gå inn i kjernekatalogen og bruk kommandoen nedenfor for å bygge bilde og legge til DTB i det komprimerte kjernebildet:

$ cd../kernel

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

Og til slutt, generer oppstartsbildet (her ligger våre rootfs en ekstern partisjon i 10.42.0.1)

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

Referanser:

  • https://access.redhat.com/solutions/24029
  • 96Borddokumentasjon

Trinn 4: Opprette rotfilsystem i HOST

Nå har vi et nytt oppstartsbilde for å oppdatere dragonboard 410c. Men vi trenger et rotfilsystem i den eksterne serveren for å starte opp moduler, tjenester og applikasjoner. I dette trinnet vil vi bygge en delt katalog i verten for å lagre alle disse dataene. På den måten, la oss laste ned et rootfs filsystem fra linaro nettsted med samme versjon som ble brukt i initrd. Så gå tilbake en katalog og last ned linaro-developer rootfs image med versjon 431.

$ cd..

$ wget

Komprimer denne filen

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

Ved å bruke denne filen, la oss skrive alt bildet i et sdcard for å få tilgang til alle partisjoner og kopiere rootfs -filer. Så sørg for at data fra uSDCard blir sikkerhetskopiert fordi alt på SDCard vil gå tapt.

For å finne SDCard -enhetsnavnet ditt, fjern SDCard og kjør følgende kommando:

$ lsblk

Lagre i tankene alle gjenkjente disknavn. Sett inn SDCard, vent et øyeblikk og utfør kommandoen igjen:

$ lsblk

Legg merke til den nylig gjenkjente disken. Dette blir ditt SDCard. Husk navnet ditt og endre parameteren "of =" for SDCard -enhetsnavnet ditt, og husk å bruke enhetsnavnet uten partisjonen, s.: /Dev /mmcblk0

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

Merknader:

  • Denne kommandoen vil ta litt tid å utføre. Vær tålmodig og unngå å tukle med terminalen til prosessen er avsluttet.
  • Når SD -kortet er ferdig med å blinke, fjern det fra vertsmaskinen.

Referanse: 96boards dokumentasjon

Trinn 5: Opprette Server NFS i HOST og kopiere filer

På dette punktet har vi et oppstartsbilde som skal flashes inn i dragonboard 410c og et SDCard med et rootfs filsystem for våre moduler, tjenester og applikasjoner. Det neste trinnet er å lage en ekstern katalog for å koble USB Ethernet DEVICE sammen med HOST rootfs filsystem. Det kan gjøres ved å bruke en pakke fra Ubuntu som heter nfs-kernel-server.

Denne pakken installerer en NFS -tjeneste i Ubuntu som tillater å dele noen kataloger for noen enheter på nettverket, vi kan konfigurere hvilken katalog som skal brukes for hver enhet ved å bruke din IP.

Så la oss installere pakken og konfigurere den.

$ sudo apt-get install nfs-kernel-server

NFS -tjenesten starter automatisk. Bruk følgende for å kontrollere NFS -tjenester:

$ sudo service nfs-kernel-server restart // for å starte på nytt, eller bruk 'stop' eller 'start' etter behov.

For å kontrollere statusen til NFS -tjenesten fra kommandolinjen, bruk:

$ sudo service nfs-kernel-server status

nfsd kjører // Tjenesten er opp nfsd kjører ikke // Tjenesten er nede

La oss nå lage en toppkatalog /srv /nfs, og lage en underkatalog under det for hvert NFS -montert rotfilsystem som kreves. Her inkluderer vi et delt rotfilsystem for å beholde vårt rotfilsystem:

$ sudo mkdir -p /srv /nfs

$ sudo mkdir -p/srv/nfs/rootfs

Nå krever NFS -serveren /etc /exports å være riktig konfigurert for å kontrollere tilgangen til hver NFS -filsystemkatalog til bestemte verter. I dette tilfellet identifiseres vertene med deres IP -adresse. Så, for hvert rotfilsystem som opprettes, legger du til eksportkontrollinjen til /etc /exports, justerer for din lokale IP -adresse og katalognavnet hvis det er nødvendig. I denne opplæringen bruker vi alltid det:

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

Sett inn ditt SDCard igjen, monter det og kopier alle rootfs filsystem til/srv/nfs/rootfs, start NFS på nytt for å oppdatere katalogen ved hjelp av nye kopierte filer.

Dessuten må vi kopiere de nye modulfilene til rootfs filsystem fordi vi kompilerte kjernen på trinn 2. Så kopier alle kataloger i ~/db410c-modules/til/srv/nfs/rootfs.

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

Sørg for at disse katalogene blir synlige av NFS -tjenesten. Enten:

$ sudo exportfs -a

Referanse: TFTP/NFS rotfilsystem

Trinn 6: Oppdatere Dragonboard 410c Boot Image og konfigurere nettverksgrensesnitt

Vi tok tidlige trinn for å implementere et eksternt rootfs filsystem, nå må vi oppdatere oppstartsbildet inne i dragonboard 410c, for det, koble din USB -kabel til PC og til dragonboard uUSB -kontakt. Så sørg for at fastboot er satt opp på vertsdatamaskinen, hvis ikke installer ved hjelp av:

$ sudo apt installer fastboot

Nå for å oppdatere bildet, start dragonboardet i hurtigstartmodus ved å følge disse trinnene:

  • Trykk og hold Vol (-) -knappen på DragonBoard 410c, dette er S4-knappen. DragonBoard ™ 410c skal fortsatt IKKE slås på
  • Mens du holder Vol (-)-knappen, slår du på DragonBoard 410c ved å koble den til
  • Når DragonBoard 410c er koblet til strøm, slipper du å holde Vol (-) -knappen.
  • Vent i omtrent 20 sekunder.
  • Brettet skal starte opp i hurtigstartmodus.

Kjør følgende kommandoer fra det tilkoblede vertsmaskinens terminalvindu:

$ sudo fastboot -enheter

Vanligvis vil det vises som nedenfor

de82318 fastboot

På dette tidspunktet bør du være koblet til DragonBoard 410c med en USB til microUSB -kabel. DragonBoard 410c bør startes opp i hurtigstartmodus og være klar til å bli blinket med de riktige bildene. La oss oppdatere oppstartsbildet med vårt oppstartsbilde:

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

Og start brettet på nytt

$ sudo fastboot omstart

Nå vil din HOST oppdage et nytt grensesnitt som heter usb0, men det har ikke en IP ennå. Så legg til en statisk IP til dette grensesnittet ved å bruke:

$ sudo ifconfig usb0 10.42.0.1 netmask 255.255.255.0 opp

Eller skriv inn "Konfigurasjon" på HOST, i elementet "nettverk", og angi USB Ethernet som en statisk IP til det grensesnittet.

Start på nytt dragonboardet på nytt og bekreft systemoppstarten, prøv å koble til med ssh:

$ ssh [email protected]

Referanser:

  • 96boards dokumentasjon
  • HowtoForge - artikkel 6

Anbefalt: