Hozzáférés a távoli gyökér fájlrendszerhez DB410 használatával Ethernet -kulcsként: 6 lépés
Hozzáférés a távoli gyökér fájlrendszerhez DB410 használatával Ethernet -kulcsként: 6 lépés
Anonim
Hozzáférés a távoli gyökér fájlrendszerhez DB410 használatával Ethernet -kulcsként
Hozzáférés a távoli gyökér fájlrendszerhez DB410 használatával Ethernet -kulcsként

Célok:

  • Telepítse az eszköztárat és fordítsa újra a kernelt az USB Ethernet CDC Gadget támogatás behelyezéséhez;
  • Hozza létre a boot.img fájlt Linaro -ból az USB Ethernet CDC indításához;
  • Hozzon létre NFS szervert a gyökér fájlrendszer tárolására;
  • IP -konfiguráció a DEVICE és a HOST rendszerben.

1. lépés: Követelmények

A következőkre lesz szüksége:

  1. Egy DragonBoard ™ 410c (itt az eszköz neve);
  2. Az Ubuntu 16.04.3 -at használó számítógép (frissítve itt: HOST) internetkapcsolattal és SDCard -nyílással;
  3. A Linaro fejlesztői 431 -es verziójának tiszta telepítése - Link: Pillanatkép Linaro Debian v431
  4. HDMI monitor;
  5. USB billentyűzet;
  6. 8 GB -os SDCard;
  7. USB -kábel, uUSB USB a DEVICE csatlakoztatásához a HOST -on.

2. lépés: A gazdagép konfigurálása kernelépítéshez és kernel létrehozása a HOST -ban

Először létre kell hoznunk az összes könyvtárat, mielőtt folytatnánk. Így:

$ cd ~

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

Sajnos a Linaro (431 -es verzió) által használt Linux -kernel nem támogatja az USB Ethernet -modulokat, ezért a Linux -kernelt újra kell építeni ehhez a verzióhoz. Töltse le a Linaro eszköztárat a Linux rendszermag kiépítéséhez és telepítéséhez a Dragonboard410c készüléken az x86 gazdagépről.

$ wget

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

Most telepítse a kernel létrehozásához szükséges csomagokat:

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

Szerezze be a Linux Kernel forrás Clone Qualcomm leszállási csapatának Linux -tárházát:

$ git klón

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

Most állítsa be a fordítási környezeti változókat:

$ export ARCH = arm64

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

Ezen a ponton hozzá kell adnunk a modulokat az USB Ethernet CDC -hez a kernelben. Ezt korábban is megtettem, és ezt a lépés végén megkaphatja. Néhány itent eltávolítottam, de működik.

Mielőtt lefordítaná, javítsa ki a rendszermag hibáját a driver/mmc/host/sdhci-msm.c fájlba, és módosítsa az 1150-es sor szerkezetét:

static const structure 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};

Tömörítse ki a configfile.zip fájlt, másolja át a

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

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

Hivatkozás: 96Boards dokumentáció

3. lépés: A Boot.img újjáépítése a HOST -ban

Ebben a lépésben meg kell nyitnunk az initrd leképezést, be kell helyeznünk a képbe épített modulokat, konfigurálnunk kell a rendszert, hogy elindítsa ezeket a modulokat, és újra kell építenünk az initrd.img fájlt egy új kernel parancssorral a root fájlrendszer távoli indításához.

Tehát először le kell töltenünk az initrd.img fájlt a linaro webhelyről:

$ cd..

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

A letöltés után bontsa ki és bontsa ki az initrd fájlt:

$ zcat ramdisk.img | cpio -idmv

Ebben a könyvtárban a gyökér fájlrendszert használjuk, amelyet a kernel használ az inicializálás során, ezért konfiguráljuk az USB Ethernet CDC modulokat és az NFS távoli paramétereket, például az NFS szerver IP -jét és az Ethernetet (usb).

Most konfiguráljunk néhány fájlt:

conf/initramfs.conf:

MODULOK = legtöbb

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

Hozza létre az init-premount könyvtárat a könyvtári parancsfájlokban/

$ mkdir szkriptek/init-premount

és adja hozzá a fájlokat a most létrehozott könyvtárhoz:

RENDELÉS

/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

Ne felejtse el használni a chmodot az usb fájlban, hogy végrehajtható legyen:

$ chmod +x szkriptek/init-premount/usb

Most másolja át az összes könyvtárat a modulokkal a db410c-modules-ből (2. LÉPÉS) a lib/modules-ba az initrd-ben:

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

Távolítsa el az összes fájlt a lib/modules/4.14.96-xxxx-dirty könyvtárból, kivéve az összes fájlmodult.* És a fájllistát:

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

Ezek a fájlok mind olyan modulok, amelyek az USB Ethernet CDC elindításához szükségesek.

Végül pakolja vissza és tömörítse az initrd képet:

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

Legalább a rendszermagképet és a DTB -fájlt be kell csomagolni egy Android rendszerindító képbe. Ilyen kép az abootimg eszközzel hozható létre.

Lépjünk be a kernel könyvtárába és használjuk az alábbi parancsot a kép létrehozásához és a DTB hozzáfűzéséhez a tömörített kernelképhez:

$ cd../kernel

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

És végül, generálja a rendszerindító képet (itt a rootfs -ünk egy távoli partícióban található a 10.42.0.1 -ben)

abootimg --create boot -db410c.img -k Image.gz+dtb -r initrd_nfs.img -c pagesize = 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: ki rw rootwait konzol = tty0 konzol = ttyMSM0, 115200n8"

Hivatkozások:

  • https://access.redhat.com/solutions/24029
  • 96Boards dokumentáció

4. lépés: Gyökér fájlrendszer létrehozása a HOST -ban

Most van egy új rendszerindító képünk a dragonboard 410c frissítéséhez. De szükségünk van egy gyökér fájlrendszerre a távoli kiszolgálón a modulok, szolgáltatások és alkalmazások indításához. Ebben a lépésben megosztott könyvtárat építünk a gazdagépben, hogy mindezeket az adatokat elmentsük. Így töltsünk le egy rootfs fájlrendszert a linaro webhelyről, ugyanazzal a verzióval, mint az initrd. Tehát menjen vissza egy könyvtárba, és töltse le a linaro-developer rootfs képet a 431-es verzióval.

$ cd..

$ wget

Bontsa ki ezt a fájlt

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

Ennek a fájlnak a használatával írjuk be az összes képet egy sd -kártyára az összes partíció eléréséhez és a rootfs fájlok másolásához. Ezért győződjön meg arról, hogy az uSDCard -ról származó adatokról biztonsági másolatot készít, mert az SDCard -on található adatok elvesznek.

Az SDCard -eszköz nevének megkereséséhez távolítsa el az SDCard -kártyát, és futtassa a következő parancsot:

$ lsblk

Mentse el gondolatban az összes felismert lemeznevet. Most helyezze be az SDCard kártyát, várjon egy pillanatot, és hajtsa végre újra a parancsot:

$ lsblk

Jegyezze meg az újonnan felismert lemezt. Ez lesz az SDCard. Ne feledje nevét, és módosítsa az "of =" paramétert az SDCard -eszköz nevére, és ügyeljen arra, hogy az eszköz nevét partíció nélkül használja, pl.: /dev /mmcblk0

$ sudo dd if = dragonboard-410c-sdcard-developer-buster-431.img =/dev/XXX bs = 4M oflag = szinkronizálási állapot = haladás

Megjegyzések:

  • Ennek a parancsnak a végrehajtása eltart egy ideig. Légy türelmes és kerülje a terminál manipulálását, amíg a folyamat véget nem ér.
  • Miután befejezte az SD -kártya villogását, vegye ki a gazdagépből.

Hivatkozás: 96 tábla dokumentáció

5. lépés: Szerver NFS létrehozása a HOST -ban és a fájlok másolása

Ezen a ponton van egy rendszerindító képünk, amelyet a 410c dragonboardba kell felvillantani, és egy SDCard, amely rootfs fájlrendszerrel rendelkezik a mi moduljainkhoz, szolgáltatásainkhoz és alkalmazásainkhoz. A következő lépés egy távoli könyvtár létrehozása az USB Ethernet DEVICE és a HOST rootfs fájlrendszer összekapcsolásához. Ezt megteheti az Ubuntu nfs-kernel-server nevű csomagjával.

Ez a csomag egy NFS szolgáltatást telepít az Ubuntuba, amely lehetővé teszi néhány könyvtár megosztását a hálózat egyes eszközein, és az Ön IP -címével beállíthatjuk, hogy melyik könyvtárat kell használni az egyes eszközökhöz.

Tehát telepítsük a csomagot és konfiguráljuk.

$ sudo apt-get install nfs-kernel-server

Az NFS szolgáltatás automatikusan elindul. Az NFS szolgáltatások vezérléséhez használja:

$ sudo service nfs-kernel-server restart // az újraindításhoz, vagy szükség szerint használja a "stop" vagy "start" parancsot.

Az NFS szolgáltatás állapotának ellenőrzéséhez a parancssorból:

$ sudo szolgáltatás nfs-kernel-szerver állapota

nfsd fut // A szolgáltatás fent van nfsd nem fut // A szolgáltatás le van állítva

Most hozzunk létre egy felső könyvtárat /srv /nfs, és hozzunk létre egy alkönyvtárat minden szükséges NFS telepített gyökér fájlrendszerhez. Itt megosztunk egy megosztott gyökér fájlrendszert, hogy megtartsuk a gyökér fájlrendszerünket:

$ sudo mkdir -p /srv /nfs

$ sudo mkdir -p/srv/nfs/rootfs

Most az NFS -kiszolgáló megköveteli az /etc /export helyes konfigurálását, hogy ellenőrizze az egyes NFS fájlrendszer -címtárakhoz való hozzáférést bizonyos állomásokhoz. Ebben az esetben a gazdagépeket IP -címük alapján azonosítják. Tehát minden létrehozott gyökér fájlrendszerhez adja hozzá az export vezérlő sort az /etc /export mappához, szükség szerint igazítva a helyi IP -címet és a könyvtár elnevezési sémáját. Ebben az oktatóanyagban mindig ezt használjuk:

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

Helyezze be újra az SDCard kártyát, csatlakoztassa és másolja az összes rootfs fájlrendszert a/srv/nfs/rootfs fájlba, indítsa újra az NFS szolgáltatást, hogy frissítse a könyvtárat az új másolt fájlok használatával.

Ezenkívül az új modulfájlokat a rootfs fájlrendszerbe kell másolnunk, mert a 2. lépésben összeállítottuk a kernelt. Tehát másolja át az összes könyvtárat a ~/db410c-modules/to/srv/nfs/rootfs fájlba.

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

Győződjön meg arról, hogy ezeket a könyvtárakat az NFS szolgáltatás teszi láthatóvá. Bármelyik:

$ sudo exportfs -a

Hivatkozás: TFTP/NFS gyökér fájlrendszer

6. lépés: A Dragonboard 410c rendszerindító képének frissítése és a hálózati interfészek konfigurálása

Korán megtettünk minden lépést a távoli rootfs fájlrendszer megvalósításához, most frissítenünk kell a rendszerindító képet a dragonboard 410c -ben, ehhez csatlakoztassuk a saját USB -kábelünket a számítógéphez és a dragonboard uUSB csatlakozójához. Tehát győződjön meg arról, hogy a gyorsindítás be van állítva a gazdagépen, ha nem a következő használatával telepíti:

$ sudo apt install fastboot

Most a kép frissítéséhez indítsa el a dragonboardot gyorsindítási módba az alábbi lépések végrehajtásával:

  • Nyomja meg és tartsa lenyomva a Vol (-) gombot a DragonBoard 410c készüléken, ez az S4 gomb. A DragonBoard ™ 410c -t továbbra sem szabad bekapcsolni
  • Miközben lenyomva tartja a Vol (-) gombot, kapcsolja be a DragonBoard 410c készüléket a csatlakoztatásával
  • Miután a DragonBoard 410c csatlakoztatva van az áramellátáshoz, engedje el a Vol (-) gombot.
  • Várjon körülbelül 20 másodpercet.
  • A táblának gyorsindítási módba kell indulnia.

A csatlakoztatott gazdagép terminál ablakából futtassa a következő parancsokat:

$ sudo gyorsindító eszközök

Általában az alábbiak szerint jelenik meg

de82318 gyorsindítás

Ezen a ponton csatlakoznia kell a DragonBoard 410c készülékhez USB -microUSB kábellel. A DragonBoard 410c -t gyorsindítási módba kell indítani, és készen kell állnia a megfelelő képekkel való villogásra. Frissítsük a rendszerindító képet a rendszerindító képünkkel:

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

És indítsa újra a táblát

$ sudo gyorsindítás újraindítása

Most a HOST felismer egy új, usb0 nevű interfészt, de még nincs IP címe. Tehát adjon hozzá egy statikus IP -t ehhez az interfészhez:

$ sudo ifconfig usb0 10.42.0.1 netmask 255.255.255.0 up

Vagy írja be a "Konfiguráció" menüpontot a HOST -on, a "hálózat" menüpontban, és állítsa be az USB Ethernet -et az adott interfész statikus IP -címének.

Most indítsa újra a sárkánytáblát, és ellenőrizze a rendszer indítását, és próbáljon csatlakozni az ssh használatával:

$ ssh [email protected]

Hivatkozások:

  • 96boards dokumentáció
  • HowtoForge - 6. tétel

Ajánlott: