विषयसूची:

ईथरनेट डोंगल के रूप में DB410 का उपयोग करके रिमोट रूट फाइल सिस्टम तक पहुंचना: 6 कदम
ईथरनेट डोंगल के रूप में DB410 का उपयोग करके रिमोट रूट फाइल सिस्टम तक पहुंचना: 6 कदम

वीडियो: ईथरनेट डोंगल के रूप में DB410 का उपयोग करके रिमोट रूट फाइल सिस्टम तक पहुंचना: 6 कदम

वीडियो: ईथरनेट डोंगल के रूप में DB410 का उपयोग करके रिमोट रूट फाइल सिस्टम तक पहुंचना: 6 कदम
वीडियो: Revelation 330A 410 Bolt action shotgun 2024, नवंबर
Anonim
ईथरनेट डोंगल के रूप में DB410 का उपयोग करके रिमोट रूट फाइल सिस्टम तक पहुंचना
ईथरनेट डोंगल के रूप में DB410 का उपयोग करके रिमोट रूट फाइल सिस्टम तक पहुंचना

उद्देश्य:

  • यूएसबी ईथरनेट सीडीसी गैजेट समर्थन डालने के लिए टूलचेन स्थापित करें और कर्नेल को फिर से संकलित करें;
  • USB ईथरनेट CDC को बूट करने के लिए Linaro से boot.img को फिर से बनाएं;
  • रूट फाइल सिस्टम को होस्ट करने के लिए एनएफएस सर्वर बनाएं;
  • DEVICE और HOST में IP कॉन्फ़िगरेशन।

चरण 1: आवश्यकताएँ

आपको निम्नलिखित itens की आवश्यकता होगी:

  1. एक DragonBoard™ 410c (यहाँ DEVICE नाम दिया गया है);
  2. इंटरनेट कनेक्शन और एसडीकार्ड स्लॉट के साथ उबंटू 16.04.3 अपडेट (यहां होस्ट नाम दिया गया) का उपयोग करने वाला एक पीसी;
  3. लिनारो-डेवलपर संस्करण 431 की एक साफ स्थापना - लिंक: स्नैपशॉट लिनारो डेबियन v431
  4. एक एचडीएमआई मॉनिटर;
  5. एक यूएसबी कीबोर्ड;
  6. एक 8 जीबी एसडीकार्ड;
  7. HOST पर DEVICE को जोड़ने के लिए एक USB केबल, uUSB USB।

चरण 2: होस्ट को कर्नेल बनाने के लिए कॉन्फ़िगर करना और HOST में कर्नेल बनाना

सबसे पहले, हम जारी रखने से पहले सभी निर्देशिकाएँ बनाएंगे। इसलिए:

$ सीडी ~

$ mkdir db410remoteroot $ cd db410remoteroot $ mkdir टूलचैन $ mkdir db410c-मॉड्यूल

दुर्भाग्य से, लिनारो (संस्करण 431) द्वारा उपयोग किए जाने वाले लिनक्स कर्नेल में यूएसबी ईथरनेट गैजेट के लिए समर्थन नहीं है, इसके कारण, इस विशिष्ट संस्करण के लिए लिनक्स कर्नेल का पुनर्निर्माण किया जाना चाहिए। x86 होस्ट मशीन से Dragonboard410c पर लिनक्स कर्नेल बनाने और तैनात करने के लिए लिनारो टूलचैन डाउनलोड करें।

$ wget

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

अब संकुल संस्थापित करें जो कर्नेल बनाने के लिए आवश्यक हैं:

$ sudo apt update && sudo apt-get install git बिल्ड-एसेंशियल abootimg कर्नेल-पैकेज फ़ेकरूट libncurses5-dev libssl-dev ccache

लिनक्स कर्नेल स्रोत प्राप्त करें क्लोन क्वालकॉम लैंडिंग टीम लिनक्स रिपॉजिटरी:

$ git क्लोन

$ cd कर्नेल $ git चेकआउट मूल/रिलीज़/qcomlt-4.14 -b my-custom-4.14

अब, संकलन पर्यावरण चर सेट करें:

$ निर्यात ARCH=arm64

$ निर्यात CROSS_COMPILE=$(pwd)/../toolchain/bin/aarch64-linux-gnu-

इस बिंदु पर, हमें कर्नेल में यूएसबी ईथरनेट सीडीसी में मॉड्यूल जोड़ने की जरूरत है। मैंने पहले भी ऐसा किया था और आप इसे इस चरण के अंत में प्राप्त कर सकते हैं। मैंने कुछ इटेन्स हटा दिए लेकिन यह काम करता है।

संकलन करने से पहले, कृपया ड्राइवर/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 फ़ाइल को कर्नेल निर्देशिका में कॉपी करें, कर्नेल, मॉड्यूल बनाएं और निर्देशिका में मॉड्यूल स्थापित करें:

$ मेक-जे$(nproc) Image.gz dtbs

$ मेक-जे$(एनप्रोक) मॉड्यूल $ मेक मॉड्यूल_इंस्टॉल करें INSTALL_MOD_PATH=../db410c-मॉड्यूल

संदर्भ: ९६बोर्ड्स दस्तावेज़ीकरण

चरण 3: HOST. में Boot.img का पुनर्निर्माण करें

इस चरण में, हमें initrd छवि को खोलना होगा, छवि के अंदर निर्मित मॉड्यूल को रखना होगा, उस मॉड्यूल को शुरू करने के लिए सिस्टम को कॉन्फ़िगर करना होगा और रूट फाइल सिस्टम को दूरस्थ रूप से बूट करने के लिए एक नई कर्नेल कमांड लाइन के साथ initrd.img को फिर से बनाना होगा।

तो, सबसे पहले, हमें linaro वेबसाइट से initrd.img डाउनलोड करना होगा:

$ सीडी..

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

अब, डाउनलोड करने के बाद, initrd को असम्पीडित और निकालें:

$ zcat ramdisk.img | सीपीओ -आईडीएमवी

इस निर्देशिका में, हमारे पास इनिशियलाइज़ेशन में कर्नेल द्वारा उपयोग किया जाने वाला रूट फाइल सिस्टम है, इसलिए हम यहां आवश्यक एनएफएस सर्वर आईपी और ईथरनेट (यूएसबी) जैसे यूएसबी ईथरनेट सीडीसी मॉड्यूल और एनएफएस रिमोट पैरामीटर को कॉन्फ़िगर करेंगे।

अब, कुछ फाइलों को कॉन्फ़िगर करते हैं:

conf/initramfs.conf:

मॉड्यूल = अधिकांश

BUSYBOX=ऑटो COMPRESS=gzip DEVICE=usb0 NFSROOT=auto RUNSIZE=10%

निर्देशिका स्क्रिप्ट में निर्देशिका init-premount बनाएँ/

$ mkdir स्क्रिप्ट/इनिट-प्रीमाउंट

और इन अभी बनाई गई निर्देशिका में फ़ाइलें जोड़ें:

गण

/स्क्रिप्ट/इनिट-प्रीमाउंट/यूएसबी "$@"

[-ई /conf/param.conf] &&। /conf/param.conf

यु एस बी

#!/बिन/श

PREREQ="" prereqs() {echo "$PREREQ" } case $1 in # पूर्व-आवश्यकताएं पूर्व-आवश्यकताएं प्राप्त करें) पूर्वापेक्षाएँ बाहर निकलें 0;; esac modprobe usb_f_ecm modprobe libसमग्र modprobe usb_f_rndis modprobe g_ether

इसे निष्पादन योग्य बनाने के लिए USB फ़ाइल में chmod का उपयोग करना न भूलें:

$ chmod +x स्क्रिप्ट/इनिट-प्रीमाउंट/यूएसबी

अब, सभी निर्देशिका को db410c-मॉड्यूल (STEP 2) से initrd में lib/मॉड्यूल में मॉड्यूल के साथ कॉपी करें:

$ सीपी-आर../db410-मॉड्यूल/lib usr/

सभी फाइल मॉड्यूल को छोड़कर lib/मॉड्यूल/4.14.96-xxxx-dirty में सभी फाइलों को हटा दें। * और वह फाइल सूची:

कर्नेल/ड्राइवर/यूएसबी/गैजेट/विरासत/g_ether.ko

कर्नेल/ड्राइवर/यूएसबी/गैजेट/लीगेसी/g_mass_storage.ko कर्नेल/ड्राइवर/यूएसबी/गैजेट/लिगेसी/g_cdc.ko कर्नेल/ड्राइवर/यूएसबी/गैजेट/लिगेसी/g_serial.ko कर्नेल/ड्राइवर/यूएसबी/गैजेट/फंक्शन/यूएसबी_एफ_मास_स्टोरेज.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 कर्नेल/ड्राइवर/यूएसबी/गैजेट /function/usb_f_fs.ko कर्नेल/ड्राइवर/usb/गैजेट/फ़ंक्शन/usb_f_ecm_subset.ko कर्नेल/ड्राइवर/usb/गैजेट/libcomposite.ko

वे फाइलें यूएसबी ईथरनेट सीडीसी शुरू करने के लिए आवश्यक सभी मॉड्यूल हैं।

अंत में initrd इमेज को रीपैक और कंप्रेस करें:

$ खोज। | सीपीओ-ओ-एच न्यूसी | gzip -9 >../kernel/initrd_nfs.img

कम से कम, कर्नेल छवि और DTB फ़ाइल को Android बूट छवि में पैक करने की आवश्यकता है। ऐसी छवि abootimg टूल से बनाई जा सकती है।

आइए कर्नेल निर्देशिका में और छवि बनाने और संपीड़ित कर्नेल छवि में डीटीबी जोड़ने के लिए नीचे दिए गए आदेश का उपयोग करें:

$ सीडी../कर्नेल

$ कैट आर्क/$ARCH/boot/Image.gz आर्क/$ARCH/boot/dts/qcom/apq8016-sbc.dtb > Image.gz+dtb

और अंत में, बूट छवि उत्पन्न करें (यहां हमारे रूटफ्स 10.42.0.1 में एक दूरस्थ विभाजन स्थित है)

abootimg --create boot-db410c.img -k Image.gz+dtb -r initrd_nfs.img -c pagesize=2048

-सी कर्नेलएड्र = 0x80008000 -सी रैमडिस्कडर = 0x81000000 -सी सेमीडलाइन = "रूट =/देव/एनएफएस nfsroot = 10.42.0.1:/srv/nfs/rootfs आईपी = 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"

सन्दर्भ:

  • https://access.redhat.com/solutions/24029
  • ९६बोर्ड्स दस्तावेज़ीकरण

चरण 4: HOST. में रूट फाइल सिस्टम बनाना

अब, हमें ड्रैगनबोर्ड 410c को अपडेट करने के लिए एक नई बूट छवि मिली है। लेकिन हमें मॉड्यूल, सेवाओं और अनुप्रयोगों को बूट करने के लिए रिमोट सर्वर में रूट फाइल सिस्टम की आवश्यकता है। इस चरण में, हम इन सभी डेटा को सहेजने के लिए होस्ट में एक साझा निर्देशिका का निर्माण करेंगे। इस तरह, आइए लिनारो साइट से एक rootfs फाइल सिस्टम को उसी संस्करण के साथ डाउनलोड करें जिसका उपयोग initrd में किया गया है। तो, एक निर्देशिका पर वापस जाएं और संस्करण 431 के साथ लिनारो-डेवलपर रूटफ्स छवि डाउनलोड करें।

$ सीडी..

$ wget

इस फ़ाइल को असंपीड़ित करें

$ अनज़िप ड्रैगनबोर्ड-४१०सी-एसडीकार्ड-डेवलपर-बस्टर-४३१.ज़िप

इस फ़ाइल का उपयोग करते हुए, आइए सभी विभाजनों तक पहुँचने के लिए सभी छवियों को एक sdcard में लिखें और rootfs फ़ाइलों की प्रतिलिपि बनाएँ। इसलिए, सुनिश्चित करें कि यूएसडीकार्ड से डेटा का बैकअप लिया गया है क्योंकि एसडीकार्ड पर सब कुछ खो जाएगा।

अपना एसडीकार्ड डिवाइस नाम खोजने के लिए, एसडीकार्ड निकालें और निम्न आदेश चलाएं:

$ lsblk

सभी मान्यता प्राप्त डिस्क नामों को अपने दिमाग में सहेजें। अब एसडीकार्ड डालें, एक पल रुकें और फिर से कमांड निष्पादित करें:

$ lsblk

नई मान्यता प्राप्त डिस्क पर ध्यान दें। यह आपका एसडीकार्ड होगा। अपना नाम याद रखें और अपने SDCard डिवाइस नाम के लिए "of=" पैरामीटर बदलें और विभाजन के बिना डिवाइस नाम का उपयोग करना सुनिश्चित करें, p.e.: /dev/mmcblk0

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

टिप्पणियाँ:

  • इस आदेश को क्रियान्वित होने में कुछ समय लगेगा। धैर्य रखें और प्रक्रिया समाप्त होने तक टर्मिनल के साथ छेड़छाड़ करने से बचें।
  • एक बार एसडी कार्ड फ्लैशिंग हो जाने के बाद, होस्ट कंप्यूटर से हटा दें।

संदर्भ: ९६बोर्ड्स दस्तावेज़ीकरण

चरण 5: HOST में सर्वर NFS बनाना और फ़ाइलों की प्रतिलिपि बनाना

इस बिंदु पर, हमारे पास एक बूट छवि है जिसे ड्रैगनबोर्ड 410c में फ्लैश किया जाना है और एक एसडीकार्ड हमारे मॉड्यूल, सेवाओं और अनुप्रयोगों के लिए रूटफ फाइल सिस्टम के साथ है। अगला चरण USB ईथरनेट डिवाइस को HOST rootfs फाइल सिस्टम के साथ कनेक्ट करने के लिए एक दूरस्थ निर्देशिका बनाना है। यह उबंटू के nfs-kernel-server नामक पैकेज का उपयोग करके किया जा सकता है।

यह पैकेज उबंटू में एक एनएफएस सेवा स्थापित करता है जो नेटवर्क पर कुछ उपकरणों के लिए कुछ निर्देशिका साझा करने की अनुमति देता है, हम कॉन्फ़िगर कर सकते हैं कि आपके आईपी का उपयोग करके प्रत्येक डिवाइस के लिए कौन सी निर्देशिका का उपयोग किया जाएगा।

तो, चलिए पैकेज को स्थापित करते हैं और इसे कॉन्फ़िगर करते हैं।

$ sudo apt-nfs-कर्नेल-सर्वर स्थापित करें

NFS सेवा स्वचालित रूप से प्रारंभ होती है। NFS सेवाओं को नियंत्रित करने के लिए उपयोग करें:

$ sudo service nfs-kernel-server पुनरारंभ // पुनरारंभ करने के लिए, या आवश्यकतानुसार 'स्टॉप' या 'स्टार्ट' का उपयोग करें।

कमांड लाइन के उपयोग से NFS सेवा की स्थिति की जाँच करने के लिए:

$ sudo सेवा nfs-कर्नेल-सर्वर स्थिति

nfsd चल रहा है // सेवा ऊपर है nfsd नहीं चल रहा है // सेवा नीचे है

अब, एक शीर्ष निर्देशिका /srv/nfs बनाते हैं, और उसके अंतर्गत आवश्यक प्रत्येक NFS माउंटेड रूट फाइल सिस्टम के लिए एक उपनिर्देशिका बनाते हैं। यहां हम अपने रूट फाइल सिस्टम को बनाए रखने के लिए एक साझा रूट फाइल सिस्टम शामिल करते हैं:

$ sudo mkdir -p /srv/nfs

$ sudo mkdir -p /srv/nfs/rootfs

अब, NFS सर्वर को /etc/exports को सही ढंग से विन्यस्त करने की आवश्यकता है, विशिष्ट मेजबानों के लिए प्रत्येक NFS फाइल सिस्टम निर्देशिका तक पहुंच को नियंत्रित करने के लिए। इस मामले में मेजबानों की पहचान उनके आईपी पते से की जाती है। इसलिए, बनाए गए प्रत्येक रूट फाइल सिस्टम के लिए, निर्यात नियंत्रण रेखा को /etc/exports में जोड़ें, यदि आवश्यक हो तो अपने स्थानीय आईपी पते और निर्देशिका नामकरण योजना के लिए समायोजन करें। इस ट्यूटोरियल में, हम हमेशा इसका उपयोग करते हैं:

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

अपना एसडीकार्ड फिर से डालें, इसे माउंट करें और सभी रूटफ फाइल सिस्टम को /srv/nfs/rootfs में कॉपी करें, नई कॉपी की गई फाइलों का उपयोग करके निर्देशिका को अपडेट करने के लिए एनएफएस सेवा को पुनरारंभ करें।

इसके अतिरिक्त, हमें नए मॉड्यूल फाइलों को रूटफ फाइल सिस्टम में कॉपी करने की जरूरत है क्योंकि हमने चरण 2 पर कर्नेल को संकलित किया है। इसलिए, सभी निर्देशिकाओं को ~/db410c-modules/ से /srv/nfs/rootfs में कॉपी करें।

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

सुनिश्चित करें कि इन निर्देशिकाओं को NFS सेवा द्वारा दृश्यमान बनाया गया है। दोनों में से एक:

$ सुडो एक्सपोर्टएफ -ए

संदर्भ: टीएफटीपी/एनएफएस रूट फाइल सिस्टम

चरण 6: ड्रैगनबोर्ड 410c बूट छवि को अद्यतन करना और नेटवर्क इंटरफेस को कॉन्फ़िगर करना

हमने रिमोट रूटफ फाइल सिस्टम को लागू करने के लिए सभी कदम उठाए हैं, अब हमें ड्रैगनबोर्ड 410 सी के अंदर बूट इमेज को अपडेट करने की जरूरत है, इसके लिए, अपने यूएसबी केबल को पीसी पर और ड्रैगनबोर्ड यूयूएसबी कनेक्टर से कनेक्ट करें। तो सुनिश्चित करें कि फास्टबूट होस्ट कंप्यूटर पर स्थापित है, यदि इसका उपयोग करके इंस्टॉल नहीं किया गया है:

$ sudo apt install fastboot

अब छवि को अपडेट करने के लिए, इस चरणों का पालन करते हुए डी ड्रैगनबोर्ड को फास्टबूट मोड में प्रारंभ करें:

  • DragonBoard 410c पर Vol (-) बटन को दबाकर रखें, यह S4 बटन है। DragonBoard™ 410c अभी भी चालू नहीं होना चाहिए
  • वॉल्यूम (-) बटन को दबाए रखते हुए DragonBoard 410c को प्लग इन करके पावर दें
  • DragonBoard 410c के पावर में प्लग हो जाने के बाद, वॉल्यूम (-) बटन पर अपना होल्ड छोड़ दें।
  • लगभग 20 सेकंड तक प्रतीक्षा करें।
  • बोर्ड को फास्टबूट मोड में बूट करना चाहिए।

कनेक्टेड होस्ट मशीन टर्मिनल विंडो से, निम्न कमांड चलाएँ:

$ सुडो फास्टबूट डिवाइस

आमतौर पर यह नीचे के रूप में दिखाई देगा

de82318 फास्टबूट

इस बिंदु पर आपको अपने DragonBoard 410c से USB से microUSB केबल के साथ कनेक्ट होना चाहिए। आपका DragonBoard 410c फास्टबूट मोड में बूट होना चाहिए और उपयुक्त छवियों के साथ फ्लैश होने के लिए तैयार होना चाहिए। आइए बूट छवि को हमारी बूट छवि के साथ अपडेट करें:

$ सुडो फास्टबूट फ्लैश बूट ~/db410remoteroot/kernel/initrd_nfs.img

और, बोर्ड को पुनरारंभ करें

$ सूडो फास्टबूट रिबूट

अब, आपका HOST usb0 नाम के एक नए इंटरफ़ेस का पता लगाएगा, लेकिन इसमें अभी तक IP नहीं है। तो, इस इंटरफ़ेस का उपयोग करके एक स्थिर आईपी जोड़ें:

$ sudo ifconfig usb0 10.42.0.1 नेटमास्क 255.255.255.0 up

या HOST पर "कॉन्फ़िगरेशन" दर्ज करें, आइटम "नेटवर्क" में, USB ईथरनेट को उस इंटरफ़ेस के लिए एक स्थिर IP सेट करना।

अब, ड्रैगनबोर्ड को फिर से शुरू करें और सिस्टम स्टार्टअप को सत्यापित करें, ssh का उपयोग करके कनेक्ट करने का प्रयास करें:

$ ssh [email protected]

सन्दर्भ:

  • ९६बोर्ड्स दस्तावेज़ीकरण
  • HowtoForge - आइटम 6

सिफारिश की: