Taula de continguts:

Accés al sistema de fitxers arrel remot mitjançant DB410 com a dongle Ethernet: 6 passos
Accés al sistema de fitxers arrel remot mitjançant DB410 com a dongle Ethernet: 6 passos

Vídeo: Accés al sistema de fitxers arrel remot mitjançant DB410 com a dongle Ethernet: 6 passos

Vídeo: Accés al sistema de fitxers arrel remot mitjançant DB410 com a dongle Ethernet: 6 passos
Vídeo: CS50 2014 – 9-я неделя 2024, Desembre
Anonim
Accedir al sistema de fitxers arrel remot mitjançant DB410 com a dongle Ethernet
Accedir al sistema de fitxers arrel remot mitjançant DB410 com a dongle Ethernet

Objectius:

  • Instal·leu la cadena d’eines i torneu a compilar el nucli per inserir el suport del dispositiu USB Ethernet CDC;
  • Recreeu boot.img de Linaro per arrencar USB Ethernet CDC;
  • Creeu un servidor NFS per allotjar el sistema de fitxers arrel;
  • Configuració d'IP a DEVICE i HOST.

Pas 1: Requeriments

Necessitareu els següents elements:

  1. Un DragonBoard ™ 410c (anomenat aquí DISPOSITIU);
  2. S'ha actualitzat un PC que utilitza Ubuntu 16.04.3 (anomenat aquí HOST) amb connexió a Internet i ranura per a targetes SDCard;
  3. Una instal·lació neta de la versió 431 del desenvolupador de Linaro - Enllaç: Instantània Linaro Debian v431
  4. Un monitor HDMI;
  5. Un teclat USB;
  6. Una targeta SD de 8 Gb;
  7. Un cable USB, USB USB per connectar el DISPOSITIU a HOST.

Pas 2: Configuració de l'amfitrió per construir nucli i construir nucli a l'HOST

En primer lloc, crearem tots els directoris abans de continuar. Tan:

$ cd ~

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

Malauradament, el nucli linux utilitzat per Linaro (versió 431) no és compatible amb el gadget USB Ethernet, per això, el nucli Linux s'ha de reconstruir per a aquesta versió específica. Descarregueu la cadena d'eines Linaro per crear i desplegar el nucli linux a Dragonboard410c des de la màquina host x86.

$ wget

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

Ara instal·leu els paquets necessaris per construir el nucli:

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

Obteniu el dipòsit de Linux de l'equip de destinació del clonatge Qualcomm de la font del nucli Linux:

$ git clone

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

Ara, configureu les variables d'entorn de compilació:

$ export ARCH = arm64

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

En aquest moment, hem d’afegir els mòduls a USB Ethernet CDC al nucli. Ho vaig fer abans i ho podeu aconseguir al final d'aquest pas. He eliminat alguns elements, però funciona.

Abans de compilar, corregiu un error del nucli a drivers / mmc / host / sdhci-msm.c canviant l'estructura de la línia 1150 per:

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

Descomprimiu configfile.zip, copieu el fitxer.config al directori del nucli, construïu el nucli, mòduls i instal·leu mòduls en un directori:

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

$ make -j $ (nproc) mòduls $ make modules_install INSTALL_MOD_PATH =.. / db410c-modules

Referència: 96Boards Documentation

Pas 3: Reconstruïu Boot.img a l’HOST

En aquest pas, hem d'obrir la imatge initrd, posar els mòduls construïts dins de la imatge, configurar el sistema per iniciar aquests mòduls i reconstruir un initrd.img amb una nova línia d'ordres del nucli per arrencar el sistema de fitxers arrel remotament.

Per tant, primer hem de descarregar initrd.img del lloc web de linaro:

$ cd..

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

Ara, després de la descàrrega, descomprimiu i extreu l'initrd:

$ zcat ramdisk.img | cpio -idmv

En aquest directori, tenim el sistema de fitxers arrel utilitzat pel nucli en la inicialització, de manera que aquí configurarem els mòduls USB Ethernet CDC i els paràmetres remots NFS, com ara el servidor NFS IP i ethernet (usb).

Ara, configurem alguns fitxers:

conf / initramfs.conf:

MULDULS = la majoria

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

Creeu el directori init-premount als scripts de directori /

$ mkdir scripts / init-premount

i afegiu els fitxers en aquest directori acabat de crear:

COMANDA

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

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

usb

#! / bin / sh

PREREQ = "" prereqs () {echo "$ PREREQ"} cas $ 1 en # obtenir requisits previs prèviament) prereqs sortir 0;; esac modprobe usb_f_ecm modprobe libcomposite modprobe usb_f_rndis modprobe g_ether

No us oblideu d’utilitzar chmod al fitxer USB per fer-lo executable:

$ chmod + x scripts / init-premount / usb

Ara, copieu tot el directori amb els mòduls de db410c-modules (PAS 2) a lib / modules a initrd:

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

Elimineu tots els fitxers de lib / modules / 4.14.96-xxxx-dirty, excepte tots els mòduls de fitxers. * I la llista de fitxers:

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 nucli /usb_f_serial.ko / 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

Aquests fitxers són tots els mòduls necessaris per iniciar USB Ethernet CDC.

Finalment torneu a empaquetar i comprimir la imatge initrd:

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

Com a mínim, la imatge del nucli i el fitxer DTB s’han d’empaquetar en una imatge d’arrencada d’Android. Aquesta imatge es pot generar amb l'eina abootimg.

Anem al directori del nucli i fem servir l'ordre següent per crear imatge i afegir DTB a la imatge del nucli comprimit:

$ cd../kernel

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

I, finalment, generar la imatge d’arrencada (aquí el nostre rootfs es troba una partició remota a 10.42.0.1)

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

Referències:

  • https://access.redhat.com/solutions/24029
  • Documentació de 96 taulers

Pas 4: Creació del sistema de fitxers arrel a l’HOST

Ara, tenim una nova imatge d’arrencada per actualitzar el dragonboard 410c. Però necessitem un sistema de fitxers arrel al servidor remot per arrencar mòduls, serveis i aplicacions. En aquest pas, crearem un directori compartit a l'amfitrió per desar totes aquestes dades. D’aquesta manera, descarreguem un sistema de fitxers rootfs des del lloc linaro amb la mateixa versió que s’utilitza a initrd. Per tant, torneu enrere a un directori i descarregueu la imatge rootfs de linaro-developer amb la versió 431.

$ cd..

$ wget

Descomprimiu aquest fitxer

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

Mitjançant aquest fitxer, escrivim totes les imatges en una sdcard per accedir a totes les particions i copiar fitxers rootfs. Per tant, assegureu-vos que es faci una còpia de seguretat de les dades de uSDCard perquè es perdrà tot el que hi hagi a la targeta SDCard.

Per trobar el nom del dispositiu SDCard, traieu SDCard i executeu l'ordre següent:

$ lsblk

Deseu a la vostra ment tots els noms de disc reconeguts. Ara inseriu la targeta SD, espereu un moment i torneu a executar l'ordre:

$ lsblk

Tingueu en compte el disc recentment reconegut. Aquesta serà la vostra targeta SD. Recordeu el vostre nom i canvieu el paràmetre "of =" pel nom del dispositiu SDCard i assegureu-vos d'utilitzar-lo sense la partició, p. Ex.: / dev / mmcblk0

$ sudo dd if = dragonboard-410c-sdcard-developer-buster-431.img of = / dev / XXX bs = 4M oflag = estat de sincronització = progrés

Notes:

  • Aquesta ordre trigarà a executar-se. Tingueu paciència i eviteu manipular el terminal fins que finalitzi el procés.
  • Una vegada que la targeta SD hagi parpellejat, traieu-la de l'ordinador amfitrió.

Referència: documentació de 96 taulers

Pas 5: Creació de servidor NFS a l’HOST i còpia de fitxers

En aquest punt, tenim una imatge d’arrencada per convertir-la en dragonboard 410c i una targeta SD amb un sistema de fitxers rootfs per als nostres mòduls, serveis i aplicacions. El següent pas és crear un directori remot per connectar el dispositiu USB Ethernet toguther amb el sistema de fitxers rootfs HOST. Això es pot fer mitjançant un paquet d'Ubuntu anomenat nfs-kernel-server.

Aquest paquet instal·la un servei NFS a Ubuntu que permet compartir alguns directoris d'alguns dispositius de la xarxa, podem configurar quin directori s'utilitzarà per a cada dispositiu mitjançant la vostra IP.

Per tant, instal·larem el paquet i el configurarem.

$ sudo apt-get install nfs-kernel-server

El servei NFS s'inicia automàticament. Per controlar l'ús dels serveis NFS:

$ sudo service nfs-kernel-server restart // per reiniciar o utilitzeu 'stop' o 'start' segons calgui.

Per comprovar l'estat del servei NFS des de la línia d'ordres utilitzeu:

Servei $ sudo estat nfs-kernel-server

nfsd en execució // El servei està en funcionament nfsd no s’executa // El servei no funciona

Ara, creem un directori superior / srv / nfs i creem un subdirectori sota aquest per a cada sistema de fitxers arrel muntat a NFS que es requereixi. Aquí incloem un sistema de fitxers arrel compartit per mantenir el nostre sistema de fitxers arrel:

$ sudo mkdir -p / srv / nfs

$ sudo mkdir -p / srv / nfs / rootfs

Ara, el servidor NFS requereix que / etc / exportacions es configurin correctament per controlar l'accés a cada directori del sistema de fitxers NFS a hosts específics. En aquest cas, els amfitrions s’identifiquen per la seva adreça IP. Per tant, per a cada sistema de fitxers arrel que es crea, afegiu la línia de control d’exportació a / etc / exportacions, ajustant-la per a l’adreça IP local i l’esquema de noms de directoris si és necessari. En aquest tutorial, sempre fem servir això:

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

Inseriu de nou la targeta SD, munteu-la i copieu tot el sistema de fitxers rootfs a / srv / nfs / rootfs, reinicieu el servei NFS per actualitzar el directori mitjançant fitxers nous copiats.

A més, hem de copiar els fitxers de mòduls nous al sistema de fitxers rootfs perquè hem compilat el nucli al pas 2. Per tant, copieu tots els directoris de ~ / db410c-modules / a / srv / nfs / rootfs.

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

Assegureu-vos que el servei NFS faci visibles aquests directoris. Ja sigui:

$ sudo exportfs -a

Referència: sistema de fitxers arrel TFTP / NFS

Pas 6: Actualització de la imatge d’arrencada de Dragonboard 410c i configuració d’interfícies de xarxa

Hem fet tots els passos inicials per implementar un sistema de fitxers rootfs remot, ara necessitem actualitzar la imatge d’arrencada dins de dragonboard 410c, per això, connecteu el vostre cable USB al PC i al connector uUSB de dragonboard. Així que assegureu-vos que fastboot està configurat a l'ordinador amfitrió, si no s'instal·la mitjançant:

$ sudo apt install fastboot

Ara per actualitzar la imatge, inicieu el dragonboard al mode d'arrencada ràpida seguint aquests passos:

  • Mantingueu premut el botó Vol (-) del DragonBoard 410c, aquest és el botó S4. DragonBoard ™ 410c encara NO hauria d’estar engegat
  • Mentre manteniu premut el botó Vol (-), engegueu el DragonBoard 410c endollant-lo
  • Un cop el DragonBoard 410c estigui endollat a l’energia, deixeu de mantenir premut el botó Vol (-).
  • Espereu uns 20 segons.
  • El tauler hauria d’arrencar en mode d’arrencada ràpida.

Des de la finestra del terminal de la màquina host connectada, executeu les ordres següents:

Dispositius $ sudo fastboot

Normalment es mostrarà a continuació

de82318 fastboot

En aquest moment hauríeu d’estar connectat al vostre DragonBoard 410c amb un cable USB a microUSB. El vostre DragonBoard 410c s'hauria d'arrencar en mode d'arrencada ràpida i llest per ser intermitent amb les imatges adequades. Actualitzem la imatge d’arrencada amb la nostra imatge d’arrencada:

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

I reinicieu el tauler

$ sudo reinici fastboot

Ara, el vostre HOST detectarà una nova interfície anomenada usb0, però encara no té una IP. Per tant, afegiu una IP estàtica a aquesta interfície mitjançant:

$ sudo ifconfig usb0 10.42.0.1 netmask 255.255.255.0 up

O bé introduïu a "Configuració" a HOST, a l'element "xarxa", configurant USB Ethernet com a IP estàtica a aquesta interfície.

Ara, reinicieu de nou el dragonboard i verifiqueu l'inici del sistema, provant de connectar-vos mitjançant ssh:

$ ssh [email protected]

Referències:

  • Documentació de 96 taulers
  • HowtoForge: tema 6

Recomanat: