İçindekiler:

DB410'u Ethernet Dongle Olarak Kullanarak Uzak Kök Dosya Sistemine Erişme: 6 Adım
DB410'u Ethernet Dongle Olarak Kullanarak Uzak Kök Dosya Sistemine Erişme: 6 Adım

Video: DB410'u Ethernet Dongle Olarak Kullanarak Uzak Kök Dosya Sistemine Erişme: 6 Adım

Video: DB410'u Ethernet Dongle Olarak Kullanarak Uzak Kök Dosya Sistemine Erişme: 6 Adım
Video: Очередной рейс (1958) фильм 2024, Temmuz
Anonim
DB410'u Ethernet Dongle Olarak Kullanarak Uzak Kök Dosya Sistemine Erişme
DB410'u Ethernet Dongle Olarak Kullanarak Uzak Kök Dosya Sistemine Erişme

Hedefler:

  • USB Ethernet CDC Gadget desteğini eklemek için araç zincirini kurun ve çekirdeği yeniden derleyin;
  • USB Ethernet CDC'yi başlatmak için Linaro'dan boot.img'yi yeniden oluşturun;
  • Kök dosya sistemini barındırmak için NFS sunucusu oluşturun;
  • DEVICE ve HOST'ta IP yapılandırması.

1. Adım: Gereksinimler

Aşağıdaki öğelere ihtiyacınız olacak:

  1. Bir DragonBoard™ 410c (burada CİHAZ olarak adlandırılır);
  2. İnternet bağlantısı ve SDCard yuvası ile güncellenmiş (burada HOST olarak adlandırılan) Ubuntu 16.04.3 kullanan bir bilgisayar;
  3. Linaro-geliştirici sürüm 431'in temiz kurulumu - Bağlantı: Anlık Görüntü Linaro Debian v431
  4. HDMI monitör;
  5. Bir USB klavye;
  6. 8Gb SDCard;
  7. CİHAZI HOST'a bağlamak için bir USB kablosu, uUSB USB.

Adım 2: Ana Bilgisayarı, HOST'ta Çekirdek Oluşturacak ve Çekirdek Oluşturacak Şekilde Yapılandırma

Öncelikle, devam etmek için önce tüm dizinleri oluşturacağız. Yani:

$ cd ~

$ mkdir db410remoteroot $ cd db410remoteroot $ mkdir araç zinciri $ mkdir db410c-modülleri

Ne yazık ki, Linaro (Sürüm 431) tarafından kullanılan linux çekirdeğinin USB Ethernet aygıtı desteği yoktur, bu nedenle Linux çekirdeğinin bu özel sürüm için yeniden oluşturulması gerekir. Linux çekirdeğini x86 ana makineden Dragonboard410c üzerinde oluşturmak ve dağıtmak için Linaro araç zincirini indirin.

$ wget

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

Şimdi çekirdeği oluşturmak için gerekli paketleri kurun:

$ sudo apt güncelleme && sudo apt-get install git build-essential abootimg çekirdek paketi fakeroot libncurses5-dev libssl-dev ccache

Linux Çekirdeği kaynağı klonu Qualcomm iniş ekibi Linux deposunu edinin:

$ git klonu

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

Şimdi derleme ortamı değişkenlerini ayarlayın:

$ dışa aktar ARCH=arm64

$ dışa aktar CROSS_COMPILE=$(pwd)/../toolchain/bin/aarch64-linux-gnu-

Bu noktada çekirdekteki USB Ethernet CDC'ye modülleri eklememiz gerekiyor. Bunu daha önce yaptım ve bunu bu adımın sonunda alabilirsiniz. Bazı öğeleri kaldırdım ama işe yarıyor.

Derlemeden önce, lütfen 1150 satırındaki yapıyı değiştirerek driver/mmc/host/sdhci-msm.c dosyasındaki bir çekirdek hatasını düzeltin:

statik sabit yapı 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};

configfile.zip dosyasını açın,.config dosyasını çekirdek dizinine kopyalayın, çekirdek, modüller oluşturun ve modülleri bir dizine kurun:

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

$ make -j$(nproc) modülleri $ make module_install INSTALL_MOD_PATH=../db410c-modules

Referans: 96Boards Belgeleri

3. Adım: HOST'ta Boot.img'yi yeniden oluşturun

Bu adımda, initrd görüntüsünü açmamız, görüntünün içine yerleşik modülleri yerleştirmemiz, sistemi bu modülleri başlatacak şekilde yapılandırmamız ve kök dosya sistemini uzaktan başlatmak için bir initrd.img dosyasını yeni bir çekirdek komut satırıyla yeniden oluşturmamız gerekiyor.

İlk olarak initrd.img dosyasını linaro web sitesinden indirmemiz gerekiyor:

$ cd..

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

Şimdi, indirdikten sonra, initrd'yi açın ve çıkarın:

$ zcat ramdisk.img | işlemci -idmv

Bu dizinde, başlatmada çekirdek tarafından kullanılan kök dosya sistemine sahibiz, bu nedenle USB Ethernet CDC modüllerini ve burada gerekli olan NFS sunucusu IP ve ethernet (usb) gibi NFS uzak parametrelerini yapılandıracağız.

Şimdi bazı dosyaları yapılandıralım:

conf/initramfs.conf:

MODÜLLER=en çok

BUSYBOX=otomatik SIKIŞTIR=gzip CİHAZI=usb0 NFSROOT=otomatik ÇALIŞTIR=%10

Dizin komut dosyalarında init-premount dizinini oluşturun/

$ mkdir betikleri/init-premount

ve dosyaları yeni oluşturulan bu dizine ekleyin:

EMİR

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

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

USB

#!/bin/sh

PREREQ="" prereqs() { echo "$PREREQ" } case $1 in # get önkoşullar önkoşullar) önkoşullar çıkış 0;; esac modprobe usb_f_ecm modprobe libkompozit modprobe usb_f_rndis modprobe g_ether

Çalıştırılabilir hale getirmek için usb dosyasında chmod kullanmayı unutmayın:

$ chmod +x komut dosyaları/init-premount/usb

Şimdi, modüllerle birlikte tüm dizini initrd'deki db410c-modules'ten (ADIM 2) lib/modules'a kopyalayın:

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

Tüm dosyalar modülü hariç lib/modules/4.14.96-xxxx-dirty içindeki tüm dosyaları kaldırın.* ve bu dosya listesi:

çekirdek/sürücüler/usb/gadget/eski/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

Bu dosyalar, USB Ethernet CDC'yi başlatmak için gereken tüm modüllerdir.

Son olarak initrd görüntüsünü yeniden paketleyin ve sıkıştırın:

$ bulun. | cpio -o -H yeni | gzip -9 >../kernel/initrd_nfs.img

En azından, çekirdek görüntüsü ve DTB dosyasının bir Android önyükleme görüntüsüne paketlenmesi gerekir. Bu tür bir görüntü, abootimg aracıyla oluşturulabilir.

Çekirdek dizinine girelim ve görüntü oluşturmak ve sıkıştırılmış çekirdek görüntüsüne DTB eklemek için aşağıdaki komutu kullanalım:

$ cd../çekirdek

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

Ve son olarak, önyükleme görüntüsünü oluşturun (burada rootf'lerimiz 10.42.0.1'de uzak bir bölüm bulunur)

abootimg --create boot-db410c.img -k Image.gz+dtb -r initrd_nfs.img -c sayfa boyutu=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 konsolu=tty0 konsolu=ttyMSM0, 115200n8"

Referanslar:

  • https://access.redhat.com/solutions/24029
  • 96 Pano Belgeleri

Adım 4: HOST'ta Kök Dosya Sistemi Oluşturma

Şimdi, dragonboard 410c'yi güncellemek için yeni bir önyükleme imajımız var. Ancak modülleri, hizmetleri ve uygulamaları başlatmak için uzak sunucuda bir kök dosya sistemine ihtiyacımız var. Bu adımda, tüm bu verileri kaydetmek için ana bilgisayarda paylaşılan bir dizin oluşturacağız. Bu şekilde, initrd'de kullanılan aynı sürümle linaro sitesinden bir rootfs dosya sistemi indirelim. Bu nedenle, bir dizine geri dönün ve 431 sürümüyle linaro-developer rootfs görüntüsünü indirin.

$ cd..

$ wget

Bu dosyayı aç

$ dragonboard-410c-sdcard-developer-buster-431.zip dosyasını açın

Bu dosyayı kullanarak tüm partitionlara erişmek ve rootfs dosyalarını kopyalamak için tüm imajı bir sdcard'a yazalım. Bu nedenle, uSDCard'dan gelen verilerin yedeklendiğinden emin olun çünkü SDCard'daki her şey kaybolacaktır.

SDCard cihaz adınızı bulmak için SDCard'ı kaldırın ve aşağıdaki komutu çalıştırın:

$ lsblk

Tüm tanınan disk adlarını zihninize kaydedin. Şimdi SDCard'ı takın, biraz bekleyin ve komutu tekrar çalıştırın:

$ lsblk

Yeni tanınan diski not edin. Bu sizin SDCard'ınız olacak. Adınızı hatırlayın ve SDCard cihaz adınız için "of=" parametresini değiştirin ve cihaz adını bölüm olmadan kullandığınızdan emin olun, p.e.: /dev/mmcblk0

$ sudo dd if=dragonboard-410c-sdcard-developer-buster-431.img of=/dev/XXX bs=4M oflag=senkronizasyon durumu=ilerleme

Notlar:

  • Bu komutun yürütülmesi biraz zaman alacaktır. Sabırlı olun ve işlem bitene kadar terminali kurcalamaktan kaçının.
  • SD kartın yanıp sönmesi bittiğinde, ana bilgisayardan çıkarın.

Referans: 96 pano belgeleri

Adım 5: HOST'ta Sunucu NFS'si Oluşturma ve Dosyaları Kopyalama

Bu noktada, bizim modüllerimiz, hizmetlerimiz ve uygulamalarımız için dragonboard 410c'ye ve rootfs dosya sistemine sahip bir SDCard'a flashlanacak bir önyükleme imajımız var. Sonraki adım, USB Ethernet CİHAZINI HOST rootfs dosya sistemine bağlamak için bir uzak dizin oluşturmaktır. Bu, Ubuntu'dan nfs-kernel-server adlı bir paket kullanılarak yapılabilir.

Bu paket, ağdaki bazı cihazlar için bazı dizinleri paylaşmaya izin veren Ubuntu'ya bir NFS hizmeti yükler, sizin IP'nizi kullanarak her cihaz için hangi dizinin kullanılacağını yapılandırabiliriz.

Öyleyse, paketi kuralım ve yapılandıralım.

$ sudo apt-get install nfs-kernel-server

NFS hizmeti otomatik olarak başlar. NFS hizmetlerini kontrol etmek için şunları kullanın:

$ sudo service nfs-kernel-server restart // yeniden başlatmak veya gerektiğinde 'stop' veya 'start' kullanmak için.

NFS hizmetinin durumunu komut satırından kontrol etmek için şunu kullanın:

$ sudo hizmeti nfs-çekirdek-sunucu durumu

nfsd çalışıyor // Hizmet çalışıyor nfsd çalışmıyor // Hizmet kapalı

Şimdi, bir /srv/nfs üst dizini oluşturalım ve gereken her NFS'ye bağlı kök dosya sistemi için bunun altında bir alt dizin oluşturalım. Burada bizim kök dosya sistemimizi korumak için paylaşılan bir kök dosya sistemi ekliyoruz:

$ sudo mkdir -p /srv/nfs

$ sudo mkdir -p /srv/nfs/rootfs

Şimdi, NFS sunucusu, her bir NFS dosya sistemi dizinine belirli ana bilgisayarlara erişimi kontrol etmek için /etc/exports'un doğru şekilde yapılandırılmasını gerektirir. Bu durumda, ana bilgisayarlar IP adresleri ile tanımlanır. Bu nedenle, oluşturulan her kök dosya sistemi için, yerel IP adresinizi ve gerekirse dizin adlandırma düzeninizi ayarlayarak dışa aktarma kontrol satırını /etc/exports dizinine ekleyin. Bu eğitimde, her zaman şunu kullanırız:

/srv/nfs/rootfs 10.42.0.2(rw, eşitleme, no_root_squash, no_subtree_check)

SDCard'ınızı tekrar takın, bağlayın ve tüm rootfs dosya sistemini /srv/nfs/rootfs içine kopyalayın, yeni kopyalanan dosyaları kullanarak dizini güncellemek için NFS hizmetini yeniden başlatın.

Ek olarak, 2. adımda çekirdeği derlediğimiz için yeni modül dosyalarını rootfs dosya sistemine kopyalamamız gerekiyor. Bu nedenle, ~/db410c-modules/ dizinindeki tüm dizinleri /srv/nfs/rootfs dizinine kopyalayın.

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

Bu dizinlerin NFS hizmeti tarafından görünür kılındığından emin olun. Herhangi biri:

$ sudo exportfs -a

Referans: TFTP/NFS Kök Dosya Sistemi

Adım 6: Dragonboard 410c Önyükleme Görüntüsünü Güncelleme ve Ağ Arayüzlerini Yapılandırma

Uzak bir rootfs dosya sistemi uygulamak için tüm adımları erkenden attık, şimdi dragonboard 410c içindeki önyükleme görüntüsünü güncellememiz gerekiyor, bunun için USB kablonuzu PC'ye ve dragonboard uUSB konektörüne bağlayın. Bu nedenle, aşağıdakileri kullanarak yüklenmiyorsa, ana bilgisayarda fastboot'un kurulduğundan emin olun:

$ sudo apt fastboot yükleyin

Şimdi resmi güncellemek için, şu adımları izleyerek dragonboard'u fastboot modunda başlatın:

  • DragonBoard 410c üzerindeki Vol (-) düğmesini basılı tutun, bu S4 düğmesidir. DragonBoard™ 410c hala AÇIK OLMAMALIDIR
  • Vol (-) düğmesini basılı tutarken, DragonBoard 410c'yi prize takarak açın.
  • DragonBoard 410c güç kaynağına takıldığında, Vol (-) düğmesini basılı tutun.
  • Yaklaşık 20 saniye bekleyin.
  • Kart, fastboot modunda önyükleme yapmalıdır.

Bağlı ana makine terminal penceresinden aşağıdaki komutları çalıştırın:

$ sudo hızlı önyükleme cihazları

Tipik olarak aşağıdaki gibi gösterecektir

de82318 hızlı önyükleme

Bu noktada DragonBoard 410c'nize bir USB - microUSB kablosuyla bağlanmalısınız. DragonBoard 410c'niz fastboot modunda başlatılmalı ve uygun görüntülerle flash'lanmaya hazır olmalıdır. Önyükleme görüntüsünü bizimki önyükleme görüntüsüyle güncelleyelim:

$ sudo fastboot flash önyükleme ~/db410remoteroot/kernel/initrd_nfs.img

Ve tahtayı yeniden başlatın

$ sudo hızlı önyükleme yeniden başlatma

Şimdi, HOST cihazınız usb0 adında yeni bir arayüz algılayacak, ancak henüz bir IP'si yok. Bu nedenle, aşağıdakileri kullanarak bu arayüze statik bir IP ekleyin:

$ sudo ifconfig usb0 10.42.0.1 ağ maskesi 255.255.255.0 yukarı

Veya HOST üzerindeki "Yapılandırma"ya, "ağ" öğesine girin, USB Ethernet'i bu arayüze statik bir IP olarak ayarlayın.

Şimdi, dragonboard'u yeniden başlatın ve ssh kullanarak bağlanmaya çalışarak sistemin başladığını doğrulayın:

$ ssh [email protected]

Referanslar:

  • 96 pano belgeleri
  • HowtoForge - Madde 6

Önerilen: