ইথারনেট ডংগল হিসাবে DB410 ব্যবহার করে রিমোট রুট ফাইল সিস্টেম অ্যাক্সেস করা: 6 টি ধাপ
ইথারনেট ডংগল হিসাবে DB410 ব্যবহার করে রিমোট রুট ফাইল সিস্টেম অ্যাক্সেস করা: 6 টি ধাপ
Anonim
ইথারনেট ডংগল হিসাবে DB410 ব্যবহার করে রিমোট রুট ফাইল সিস্টেম অ্যাক্সেস করা
ইথারনেট ডংগল হিসাবে DB410 ব্যবহার করে রিমোট রুট ফাইল সিস্টেম অ্যাক্সেস করা

উদ্দেশ্য:

  • ইউএসবি ইথারনেট সিডিসি গ্যাজেট সাপোর্ট toolোকানোর জন্য টুলচেইন এবং কার্নেল পুনরায় কম্পাইল করুন;
  • ইউএসবি ইথারনেট সিডিসি বুট করার জন্য Linaro থেকে boot.img পুনরায় তৈরি করুন;
  • রুট ফাইল সিস্টেম হোস্ট করার জন্য NFS সার্ভার তৈরি করুন;
  • DEVICE এবং HOST এ IP কনফিগারেশন।

ধাপ 1: অনুরোধ

আপনি নিম্নলিখিত itens প্রয়োজন হবে:

  1. A DragonBoard ™ 410c (এখানে DEVICE নামে);
  2. উবুন্টু 16.04.3 ব্যবহার করে একটি পিসি ইন্টারনেট সংযোগ এবং SDCard স্লট সহ আপডেট করা হয়েছে (এখানে HOST নামকরণ করা হয়েছে);
  3. লিনারো -ডেভেলপার সংস্করণ 431 এর একটি পরিষ্কার ইনস্টলেশন - লিঙ্ক: স্ন্যাপশট লিনারো ডেবিয়ান v431
  4. একটি HDMI মনিটর;
  5. একটি ইউএসবি কীবোর্ড;
  6. একটি 8Gb SDCard;
  7. একটি ইউএসবি কেবল, ইউএসবি ইউএসবি হোস্টে ডিভাইস সংযোগ করতে।

ধাপ 2: HOST এ কার্নেল এবং বিল্ডিং কার্নেল তৈরির জন্য হোস্ট কনফিগার করা

প্রথমত, আমরা চালিয়ে যাওয়ার আগে সমস্ত ডিরেক্টরি তৈরি করব। সুতরাং:

$ সিডি

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

দুর্ভাগ্যক্রমে, লিনারো (সংস্করণ 431) দ্বারা ব্যবহৃত লিনাক্স কার্নেলে ইউএসবি ইথারনেট গ্যাজেটের জন্য সমর্থন নেই, এই কারণে, এই নির্দিষ্ট সংস্করণের জন্য লিনাক্স কার্নেলকে পুনর্নির্মাণ করতে হবে। X86 হোস্ট মেশিন থেকে ড্রাগনবোর্ড 410 সি -তে লিনাক্স কার্নেল তৈরি এবং স্থাপনের জন্য লিনারো টুলচেইন ডাউনলোড করুন।

$ Wget হয়

$ tar -xf gcc-*-x86_64_aarch64-linux-gnu.tar.xz -C।

এখন কার্নেল তৈরির জন্য প্রয়োজনীয় প্যাকেজগুলি ইনস্টল করুন:

$ sudo apt update && sudo apt-get git build-essential abootimg kernel-package fakeroot 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-

এই মুহুর্তে, আমাদের কার্নেলে ইউএসবি ইথারনেট সিডিসিতে মডিউল যুক্ত করতে হবে। আমি এটি আগে করেছি এবং আপনি এই ধাপের শেষে এটি পেতে পারেন। আমি কিছু itens সরানো কিন্তু এটি কাজ করে।

কম্পাইল করার আগে, দয়া করে একটি কার্নেল বাগ সংশোধন করুন ড্রাইভার/mmc/host/sdhci-msm.c 1150 লাইনে স্ট্রাক্ট পরিবর্তন করে:

স্ট্যাটিক 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};

Uncompress configfile.zip,.config ফাইলটি কার্নেল ডিরেক্টরিতে অনুলিপি করুন, কার্নেল, মডিউল তৈরি করুন এবং একটি ডিরেক্টরিতে মডিউল ইনস্টল করুন:

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

$ make -j $ (nproc) মডিউল $ make modules_install INSTALL_MOD_PATH =../db410c -modules

রেফারেন্স: 96 বোর্ড ডকুমেন্টেশন

ধাপ 3: HOST এ Boot.img পুনর্নির্মাণ করুন

এই ধাপে, আমাদের initrd ইমেজ খুলতে হবে, ইমেজের ভিতরে নির্মিত মডিউলগুলি স্থাপন করতে হবে, সেই মডিউলগুলি চালু করার জন্য সিস্টেম কনফিগার করতে হবে এবং একটি নতুন কার্নেল কমান্ড লাইন দিয়ে একটি initrd.img পুনর্নির্মাণ করতে হবে দূর থেকে রুট ফাইল সিস্টেম বুট করতে হবে।

সুতরাং, প্রথমে, আমাদের লিনারো ওয়েবসাইট থেকে initrd.img ডাউনলোড করতে হবে:

$ সিডি..

$ mkdir inird_nfs $ cd initrd_nfs

এখন, ডাউনলোড করার পরে, কম্প্রেস করুন এবং initrd বের করুন:

$ zcat ramdisk.img | cpio -idmv

এই ডিরেক্টরিতে, আমাদের কার্নেল দ্বারা শুরুতে রুট ফাইল সিস্টেম ব্যবহার করা হয়েছে, তাই আমরা ইউএসবি ইথারনেট সিডিসি মডিউল এবং এনএফএস রিমোট প্যারামিটার যেমন এনএফএস সার্ভার আইপি এবং ইথারনেট (ইউএসবি) এখানে কনফিগার করব।

এখন, কিছু ফাইল কনফিগার করা যাক:

conf/initramfs.conf:

মডিউল = সর্বাধিক

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

ডিরেক্টরি স্ক্রিপ্টগুলিতে init-premount ডিরেক্টরি তৈরি করুন/

$ mkdir স্ক্রিপ্ট/init-premount

এবং এই সদ্য নির্মিত ডিরেক্টরিতে ফাইল যোগ করুন:

আদেশ

/স্ক্রিপ্ট/init-premount/ইউএসবি "$@"

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

ইউএসবি

#!/বিন/শ

PREREQ = "" prereqs) esac modprobe usb_f_ecm modprobe libcomposite modprobe usb_f_rndis modprobe g_ether

এটি এক্সিকিউটেবল করার জন্য ইউএসবি ফাইলে chmod ব্যবহার করতে ভুলবেন না:

$ chmod +x স্ক্রিপ্ট/init-premount/usb

এখন, db410c-modules (STEP 2) থেকে initrd- এ lib/modules- এর মডিউল সহ সমস্ত ডিরেক্টরি কপি করুন:

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

সমস্ত ফাইল মডিউল বাদে lib/modules/4.14.96-xxxx-dirty সব ফাইল সরান।* এবং সেই ফাইল তালিকা:

কার্নেল/ড্রাইভার/ইউএসবি/গ্যাজেট/লিগ্যাসি/g_ether.ko

কার্নেল/ড্রাইভার/ইউএসবি/গ্যাজেট/লিগ্যাসি/g_mass_storage.ko কার্নেল/ড্রাইভার/ইউএসবি/গ্যাজেট/লিগ্যাসি/g_cdc.ko কার্নেল/ড্রাইভার/ইউএসবি/গ্যাজেট/লিগ্যাসি/g_serial.ko কার্নেল/ড্রাইভার/ইউএসবি/গ্যাজেট/ফাংশন/usb_f_mass_storage.ko কার্নেল/ড্রাইভার/ইউএসবি/গ্যাজেট/ফাংশন/usb_f_acm.ko কার্নেল/ড্রাইভার/ইউএসবি/গ্যাজেট/ফাংশন/u_ether.ko কার্নেল/ড্রাইভার/ইউএসবি/গ্যাজেট/ফাংশন/usb_f_obex.ko কার্নেল/ড্রাইভার/ইউএসবি/গ্যাজেট/ফাংশন /usb_f_serial.ko কার্নেল/ড্রাইভার/ইউএসবি/গ্যাজেট/ফাংশন/usb_f_ecm.ko কার্নেল/ড্রাইভার/ইউএসবি/গ্যাজেট/ফাংশন/usb_f_rndis.ko কার্নেল/ড্রাইভার/ইউএসবি/গ্যাজেট/ফাংশন/ /function/usb_f_fs.ko কার্নেল/ড্রাইভার/ইউএসবি/গ্যাজেট/ফাংশন/usb_f_ecm_subset.ko কার্নেল/ড্রাইভার/ইউএসবি/গ্যাজেট/libcomposite.ko

ইউএসবি ইথারনেট সিডিসি চালু করার জন্য এই ফাইলগুলো সব মডিউল।

অবশেষে পুনর্নির্মাণ এবং initrd ইমেজ সংকুচিত করুন:

$ খুঁজুন। | cpio -o -H newc | gzip -9>../kernel/initrd_nfs.img

কমপক্ষে, কার্নেল ইমেজ এবং DTB ফাইলটি একটি অ্যান্ড্রয়েড বুট ইমেজে প্যাক করা প্রয়োজন। এই ধরনের ছবি abootimg টুল দিয়ে তৈরি করা যায়।

আসুন কার্নেল ডিরেক্টরিতে এবং চিত্র তৈরি করতে নীচের কমান্ডটি ব্যবহার করুন এবং সংকুচিত কার্নেল ইমেজে DTB যুক্ত করুন:

$ cd../kernel

$ 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.25.255: db410c: usb0: rw rootwait console = tty0 console = ttyMSM0, 115200n8"

তথ্যসূত্র:

  • https://access.redhat.com/solutions/24029
  • 96 বোর্ড ডকুমেন্টেশন

ধাপ 4: হোস্টে রুট ফাইল সিস্টেম তৈরি করা

এখন, আমরা ড্রাগনবোর্ড 410c আপডেট করার জন্য একটি নতুন বুট ইমেজ পেয়েছি। কিন্তু মডিউল, পরিষেবা এবং অ্যাপ্লিকেশন বুট করার জন্য আমাদের রিমোট সার্ভারে একটি রুট ফাইল সিস্টেম দরকার। এই ধাপে, আমরা এই সমস্ত ডেটা সংরক্ষণ করার জন্য হোস্টে একটি ভাগ করা ডিরেক্টরি তৈরি করব। এই ভাবে, চলুন শুরু করা যাক লিনারো সাইট থেকে একটি rootfs ফাইল সিস্টেম initrd তে ব্যবহৃত একই সংস্করণ সহ। সুতরাং, একটি ডিরেক্টরি ফিরে যান এবং 431 সংস্করণ সহ linaro-developer rootfs ইমেজ ডাউনলোড করুন।

$ সিডি..

$ wget

এই ফাইলটি কম্প্রেস করুন

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

এই ফাইলটি ব্যবহার করে, আসুন একটি sdcard- এ সমস্ত চিত্র লিখুন সমস্ত পার্টিশন অ্যাক্সেস করতে এবং rootfs ফাইলগুলি অনুলিপি করতে। সুতরাং, নিশ্চিত করুন যে ইউএসডিকার্ড থেকে ডেটা ব্যাক আপ করা হয়েছে কারণ এসডিকার্ডের সবকিছু হারিয়ে যাবে।

আপনার SDCard ডিভাইসের নাম খুঁজে পেতে, SDCard সরান এবং নিম্নলিখিত কমান্ডটি চালান:

$ lsblk

আপনার মনে সমস্ত স্বীকৃত ডিস্ক নাম সংরক্ষণ করুন। এখন SDCard,োকান, একটি মুহূর্ত অপেক্ষা করুন এবং কমান্ডটি আবার চালান:

$ lsblk

নতুন স্বীকৃত ডিস্কটি লক্ষ্য করুন। এটি আপনার SDCard হবে। আপনার নাম মনে রাখুন এবং আপনার SDCard ডিভাইসের নামের জন্য "=" এর প্যারামিটার পরিবর্তন করুন এবং পার্টিশন ছাড়াই ডিভাইসের নাম ব্যবহার করতে ভুলবেন না, p.e: /dev /mmcblk0

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

মন্তব্য:

  • এই কমান্ডটি কার্যকর করতে কিছুটা সময় লাগবে। ধৈর্য ধরুন এবং প্রক্রিয়াটি শেষ না হওয়া পর্যন্ত টার্মিনালে ছদ্মবেশ এড়িয়ে চলুন।
  • একবার এসডি কার্ড ফ্ল্যাশ করা হয়ে গেলে, হোস্ট কম্পিউটার থেকে সরান।

রেফারেন্স: 96 বোর্ড ডকুমেন্টেশন

ধাপ 5: HOST এ সার্ভার NFS তৈরি করা এবং ফাইলগুলি অনুলিপি করা

এই মুহুর্তে, আমাদের একটি বুট ইমেজ আছে যা আমাদের মডিউল, পরিষেবা এবং অ্যাপ্লিকেশনগুলির জন্য একটি রুটএফএস ফাইল সিস্টেম সহ ড্রাগনবোর্ড 410 সি এবং একটি এসডিকার্ডে ফ্ল্যাশ করা হবে। পরবর্তী ধাপ হল HOST rootfs ফাইল সিস্টেমের সাথে USB ইথারনেট ডিভাইস সংযুক্ত করার জন্য একটি দূরবর্তী ডিরেক্টরি তৈরি করা। উবুন্টু থেকে nfs-kernel-server নামে একটি প্যাকেজ ব্যবহার করে এটি করা যেতে পারে।

এই প্যাকেজটি উবুন্টুতে একটি এনএফএস পরিষেবা ইনস্টল করে নেটওয়ার্কে কিছু ডিভাইসের জন্য কিছু ডিরেক্টরি শেয়ার করার অনুমতি দেয়, আমরা আপনার আইপি ব্যবহার করে প্রতিটি ডিভাইসের জন্য কোন ডিরেক্টরিটি ব্যবহার করা হবে তা কনফিগার করতে পারি।

সুতরাং, আসুন প্যাকেজটি ইনস্টল করি এবং এটি কনফিগার করি।

$ sudo apt-get nfs-kernel-server ইনস্টল করুন

NFS পরিষেবা স্বয়ংক্রিয়ভাবে শুরু হয়। NFS পরিষেবাগুলি নিয়ন্ত্রণ করতে ব্যবহার করুন:

$ sudo service nfs-kernel-server restart // restart করতে, অথবা 'stop', অথবা 'start' প্রয়োজন অনুযায়ী ব্যবহার করুন।

কমান্ড লাইন ব্যবহার থেকে NFS পরিষেবার অবস্থা পরীক্ষা করতে:

$ sudo পরিষেবা nfs-kernel-server অবস্থা

nfsd চলছে // সার্ভিস চালু আছে nfsd চলছে না // সার্ভিস ডাউন

এখন, আসুন একটি শীর্ষ ডিরেক্টরি /srv /nfs তৈরি করি এবং এর অধীনে প্রতিটি NFS মাউন্ট করা রুট ফাইল সিস্টেমের জন্য একটি উপ -ডিরেক্টরি তৈরি করি। আমাদের মূল ফাইল সিস্টেম রাখার জন্য এখানে আমরা একটি শেয়ার্ড রুট ফাইল সিস্টেম অন্তর্ভুক্ত করি:

$ sudo mkdir -p /srv /nfs

$ sudo mkdir -p/srv/nfs/rootfs

এখন, এনএফএস সার্ভারের নির্দিষ্ট হোস্টগুলিতে প্রতিটি এনএফএস ফাইল সিস্টেম ডিরেক্টরিতে অ্যাক্সেস নিয়ন্ত্রণ করার জন্য /etc /export সঠিকভাবে কনফিগার করা প্রয়োজন। এই ক্ষেত্রে হোস্ট তাদের আইপি ঠিকানা দ্বারা চিহ্নিত করা হয়। সুতরাং, তৈরি করা প্রতিটি রুট ফাইল সিস্টেমের জন্য, /etc /export এ রপ্তানি নিয়ন্ত্রণ লাইন যোগ করুন, আপনার স্থানীয় আইপি ঠিকানা এবং প্রয়োজন হলে ডিরেক্টরি নামকরণ স্কিম সমন্বয় করুন। এই টিউটোরিয়ালে, আমরা সর্বদা এটি ব্যবহার করি:

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

আপনার SDCard আবার Insোকান, এটি মাউন্ট করুন এবং/srv/nfs/rootfs এ সমস্ত rootfs ফাইল সিস্টেম অনুলিপি করুন, নতুন অনুলিপি করা ফাইলগুলি ব্যবহার করে ডিরেক্টরিটি আপডেট করতে NFS পরিষেবা পুনরায় চালু করুন।

অতিরিক্তভাবে, আমাদের নতুন মডিউল ফাইলগুলিকে রুটএফএস ফাইল সিস্টেমে অনুলিপি করতে হবে কারণ আমরা ২ য় ধাপে কার্নেল সংকলিত করেছি।

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

নিশ্চিত করুন যে এই ডিরেক্টরিগুলি NFS পরিষেবা দ্বারা দৃশ্যমান করা হয়েছে। হয়:

$ sudo exportfs -a

রেফারেন্স: TFTP/NFS রুট ফাইল সিস্টেম

ধাপ 6: ড্রাগনবোর্ড 410c বুট ইমেজ আপডেট করা এবং নেটওয়ার্ক ইন্টারফেস কনফিগার করা

আমরা রিমোট রুটএফএস ফাইল সিস্টেম বাস্তবায়নের জন্য প্রাথমিকভাবে সমস্ত পদক্ষেপ নিয়েছি, এখন আমাদের ড্রাগনবোর্ড 410c এর ভিতরে বুট ইমেজ আপডেট করতে হবে, এর জন্য, আপনার USB পিসি এবং ড্রাগনবোর্ড uUSB সংযোগকারীতে সংযুক্ত করুন। তাই নিশ্চিত করুন যে হোস্ট কম্পিউটারে ফাস্টবুট সেট আপ করা আছে, যদি ব্যবহার না করে ইনস্টল করা হয়:

$ sudo apt fastboot ইনস্টল করুন

এখন ছবি আপডেট করার জন্য, এই ধাপগুলি অনুসরণ করে ফাস্টবুট মোডে ডি ড্রাগনবোর্ড শুরু করুন:

  • DragonBoard 410c এ Vol (-) বোতাম টিপুন এবং ধরে রাখুন, এটি S4 বোতাম। ড্রাগনবোর্ড ™ 410c এখনও চালু করা উচিত নয়
  • ভোল (-) বোতামটি ধরে রাখার সময়, ড্রাগনবোর্ড 410 সি-তে প্লাগ ইন করে পাওয়ার
  • ড্রাগনবোর্ড 410c পাওয়ারে প্লাগ হয়ে গেলে, ভোল (-) বোতামে আপনার হোল্ডটি ছেড়ে দিন।
  • প্রায় 20 সেকেন্ড অপেক্ষা করুন।
  • বোর্ডকে ফাস্টবুট মোডে বুট করা উচিত।

সংযুক্ত হোস্ট মেশিন টার্মিনাল উইন্ডো থেকে, নিম্নলিখিত কমান্ডগুলি চালান:

$ sudo fastboot ডিভাইস

সাধারণত এটি নিচের মত দেখাবে

de82318 fastboot

এই মুহুর্তে আপনাকে আপনার ড্রাগনবোর্ড 410 সি এর সাথে একটি ইউএসবি থেকে মাইক্রো ইউএসবি কেবল সংযুক্ত করা উচিত। আপনার ড্রাগনবোর্ড 410c ফাস্টবুট মোডে বুট করা উচিত এবং যথাযথ চিত্রগুলির সাথে ফ্ল্যাশ করার জন্য প্রস্তুত হওয়া উচিত। আসুন আমাদের বুট ইমেজ দিয়ে বুট ইমেজ আপডেট করি:

$ sudo fastboot ফ্ল্যাশ বুট d/db410remoteroot/কার্নেল/initrd_nfs.img

এবং, বোর্ডটি পুনরায় চালু করুন

$ sudo fastboot রিবুট

এখন, আপনার HOST usb0 নামে একটি নতুন ইন্টারফেস সনাক্ত করবে, কিন্তু এটিতে এখনও আইপি নেই। সুতরাং, এই ইন্টারফেস ব্যবহার করে একটি স্ট্যাটিক আইপি যোগ করুন:

$ sudo ifconfig usb0 10.42.0.1 netmask 255.255.255.0 আপ

অথবা HOST- এ "কনফিগারেশন" লিখুন, আইটেম "নেটওয়ার্ক" -এ, ইউএসবি ইথারনেটকে সেই ইন্টারফেসে একটি স্ট্যাটিক আইপি সেট করুন।

এখন, ড্রাগনবোর্ডটি পুনরায় চালু করুন এবং সিস্টেম স্টার্টআপ যাচাই করুন, ssh ব্যবহার করে সংযোগ করার চেষ্টা করুন:

$ ssh [email protected]

তথ্যসূত্র:

  • 96 বোর্ড ডকুমেন্টেশন
  • HowtoForge - আইটেম 6

প্রস্তাবিত: