Mục lục:

Truy cập hệ thống tệp gốc từ xa bằng DB410 như một Ethernet Dongle: 6 bước
Truy cập hệ thống tệp gốc từ xa bằng DB410 như một Ethernet Dongle: 6 bước

Video: Truy cập hệ thống tệp gốc từ xa bằng DB410 như một Ethernet Dongle: 6 bước

Video: Truy cập hệ thống tệp gốc từ xa bằng DB410 như một Ethernet Dongle: 6 bước
Video: Giao lưu báo giá các mẫu cục đẩy chuyên sự kiện tại DVH audio 036 355 3277 / 096 666 8764 2024, Tháng bảy
Anonim
Truy cập hệ thống tệp gốc từ xa bằng DB410 như một Ethernet Dongle
Truy cập hệ thống tệp gốc từ xa bằng DB410 như một Ethernet Dongle

Mục tiêu:

  • Cài đặt chuỗi công cụ và biên dịch lại hạt nhân để chèn hỗ trợ Tiện ích USB Ethernet CDC;
  • Tạo lại boot.img từ Linaro để khởi động USB Ethernet CDC;
  • Tạo máy chủ NFS để lưu trữ hệ thống tệp gốc;
  • Cấu hình IP trong THIẾT BỊ và HOST.

Bước 1: Truy vấn lại

Bạn sẽ cần các bước lặp sau:

  1. DragonBoard ™ 410c (có tên ở đây là THIẾT BỊ);
  2. Một PC sử dụng Ubuntu 16.04.3 được cập nhật (có tên ở đây là HOST) có kết nối internet và khe cắm thẻ SDCard;
  3. Một bản cài đặt sạch của Linaro-developer phiên bản 431 - Liên kết: Ảnh chụp nhanh Linaro Debian v431
  4. Một màn hình HDMI;
  5. Bàn phím USB;
  6. Thẻ SDCard 8Gb;
  7. Cáp USB, uUSB USB để kết nối THIẾT BỊ trên HOST.

Bước 2: Định cấu hình máy chủ để xây dựng nhân và xây dựng nhân trong HOST

Đầu tiên, chúng tôi sẽ tạo tất cả các thư mục trước để tiếp tục. Vì thế:

$ cd ~

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

Thật không may, nhân linux được sử dụng bởi Linaro (Phiên bản 431) không hỗ trợ tiện ích USB Ethernet, do đó, nhân Linux phải được xây dựng lại cho phiên bản cụ thể này. Tải xuống chuỗi công cụ Linaro để xây dựng và triển khai nhân linux trên Dragonboard410c từ máy chủ x86.

$ wget

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

Bây giờ hãy cài đặt các gói cần thiết để xây dựng hạt nhân:

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

Nhận nguồn Nhân bản Linux Nhân bản Nhóm cập nhật Qualcomm Kho lưu trữ Linux:

$ git clone

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

Bây giờ, hãy đặt các biến môi trường biên dịch:

$ export ARCH = arm64

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

Tại thời điểm này, chúng ta cần thêm các mô-đun vào USB Ethernet CDC trong nhân. Tôi đã làm điều đó trước đây và bạn có thể nhận được điều này ở cuối bước này. Tôi đã xóa một số vòng lặp nhưng nó hoạt động.

Trước khi biên dịch, vui lòng sửa lỗi hạt nhân trong các trình điều khiển / mmc / host / sdhci-msm.c, thay đổi cấu trúc trong dòng 1150 thành:

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

Giải nén configfile.zip, sao chép tệp.config vào thư mục kernel, xây dựng kernel, mô-đun và cài đặt mô-đun trong một thư mục:

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

$ make -j $ (nproc) mô-đun $ make modules_install INSTALL_MOD_PATH =.. / db410c-modules

Tham khảo: Tài liệu 96Boards

Bước 3: Xây dựng lại Boot.img trong HOST

Trong bước này, chúng ta cần mở initrd image, đặt các mô-đun được xây dựng bên trong hình ảnh, cấu hình hệ thống để khởi động các mô-đun đó và xây dựng lại initrd.img với một dòng lệnh kernel mới để khởi động hệ thống tệp gốc từ xa.

Vì vậy, trước tiên, chúng ta phải tải xuống initrd.img từ trang web linaro:

$ cd..

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

Bây giờ, sau khi tải xuống, hãy giải nén và giải nén initrd:

$ zcat ramdisk.img | cpio -idmv

Trong thư mục này, chúng tôi có hệ thống tệp gốc được kernel sử dụng trong quá trình khởi tạo, vì vậy chúng tôi sẽ định cấu hình mô-đun USB Ethernet CDC và các thông số từ xa NFS như IP máy chủ NFS và ethernet (usb) cần thiết ở đây.

Bây giờ, hãy cấu hình một số tệp:

conf / initramfs.conf:

MODULES = hầu hết

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

Tạo thư mục init-preount trong thư mục scripts /

$ mkdir scripts / init-Premount

và thêm các tệp trong thư mục vừa tạo này:

ĐẶT HÀNG

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

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

USB

#! / bin / sh

PREREQ = "" Preqs () {echo "$ PREREQ"} trường hợp $ 1 trong # get pre-priorityqs) các yêu cầu tiên quyết thoát 0;; esac modprobe usb_f_ecm modprobe libcomposite modprobe usb_f_rndis modprobe g_ether

Đừng quên sử dụng chmod trong tệp usb để làm cho nó có thể thực thi được:

$ chmod + x scripts / init-pre -ount / usb

Bây giờ, sao chép tất cả thư mục chứa các mô-đun từ db410c-modules (BƯỚC 2) sang lib / modules trong initrd:

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

Xóa tất cả các tệp trong lib / modules / 4.14.96-xxxx-dirty ngoại trừ tất cả các mô-đun tệp. * Và danh sách tệp đó:

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

kernel / drivers / usb / gadget / inherit / g_mass_storage.ko kernel / drivers / usb / gadget / inherit / g_cdc.ko kernel / drivers / usb / gadget / inherit / g_serial.ko kernel / drivers / 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 / drivers / usb / gadget / function / usb_f_obex.ko kernel / drivers / usb / gadget / function /usb_f_serial.ko kernel / driver / 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 / Chức năng/usb_f_fs.ko kernel / driver / usb / gadget / function / usb_f_ecm_subset.ko kernel / driver / usb / gadget / libcomposite.ko

Các tệp đó là tất cả các mô-đun cần thiết để khởi động USB Ethernet CDC.

Cuối cùng đóng gói lại và nén hình ảnh initrd:

$ tìm thấy. | cpio -o -H newc | gzip -9>../kernel/initrd_nfs.img

Ít nhất, hình ảnh hạt nhân và tệp DTB cần được đóng gói thành hình ảnh khởi động Android. Hình ảnh như vậy có thể được tạo bằng công cụ Abootimg.

Hãy vào thư mục kernel và sử dụng lệnh dưới đây để xây dựng hình ảnh và nối DTB vào hình ảnh hạt nhân đã nén:

$ cd../kernel

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

Và cuối cùng, tạo hình ảnh khởi động (ở đây rootfs của chúng tôi nằm ở phân vùng từ xa trong 10.42.0.1)

Abootimg --create 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"

Người giới thiệu:

  • https://access.redhat.com/solutions/24029
  • Tài liệu 96Boards

Bước 4: Tạo hệ thống tệp gốc trong HOST

Bây giờ, chúng tôi đã có một hình ảnh khởi động mới để cập nhật dragonboard 410c. Nhưng chúng ta cần một hệ thống tệp gốc trong máy chủ từ xa để khởi động các mô-đun, dịch vụ và ứng dụng. Trong bước này, chúng tôi sẽ xây dựng một thư mục chia sẻ trong máy chủ lưu trữ để lưu tất cả các dữ liệu này. Bằng cách đó, hãy tải xuống hệ thống tệp rootfs từ trang linaro có cùng phiên bản được sử dụng trong initrd. Vì vậy, hãy quay lại một thư mục và tải xuống hình ảnh rootfs của linaro-developer với phiên bản 431.

$ cd..

$ wget

Giải nén tệp này

$ giải nén dragonboard-410c-sdcard-developer-buster-431.zip

Sử dụng tệp này, hãy ghi tất cả hình ảnh vào thẻ sd để truy cập tất cả các phân vùng và sao chép tệp rootfs. Vì vậy, hãy đảm bảo rằng dữ liệu từ uSDCard được sao lưu vì mọi thứ trên SDCard sẽ bị mất.

Để tìm tên thiết bị SDCard của bạn, hãy xóa SDCard và chạy lệnh sau:

$ lsblk

Lưu trong tâm trí của bạn tất cả các tên đĩa được công nhận. Bây giờ hãy lắp thẻ SDCard, đợi một lát và thực hiện lại lệnh:

$ lsblk

Lưu ý đĩa mới được công nhận. Đây sẽ là thẻ SDCard của bạn. Nhớ tên của bạn và thay đổi tham số "of =" cho tên thiết bị SDCard của bạn và đảm bảo sử dụng tên thiết bị không có phân vùng, p.e.: / dev / mmcblk0

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

Ghi chú:

  • Lệnh này sẽ mất một khoảng thời gian để thực thi. Hãy kiên nhẫn và tránh giả mạo thiết bị đầu cuối cho đến khi quá trình kết thúc.
  • Khi thẻ SD hoàn tất quá trình nhấp nháy, hãy xóa khỏi máy tính chủ.

Tham khảo: tài liệu 96boards

Bước 5: Tạo NFS máy chủ trong HOST và sao chép tệp

Tại thời điểm này, chúng tôi có một hình ảnh khởi động được đưa vào dragonboard 410c và thẻ SDCard với hệ thống tệp rootfs cho các mô-đun, dịch vụ và ứng dụng của chúng tôi. Bước tiếp theo là tạo một thư mục từ xa để kết nối USB Ethernet DEVICE toguther với hệ thống tệp rootfs HOST. Điều đó có thể được thực hiện bằng cách sử dụng một gói từ Ubuntu có tên nfs-kernel-server.

Gói này cài đặt dịch vụ NFS vào Ubuntu cho phép chia sẻ một số thư mục cho một số thiết bị trên mạng, chúng tôi có thể cấu hình thư mục nào sẽ được sử dụng cho từng thiết bị bằng cách sử dụng IP của bạn.

Vì vậy, hãy cài đặt gói và cấu hình nó.

$ sudo apt-get install nfs-kernel-server

Dịch vụ NFS bắt đầu tự động. Để kiểm soát việc sử dụng các dịch vụ NFS:

$ sudo service nfs-kernel-server restart // để khởi động lại hoặc sử dụng 'stop' hoặc 'start' nếu cần.

Để kiểm tra trạng thái của dịch vụ NFS từ dòng lệnh, hãy sử dụng:

Trạng thái $ sudo service nfs-kernel-server

nfsd đang chạy // Dịch vụ lên đến nfsd không chạy // Dịch vụ ngừng hoạt động

Bây giờ, hãy tạo một thư mục trên cùng / srv / nfs và tạo một thư mục con dưới thư mục đó cho mỗi hệ thống tệp gốc được gắn kết NFS được yêu cầu. Ở đây chúng tôi bao gồm một hệ thống tệp gốc được chia sẻ để giữ hệ thống tệp gốc của chúng tôi:

$ sudo mkdir -p / srv / nfs

$ sudo mkdir -p / srv / nfs / rootfs

Bây giờ, máy chủ NFS yêu cầu / etc / export phải được định cấu hình chính xác, để kiểm soát quyền truy cập vào từng thư mục hệ thống tệp NFS tới các máy chủ cụ thể. Trong trường hợp này, các máy chủ được xác định bằng địa chỉ IP của chúng. Vì vậy, đối với mỗi hệ thống tệp gốc được tạo, hãy thêm dòng điều khiển xuất vào / etc / export, điều chỉnh cho địa chỉ IP cục bộ và lược đồ đặt tên thư mục của bạn nếu cần. Trong hướng dẫn này, chúng tôi luôn sử dụng:

/ srv / nfs / rootfs 10.42.0.2 (rw, đồng bộ hóa, no_root_squash, no_subtree_check)

Chèn lại thẻ SDCard của bạn, gắn nó và sao chép tất cả hệ thống tệp rootfs vào / srv / nfs / rootfs, khởi động lại dịch vụ NFS để cập nhật thư mục bằng các tệp được sao chép mới.

Ngoài ra, chúng ta cần sao chép các tệp mô-đun mới vào hệ thống tệp rootfs vì chúng tôi đã biên dịch hạt nhân ở bước 2. Vì vậy, hãy sao chép tất cả các thư mục trong ~ / db410c-modules / to / srv / nfs / rootfs.

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

Đảm bảo rằng các thư mục này được hiển thị bởi dịch vụ NFS. Một trong hai:

$ sudo exportfs -a

Tham khảo: Hệ thống tập tin gốc TFTP / NFS

Bước 6: Cập nhật hình ảnh khởi động Dragonboard 410c và cấu hình giao diện mạng

Chúng tôi đã thực hiện sớm tất cả các bước để triển khai hệ thống tệp rootfs từ xa, bây giờ chúng tôi cần cập nhật hình ảnh khởi động bên trong dragonboard 410c, để kết nối cáp USB của bạn trên PC và trên đầu nối uUSB của dragonboard. Vì vậy, hãy đảm bảo rằng fastboot được thiết lập trên máy tính chủ, nếu không cài đặt bằng cách sử dụng:

$ sudo apt cài đặt fastboot

Bây giờ để cập nhật hình ảnh, hãy bắt đầu chuyển sang chế độ fastboot ở chế độ fastboot theo các bước sau:

  • Nhấn và giữ nút Vol (-) trên DragonBoard 410c, đây là nút S4. DragonBoard ™ 410c vẫn KHÔNG được bật nguồn
  • Trong khi giữ nút Vol (-), bật nguồn DragonBoard 410c bằng cách cắm vào
  • Sau khi DragonBoard 410c được cắm vào nguồn, hãy thả giữ nút Vol (-).
  • Chờ khoảng 20 giây.
  • Bo mạch sẽ khởi động vào chế độ fastboot.

Từ cửa sổ đầu cuối của máy chủ được kết nối, hãy chạy các lệnh sau:

$ sudo fastboot thiết bị

Thông thường, nó sẽ hiển thị như bên dưới

de82318 fastboot

Tại thời điểm này, bạn sẽ được kết nối với DragonBoard 410c bằng cáp USB sang microUSB. DragonBoard 410c của bạn nên được khởi động vào chế độ fastboot và sẵn sàng để được chiếu các hình ảnh thích hợp. Hãy cập nhật hình ảnh khởi động với hình ảnh khởi động của chúng tôi:

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

Và, khởi động lại bảng

$ sudo fastboot khởi động lại

Bây giờ, HOST của bạn sẽ phát hiện một giao diện mới có tên usb0, nhưng nó chưa có IP. Vì vậy, hãy thêm một IP tĩnh vào giao diện này bằng cách sử dụng:

$ sudo ifconfig usb0 10.42.0.1 netmask 255.255.255.0 trở lên

Hoặc nhập "Cấu hình" trên HOST, trong mục "mạng", đặt USB Ethernet một IP tĩnh cho giao diện đó.

Bây giờ, hãy khởi động lại bảng rồng và xác minh khởi động hệ thống, cố gắng kết nối bằng ssh:

$ ssh [email protected]

Người giới thiệu:

  • Tài liệu 96boards
  • HowtoForge - Mặt hàng 6

Đề xuất: