Мазмұны:

DB410 Ethernet кілті ретінде қашықтағы түбірлік файлдық жүйеге кіру: 6 қадам
DB410 Ethernet кілті ретінде қашықтағы түбірлік файлдық жүйеге кіру: 6 қадам

Бейне: DB410 Ethernet кілті ретінде қашықтағы түбірлік файлдық жүйеге кіру: 6 қадам

Бейне: DB410 Ethernet кілті ретінде қашықтағы түбірлік файлдық жүйеге кіру: 6 қадам
Бейне: DB Series Cabinets - DB 410 2024, Шілде
Anonim
DB410 Ethernet кілті ретінде қашықтағы түбірлік файлдық жүйеге кіру
DB410 Ethernet кілті ретінде қашықтағы түбірлік файлдық жүйеге кіру

Мақсаттары:

  • USB Ethernet CDC гаджетінің қолдауын енгізу үшін құралдар тізбегін орнатыңыз және ядроны қайта құрастырыңыз;
  • USB Ethernet CDC жүктеу үшін Linaro -дан boot.img қайта жасаңыз;
  • Түбірлік файлдық жүйені орналастыру үшін NFS серверін құру;
  • DEVICE және HOST жүйесіндегі IP конфигурациясы.

1 -қадам: Қажеттіліктер

Сізге келесі белгілер қажет болады:

  1. A DragonBoard ™ 410c (осында DEVICE деп аталады);
  2. Ubuntu 16.04.3 қолданатын дербес компьютер Интернетке қосылған және SDCard ұяшығымен жаңартылған (мұнда HOST деп аталады);
  3. Linaro -әзірлеушінің 431 нұсқасының таза қондырмасы - Сілтеме: Linaro Debian v431 суреті
  4. HDMI мониторы;
  5. USB пернетақтасы;
  6. 8 Гб SDCard;
  7. ҚҰРЫЛҒЫНЫ HOST -қа қосу үшін USB кабелі, uUSB USB.

2 -қадам: хостты ядро құру үшін хостты конфигурациялау және хостта ядро құру

Біріншіден, біз жалғастыру үшін барлық каталогтарды құрамыз. Сонымен:

$ cd ~

$ mkdir db410remoteroot $ cd db410remoteroot $ mkdir құралдар тізбегі $ mkdir db410c-модульдері

Өкінішке орай, Linaro (431 нұсқасы) қолданатын Linux ядросы USB Ethernet гаджетіне қолдау көрсетпейді, сондықтан Linux ядросы осы нақты нұсқа үшін қайта құрылуы керек. X86 хост -машинасынан Dragonboard410c -те Linux ядросын құру және орналастыру үшін Linaro құралдар тізбегін жүктеңіз.

$ wget

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

Енді ядро құруға қажет пакеттерді орнатыңыз:

$ sudo apt update && sudo apt-get install build-essential abootimg ядро-пакеті fakeroot libncurses5-dev libssl-dev ccache

Linux ядросының Clone Qualcomm қондыру тобы Linux репозиторийін алыңыз:

$ git клоны

$ cd ядросы $ git checkout check/release/qcomlt-4.14 -b my-custom-4.14

Енді компиляция ортасының айнымалы мәндерін орнатыңыз:

$ экспорт ARCH = arm64

$ export CROSS_COMPILE = $ (pwd) /../ құралдар тізбегі/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 құжаттамасы

3 -қадам: HOST -та Boot.img файлын қалпына келтіріңіз

Бұл қадамда бізге бастапқы кескінді ашу, суреттің ішіне салынған модульдерді қою, жүйені осы модульдерді іске қосу үшін конфигурациялау және rootrd файлдық жүйесін қашықтан жүктеу үшін 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 жағдайда $ пре-реквизит пререквизитін алу) пререквардан шығу 0;; esac modprobe usb_f_ecm modprobe libcomposite modprobe usb_f_rndis modprobe g_ether

Chmod файлын usb файлында орындауды ұмытпаңыз:

$ chmod +x сценарийлері/init-premount/usb

Енді барлық каталогты db410c-модулдерден (2-ҚАДАМ) модульдерінен initrd ішіндегі lib/modules-ке көшіріңіз:

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

Lib/modules/4.14.96-xxxx-kir ішіндегі барлық файлдар модулінен басқа барлық файлдарды жойыңыз.* Және бұл файлдар тізімі:

ядро/драйверлер/usb/гаджет/мұра/g_ether.ko

ядро/драйверлер/usb/гаджет/мұра/g_mass_storage.ko ядро/драйверлер/usb/гаджет/мұра/g_cdc.ko ядро/драйверлер/usb/гаджет/мұра/g_serial.ko ядро/драйверлер/usb/гаджет/функция/usb_f_mass_storage.ko ядросы/драйверлер/usb/гаджет/функция/usb_f_acm.ko ядросы/драйверлер/usb/гаджет/функция/u_ether.ko ядросы/драйверлер/usb/гаджет/функция/usb_f_obex.ko ядросы/драйверлер/usb/гаджет/функция /usb_f_serial.ko ядросы/драйверлер/usb/гаджет/функция/usb_f_ecm.ko ядросы/драйверлер/usb/гаджет/функция/usb_f_rndis.ko ядросы/драйверлер/usb/гаджет/функция/u_serial.ko ядросы/драйверлер/usb/гаджет /function/usb_f_fs.ko ядросы/драйверлер/usb/гаджет/функция/usb_f_ecm_subset.ko ядросы/драйверлер/usb/гаджет/libcomposite.ko

Бұл файлдар USB Ethernet CDC іске қосу үшін қажет барлық модульдер.

Соңында бастапқы суретті қайта орап, қысыңыз:

$ табу. | cpio -o -H newc | gzip -9>../kernel/initrd_nfs.img

Кем дегенде, ядро кескіні мен DTB файлы Android жүктеу кескініне жиналуы керек. Мұндай кескінді 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 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 консолі = tty0 консолі = ttyMSM0, 115200n8 «

Әдебиеттер:

  • https://access.redhat.com/solutions/24029
  • 96Boards құжаттамасы

4 -қадам: HOST -та түбірлік файлдық жүйені құру

Енді бізде 410c айдаһар тақтасын жаңарту үшін жаңа жүктеу бейнесі бар. Бірақ модульдерді, қызметтерді және қосымшаларды жүктеу үшін бізге қашықтағы серверде түбірлік файлдық жүйе қажет. Бұл қадамда біз осы деректердің барлығын сақтау үшін хостта ортақ каталог құрамыз. Осылайша, initrd -де қолданылатын нұсқасы бар linaro сайтынан rootfs файлдық жүйесін жүктейік. Сонымен, бір каталогқа оралып, 431 нұсқасы бар linaro-developer rootfs суретін жүктеңіз.

$ cd..

$ wget

Бұл файлды қысыңыз

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

Бұл файлды пайдаланып, барлық бөлімдерге қол жеткізу және rootfs файлдарын көшіру үшін барлық суретті sdcard картасына жазайық. Сонымен, uSDCard деректерінің сақтық көшірмесі жасалғанына көз жеткізіңіз, себебі SDCard картасындағы барлық нәрсе жоғалады.

SDCard құрылғысының атауын табу үшін SDCard картасын жойып, келесі пәрменді іске қосыңыз:

$ lsblk

Барлық танылған диск атауларын есте сақтаңыз. Енді SDCard салыңыз, сәл күтіңіз және пәрменді қайтадан орындаңыз:

$ lsblk

Жаңадан танылған дискіге назар аударыңыз. Бұл сіздің SDCard картасы болады. Атыңызды есте сақтаңыз және SDCard құрылғысының атауының «of =» параметрін өзгертіңіз және құрылғы атауын бөлімсіз қолданғаныңызға сенімді болыңыз, p.e.: /dev /mmcblk0

$ sudo dd if = dragonboard-410c-sdcard-developer-buster-431.img =/dev/XXX bs = 4M oflag = синхрондау күйі = прогресс

Ескертулер:

  • Бұл команданың орындалуына біраз уақыт кетеді. Шыдамды болыңыз және процесс аяқталғанша терминалды бұзудан аулақ болыңыз.
  • SD картаның жыпылықтауы аяқталғаннан кейін оны негізгі компьютерден шығарыңыз.

Сілтеме: 96 тақтаның құжаттамасы

5 -қадам: HOST серверінде NFS серверін құру және файлдарды көшіру

Бұл жерде бізде модульдерге, қызметтерге және қосымшаларға арналған rootfs файлдық жүйесі бар dragonboard 410c және 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-ядро-сервер күйі

nfsd жұмыс істейді // Қызмет қосылды nfsd жұмыс істемейді // Қызмет төмен

Енді, жоғары srv /nfs каталогын құрайық және оның астына әрбір NFS орнатылған түбірлік файлдық жүйе үшін ішкі каталог құрайық. Мұнда бізде түбірлік файлдық жүйені сақтау үшін ортақ түбірлік файлдық жүйе бар:

$ sudo mkdir -p /srv /nfs

$ sudo mkdir -p/srv/nfs/rootfs

Енді NFS сервері /etc /экспорттың дұрыс конфигурациялануын, әрбір хост файлдарына NFS файлдық жүйенің каталогына кіруін бақылауды талап етеді. Бұл жағдайда хосттар олардың IP мекенжайымен анықталады. Сонымен, жасалған әрбір түбірлік файлдық жүйе үшін экспортты басқару жолын /etc /export -қа қосыңыз, жергілікті IP -адрес пен каталогты атау схемасын түзетіңіз. Бұл оқулықта біз әрқашан мынаны қолданамыз:

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

SDCard картасын қайта салыңыз, оны орнатыңыз және барлық rootfs файлдық жүйесін/srv/nfs/rootfs ішіне көшіріңіз, жаңа көшірілген файлдарды пайдаланып каталогты жаңарту үшін NFS қызметін қайта іске қосыңыз.

Сонымен қатар, бізге жаңа модуль файлдарын rootfs файлдық жүйесіне көшіру қажет, себебі біз ядро 2-қадамда құрастырдық. Сондықтан барлық каталогтарды ~/db410c-modules//to/srv/nfs/rootfs ішіне көшіріңіз.

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

Бұл каталогтардың NFS қызметі арқылы көрінетініне көз жеткізіңіз. Немесе:

$ sudo exportfs -a

Сілтеме: TFTP/NFS түбірлік файлдық жүйе

6 -қадам: Dragonboard 410c жүктеу кескінін жаңарту және желілік интерфейстерді конфигурациялау

Біз қашықтан rootfs файлдық жүйесін енгізу үшін барлық қадамдарды жасадық, енді бізге dragonboard 410c ішіндегі жүктеу кескінін жаңарту қажет, ол үшін USB кабелін компьютерге және dragonboard uUSB қосқышына қосыңыз. Fastboot негізгі компьютерде орнатылғанына көз жеткізіңіз, егер ол орнатылмаса:

$ sudo apt fastboot орнатыңыз

Енді кескінді жаңарту үшін айдаһар тақтасын келесі қадамдарды орындап fastboot режиміне қосыңыз:

  • DragonBoard 410c-те Vol (-) түймесін басып тұрыңыз, бұл S4 түймесі. DragonBoard ™ 410c әлі де қосылмауы керек
  • Vol (-) түймесін басып тұрғанда, оны қосу арқылы DragonBoard 410c қосыңыз
  • DragonBoard 410c қуат көзіне қосылғаннан кейін дыбыс қаттылығын (-) босатыңыз.
  • Шамамен 20 секунд күтіңіз.
  • Тақта жылдам жүктеу режиміне жүктелуі керек.

Қосылған хост машинаның терминал терезесінен келесі пәрмендерді орындаңыз:

$ sudo fastboot құрылғылары

Әдетте ол төменде көрсетілгендей болады

de82318 fastboot

Бұл жағдайда сіз DragonBoard 410c -ке USB -microUSB кабелі арқылы қосылуыңыз керек. Сіздің DragonBoard 410c жылдам жүктеу режиміне жүктеліп, сәйкес суреттермен жыпылықтауға дайын болуы керек. Жүктеу кескінін жүктеу кескінімен жаңартайық:

$ 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 «Configuration» бөліміне USB желісінің статикалық IP интерфейсін орнатып, «желі» тармағына кіріңіз.

Енді айдаһар тақтасын қайта іске қосыңыз және ssh арқылы қосылуға тырысып, жүйенің іске қосылғанын тексеріңіз:

$ ssh [email protected]

Әдебиеттер:

  • 96 борттық құжаттама
  • HowtoForge - 6 -тармақ

Ұсынылған: