Daftar Isi:

Mengakses Sistem File Root Jarak Jauh Menggunakan DB410 Sebagai Dongle Ethernet: 6 Langkah
Mengakses Sistem File Root Jarak Jauh Menggunakan DB410 Sebagai Dongle Ethernet: 6 Langkah

Video: Mengakses Sistem File Root Jarak Jauh Menggunakan DB410 Sebagai Dongle Ethernet: 6 Langkah

Video: Mengakses Sistem File Root Jarak Jauh Menggunakan DB410 Sebagai Dongle Ethernet: 6 Langkah
Video: Bisa Di Semua HP Android! Kontrol HP Jarak Jauh dari Browser Keren sih ini!! Review Airdroid Web 2024, Juli
Anonim
Mengakses Sistem File Root Jarak Jauh Menggunakan DB410 Sebagai Dongle Ethernet
Mengakses Sistem File Root Jarak Jauh Menggunakan DB410 Sebagai Dongle Ethernet

Tujuan:

  • Instal toolchain dan kompilasi ulang kernel untuk memasukkan dukungan USB Ethernet CDC Gadget;
  • Buat ulang boot.img dari Linaro untuk mem-boot USB Ethernet CDC;
  • Buat server NFS untuk meng-host sistem file root;
  • Konfigurasi IP di DEVICE dan HOST.

Langkah 1: Persyaratan

Anda akan membutuhkan item berikut:

  1. A DragonBoard™ 410c (disebut di sini PERANGKAT);
  2. PC yang menggunakan Ubuntu 16.04.3 diperbarui (dinamai di sini HOST) dengan koneksi internet dan slot SDCard;
  3. Instalasi bersih Linaro-developer versi 431 - Tautan: Snapshot Linaro Debian v431
  4. Monitor HDMI;
  5. Papan ketik USB;
  6. Kartu SD 8 Gb;
  7. Kabel USB, uUSB USB untuk menghubungkan PERANGKAT di HOST.

Langkah 2: Mengonfigurasi Host untuk Membangun Kernel dan Membangun Kernel di HOST

Pertama, kita akan membuat semua direktori sebelum melanjutkan. Jadi:

$cd ~

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

Sayangnya, kernel linux yang digunakan oleh Linaro (Versi 431) tidak memiliki dukungan untuk gadget USB Ethernet, oleh karena itu, kernel Linux harus dibangun kembali untuk versi khusus ini. Unduh Linaro toolchain untuk membangun dan menyebarkan kernel linux di Dragonboard410c dari mesin host x86.

$ wget

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

Sekarang instal paket yang diperlukan untuk membangun kernel:

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

Dapatkan sumber Kernel Linux, Klon, tim pendaratan Qualcomm, repositori Linux:

$ git clone

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

Sekarang, atur variabel lingkungan kompilasi:

$ekspor ARCH=arm64

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

Pada titik ini, kita perlu menambahkan modul ke USB Ethernet CDC di kernel. Saya melakukan itu sebelumnya dan Anda bisa mendapatkannya di akhir langkah ini. Saya menghapus beberapa item tetapi berhasil.

Sebelum mengkompilasi, mohon koreksi bug kernel menjadi driver/mmc/host/sdhci-msm.c mengubah struct pada baris 1150 menjadi:

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

Buka kompresi configfile.zip, salin file.config ke direktori kernel, buat kernel, modul, dan instal modul di direktori:

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

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

Referensi: 96Dokumentasi Papan

Langkah 3: Bangun kembali Boot.img di HOST

Pada langkah ini, kita perlu membuka image initrd, meletakkan modul yang dibangun di dalam image, mengkonfigurasi sistem untuk memulai modul itu dan membangun kembali initrd.img dengan baris perintah kernel baru untuk mem-boot sistem file root dari jarak jauh.

Jadi, pertama-tama kita harus mendownload initrd.img dari website linaro:

$cd..

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

Sekarang, setelah mengunduh, buka kompres dan ekstrak initrd:

$ zcat ramdisk.img | cpio -idmv

Di direktori ini, kami memiliki sistem file root yang digunakan oleh kernel dalam inisialisasi, jadi kami akan mengonfigurasi modul USB Ethernet CDC dan parameter jarak jauh NFS seperti IP server NFS dan ethernet (usb) yang diperlukan di sini.

Sekarang, mari kita konfigurasikan beberapa file:

conf/initramfs.conf:

MODUL=paling

BUSYBOX=KOMPRES otomatis=gzip PERANGKAT=usb0 NFSROOT=RUNSIZE otomatis=10%

Buat direktori init-premount di direktori scripts/

$ mkdir scripts/init-premount

dan tambahkan file di direktori yang baru saja dibuat ini:

MEMESAN

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

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

usb

#!/bin/sh

PREREQ="" prereqs() { echo "$PREREQ" } case $1 di # dapatkan prasyarat prasyarat) prereqs exit 0;; esac modprobe usb_f_ecm modprobe libcomposite modprobe usb_f_rndis modprobe g_ether

Jangan lupa untuk menggunakan chmod dalam file usb untuk membuatnya dapat dieksekusi:

$ chmod +x skrip/init-premount/usb

Sekarang, salin semua direktori dengan modul dari db410c-modules (LANGKAH 2) ke lib/modules di initrd:

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

Hapus semua file di lib/modules/4.14.96-xxxx-dirty kecuali semua file module.* dan daftar file itu:

kernel/driver/usb/gadget/legacy/g_ether.ko

kernel/driver/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

File-file itu adalah semua modul yang diperlukan untuk memulai USB Ethernet CDC.

Terakhir, kemas ulang dan kompres gambar initrd:

$ temukan. | cpio -o -H baru | gzip -9 >../kernel/initrd_nfs.img

Setidaknya, gambar kernel dan file DTB perlu dikemas ke dalam gambar boot Android. Gambar tersebut dapat dihasilkan dengan alat abootimg.

Mari kita masuk ke direktori kernel dan gunakan perintah di bawah ini untuk membangun image dan menambahkan DTB di image kernel terkompresi:

$cd../kernel

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

Dan akhirnya, buat gambar boot (di sini rootfs kami terletak di partisi jarak jauh di 10.42.0.1)

abootimg --buat boot-db410c.img -k Gambar.gz+dtb -r initrd_nfs.img -c ukuran halaman=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:mati rw rootwait console=tty0 console=ttyMSM0, 115200n8"

Referensi:

  • https://access.redhat.com/solutions/24029
  • 96Dokumentasi Papan

Langkah 4: Membuat Sistem File Root di HOST

Sekarang, kami telah mendapatkan gambar boot baru untuk memperbarui dragonboard 410c. Tetapi kita membutuhkan sistem file root di server jauh untuk mem-boot modul, layanan, dan aplikasi. Pada langkah ini, kami akan membangun direktori bersama di host untuk menyimpan semua data ini. Dengan begitu, mari kita download filesystem rootfs dari situs linaro dengan versi yang sama dengan yang digunakan di initrd. Jadi, kembali satu direktori dan unduh gambar rootfs linaro-developer dengan versi 431.

$cd..

$ wget

Buka kompresi file ini

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

Dengan menggunakan file ini, mari kita tulis semua gambar dalam kartu sd untuk mengakses semua partisi dan menyalin file rootfs. Jadi, pastikan data dari uSDCard dibackup karena semua yang ada di SDCard akan hilang.

Untuk menemukan nama perangkat SDCard Anda, hapus SDCard dan jalankan perintah berikut:

$ lsblk

Simpan dalam pikiran Anda semua nama disk yang dikenali. Sekarang masukkan SDCard, tunggu sebentar dan jalankan perintah lagi:

$ lsblk

Perhatikan disk yang baru dikenali. Ini akan menjadi SDCard Anda. Ingat nama Anda dan ubah parameter "of=" untuk nama perangkat SDCard Anda dan pastikan untuk menggunakan nama perangkat tanpa partisi, hal.: /dev/mmcblk0

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

Catatan:

  • Perintah ini akan membutuhkan waktu untuk dieksekusi. Bersabarlah dan hindari merusak terminal sampai proses selesai.
  • Setelah kartu SD selesai di-flash, lepaskan dari komputer host.

Referensi: dokumentasi 96boards

Langkah 5: Membuat NFS Server di HOST dan Menyalin File

Pada titik ini, kami memiliki gambar boot untuk di-flash ke dragonboard 410c dan SDCard dengan sistem file rootfs untuk modul, layanan, dan aplikasi kami. Langkah selanjutnya adalah membuat direktori jarak jauh untuk menghubungkan USB Ethernet DEVICE dengan sistem file rootfs HOST. Itu dapat dilakukan dengan menggunakan paket dari Ubuntu bernama nfs-kernel-server.

Paket ini menginstal layanan NFS ke Ubuntu yang memungkinkan untuk berbagi beberapa direktori untuk beberapa perangkat di jaringan, kami dapat mengonfigurasi direktori mana yang akan digunakan untuk setiap perangkat dengan menggunakan IP Anda.

Jadi, mari instal paket dan konfigurasikan.

$ sudo apt-get install nfs-kernel-server

Layanan NFS dimulai secara otomatis. Untuk mengontrol layanan NFS gunakan:

$ sudo service nfs-kernel-server restart // untuk restart, atau gunakan 'stop', atau 'start' sesuai kebutuhan.

Untuk memeriksa status layanan NFS dari baris perintah gunakan:

$ sudo layanan nfs-kernel-server status

nfsd berjalan // Layanan naik nfsd tidak berjalan // Layanan tidak aktif

Sekarang, mari buat direktori teratas /srv/nfs, dan buat subdirektori di bawahnya untuk setiap sistem file root yang dipasang NFS yang diperlukan. Di sini kami menyertakan sistem file root bersama untuk menjaga sistem file root kami:

$ sudo mkdir -p /srv/nfs

$ sudo mkdir -p /srv/nfs/rootfs

Sekarang, server NFS membutuhkan /etc/exports untuk dikonfigurasi dengan benar, untuk mengontrol akses ke setiap direktori sistem file NFS ke host tertentu. Dalam hal ini host diidentifikasi oleh alamat IP mereka. Jadi, untuk setiap sistem file root yang dibuat, tambahkan baris kontrol ekspor ke /etc/exports, sesuaikan dengan alamat IP lokal Anda dan skema penamaan direktori jika perlu. Dalam tutorial ini, kami selalu menggunakan itu:

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

Masukkan lagi SDCard Anda, pasang dan salin semua sistem file rootfs ke /srv/nfs/rootfs, mulai ulang layanan NFS untuk memperbarui direktori menggunakan file salinan baru.

Selain itu, kita perlu menyalin file modul baru ke sistem file rootfs karena kita mengkompilasi kernel pada langkah 2. Jadi, salin semua direktori di ~/db410c-modules/ ke /srv/nfs/rootfs.

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

Pastikan bahwa direktori ini dibuat terlihat oleh layanan NFS. Salah satu:

$ sudo exportfs -a

Referensi: Sistem File Root TFTP/NFS

Langkah 6: Memperbarui Gambar Boot Dragonboard 410c dan Mengonfigurasi Antarmuka Jaringan

Kami membuat semua langkah awal untuk menerapkan sistem file rootfs jarak jauh, sekarang kami perlu memperbarui gambar boot di dalam dragonboard 410c, untuk itu, sambungkan kabel USB Anda di PC dan di konektor uUSB dragonboard. Jadi pastikan fastboot sudah diatur di komputer host, jika tidak menginstal menggunakan:

$ sudo apt install fastboot

Sekarang untuk memperbarui gambar, mulai de dragonboard ke mode fastboot dengan mengikuti langkah-langkah ini:

  • Tekan dan tahan tombol Vol (-) pada DragonBoard 410c, ini adalah tombol S4. DragonBoard™ 410c masih TIDAK boleh dinyalakan
  • Sambil menahan tombol Vol (-), hidupkan DragonBoard 410c dengan mencolokkannya
  • Setelah DragonBoard 410c dicolokkan ke listrik, lepaskan pegangan Anda pada tombol Vol (-).
  • Tunggu sekitar 20 detik.
  • Papan harus boot ke mode fastboot.

Dari jendela terminal mesin host yang terhubung, jalankan perintah berikut:

$ perangkat fastboot sudo

Biasanya akan ditampilkan seperti di bawah ini

de82318 fastboot

Pada titik ini Anda harus terhubung ke DragonBoard 410c Anda dengan kabel USB ke microUSB. DragonBoard 410c Anda harus di-boot ke mode fastboot dan siap untuk di-flash dengan gambar yang sesuai. Mari perbarui gambar boot dengan gambar boot kita:

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

Dan, mulai ulang papan

$ sudo fastboot reboot

Sekarang, HOST Anda akan mendeteksi antarmuka baru bernama usb0, tetapi belum memiliki IP. Jadi, tambahkan IP statis ke antarmuka ini menggunakan:

$ sudo ifconfig usb0 10.42.0.1 netmask 255.255.255.0 up

Atau masukkan "Konfigurasi" di HOST, di item "jaringan", atur USB Ethernet IP statis ke antarmuka itu.

Sekarang, restart lagi dragonboard dan verifikasi startup sistem, coba sambungkan menggunakan ssh:

$ssh [email protected]

Referensi:

  • dokumentasi 96boards
  • HowtoForge - Butir 6

Direkomendasikan: