DB410 -ийг Ethernet Dongle болгон ашиглан алсын root файлын системд нэвтрэх: 6 алхам
DB410 -ийг Ethernet Dongle болгон ашиглан алсын root файлын системд нэвтрэх: 6 алхам
Anonim
DB410 -ийг Ethernet Dongle болгон ашиглан алсын root файлын системд нэвтрэх
DB410 -ийг Ethernet Dongle болгон ашиглан алсын root файлын системд нэвтрэх

Зорилго:

  • USB Ethernet CDC Gadget -ийн дэмжлэгийг оруулахын тулд багажны сүлжээ суулгаж, цөмийг дахин хөрвүүлэх;
  • USB Ethernet CDC -ийг эхлүүлэхийн тулд Linaro -аас boot.img файлыг дахин үүсгэх;
  • Root файлын системийг байршуулахын тулд NFS сервер үүсгэх;
  • DEVICE болон HOST дахь IP тохиргоо.

Алхам 1: Шаардлагатай зүйлс

Танд дараахь хэрэгсэл хэрэгтэй болно

  1. A DragonBoard ™ 410c (энд DEVICE гэж нэрлэдэг);
  2. Ubuntu 16.04.3 ашигладаг компьютер шинэчлэгдсэн (энд HOST гэж нэрлэгддэг) интернет холболт, SDCard үүртэй;
  3. Linaro -хөгжүүлэгчийн 431 хувилбарын цэвэр суурилуулалт - Холбоос: Хормын хувилбар Linaro Debian v431
  4. HDMI дэлгэц;
  5. USB гар;
  6. 8 ГБ хэмжээтэй SD карт;
  7. HOST дээр DEVICE -ийг холбох USB кабель, uUSB USB.

Алхам 2: HOST дээр цөм үүсгэх, цөм үүсгэх хостыг тохируулах

Нэгдүгээрт, бид үргэлжлүүлэхийн өмнө бүх лавлах санг үүсгэх болно. Тиймээс:

$ cd ~

$ mkdir db410remoteroot $ cd db410remoteroot $ mkdir toolchain $ mkdir db410c-модулиуд

Харамсалтай нь Linaro (431 -р хувилбар) ашигладаг линукс цөм нь USB Ethernet хэрэгслийг дэмждэггүй тул Linux цөмийг энэ хувилбарт зориулж дахин бүтээх ёстой. X86 хост машинаас Dragonboard410c дээр линукс цөм бүтээх, байршуулахын тулд Linaro багаж хэрэгслийг татаж аваарай.

$ wget

$ tar -xf gcc-*-x86_64_aarch64-linux-gnu.tar.xz -C./toolchain-зурвас-бүрэлдэхүүн хэсгүүд = 1

Одоо цөмийг бүтээхэд шаардлагатай багцуудыг суулгаарай.

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

Линукс цөмийн эх сурвалж болох Clone Qualcomm буух багийн Linux репозиторыг авах:

$ git clone

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

Одоо хөрвүүлэлтийн орчны хувьсагчдыг тохируулна уу.

$ экспорт ARCH = arm64

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

Энэ үед бид модулийг цөм дэх USB Ethernet CDC дээр нэмэх хэрэгтэй. Би үүнийг өмнө нь хийж байсан бөгөөд энэ алхмын төгсгөлд та үүнийг авах боломжтой. Би зарим зүйлийг арилгасан боловч энэ нь ажилласан.

Эмхэтгэхийн өмнө цөмийн алдааг драйверууд/mmc/host/sdhci-msm.c болгон залруулж, 1150 мөр дэх бүтцийг өөрчилнө үү.

статик бүтэц бүтэц 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 файлыг задалж,.config файлыг цөмийн директор руу хуулж, цөм, модулиудыг бүтээж, директор дотор модулиудыг суулгана уу.

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

$ make -j $ (nproc) модулиуд $ make modules_install INSTALL_MOD_PATH =../db410c -модулиуд

Лавлагаа: 96Boards Documentation

Алхам 3: HOST дээр Boot.img -ийг дахин бүтээнэ үү

Энэ алхамд бид initrd зургийг нээж, зураг дотор байрлуулсан модулиудыг байрлуулж, уг модулийг эхлүүлэх системийг тохируулж, root файлын системийг алсаас эхлүүлэхийн тулд initrd.img -ийг шинэ цөмийн тушаалын мөрөөр дахин бүтээх хэрэгтэй.

Тиймээс эхлээд linaro вэбсайтаас initrd.img татаж авах хэрэгтэй.

$ cd..

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

Одоо татаж авсны дараа эхлүүлэлтийг задалж задлаарай:

$ zcat ramdisk.img | cpio -idmv

Энэ лавлахад бид цөмийг эхлүүлэхэд ашигладаг эх файлын системтэй тул энд хэрэгтэй USB Ethernet CDC модулиуд болон NFS серверийн IP, ethernet (usb) зэрэг алсын параметрүүдийг тохируулах болно.

Одоо зарим файлуудыг тохируулцгаая.

conf/initramfs.conf:

МОДУЛЬ = хамгийн их

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

Лавлах скриптүүд дээр init-premount директор үүсгэх/

$ mkdir скриптүүд/init-premount

шинээр үүсгэсэн директорын файлуудыг нэмнэ үү.

ЗАХИАЛГА

/скриптүүд/init-premount/usb "$@"

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

usb

#!/бин/ш

PREREQ = "" prereqs () {echo "$ PREREQ"} тохиолдолд $ 1 in # урьдчилсан урьдчилсан нөхцөлийг авах) урьдчилсан шаардлага 0 гарах;; esac modprobe usb_f_ecm modprobe libcomposite modprobe usb_f_rndis modprobe g_ether

Үүнийг ажиллуулахын тулд usb файлд chmod ашиглахаа бүү мартаарай.

$ chmod +x скриптүүд/init-premount/usb

Одоо db410c-modules (STEP 2) -аас modb бүхий бүх лавлахыг initrd дахь lib/modules руу хуулж аваарай.

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

Lib/modules/4.14.96-xxxx-бохир дахь бүх файлын модулийг эс тооцвол бүх файлыг устга.* Болон тэр файлын жагсаалт:

цөм/драйверууд/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 цөм/драйверууд/usb/gadget/функц/usb_f_acm.ko цөм/драйверууд/usb/гаджет/функц/u_ether.ko цөм/драйверууд/usb/гаджет/функц/usb_f_obex.ko цөм/драйверууд/usb/гаджет/функц /usb_f_serial.ko цөм/драйверууд/usb/gadget/функц/usb_f_ecm.ko цөм/драйверууд/usb/gadget/функц/usb_f_rndis.ko цөм/драйверууд/usb/gadget/функц/u_serial.ko цөм/драйверууд/usb/gadget /function/usb_f_fs.ko цөм/драйверууд/usb/gadget/function/usb_f_ecm_subset.ko цөм/драйверууд/usb/gadget/libcomposite.ko

Эдгээр файлууд нь USB Ethernet CDC -ийг эхлүүлэхэд шаардлагатай бүх модулиуд юм.

Эцэст нь анхны зургийг дахин боож, шахна уу.

$ олох. | cpio -o -H newc | gzip -9>../kernel/initrd_nfs.img

Наад зах нь, цөмийн зураг болон DTB файлыг Андройд ачаалах дүрс болгон оруулах ёстой. Ийм зургийг abootimg хэрэгслээр үүсгэж болно.

Цөмийн лавлах санд ороод доорх тушаалыг ашиглан зураг бүтээж, шахсан цөмийн зураг дээр DTB -ийг нэмнэ үү.

$ cd../ цөм

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

Эцэст нь ачаалах дүрсийг үүсгэнэ үү (энд манай rootfs нь 10.42.0.1 -ийн алсын хуваалт дээр байрладаг)

abootimg -boot -db410c.img -k Image.gz+dtb -r initrd_nfs.img -c хуудасны хэмжээ = 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 консол = tty0 консол = ttyMSM0, 115200n8"

Ашигласан материал:

  • https://access.redhat.com/solutions/24029
  • 96Boards -ийн баримт бичиг

Алхам 4: HOST дээр root файлын системийг бий болгох

Одоо бид луу самбар 410c -ийг шинэчлэх шинэ ачаалах дүрстэй боллоо. Гэхдээ модуль, үйлчилгээ, програмыг ачаалахын тулд алсын сервер дээр root файлын систем хэрэгтэй. Энэ алхам дээр бид эдгээр бүх өгөгдлийг хадгалахын тулд хост дотор хуваалцсан лавлах үүсгэх болно. Тиймээс, initrd -д ашигласан ижил хувилбартай линаро сайтаас rootfs файлын системийг татаж авцгаая. Тиймээс, нэг лавлах руу буцаж очоод 431 хувилбартай linaro-хөгжүүлэгчийн rootfs зургийг татаж аваарай.

$ cd..

$ wget

Энэ файлыг задлах

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

Энэ файлыг ашиглан бүх хуваалтуудад хандах, rootfs файлуудыг хуулахын тулд бүх зургийг sdcard дээр бичье. Тиймээс SDCard дээрх бүх зүйл устах тул uSDCard -ийн өгөгдлийг нөөцөлсөн эсэхийг шалгаарай.

SDCard төхөөрөмжийнхөө нэрийг олохын тулд SDCard -ийг устгаад дараах тушаалыг ажиллуулна уу.

$ lsblk

Бүх хүлээн зөвшөөрөгдсөн дискний нэрийг оюун ухаандаа хадгалаарай. Одоо SDCard -ийг оруулаад хэсэг хүлээгээд командыг дахин ажиллуулна уу.

$ lsblk

Шинээр танигдсан дискийг анхаарч үзээрэй. Энэ нь таны SDCard байх болно. Нэрээ санаж, SDCard төхөөрөмжийнхөө нэрний "of =" параметрийг өөрчилж, төхөөрөмжийн нэрийг хуваахгүйгээр ашиглахаа мартуузай, p.e.: /dev /mmcblk0

$ sudo dd if = dragonboard-410c-sdcard-developer-buster-431.img of =/dev/XXX bs = 4M oflag = sync status = явц

Тэмдэглэл:

  • Энэ тушаалыг гүйцэтгэхэд хэсэг хугацаа шаардагдана. Тэвчээртэй байж, процесс дуусах хүртэл терминалыг хөндөхөөс зайлсхий.
  • SD карт анивчсаны дараа хост компьютерээс салга.

Лавлагаа: 96 самбарын баримт бичиг

Алхам 5: HOST дээр сервер NFS үүсгэх, файл хуулах

Энэ тохиолдолд бидэнд ачаалах дүрс байгаа бөгөөд луу модны 410c болон бидний модуль, үйлчилгээ, програмд зориулсан rootfs файлын систем бүхий SDCard дээр харагдах болно. Дараагийн алхам бол USB Ethernet DEVICE товчлуурыг HOST rootfs файлын системтэй холбох алсын лавлах үүсгэх явдал юм. Үүнийг Ubuntu-аас nfs-kernel-server нэртэй багц ашиглан хийж болно.

Энэхүү багц нь NFS үйлчилгээг Ubuntu -д суулгаж, сүлжээнд байгаа зарим төхөөрөмжүүдийн зарим лавлахыг хуваалцах боломжийг олгодог бөгөөд бид таны IP -ийг ашиглан төхөөрөмж бүрт ямар директорыг ашиглахыг тохируулж болно.

Тиймээс, багцыг суулгаад тохируулцгаая.

$ sudo apt-get nfs-kernel-server-ийг суулгаарай

NFS үйлчилгээ автоматаар эхэлдэг. NFS үйлчилгээг хянахын тулд дараахь зүйлийг ашиглана уу.

$ sudo service nfs-kernel-server restart // дахин эхлүүлэх, эсвэл шаардлагатай бол 'stop' эсвэл 'start' командыг ашиглана уу.

NFS үйлчилгээний статусыг командын мөрөөс шалгахын тулд:

$ sudo үйлчилгээ nfs-kernel-server status

nfsd ажиллаж байна // Үйлчилгээ Дээш байна nfsd ажиллахгүй байна // Үйлчилгээ уналттай байна

Одоо, дээд директор /srv /nfs үүсгээд NFS -д суулгасан root файлын систем бүрийн хувьд дэд директор үүсгэе. Энд бид өөрсдийн root файлын системийг хадгалахын тулд хуваалцсан root файлын системийг оруулсан болно.

$ sudo mkdir -p /srv /nfs

$ sudo mkdir -p/srv/nfs/rootfs

Одоо NFS сервер нь тодорхой хостуудад NFS файлын системийн лавлах бүрийн хандалтыг хянахын тулд /etc /export -ийг зөв тохируулахыг шаарддаг. Энэ тохиолдолд хостуудыг IP хаягаар нь тодорхойлдог. Тиймээс, үүсгэгдсэн root файлын систем бүрийн хувьд экспортын хяналтын мөрийг /etc /export дээр нэмж, шаардлагатай бол өөрийн дотоод IP хаяг болон директорын нэрлэх схемийг тохируулна уу. Энэхүү гарын авлагад бид үүнийг үргэлж ашигладаг.

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

SDCard -аа дахин оруулаад суулгаад бүх rootfs файлын системийг/srv/nfs/rootfs руу хуулж, шинэ хуулагдсан файлуудыг ашиглан лавлах санг шинэчлэхийн тулд NFS үйлчилгээг дахин эхлүүлнэ үү.

Нэмж хэлэхэд, бид 2-р алхам дээр цөмийг хөрвүүлсэн тул шинэ модулийн файлуудыг rootfs файлын систем рүү хуулах шаардлагатай байна.

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

Эдгээр сангууд нь NFS үйлчилгээгээр харагддаг эсэхийг шалгаарай. Аль нь ч:

$ sudo exportfs -a

Лавлагаа: TFTP/NFS Root Files System

Алхам 6: Dragonboard 410c ачаалах зургийг шинэчлэх, сүлжээний интерфэйсийг тохируулах

Алсын rootfs файлын системийг хэрэгжүүлэхийн тулд бид бүх алхамыг эрт хийсэн, одоо бид dragonboard 410c доторх ачаалах дүрсийг шинэчлэх шаардлагатай бөгөөд ингэснээр өөрийн USB кабелийг компьютер болон луугийн USB холбогч дээр холбоно уу. Тиймээс fastboot -ийг хост компьютер дээр суулгасан эсэхийг шалгаарай, хэрэв суулгаагүй бол:

$ sudo apt fastboot суулгаарай

Одоо зургийг шинэчлэхийн тулд dragonboard -ийг дараах алхмуудыг дагаж fastboot горимд эхлүүлнэ үү.

  • DragonBoard 410c дээрх Vol (-) товчлуурыг дарж барина уу, энэ бол S4 товч юм. DragonBoard ™ 410c асаалттай хэвээр байх ёсгүй
  • Vol (-) товчлуурыг барьж байхдаа DragonBoard 410c-ийг залгаарай
  • DragonBoard 410c тэжээлд холбогдсоны дараа Vol (-) товчлуурыг дарна уу.
  • Ойролцоогоор 20 секунд хүлээнэ үү.
  • Удирдах зөвлөл хурдан ачаалах горимд ачаалагдах ёстой.

Холбогдсон хост машины терминалын цонхноос дараах тушаалуудыг ажиллуулна уу.

$ sudo fastboot төхөөрөмж

Дүрмээр бол энэ нь доор харуулагдах болно

de82318 fastboot

Энэ үед та DragonBoard 410c -ийг USB -microUSB кабелиар холбох ёстой. Таны DragonBoard 410c -ийг fastboot горимд ачаалж, зохих зургуудыг цацахад бэлэн байх ёстой. Ачаалах дүрсийг өөрийн ачаалах дүрсээр шинэчилье.

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

Тэгээд самбарыг дахин эхлүүлнэ үү

$ sudo fastboot дахин ачаална уу

Одоо таны HOST usb0 нэртэй шинэ интерфэйсийг илрүүлэх болно, гэхдээ одоогоор IP байхгүй байна. Тиймээс, энэ интерфэйс дээр статик IP нэмнэ үү:

$ sudo ifconfig usb0 10.42.0.1 netmask 255.255.255.0 хүртэл

Эсвэл HOST дээрх "Тохиргоо" хэсэгт "сүлжээ" гэсэн хэсэгт ороод USB Ethernet -ийг тухайн интерфэйс рүү статик IP болгоно уу.

Одоо луу самбарыг дахин эхлүүлээд системийн эхлэлийг шалгаж, ssh ашиглан холбогдохыг оролдоорой:

$ ssh [email protected]

Ашигласан материал:

  • 96 самбарын баримт бичиг
  • HowtoForge - 6 -р зүйл

Зөвлөмж болгож буй: