Indholdsfortegnelse:
- Trin 1: Krav
- Trin 2: Konfiguration af vært til at bygge kerne og bygge kerne i HOST
- Trin 3: Genopbyg Boot.img i HOST
- Trin 4: Oprettelse af rodfilsystem i HOST
- Trin 5: Oprettelse af Server NFS i HOST og kopiering af filer
- Trin 6: Opdatering af Dragonboard 410c Boot Image og konfiguration af netværksgrænseflader
Video: Adgang til eksternt rodfilsystem ved hjælp af DB410 som ethernetdongle: 6 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:28
Mål:
- Installer værktøjskæde og kompilér kernen igen for at indsætte USB Ethernet CDC Gadget -understøttelse;
- Genskab boot.img fra Linaro for at starte USB Ethernet CDC;
- Opret NFS -server til at være vært for rodfilsystem;
- IP -konfiguration i ENHED og HOST.
Trin 1: Krav
Du skal bruge følgende itens:
- En DragonBoard ™ 410c (navngivet her ENHED);
- En pc, der bruger Ubuntu 16.04.3 opdateret (navngivet her HOST) med internetforbindelse og SDCard -slot;
- En ren installation af Linaro -udvikler version 431 - Link: Snapshot Linaro Debian v431
- En HDMI -skærm;
- Et USB -tastatur;
- Et 8 Gb SDCard;
- Et USB -kabel, uUSB USB til tilslutning af ENHEDEN på HOST.
Trin 2: Konfiguration af vært til at bygge kerne og bygge kerne i HOST
Først opretter vi alle mapper, før vi kan fortsætte. Så:
$ cd ~
$ mkdir db410remoteroot $ cd db410remoteroot $ mkdir værktøjskæde $ mkdir db410c-moduler
Desværre understøtter Linux -kerne, der bruges af Linaro (Version 431) ikke understøttelse af USB Ethernet -gadget, derfor skal Linux -kernen genopbygges til denne specifikke version. Download Linaro værktøjskæde til at bygge og implementere linux -kerne på Dragonboard410c fra x86 -værtsmaskine.
$ wget
$ tar -xf gcc-*-x86_64_aarch64-linux-gnu.tar.xz -C./toolchain --strip-komponenter = 1
Installer nu pakker, der er nødvendige for at bygge kernen:
$ sudo apt update && sudo apt-get install git build-essential abootimg kernel-pakke fakeroot libncurses5-dev libssl-dev ccache
Få Linux Kernel source Clone Qualcomm landing team Linux repository:
$ git klon
$ cd-kerne $ git checkout origin/release/qcomlt-4.14 -b my-custom-4.14
Indstil nu kompilationsmiljøvariabler:
$ eksport ARCH = arm64
$ eksport CROSS_COMPILE = $ (pwd) /../ toolchain/bin/aarch64-linux-gnu-
På dette tidspunkt skal vi tilføje modulerne til USB Ethernet CDC i kernen. Jeg gjorde det før, og du kan få dette i slutningen af dette trin. Jeg fjernede nogle itens, men det virker.
Inden du kompilerer, skal du rette en kernefejl i drivers/mmc/host/sdhci-msm.c og ændre 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};
Komprimér configfile.zip, kopier.config -fil til kernemappe, opbyg kerne, moduler og installer moduler i et bibliotek:
$ make -j $ (nproc) Image.gz dtbs
$ make -j $ (nproc) moduler $ make modules_install INSTALL_MOD_PATH =../db410c -modules
Reference: 96Boarddokumentation
Trin 3: Genopbyg Boot.img i HOST
I dette trin skal vi åbne initrd -billedet, placere modulerne, der er bygget inde i billedet, konfigurere systemet til at starte modulerne og genopbygge et initrd.img med en ny kernelkommandolinje for at starte root -filsystem eksternt.
Så først skal vi downloade initrd.img fra linaro -webstedet:
$ cd..
$ mkdir inird_nfs $ cd initrd_nfs $ wget -O ramdisk.img
Nu, efter download, skal du komprimere og udpakke initrd:
$ zcat ramdisk.img | cpio -idmv
I dette bibliotek har vi rodfilsystemet, der bruges af kernen ved initialisering, så vi konfigurerer USB Ethernet CDC -moduler og NFS -fjernparametre som NFS -server -IP og ethernet (usb), der er nødvendige her.
Lad os nu konfigurere nogle filer:
conf/initramfs.conf:
MODULER = de fleste
BUSYBOX = auto COMPRESS = gzip DEVICE = usb0 NFSROOT = auto RUNSIZE = 10%
Opret mappen init-premount i bibliotekets scripts/
$ mkdir scripts/init-premount
og tilføj filerne i disse netop oprettede bibliotek:
BESTILLE
/scripts/init-premount/usb "$@"
[-e /conf/param.conf] &&. /conf/param.conf
usb
#!/bin/sh
PREREQ = "" prereqs () {echo "$ PREREQ"} case $ 1 i # få forudsætninger prereqs) prereqs exit 0;; esac modprobe usb_f_ecm modprobe libcomposite modprobe usb_f_rndis modprobe g_ether
Glem ikke at bruge chmod i usb -fil for at gøre den eksekverbar:
$ chmod +x scripts/init-premount/usb
Kopier nu alle biblioteker med modulerne fra db410c-moduler (TRIN 2) til lib/modules i initrd:
$ cp -R../db410-modules/lib usr/
Fjern alle filer i lib/modules/4.14.96-xxxx-dirty undtagen alle filmoduler.* Og den filliste:
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 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 kernel/drivers/usb/gadget/function/usb_f_ecm_subset.ko kernel/drivers/usb/gadget/libcomposite.ko
Disse filer er alle moduler, der er nødvendige for at starte USB Ethernet CDC.
Pak endelig om og komprimér initrd -billedet:
$ find. | cpio -o -H nyc | gzip -9>../kernel/initrd_nfs.img
I det mindste skal kernebilledet og DTB -filen pakkes ind i et Android -boot -billede. Et sådant billede kan genereres med abootimg -værktøj.
Lad os gå ind i kernemappen og bruge kommandoen herunder til at opbygge billede og tilføje DTB i det komprimerede kernebillede:
$ cd../kernel
$ cat arch/$ ARCH/boot/Image.gz arch/$ ARCH/boot/dts/qcom/apq8016-sbc.dtb> Image.gz+dtb
Og endelig, generer boot -billedet (her er vores rootfs placeret en fjernpartition i 10.42.0.1)
abootimg --create boot -db410c.img -k Image.gz+dtb -r initrd_nfs.img -c siderstørrelse = 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"
Referencer:
- https://access.redhat.com/solutions/24029
- 96Tavle Dokumentation
Trin 4: Oprettelse af rodfilsystem i HOST
Nu har vi fået et nyt boot -billede til at opdatere Dragonboard 410c. Men vi har brug for et rodfilsystem i fjernserveren for at starte moduler, tjenester og applikationer. I dette trin opbygger vi et delt bibliotek i værten for at gemme alle disse data. På den måde, lad os downloade et rootfs -filsystem fra linaro -websted med den samme version, der bruges i initrd. Så gå tilbage en mappe og download linaro-developer rootfs image med version 431.
$ cd..
$ wget
Komprimer denne fil
$ unzip dragonboard-410c-sdcard-developer-buster-431.zip
Ved hjælp af denne fil, lad os skrive alt billede i et sdcard for at få adgang til alle partitioner og kopiere rootfs -filer. Så sørg for, at data fra uSDCard sikkerhedskopieres, fordi alt på SDCard går tabt.
For at finde dit SDCard -enhedsnavn skal du fjerne SDCard og køre følgende kommando:
$ lsblk
Gem alle dine genkendte disknavne i dit sind. Indsæt nu SDCard, vent et øjeblik og udfør kommandoen igen:
$ lsblk
Bemærk den nyligt genkendte disk. Dette bliver dit SDCard. Husk dit navn og ændr parameteren "of =" for dit SDCard -enhedsnavn, og sørg for at bruge enhedsnavnet uden partitionen, p.e.: /dev /mmcblk0
$ sudo dd if = dragonboard-410c-sdcard-developer-buster-431.img of =/dev/XXX bs = 4M oflag = sync status = progress
Bemærkninger:
- Denne kommando tager noget tid at udføre. Vær tålmodig og undgå at manipulere med terminalen, indtil processen er afsluttet.
- Når SD -kortet er færdigt med at blinke, fjernes det fra værtscomputeren.
Reference: 96boards dokumentation
Trin 5: Oprettelse af Server NFS i HOST og kopiering af filer
På dette tidspunkt har vi et boot -billede, der skal flashes ind i dragonboard 410c og et SDCard med et rootfs -filsystem til vores moduler, tjenester og applikationer. Det næste trin er at oprette et fjernt bibliotek for at forbinde USB Ethernet DEVICE sammen med HOST rootfs filsystem. Det kan gøres ved hjælp af en pakke fra Ubuntu med navnet nfs-kernel-server.
Denne pakke installerer en NFS -service i Ubuntu, der tillader at dele nogle biblioteker for nogle enheder på netværket, vi kan konfigurere, hvilket bibliotek der skal bruges til hver enhed ved hjælp af din IP.
Så lad os installere pakken og konfigurere den.
$ sudo apt-get install nfs-kernel-server
NFS -tjenesten starter automatisk. For at kontrollere NFS -tjenester skal du bruge:
$ sudo service nfs-kernel-server restart // for at genstarte, eller brug 'stop' eller 'start' efter behov.
For at kontrollere status for NFS -tjenesten fra kommandolinjen skal du bruge:
$ sudo service nfs-kernel-server status
nfsd kører // Service er oppe nfsd kører ikke // Service er nede
Lad os nu oprette en topmappe /srv /nfs og oprette et underkatalog for hvert påkrævet NFS -monteret rodfilsystem. Her inkluderer vi et delt rodfilsystem for at beholde vores rodfilsystem:
$ sudo mkdir -p /srv /nfs
$ sudo mkdir -p/srv/nfs/rootfs
Nu kræver NFS -serveren /etc /exports at blive konfigureret korrekt for at kontrollere adgangen til hvert NFS -filsystemkatalog til bestemte værter. I dette tilfælde identificeres værterne ved deres IP -adresse. Så for hvert rodfilsystem, der oprettes, tilføj eksportkontrollinjen til /etc /exports, juster om nødvendigt din lokale IP -adresse og bibliotekets navngivningsskema. I denne vejledning bruger vi altid det:
/srv/nfs/rootfs 10.42.0.2 (rw, sync, no_root_squash, no_subtree_check)
Indsæt dit SDCard igen, monter det og kopier alle rootfs filsystem til/srv/nfs/rootfs, genstart NFS service for at opdatere biblioteket ved hjælp af nye kopierede filer.
Ydermere skal vi kopiere de nye modulfiler til rootfs-filsystem, fordi vi kompilerede kernen på trin 2. Så kopier alle mapper i ~/db410c-modules/til/srv/nfs/rootfs.
$ sudo cp -R ~/db410c -modules/*/srv/nfs/rootfs/
Sørg for, at disse biblioteker bliver synlige af NFS -tjenesten. Enten:
$ sudo exportfs -a
Reference: TFTP/NFS rodfilsystem
Trin 6: Opdatering af Dragonboard 410c Boot Image og konfiguration af netværksgrænseflader
Vi foretog tidligt alle trin for at implementere et eksternt rootfs -filsystem, nu skal vi opdatere boot -billedet inde i dragonboard 410c, til det skal du tilslutte dit USB -kabel på pc'en og på dragonboard -uUSB -stikket. Så sørg for at fastboot er konfigureret på værtscomputeren, hvis den ikke installeres ved hjælp af:
$ sudo apt installer fastboot
Nu for at opdatere billedet, start dragonboardet i fastboot -tilstand ved at følge disse trin:
- Tryk og hold Vol (-) -knappen nede på DragonBoard 410c, dette er S4-knappen. DragonBoard ™ 410c bør stadig IKKE være tændt
- Mens du holder Vol (-)-knappen, tænd DragonBoard 410c ved at tilslutte den
- Når DragonBoard 410c er tilsluttet strøm, skal du slippe holdet på Vol (-) -knappen.
- Vent i cirka 20 sekunder.
- Boardet skal starte i fastboot -tilstand.
Kør følgende kommandoer fra det tilsluttede værtsmaskinterminalvindue:
$ sudo fastboot -enheder
Typisk vil det blive vist som nedenfor
de82318 fastboot
På dette tidspunkt skal du være tilsluttet din DragonBoard 410c med et USB til microUSB -kabel. Din DragonBoard 410c skal startes i fastboot -tilstand og klar til at blive blinket med de relevante billeder. Lad os opdatere boot -image med vores boot -image:
$ sudo fastboot flash boot ~/db410remoteroot/kernel/initrd_nfs.img
Og genstart tavlen
$ sudo fastboot genstart
Nu vil din HOST registrere en ny grænseflade ved navn usb0, men den har endnu ikke en IP. Så tilføj en statisk IP til denne grænseflade ved hjælp af:
$ sudo ifconfig usb0 10.42.0.1 netmask 255.255.255.0 op
Eller indtast i "Konfiguration" på HOST, i punktet "netværk", og indstil USB Ethernet en statisk IP til denne grænseflade.
Genstart nu dragonen igen, og kontroller systemstart, og prøv at oprette forbindelse ved hjælp af ssh:
$ ssh [email protected]
Referencer:
- 96boards dokumentation
- HowtoForge - punkt 6
Anbefalede:
Adgang til dine Solaredge -data ved hjælp af Python: 4 trin
Adgang til dine Solaredge -data ved hjælp af Python: Fordi dataene fra solaredge -transformatorerne ikke gemmes lokalt, men på solaredge -serverne ønskede jeg at bruge mine data lokalt, på denne måde kan jeg bruge dataene i mine egne programmer. Jeg viser dig, hvordan du kan anmode om dine data på solaredge -websiderne
Vægmontering til iPad som hjemmeautomatiseringskontrolpanel, ved hjælp af servostyret magnet til aktivering af skærm: 4 trin (med billeder)
Vægmontering til iPad Som hjemmeautomatiseringskontrolpanel, ved hjælp af servostyret magnet til aktivering af skærm: På det seneste har jeg brugt ret lang tid på at automatisere ting i og omkring mit hus. Jeg bruger Domoticz som min hjemmeautomatiseringsapplikation, se www.domoticz.com for detaljer. I min søgning efter et dashboard -program, der viser alle Domoticz -oplysninger sammen
Trådløs fjernbetjening ved hjælp af 2,4 GHz NRF24L01 -modul med Arduino - Nrf24l01 4 -kanals / 6 -kanals sender modtager til Quadcopter - Rc Helikopter - Rc -fly ved hjælp af Arduino: 5 trin (med billeder)
Trådløs fjernbetjening ved hjælp af 2,4 GHz NRF24L01 -modul med Arduino | Nrf24l01 4 -kanals / 6 -kanals sender modtager til Quadcopter | Rc Helikopter | Rc -fly ved hjælp af Arduino: At betjene en Rc -bil | Quadcopter | Drone | RC -fly | RC -båd, vi har altid brug for en modtager og sender, antag at vi til RC QUADCOPTER har brug for en 6 -kanals sender og modtager, og den type TX og RX er for dyr, så vi laver en på vores
Sådan får du adgang til din musik hvor som helst med din Mac Mini: 5 trin
Sådan får du adgang til din musik hvor som helst med din Mac Mini: Denne instruktør gør din computer til en privat delingsserver. Det vil være vært for din musik, så kun du kan komme til det. Men hvis din internetforbindelse er hurtig nok, vil du kunne få adgang til den fra hele verden. Hvor er det fedt
Få adgang til Kontroller en server eller næsten enhver Windows -computer eksternt: 6 trin
Få adgang til Kontroller en server eller næsten enhver Windows -computer eksternt: Denne instruktive er en kombination af et par ideer, som jeg har set her på instruktører. Ha4xor4life udsendte let en instruerbar kaldet Check up på din personlige filserver. Det er en god idé, men det krævede en skærm med to input