Mengakses Sistem Filem Root Jauh Menggunakan DB410 Sebagai Ethernet Dongle: 6 Langkah
Mengakses Sistem Filem Root Jauh Menggunakan DB410 Sebagai Ethernet Dongle: 6 Langkah
Anonim
Mengakses Sistem Filem Root Jauh Menggunakan DB410 Sebagai Ethernet Dongle
Mengakses Sistem Filem Root Jauh Menggunakan DB410 Sebagai Ethernet Dongle

Objektif:

  • Pasang rantai alat dan kumpulkan semula kernel untuk memasukkan sokongan Alat Ethernet CDC USB;
  • Buat semula boot.img dari Linaro untuk boot CDC Ethernet USB;
  • Buat pelayan NFS untuk menjadi tuan rumah sistem fail root;
  • Konfigurasi IP dalam DEVICE dan HOST.

Langkah 1: Keperluan

Anda memerlukan itens berikut:

  1. DragonBoard ™ 410c (dinamakan di sini PERANTI);
  2. PC yang menggunakan Ubuntu 16.04.3 dikemas kini (dinamakan di sini HOST) dengan sambungan internet dan slot SDCard;
  3. Pemasangan bersih Linaro-developer versi 431 - Pautan: Snapshot Linaro Debian v431
  4. Monitor HDMI;
  5. Papan kekunci USB;
  6. Kad SD 8Gb;
  7. Kabel USB, USB uUSB untuk menyambungkan PERANGKAT di HOST.

Langkah 2: Mengkonfigurasi Host untuk Membangun Kernel dan Membina Kernel di HOST

Pertama, kami akan membuat semua direktori sebelum meneruskan. Jadi:

$ cd ~

$ mkdir db410remoteroot $ cd db410remoteroot $ mkdir toolchain $ mkdir db410c-modul

Sayangnya, kernel linux yang digunakan oleh Linaro (Versi 431) tidak mempunyai sokongan untuk alat USB Ethernet, oleh kerana itu, kernel Linux mesti dibina semula untuk versi khusus ini. Muat turun rantai alat Linaro untuk membina dan menggunakan kernel linux pada Dragonboard410c dari mesin host x86.

$ wget

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

Sekarang pasang pakej yang diperlukan untuk membina kernel:

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

Dapatkan repositori Linux team pendaratan Clone Qualcomm sumber Kernel Linux:

$ git klon

$ cd kernel $ git asal / pelepasan / qcomlt-4.14 -b my-custom-4.14

Sekarang, tetapkan pemboleh ubah persekitaran kompilasi:

$ eksport ARCH = arm64

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

Pada ketika ini, kita perlu menambahkan modul ke USB Ethernet CDC di kernel. Saya telah melakukannya sebelum ini dan anda boleh mendapatkannya pada akhir langkah ini. Saya mengeluarkan beberapa itens tetapi ia berfungsi.

Sebelum menyusun, betulkan bug kernel menjadi driver / mmc / host / sdhci-msm.c mengubah struktur dalam baris 1150 kepada:

stat stat const 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 kompres configfile.zip, salin fail.config ke direktori kernel, bina kernel, modul dan pasang modul dalam direktori:

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

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

Rujukan: Dokumentasi 96Board

Langkah 3: Bangun semula Boot.img di HOST

Pada langkah ini, kita perlu membuka gambar initrd, meletakkan modul yang dibina di dalam gambar, mengkonfigurasi sistem untuk memulakan modul tersebut dan membina semula initrd.img dengan baris perintah kernel baru untuk boot sistem fail root dari jauh.

Oleh itu, pertama, kita harus memuat turun initrd.img dari laman web linaro:

$ cd..

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

Sekarang, setelah memuat turun, tekan dan ekstrak initrd:

$ zcat ramdisk.img | cpio -idmv

Dalam direktori ini, kami mempunyai sistem fail root yang digunakan oleh kernel dalam inisialisasi, jadi kami akan mengkonfigurasi modul CDC USB Ethernet dan parameter jauh NFS seperti IP pelayan NFS dan ethernet (usb) yang diperlukan di sini.

Sekarang, mari konfigurasikan beberapa fail:

conf / initramfs.conf:

MODUL = paling banyak

BUSYBOX = COMPRESS automatik = gzip PERANGKAT = usb0 NFSROOT = auto RUNSIZE = 10%

Buat direktori init-premount dalam skrip direktori /

skrip $ mkdir / init-premount

dan tambahkan fail dalam direktori yang baru dibuat ini:

PESANAN

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

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

usb

#! / bin / sh

PREREQ = "" prereqs () {echo "$ PREREQ"} kes $ 1 dalam # dapatkan prasyarat prasyarat) prasyarat keluar 0;; esac modprobe usb_f_ecm modprobe libcomposite modprobe usb_f_rndis modprobe g_ether

Jangan lupa menggunakan chmod dalam fail usb untuk membuatnya dapat dilaksanakan:

$ chmod + x skrip / init-premount / usb

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

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

Buang semua fail dalam lib / modul / 4.14.96-xxxx-kotor kecuali semua modul fail. * Dan senarai fail itu:

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

kernel / driver / usb / gadget / legacy / g_mass_storage.ko kernel / driver / usb / gadget / legacy / g_cdc.ko kernel / driver / usb / gadget / legacy / g_serial.ko kernel / driver / usb / gadget / function / usb_f_mass_storage.ko kernel / driver / usb / gadget / function / usb_f_acm.ko kernel / driver / usb / gadget / function / u_ether.ko kernel / driver / usb / gadget / function / usb_f_obex.ko kernel / driver / usb / gadget / fungsi /usb_f_serial.ko kernel / driver / usb / gadget / function / usb_f_ecm.ko kernel / driver / usb / gadget / function / usb_f_rndis.ko kernel / driver / usb / gadget / function / u_serial.ko kernel / driver / usb / gadget /fungsi/usb_f_fs.ko kernel / driver / usb / gadget / function / usb_f_ecm_subset.ko kernel / driver / usb / gadget / libcomposite.ko

Fail-fail tersebut adalah semua modul yang diperlukan untuk memulakan CDC Ethernet USB.

Akhirnya kemas semula dan kompres gambar initrd:

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

Paling tidak, gambar kernel dan fail DTB perlu dimasukkan ke dalam gambar boot Android. Gambar seperti itu dapat dihasilkan dengan alat abootimg.

Mari kita dalam direktori kernel dan gunakan perintah di bawah ini untuk membina gambar dan menambahkan DTB dalam gambar kernel yang dimampatkan:

$ cd../kernel

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

Dan akhirnya, hasilkan imej boot (di sini rootfs kami terletak partisi jauh pada 10.42.0.1)

abootimg --buat 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: off rw rootwait console = tty0 console = ttyMSM0, 115200n8"

Rujukan:

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

Langkah 4: Membuat Root Filesystem di HOST

Sekarang, kami mendapat imej boot baru untuk mengemas kini dragonboard 410c. Tetapi kita memerlukan sistem fail root di pelayan jauh untuk boot modul, perkhidmatan dan aplikasi. Dalam langkah ini, kami akan membina direktori bersama di host untuk menyimpan semua data ini. Dengan cara itu, mari kita muat turun sistem fail rootfs dari laman web linaro dengan versi yang sama yang digunakan dalam initrd. Oleh itu, kembalilah satu direktori dan muat turun gambar rootfs pembangun linaro dengan versi 431.

$ cd..

$ wget

Nyahkompres fail ini

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

Dengan menggunakan fail ini, mari tulis semua gambar dalam sdcard untuk mengakses semua partisi dan menyalin fail rootfs. Oleh itu, pastikan data dari uSDCard disandarkan kerana semua yang ada di SDCard akan hilang.

Untuk mencari nama peranti SDCard anda, buang SDCard dan jalankan arahan berikut:

$ lsblk

Simpan di dalam fikiran anda semua nama cakera yang dikenali. Sekarang masukkan SDCard, tunggu sebentar dan jalankan perintah itu lagi:

$ lsblk

Perhatikan cakera yang baru dikenali. Ini akan menjadi SDCard anda. Ingat nama anda dan ubah parameter "of =" untuk nama peranti SDCard anda dan pastikan untuk menggunakan nama peranti tanpa partition, mis.: / dev / mmcblk0

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

Catatan:

  • Perintah ini akan memerlukan sedikit masa untuk dilaksanakan. Bersabar dan elakkan gangguan pada terminal sehingga prosesnya berakhir.
  • Setelah kad SD selesai berkelip, keluarkan dari komputer hos.

Rujukan: Dokumentasi 96 papan

Langkah 5: Membuat NFS Pelayan di HOST dan Menyalin Fail

Pada ketika ini, kita mempunyai gambar boot untuk dimuat ke dalam dragonboard 410c dan SDCard dengan sistem fail rootfs untuk modul, perkhidmatan dan aplikasi kita. Langkah seterusnya adalah membuat direktori jauh untuk menyambungkan PERANGKAT Ethernet USB bersama-sama dengan sistem fail rootfs HOST. Itu boleh dilakukan dengan menggunakan pakej dari Ubuntu bernama nfs-kernel-server.

Pakej ini memasang perkhidmatan NFS ke Ubuntu yang memungkinkan untuk berkongsi beberapa direktori untuk beberapa peranti di rangkaian, kami dapat mengkonfigurasi direktori mana yang akan digunakan untuk setiap perangkat dengan menggunakan IP anda.

Oleh itu, mari pasang pakej dan konfigurasikannya.

$ sudo apt-get pasang pelayan nfs-kernel

Perkhidmatan NFS bermula secara automatik. Untuk mengawal perkhidmatan NFS, gunakan:

$ sudo service nfs-kernel-server restart // untuk memulakan semula, atau gunakan 'stop', atau 'start' seperti yang diperlukan.

Untuk memeriksa status perkhidmatan NFS dari baris arahan gunakan:

$ sudo perkhidmatan nfs-kernel-status pelayan

nfsd berjalan // Perkhidmatan dinaikkan nfsd tidak berjalan // Perkhidmatan sudah Tidak aktif

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

$ sudo mkdir -p / srv / nfs

$ sudo mkdir -p / srv / nfs / rootfs

Sekarang, pelayan NFS memerlukan / etc / eksport dikonfigurasi dengan betul, untuk mengawal akses ke setiap direktori sistem fail NFS ke host tertentu. Dalam kes ini, host dikenali oleh alamat IP mereka. Jadi, untuk setiap sistem fail root yang dibuat, tambahkan baris kawalan eksport ke / etc / export, sesuaikan untuk skema penamaan alamat dan direktori IP tempatan anda jika perlu. Dalam tutorial ini, kami selalu menggunakannya:

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

Masukkan semula SDCard anda, pasang dan salin semua sistem fail rootfs ke / srv / nfs / rootfs, mulakan semula perkhidmatan NFS untuk mengemas kini direktori menggunakan fail yang disalin baru.

Sebagai tambahan, kita perlu menyalin fail modul baru ke dalam sistem fail rootfs kerana kita menyusun kernel pada langkah 2. Oleh itu, salin semua direktori di ~ / db410c-modul / ke / srv / nfs / rootfs.

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

Pastikan direktori ini dapat dilihat oleh perkhidmatan NFS. Sama ada:

$ sudo exportfs -a

Rujukan: TFTP / NFS Root Filesystem

Langkah 6: Mengemas kini Gambar Boot Dragonboard 410c dan Mengkonfigurasi Antaramuka Rangkaian

Kami membuat awal semua langkah untuk melaksanakan sistem fail rootfs jauh, sekarang kami perlu mengemas kini gambar boot di dalam dragonboard 410c, untuk itu, sambungkan kabel USB anda di PC dan pada penyambung uUSB dragonboard. Oleh itu, pastikan fastboot disiapkan pada komputer hos, jika tidak dipasang menggunakan:

$ sudo apt pasangkan fastboot

Sekarang untuk mengemas kini gambar, mulakan de dragonboard ke mod fastboot mengikuti langkah ini:

  • Tekan dan tahan butang Vol (-) pada DragonBoard 410c, ini adalah butang S4. DragonBoard ™ 410c masih TIDAK boleh dihidupkan
  • Semasa menahan butang Vol (-), hidupkan DragonBoard 410c dengan memasangnya
  • Setelah DragonBoard 410c dipasang ke kuasa, lepaskan penahan anda pada butang Vol (-).
  • Tunggu lebih kurang 20 saat.
  • Papan harus boot ke mod fastboot.

Dari tetingkap terminal mesin host yang disambungkan, jalankan arahan berikut:

$ sudo fastboot devices

Biasanya ia akan ditunjukkan seperti di bawah

de82318 fastboot

Pada ketika ini anda harus disambungkan ke DragonBoard 410c anda dengan kabel USB ke mikroUSB. DragonBoard 410c anda harus di-boot ke mod fastboot dan bersedia untuk dimuat dengan gambar yang sesuai. Mari kita kemas kini imej but dengan gambar but kita:

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

Dan, mulakan semula papan

reboot fastboot $ sudo

Sekarang, HOST anda akan mengesan antara muka baru bernama usb0, tetapi belum mempunyai IP. Oleh itu, tambahkan IP statik ke antara muka ini dengan menggunakan:

$ sudo ifconfig usb0 10.42.0.1 netmask 255.255.255.0 ke atas

Atau masukkan "Konfigurasi" di HOST, di item "rangkaian", tetapkan Ethernet USB sebagai IP statik ke antara muka tersebut.

Sekarang, mulakan semula papan pemuka dan sahkan permulaan sistem, cuba menyambung menggunakan ssh:

$ ssh [email protected]

Rujukan:

  • Dokumentasi 96 papan
  • HowtoForge - Perkara 6

Disyorkan: