Innehållsförteckning:
- Steg 1: Krav
- Steg 2: Konfigurera värd för att bygga kärna och bygga kärna i HOST
- Steg 3: Bygg om Boot.img i HOST
- Steg 4: Skapa rotfilsystem i HOST
- Steg 5: Skapa Server NFS i HOST och kopiera filer
- Steg 6: Uppdatera Dragonboard 410c Boot Image och konfigurera nätverksgränssnitt
Video: Få åtkomst till fjärrrotfilsystem med DB410 som en Ethernet -Dongle: 6 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:45
Mål:
- Installera verktygskedja och kompilera om kärnan för att sätta in USB Ethernet CDC Gadget -stöd;
- Återskapa boot.img från Linaro för att starta USB Ethernet CDC;
- Skapa NFS -server för att vara värd för rotfilsystem;
- IP -konfiguration i ENHET och HOST.
Steg 1: Krav
Du behöver följande itens:
- En DragonBoard ™ 410c (heter här ENHET);
- En dator med Ubuntu 16.04.3 uppdaterad (heter här HOST) med internetanslutning och SDCard -kortplats;
- En ren installation av Linaro -utvecklare version 431 - Länk: Snapshot Linaro Debian v431
- En HDMI -skärm;
- Ett USB -tangentbord;
- Ett 8 Gb SDCard;
- En USB -kabel, uUSB USB för att ansluta ENHETEN på HOST.
Steg 2: Konfigurera värd för att bygga kärna och bygga kärna i HOST
Först skapar vi alla kataloger innan vi fortsätter. Så:
$ cd ~
$ mkdir db410remoteroot $ cd db410remoteroot $ mkdir verktygskedja $ mkdir db410c-moduler
Tyvärr har Linux -kärnan som används av Linaro (version 431) inte stöd för USB Ethernet -gadget, därför måste Linux -kärnan byggas om för den här specifika versionen. Ladda ner Linaro toolchain för att bygga och distribuera Linux -kärnan på Dragonboard410c från x86 -värdmaskin.
$ wget
$ tar -xf gcc-*-x86_64_aarch64-linux-gnu.tar.xz -C./toolchain --strip-components = 1
Installera nu paket som krävs för att bygga kärnan:
$ sudo apt update && sudo apt-get install git build-essential abootimg kernel-package fakeroot libncurses5-dev libssl-dev ccache
Skaffa Linux Kernel source Clone Qualcomm landing team Linux repository:
$ git-klon
$ cd-kärnan $ git checkout origin/release/qcomlt-4.14 -b my-custom-4.14
Ställ nu in kompilationsmiljövariabler:
$ export ARCH = arm64
$ export CROSS_COMPILE = $ (pwd) /../ toolchain/bin/aarch64-linux-gnu-
Vid denna tidpunkt måste vi lägga till modulerna till USB Ethernet CDC i kärnan. Jag gjorde det förut och du kan få det här i slutet av det här steget. Jag tog bort några itens men det fungerar.
Innan du kompilerar, korrigera en kärnfel till drivers/mmc/host/sdhci-msm.c genom att ändra strukturen i raden 1150 till:
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};
Komprimera configfile.zip, kopiera.config -filen till kärnkatalogen, bygg kärnan, moduler och installera moduler i en katalog:
$ make -j $ (nproc) Image.gz dtbs
$ make -j $ (nproc) moduler $ make modules_install INSTALL_MOD_PATH =../db410c -modules
Referens: 96Boards Documentation
Steg 3: Bygg om Boot.img i HOST
I det här steget måste vi öppna initrd -bilden, sätta modulerna inbyggda i bilden, konfigurera systemet för att starta modulerna och bygga om en initrd.img med en ny kommandorad för att starta rotfilsystemet på distans.
Så först måste vi ladda ner initrd.img från linaros webbplats:
$ cd..
$ mkdir inird_nfs $ cd initrd_nfs $ wget -O ramdisk.img
Nu, efter nedladdning, packa upp och extrahera initrd:
$ zcat ramdisk.img | cpio -idmv
I den här katalogen har vi rotfilsystemet som används av kärnan vid initialisering, så vi konfigurerar USB Ethernet CDC -moduler och NFS -fjärrparametrar som NFS -server -IP och ethernet (usb) som behövs här.
Låt oss nu konfigurera några filer:
conf/initramfs.conf:
MODULER = de flesta
BUSYBOX = auto COMPRESS = gzip DEVICE = usb0 NFSROOT = auto RUNSIZE = 10%
Skapa katalogen init-premount i katalogskripten/
$ mkdir-skript/init-premount
och lägg till filerna i dessa just skapade katalog:
BESTÄLLA
/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
Glöm inte att använda chmod i usb -fil för att göra den körbar:
$ chmod +x scripts/init-premount/usb
Kopiera nu alla kataloger med modulerna från db410c-moduler (STEG 2) till lib/modules i initrd:
$ cp -R../db410-modules/lib usr/
Ta bort alla filer i lib/modules/4.14.96-xxxx-dirty utom alla filmoduler.* Och den fillistan:
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 -kärnan/drivers/usb/gadget/function/usb_f_ecm.ko -kärnan/drivers/usb/gadget/function/usb_f_rndis.ko -kärnan/drivers/usb/gadget/function/u_serial.ko -kärnan/drivers/usb/gadget /function/usb_f_fs.ko -kärnan/drivers/usb/gadget/function/usb_f_ecm_subset.ko -kärnan/drivers/usb/gadget/libcomposite.ko
Dessa filer är alla moduler som behövs för att starta USB Ethernet CDC.
Slutligen packa om och komprimera initrd -bilden:
$ hitta. | cpio -o -H newc | gzip -9>../kernel/initrd_nfs.img
Åtminstone måste kärnbilden och DTB -filen packas in i en Android -startbild. Sådan bild kan genereras med abootimg -verktyg.
Låt oss i kärnkatalogen och använd kommandot nedan för att bygga bild och lägga till DTB i den komprimerade kärnbilden:
$ cd../kernel
$ cat arch/$ ARCH/boot/Image.gz arch/$ ARCH/boot/dts/qcom/apq8016-sbc.dtb> Image.gz+dtb
Och slutligen, generera startbilden (här ligger våra rootfs en fjärrpartition i 10.42.0.1)
abootimg -skapa boot -db410c.img -k Image.gz+dtb -r initrd_nfs.img -c sidstorlek = 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"
Referenser:
- https://access.redhat.com/solutions/24029
- 96Tavlor Dokumentation
Steg 4: Skapa rotfilsystem i HOST
Nu har vi en ny startbild för att uppdatera Dragonboard 410c. Men vi behöver ett rotfilsystem i fjärrservern för att starta moduler, tjänster och applikationer. I det här steget kommer vi att bygga en delad katalog i värden för att spara alla dessa data. På det sättet, låt oss ladda ner ett rootfs filsystem från linaro -webbplats med samma version som används i initrd. Så gå tillbaka en katalog och ladda ner linaro-developer rootfs-bild med version 431.
$ cd..
$ wget
Komprimera den här filen
$ packa upp dragonboard-410c-sdcard-developer-buster-431.zip
Med den här filen, låt oss skriva all bild i ett sdcard för att komma åt alla partitioner och kopiera rootfs -filer. Så se till att data från uSDCard säkerhetskopieras eftersom allt på SDCard går förlorat.
För att hitta ditt SDCard -enhetsnamn, ta bort SDCard och kör följande kommando:
$ lsblk
Spara i ditt sinne alla erkända disknamn. Sätt nu in SDCard, vänta en stund och kör kommandot igen:
$ lsblk
Notera den nyligen erkända disken. Detta blir ditt SDCard. Kom ihåg ditt namn och ändra parametern "of =" för ditt SDCard -enhetsnamn och se till att använda enhetsnamnet utan partitionen, p.e.: /dev /mmcblk0
$ sudo dd if = dragonboard-410c-sdcard-developer-buster-431.img of =/dev/XXX bs = 4M oflag = sync status = progress
Anmärkningar:
- Detta kommando tar lite tid att utföra. Var tålmodig och undvik att manipulera terminalen tills processen är slut.
- När SD -kortet har blinkat tar du bort det från värddatorn.
Referens: 96boards dokumentation
Steg 5: Skapa Server NFS i HOST och kopiera filer
I denna punkt har vi en startbild som ska flashas in i dragonboard 410c och ett SDCard med ett rootfs filsystem för våra moduler, tjänster och applikationer. Nästa steg är att skapa en fjärrkatalog för att ansluta USB Ethernet -ENHETEN tillsammans med HOST rootfs -filsystem. Det kan göras med ett paket från Ubuntu som heter nfs-kernel-server.
Detta paket installerar en NFS -tjänst i Ubuntu som tillåter att dela några kataloger för vissa enheter i nätverket, vi kan konfigurera vilken katalog som ska användas för varje enhet med din IP.
Så, låt oss installera paketet och konfigurera det.
$ sudo apt-get install nfs-kernel-server
NFS -tjänsten startar automatiskt. För att styra NFS -tjänster använder du:
$ sudo service nfs-kernel-server restart // för att starta om, eller använd 'stop' eller 'start' efter behov.
För att kontrollera statusen för NFS -tjänsten från kommandoraden, använd:
$ sudo service nfs-kernel-server status
nfsd körs // Tjänsten är upp nfsd körs inte // Tjänsten är nere
Låt oss nu skapa en toppkatalog /srv /nfs och skapa en underkatalog under den för varje NFS -monterat rotfilsystem som krävs. Här inkluderar vi ett delat rotfilsystem för att behålla vårt rotfilsystem:
$ sudo mkdir -p /srv /nfs
$ sudo mkdir -p/srv/nfs/rootfs
Nu kräver NFS -servern /etc /exports att konfigureras korrekt för att styra åtkomsten till varje NFS -filsystemkatalog till specifika värdar. I det här fallet identifieras värdarna med deras IP -adress. Så, för varje rotfilsystem som skapas, lägg till exportkontrollraden till /etc /exports, justera för din lokala IP -adress och katalognamnschema om det behövs. I den här självstudien använder vi alltid det:
/srv/nfs/rootfs 10.42.0.2 (rw, sync, no_root_squash, no_subtree_check)
Sätt in ditt SDCard igen, montera det och kopiera alla rootfs filsystem till/srv/nfs/rootfs, starta om NFS -tjänsten för att uppdatera katalogen med nya kopierade filer.
Dessutom behöver vi kopiera de nya modulfilerna till rootfs filsystem eftersom vi sammanställde kärnan i steg 2. Så kopiera alla kataloger i ~/db410c-modules/till/srv/nfs/rootfs.
$ sudo cp -R ~/db410c -modules/*/srv/nfs/rootfs/
Se till att dessa kataloger synliggörs av NFS -tjänsten. Antingen:
$ sudo exportfs -a
Referens: TFTP/NFS rotfilsystem
Steg 6: Uppdatera Dragonboard 410c Boot Image och konfigurera nätverksgränssnitt
Vi gjorde tidigt alla steg för att implementera ett fjärrsystem för rootfs -filer, nu behöver vi uppdatera startbilden inuti dragonboard 410c, för att ansluta din USB -kabel till PC och dragonboard uUSB -kontakt. Så se till att fastboot är konfigurerat på värddatorn, om inte installeras med:
$ sudo apt installera fastboot
Nu för att uppdatera bilden, starta dragonboard till snabbstartsläge enligt dessa steg:
- Tryck och håll ner Vol (-) -knappen på DragonBoard 410c, detta är S4-knappen. DragonBoard ™ 410c ska fortfarande INTE vara påslagen
- Medan du håller Vol (-)-knappen sätter du på DragonBoard 410c genom att ansluta den
- När DragonBoard 410c har anslutits till strömmen släpper du volymknappen (-).
- Vänta i cirka 20 sekunder.
- Kortet ska starta i snabbstartsläge.
Kör följande kommandon från det anslutna värdmaskinterminalfönstret:
$ sudo fastboot -enheter
Normalt kommer det att visas som nedan
de82318 fastboot
Vid denna tidpunkt bör du vara ansluten till din DragonBoard 410c med en USB till microUSB -kabel. Din DragonBoard 410c bör startas upp i snabbstartsläge och redo att blixtras med lämpliga bilder. Låt oss uppdatera startbilden med vår startbild:
$ sudo fastboot flash boot ~/db410remoteroot/kernel/initrd_nfs.img
Och starta om styrelsen
$ sudo fastboot starta om
Nu kommer din HOST att upptäcka ett nytt gränssnitt som heter usb0, men det har ingen IP än. Så lägg till en statisk IP till det här gränssnittet med:
$ sudo ifconfig usb0 10.42.0.1 netmask 255.255.255.0 upp
Eller ange "Konfiguration" på HOST, i posten "nätverk", ställ in USB Ethernet en statisk IP till det gränssnittet.
Starta nu om dragonboard igen och verifiera systemstart, försök att ansluta med ssh:
$ ssh [email protected]
Referenser:
- 96boards dokumentation
- HowtoForge - artikel 6
Rekommenderad:
Kvantifiera åtkomst till ditt sinne: 8 steg (med bilder)
Kvantifiera åtkomst till ditt sinne: Så jag hanterar ett kreativt tekniklaboratorium vid California College of the Arts. Det är i huvudsak en pedagogisk hackerspace för konst- och designstudenter. Ganska häftigt, eller hur? Efter examen från University of Minnesota med en examen i mekanisk
Få åtkomst till din Pi utan tangentbord och bildskärm: 3 steg
Få åtkomst till din Pi utan tangentbord och bildskärm: Om du vill installera en ny Raspberry Pi utan att du behöver ansluta den till en bildskärm, tangentbord eller Ethernet -kabel. Raspberry Pi 3 och den nyligen introducerade Raspberry Pi Zero W har ett inbyggt wifi -chip. Det betyder att den kan köra och ansluta till
Kontrollera åtkomst till Arduino YÚN med MySQL, PHP5 och Python: 11 steg (med bilder)
Kontrollera åtkomst till Arduino YÚN med MySQL, PHP5 och Python: Hej vänner! Som ni vet, i september den nya premiärskölden för Arduino, Arduino YUN. Denna lilla vän har ett inbäddat Linux -system som vi kan köra allt du kan tänka dig (åtminstone hittills). Även om det finns väldigt lite information
Lägg till trådlös laddning till vilken telefon som helst: Använd LG-V20 som exempel: 10 steg (med bilder)
Lägg till trådlös laddning till vilken telefon som helst: Använd LG-V20 som exempel: Om du är som jag och planerar att behålla din telefon i mer än 2 år måste telefonen ha ett utbytbart batteri, eftersom batteriet bara räcker i cirka 2 år, och Och trådlös laddning så att du inte sliter ut laddningsporten. Nu är det enkelt
Manuell åtkomst till GPS Ublox Neo 6M med Raspberry Pi B+: 3 steg
Manuell åtkomst till GPS Ublox Neo 6M Med Raspberry Pi B+: Raspberry Pi är en mycket kompatibel mini -PC för olika moduler som är ganska enkla att använda. I grund och botten är det nästan samma som PC men kan styras med GPIO från Raspberry Pi. Raspberry Pi är också stöd med flera kommunikationslinjer, en