Mundarija:

DB410 -dan chekilgan uzilish sifatida uzoqdan joylashgan fayl tizimiga kirish: 6 qadam
DB410 -dan chekilgan uzilish sifatida uzoqdan joylashgan fayl tizimiga kirish: 6 qadam

Video: DB410 -dan chekilgan uzilish sifatida uzoqdan joylashgan fayl tizimiga kirish: 6 qadam

Video: DB410 -dan chekilgan uzilish sifatida uzoqdan joylashgan fayl tizimiga kirish: 6 qadam
Video: Aguilar DB410 - What Does it Sound Like? 2024, Iyul
Anonim
DB410 -ni chekilgan kalit sifatida ishlatadigan masofaviy ildiz fayl tizimiga kirish
DB410 -ni chekilgan kalit sifatida ishlatadigan masofaviy ildiz fayl tizimiga kirish

Maqsadlar:

  • USB Ethernet CDC gadjetini qo'llab -quvvatlash uchun asboblar zanjirini o'rnating va yadroni qayta kompilyatsiya qiling;
  • USB Ethernet CDC -ni yuklash uchun Linaro -dan boot.img -ni qayta yarating;
  • Ildiz fayl tizimini joylashtirish uchun NFS serverini yarating;
  • DEVICE va HOST -da IP konfiguratsiyasi.

1 -qadam: talablar

Sizga quyidagi belgilar kerak bo'ladi:

  1. DragonBoard ™ 410c (bu erda DEVICE nomi berilgan);
  2. Ubuntu 16.04.3 -dan foydalangan kompyuter Internetga ulangan va SDCard uyasi bilan yangilangan (bu erda HOST deb nomlangan);
  3. Linaro -developer 431 versiyasining toza o'rnatilishi - havola: Linaro Debian v431
  4. HDMI monitor;
  5. USB klaviaturasi;
  6. 8 Gb tezkor xotira kartasi;
  7. USB kabeli, uUSB USB qurilmani HOST -ga ulash uchun.

2 -qadam: Xostda yadro yaratish va yadro yaratish uchun xostni sozlash

Birinchidan, biz davom etishdan oldin barcha kataloglarni yaratamiz. Shunday qilib:

$ CD ~

$ mkdir db410remoteroot $ cd db410remoteroot $ mkdir asboblar zanjiri $ mkdir db410c-modullari

Afsuski, Linaro (431 -versiya) ishlatadigan linux yadrosi USB Ethernet gadjetini qo'llab -quvvatlamaydi, shuning uchun Linux yadrosi ushbu maxsus versiya uchun qayta tiklanishi kerak. Linux yadrosini Dragonboard410c -da x86 kompyuteridan o'rnatish va joylashtirish uchun Linaro asboblar zanjirini yuklab oling.

$ wget

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

Endi yadroni yaratish uchun zarur bo'lgan paketlarni o'rnating:

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

Linux yadrosining Clone Qualcomm qo'nish guruhi Linux omborini oling:

$ git klon

$ cd yadrosi $ git checkout check/release/qcomlt-4.14 -b my-custom-4.14

Endi kompilyatsiya muhitining o'zgaruvchilarini o'rnating:

$ eksporti ARCH = arm64

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

Bu vaqtda biz modullarni yadrodagi USB Ethernet CDC -ga qo'shishimiz kerak. Men buni oldin qilganman va siz buni qadamning oxirida olishingiz mumkin. Men ba'zi narsalarni olib tashladim, lekin u ishlaydi.

Kompilyatsiya qilishdan oldin, iltimos, yadro xatolarini drayverlarga/mmc/host/sdhci-msm.c ga to'g'rilab, 1150 satridagi tuzilmani quyidagicha o'zgartiring:

statik tuzilish 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 -ni oching,.config faylini yadro katalogiga ko'chiring, yadro, modullar tuzing va katalogga modullarni o'rnating:

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

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

Malumot: 96Boards hujjatlari

3 -qadam: HOST -da Boot.img -ni qayta o'rnating

Bu bosqichda biz boshlang'ich tasvirni ochishimiz, rasm ichiga o'rnatilgan modullarni qo'yishimiz, tizimni shu modullarni ishga tushirish uchun sozlashimiz va rootrd fayl tizimini masofadan yuklash uchun initrd.img -ni yangi yadro buyruq qatori bilan tiklashimiz kerak.

Shunday qilib, birinchi navbatda, initrd.img -ni linaro veb -saytidan yuklab olishimiz kerak:

$ CD..

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

Endi, yuklab olingandan so'ng, boshlang'ichni oching va chiqarib oling:

$ zcat ramdisk.img | cpio -idmv

Ushbu katalogda bizda yadro ishga tushirishda ishlatiladigan ildiz fayl tizimi mavjud, shuning uchun biz USB chekilgan CDC modullarini va NFS server IP va chekilgan (usb) kabi masofaviy parametrlarini sozlaymiz.

Keling, ba'zi fayllarni sozlaymiz:

conf/initramfs.conf:

MODULLAR = eng ko'p

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

Katalog skriptlarida init-premount katalogini yarating/

$ mkdir skriptlari/init-premount

va yangi yaratilgan katalogdagi fayllarni qo'shing:

Buyurtma

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

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

USB

#!/bin/sh

PREREQ = "" prereqs () {echo "$ PREREQ"} $ 1 in # oldindan shart-sharoitlarni olish) prereqs chiqish 0;; esac modprobe usb_f_ecm modprobe libcomposite modprobe usb_f_rndis modprobe g_ether

Usb faylida chmod -dan foydalanishni unutmang, uni bajarilishi mumkin:

$ chmod +x skriptlari/init-premount/usb

Endi, db410c-modullardan (2-QADAM) modulli barcha katalogni initrd lib/modules-ga ko'chiring:

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

Lib/modules/4.14.96-xxxx-dirty dagi barcha fayllar modulidan tashqari barcha fayllarni olib tashlang.* Va bu fayllar ro'yxati:

yadro/drayverlar/usb/gadget/legacy/g_ether.ko

yadro/drayverlar/usb/gadjet/legacy/g_mass_storage.ko yadrosi/drayverlar/usb/gadjet/eski/g_cdc.ko yadrosi/drayverlar/usb/gadjet/meros/g_serial.ko yadrosi/drayverlar/usb/gadjet/funktsiya/usb_f_mass_storage.ko yadrosi/drayverlar/usb/gadjet/funktsiya/usb_f_acm.ko yadrosi/drayverlar/usb/gadjet/funktsiya/u_ether.ko yadrosi/drayverlar/usb/gadjet/funktsiya/usb_f_obex.ko yadrosi/drayvlar/usb/gadjet/funktsiyasi /usb_f_serial.ko yadrosi/drayverlar/usb/gadjet/funktsiya/usb_f_ecm.ko yadrosi/drayverlar/usb/gadjet/funktsiya/usb_f_rndis.ko yadrosi/drayverlar/usb/gadjet/funktsiya/u_serial.ko yadrosi/drayvlar/usb/gadjet /function/usb_f_fs.ko yadrosi/drayverlar/usb/gadjet/funktsiya/usb_f_ecm_subset.ko yadrosi/drayverlar/usb/gadjet/libcomposite.ko

Bu fayllar USB Ethernet CDC ni ishga tushirish uchun zarur bo'lgan barcha modullardir.

Nihoyat, boshlang'ich rasmni qayta joylashtiring va siqing:

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

Hech bo'lmaganda, yadro tasviri va DTB faylini Android yuklash tasviriga to'plash kerak. Bunday tasvirni abootimg yordamida yaratish mumkin.

Keling, yadro katalogiga kiraylik va tasvirni yaratish va siqilgan yadro tasviriga DTB qo'shish uchun quyidagi buyruqni ishlatamiz:

$ CD../ yadro

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

Va nihoyat, yuklash tasvirini yarating (bu erda bizning rootfs 10.42.0.1 da masofaviy bo'limda joylashgan)

abootimg -boot -db410c.img -k Image.gz+dtb -r initrd_nfs.img -c pagesize = 2048 yaratish

-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 konsoli = tty0 konsoli = ttyMSM0, 115200n8"

Manbalar:

  • https://access.redhat.com/solutions/24029
  • 96Boards hujjatlari

4 -qadam: HOST -da ildiz fayl tizimini yaratish

Endi biz dragonboard 410c -ni yangilash uchun yangi yuklash tasvirini oldik. Ammo modullar, xizmatlar va ilovalarni yuklash uchun bizga masofaviy serverda ildiz fayl tizimi kerak. Ushbu bosqichda biz ushbu ma'lumotlarning barchasini saqlash uchun xostda umumiy katalog yaratamiz. Shunday qilib, keling linaro saytidan rootfs fayl tizimini initrd -da ishlatilgan versiyasi bilan yuklab olaylik. Shunday qilib, bitta katalogga qayting va 431 versiyasi bilan linaro-developer rootfs tasvirini yuklab oling.

$ CD..

$ wget

Bu faylni oching

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

Bu fayldan foydalanib, barcha bo'limlarga kirish va rootfs fayllarini nusxalash uchun sdcarddagi barcha tasvirni yozamiz. Shunday qilib, uSDCard ma'lumotlarining zaxiralanganligiga ishonch hosil qiling, chunki SDCarddagi hamma narsa yo'qoladi.

SDCard qurilmangiz nomini topish uchun SDCardni olib tashlang va quyidagi buyruqni bajaring:

$ lsblk

Diskdagi barcha taniqli nomlarni yodingizda saqlang. Endi SDCard -ni joylashtiring, biroz kuting va buyruqni yana bajaring:

$ lsblk

Yangi tan olingan diskka e'tibor bering. Bu sizning SDCard kartangiz bo'ladi. Ismingizni eslang va SDCard qurilmangiz nomi uchun "of =" parametrini o'zgartiring va qurilma nomini bo'limsiz ishlatganingizga ishonch hosil qiling, p.e.: /dev /mmcblk0

$ sudo dd if = dragonboard-410c-sdcard-developer-buster-431.img =/dev/XXX bs = 4M oflag = sinxronlash holati = taraqqiyot

Eslatmalar:

  • Bu buyruqni bajarish uchun biroz vaqt kerak bo'ladi. Sabr qiling va jarayon tugamaguncha terminalni buzishdan saqlaning.
  • SD -karta yonib -o'chib bo'lgach, asosiy kompyuterdan chiqarib oling.

Malumot: 96 taxtali hujjatlar

5 -qadam: HOSTda server NFS yaratish va fayllarni nusxalash

Bu erda bizda yuklash tasviri dragonboard 410c va bizning modullarimiz, xizmatlarimiz va ilovalarimiz uchun rootfs fayl tizimiga ega bo'lgan SDCard -da paydo bo'ladi. Keyingi qadam - USB Ethernet DEVICE tugmachasini HOST rootfs fayl tizimi bilan ulash uchun masofadan katalog yaratish. Buni Ubuntu nfs-kernel-server nomli paket yordamida qilish mumkin.

Bu paket NFS xizmatini Ubuntu -ga o'rnatadi, bu tarmoqdagi ba'zi qurilmalar uchun ba'zi kataloglarni almashish imkonini beradi, biz sizning IP -manzilingiz yordamida har bir qurilma uchun qaysi katalogdan foydalanilishini sozlashimiz mumkin.

Shunday qilib, keling, paketni o'rnatamiz va uni sozlaymiz.

$ sudo apt-get nfs-kernel-serverni o'rnating

NFS xizmati avtomatik ravishda ishga tushadi. NFS xizmatlarini boshqarish uchun quyidagilardan foydalaning:

$ sudo service nfs-kernel-server restart // qayta ishga tushirish uchun yoki kerak bo'lganda 'stop' yoki 'start' dan foydalaning.

Buyruqning satridan NFS xizmatining holatini tekshirish uchun:

$ sudo service nfs-kernel-server holati

nfsd ishlamoqda // Xizmat yuqoriroq nfsd ishlamayapti // Xizmat ishlamayapti

Keling, yuqori srv /nfs katalogini yaratamiz va uning ostida har bir NFS o'rnatilgan ildiz fayl tizimi uchun pastki katalog yaratamiz. Bu erda biz o'z ildiz fayl tizimini saqlab qolish uchun umumiy ildiz fayl tizimini o'z ichiga olamiz:

$ sudo mkdir -p /srv /nfs

$ sudo mkdir -p/srv/nfs/rootfs

Endi NFS -server har bir NFS fayl tizimi katalogiga ma'lum xostlarga kirishni boshqarish uchun /etc /export -ni to'g'ri sozlashni talab qiladi. Bunday holda, xostlar IP -manzili bilan aniqlanadi. Shunday qilib, yaratilgan har bir ildiz fayl tizimi uchun /etc /export -ga eksportni nazorat chizig'ini qo'shing, agar kerak bo'lsa, mahalliy IP -manzilingizni va kataloglarni nomlash sxemasini o'zgartiring. Ushbu qo'llanmada biz har doim quyidagilarni ishlatamiz:

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

SDCard -ni qayta joylashtiring, uni o'rnating va barcha rootfs fayl tizimini/srv/nfs/rootfs -ga nusxalash, yangi nusxalangan fayllar yordamida katalogni yangilash uchun NFS xizmatini qayta ishga tushiring.

Bundan tashqari, biz yangi modul fayllarini rootfs fayl tizimiga nusxalashimiz kerak, chunki biz yadroni 2-qadamda tuzdik. Shunday qilib, ~/db410c-modules/to/srv/nfs/rootfs dagi barcha kataloglarni nusxalash.

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

Ushbu kataloglar NFS xizmati tomonidan ko'rinadigan bo'lishiga ishonch hosil qiling. Yoki:

$ sudo exportfs -a

Malumot: TFTP/NFS ildiz fayl tizimi

6 -qadam: Dragonboard 410c yuklash tasvirini yangilash va tarmoq interfeyslarini sozlash

Biz masofadan turib rootfs fayl tizimini ishga tushirish uchun barcha qadamlarni qo'ydik, endi biz dragonboard 410c ichidagi yuklash tasvirini yangilashimiz kerak, buning uchun USB kabelingizni kompyuterga va drayverlar paneli USB portiga ulang. Shunday qilib, fastboot asosiy kompyuterda o'rnatilganligiga ishonch hosil qiling, agar o'rnatilmagan bo'lsa:

$ sudo apt fastboot -ni o'rnatadi

Endi tasvirni yangilash uchun dragonboard -ni quyidagi bosqichlarni bajarib fastboot rejimiga o'tkazing:

  • DragonBoard 410c-dagi Vol (-) tugmachasini bosib ushlab turing, bu S4 tugmasi. DragonBoard ™ 410c hali ham yoqilmagan bo'lishi kerak
  • Vol (-) tugmachasini ushlab turganda, DragonBoard 410c-ni ulang
  • DragonBoard 410c quvvat manbaiga ulangandan so'ng, ovoz balandligi (-) tugmachasini bosib turing.
  • Taxminan 20 soniya kuting.
  • Kengash fastboot rejimiga yuklanishi kerak.

Ulangan xost -mashina terminali oynasida quyidagi buyruqlarni bajaring:

$ sudo fastboot qurilmalari

Odatda u quyida ko'rsatiladi

de82318 fastboot

Bu vaqtda siz DragonBoard 410c -ga USB -microUSB -kabel orqali ulangan bo'lishingiz kerak. Sizning DragonBoard 410c fastboot rejimida yuklanishi va tegishli tasvirlar bilan yonib turishi uchun tayyor bo'lishi kerak. Keling, yuklash tasvirini yuklash tasviri bilan yangilaymiz:

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

Va taxtani qayta ishga tushiring

$ sudo fastboot qayta yuklash

Endi sizning HOST usb0 nomli yangi interfeysni aniqlaydi, lekin u hali IPga ega emas. Shunday qilib, ushbu interfeysga statik IP qo'shing:

$ sudo ifconfig usb0 10.42.0.1 netmask 255.255.255.0 yuqoriga

Yoki HOST -dagi "Konfiguratsiya" bo'limiga "tarmoq" bandiga kiring, USB Ethernet -ni ushbu interfeysga statik IP -ni o'rnating.

Endi ajdaho panelini qayta ishga tushiring va ssh yordamida ulanishga urinib, tizimning ishga tushirilishini tekshiring:

$ ssh [email protected]

Manbalar:

  • 96 taxtali hujjatlar
  • HowtoForge - 6 -band

Tavsiya: