جدول المحتويات:

الوصول إلى نظام ملفات الجذر البعيد باستخدام DB410 باعتباره Ethernet Dongle: 6 خطوات
الوصول إلى نظام ملفات الجذر البعيد باستخدام DB410 باعتباره Ethernet Dongle: 6 خطوات

فيديو: الوصول إلى نظام ملفات الجذر البعيد باستخدام DB410 باعتباره Ethernet Dongle: 6 خطوات

فيديو: الوصول إلى نظام ملفات الجذر البعيد باستخدام DB410 باعتباره Ethernet Dongle: 6 خطوات
فيديو: 💀كيفيه الحصول علي صلحيات الrootفي الكالي لينكس2022 | How to get root privileges in Kali Linux💀 2024, شهر نوفمبر
Anonim
الوصول إلى نظام ملفات الجذر البعيد باستخدام DB410 باعتباره Ethernet Dongle
الوصول إلى نظام ملفات الجذر البعيد باستخدام DB410 باعتباره Ethernet Dongle

أهداف:

  • تثبيت toolchain وإعادة ترجمة kernel لإدراج دعم USB Ethernet CDC Gadget ؛
  • أعد إنشاء boot.img من Linaro لتشغيل USB Ethernet CDC ؛
  • إنشاء خادم NFS لاستضافة نظام ملفات الجذر ؛
  • تكوين IP في DEVICE و HOST.

الخطوة 1: المتطلبات

سوف تحتاج إلى itens التالية:

  1. لوحة DragonBoard ™ 410c (تسمى هنا DEVICE) ؛
  2. جهاز كمبيوتر يستخدم Ubuntu 16.04.3 محدث (يُسمى هنا HOST) مع اتصال بالإنترنت وفتحة SDCard ؛
  3. تثبيت نظيف للإصدار 431 من Linaro-developer - الرابط: Snapshot Linaro Debian v431
  4. شاشة HDMI
  5. لوحة مفاتيح USB
  6. بطاقة SD 8 جيجا بايت ؛
  7. كبل USB و uUSB USB لتوصيل الجهاز على HOST.

الخطوة 2: تكوين المضيف لبناء النواة وبناء النواة في HOST

أولاً ، سننشئ جميع الأدلة قبل المتابعة. وبالتالي:

$ cd ~

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

لسوء الحظ ، لا يحتوي Linux kernel المستخدم بواسطة Linaro (الإصدار 431) على دعم لأداة USB Ethernet ، ولهذا السبب ، يجب إعادة بناء Linux kernel لهذا الإصدار المحدد. قم بتنزيل Linaro toolchain لإنشاء ونشر Linux kernel على Dragonboard410c من الجهاز المضيف x86.

$ wget

$ tar -xf دول مجلس التعاون الخليجي - * - x86_64_aarch64-linux-gnu.tar.xz -C./toolchain - مكونات الشريط = 1

الآن قم بتثبيت الحزم المطلوبة لبناء النواة:

تحديث $ sudo apt && sudo apt-get install git build-أساسي abootimg kernel-package fakeroot libncurses5-dev libssl-dev ccache

احصل على Linux Kernel source Clone Qualcomm هبوط فريق Linux مستودع:

استنساخ $ git

نواة $ cd $ git checkout origin / release / qcomlt-4.14 -b my-custom-4.14

الآن ، قم بتعيين متغيرات بيئة التجميع:

تصدير $ ARCH = arm64

تصدير $ CROSS_COMPILE = $ (pwd) /../ toolchain / bin / aarch64-linux-gnu-

في هذه المرحلة ، نحتاج إلى إضافة الوحدات النمطية إلى USB Ethernet CDC في النواة. لقد فعلت ذلك من قبل ويمكنك الحصول على هذا في نهاية هذه الخطوة. أزلت بعض itens لكنها تعمل.

قبل التحويل البرمجي ، يرجى تصحيح خطأ kernel في برامج التشغيل / 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 إلى دليل kernel ، وقم ببناء النواة والوحدات النمطية وتثبيت الوحدات النمطية في دليل:

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

وحدات $ make -j $ (nproc) $ make modules_install INSTALL_MOD_PATH =.. / db410c-modules

المرجع: 96 مجالس التوثيق

الخطوة 3: أعد إنشاء Boot.img في HOST

في هذه الخطوة ، نحتاج إلى فتح صورة initrd ، ووضع الوحدات المدمجة داخل الصورة ، وتهيئة النظام لبدء تلك الوحدات وإعادة إنشاء initrd.img بسطر أوامر kernel جديد لتشغيل نظام ملفات الجذر عن بُعد.

لذلك ، أولاً ، يتعين علينا تنزيل initrd.img من موقع الويب linaro:

$ cd..

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

الآن ، بعد التنزيل ، قم بفك الضغط واستخراج الحرف الأول:

$ zcat ramdisk.img | cpio -idmv

في هذا الدليل ، لدينا نظام ملفات الجذر الذي تستخدمه kernel في التهيئة ، لذلك سنقوم بتهيئة وحدات USB Ethernet CDC ومعلمات NFS البعيدة مثل NFS server IP و ethernet (usb) المطلوبة هنا.

لنقم الآن بتهيئة بعض الملفات:

conf / initramfs.conf:

الوحدات = معظم

BUSYBOX = ضغط تلقائي = جهاز gzip = usb0 NFSROOT = حجم تلقائي = 10٪

إنشاء دليل init-premount في دليل scripts /

نصوص mkdir $ / init-premount

وأضف الملفات في هذا الدليل الذي تم إنشاؤه للتو:

ترتيب

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

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

يو اس بي

#! / بن / ش

PREREQ = "" prereqs () {echo "$ PREREQ"} حالة $ 1 في # الحصول على المتطلبات المسبقة) prereqs exit 0 ؛؛ esac modprobe usb_f_ecm modprobe libcomposite modprobe usb_f_rndis modprobe g_ether

لا تنس استخدام chmod في ملف USB لجعله قابلاً للتنفيذ:

$ chmod + x scripts / init-premount / usb

الآن ، انسخ كل الدليل مع الوحدات النمطية من db410c-modules (STEP 2) إلى lib / modules في initrd:

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

قم بإزالة جميع الملفات في lib / modules / 4.14.96-xxxx-dirty باستثناء جميع الملفات. * وقائمة الملفات تلك:

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

kernel / drivers / usb / gadget / legacy / g_mass_storage.ko kernel / drivers / usb / gadget / legacy / g_cdc.ko kernel / drivers / usb / gadget / legacy / g_serial.ko kernel / drivers / usb / gadget / function / usb_f_mass_storage.ko kernel / drivers / usb / gadget / function / usb_f_acm.ko kernel / drivers / 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 / drivers / usb / gadget / function / usb_f_ecm.ko kernel / driver / usb / gadget / function / usb_f_rndis.ko kernel / drivers / usb / gadget / function / u_serial.ko kernel / driver / usb / gadget /function/usb_f_fs.ko kernel / drivers / usb / gadget / function / usb_f_ecm_subset.ko kernel / drivers / usb / gadget / libcomposite.ko

هذه الملفات هي جميع الوحدات النمطية اللازمة لبدء USB Ethernet CDC.

أخيرًا ، أعد حزم وضغط صورة initrd:

$ تجد. | cpio -o -H newc | gzip -9>../kernel/initrd_nfs.img

على الأقل ، يجب تعبئة صورة kernel وملف DTB في صورة تمهيد Android. يمكن إنشاء هذه الصورة باستخدام أداة abootimg.

دعنا في دليل kernel ونستخدم الأمر أدناه لإنشاء صورة وإلحاق DTB في صورة kernel المضغوطة:

$ cd../kernel

قوس $ cat / قوس $ / boot / قوس Image.gz / قوس $ / boot / dts / qcom / apq8016-sbc.dtb> Image.gz + dtb

وأخيرًا ، قم بإنشاء صورة التمهيد (هنا توجد ملفات rootf الخاصة بنا في قسم بعيد في 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 console = tty0 console = ttyMSM0، 115200n8"

مراجع:

  • https://access.redhat.com/solutions/24029
  • 96Bards توثيق

الخطوة 4: إنشاء نظام ملفات الجذر في HOST

الآن ، لدينا صورة تمهيد جديدة لتحديث dragonboard 410c. لكننا نحتاج إلى نظام ملفات جذر في الخادم البعيد لتشغيل الوحدات النمطية والخدمات والتطبيقات. في هذه الخطوة ، سننشئ دليلًا مشتركًا في المضيف لحفظ كل هذه البيانات. بهذه الطريقة ، لنقم بتنزيل نظام ملفات rootfs من موقع linaro بنفس الإصدار المستخدم في initrd. لذا ، ارجع إلى دليل واحد وقم بتنزيل صورة rootfs لمطور linaro مع الإصدار 431.

$ cd..

$ wget

قم بفك ضغط هذا الملف

قم بفك ضغط dragonboard-410c-sdcard-developer-buster-431.zip

باستخدام هذا الملف ، دعنا نكتب كل الصور في sdcard للوصول إلى جميع الأقسام ونسخ ملفات rootfs. لذلك ، تأكد من نسخ البيانات من uSDCard احتياطيًا لأن كل شيء على بطاقة SDCard سيتم فقده.

للعثور على اسم جهاز SDCard الخاص بك ، قم بإزالة SDCard وقم بتشغيل الأمر التالي:

lsblk $

احفظ جميع أسماء الأقراص المعترف بها في ذهنك. الآن أدخل SDCard ، انتظر لحظة وقم بتنفيذ الأمر مرة أخرى:

lsblk $

لاحظ القرص المعترف به حديثًا. ستكون هذه بطاقة SD الخاصة بك. تذكر اسمك وقم بتغيير المعلمة "of =" لاسم جهاز SDCard الخاص بك وتأكد من استخدام اسم الجهاز بدون القسم ، على سبيل المثال: / dev / mmcblk0

$ sudo dd if = dragonboard-410c-sdcard-developer-buster-431.img من = / dev / XXX bs = 4M oflag = حالة المزامنة = تقدم

ملحوظات:

  • سيستغرق تنفيذ هذا الأمر بعض الوقت. تحلى بالصبر وتجنب العبث بالمحطة حتى تنتهي العملية.
  • بمجرد الانتهاء من وميض بطاقة SD ، أخرجها من الكمبيوتر المضيف.

المرجع: 96 لوحة وثائق

الخطوة 5: إنشاء خادم NFS في HOST ونسخ الملفات

في هذه المرحلة ، لدينا صورة تمهيد يتم وميضها إلى dragonboard 410c و SDCard مع نظام ملفات rootfs لوحداتنا وخدماتنا وتطبيقاتنا. الخطوة التالية هي إنشاء دليل بعيد لتوصيل جهاز USB Ethernet بجهاز مع نظام ملفات HOST rootfs. يمكن القيام بذلك باستخدام حزمة من Ubuntu تسمى nfs-kernel-server.

تقوم هذه الحزمة بتثبيت خدمة NFS في Ubuntu للسماح بمشاركة بعض الأدلة لبعض الأجهزة على الشبكة ، ويمكننا تكوين الدليل الذي سيتم استخدامه لكل جهاز باستخدام عنوان IP الخاص بك.

لذلك ، لنقم بتثبيت الحزمة وتكوينها.

sudo apt-get install nfs-kernel-server

تبدأ خدمة NFS تلقائيًا. للتحكم في خدمات NFS ، استخدم:

أعد تشغيل $ sudo service nfs-kernel-server // لإعادة التشغيل ، أو استخدم "stop" أو "start" حسب الحاجة.

للتحقق من حالة خدمة NFS من سطر الأوامر ، استخدم:

حالة خادم $ sudo service nfs-kernel

nfsd قيد التشغيل // الخدمة قيد التشغيل nfsd لا تعمل // الخدمة معطلة

الآن ، دعنا ننشئ دليلًا علويًا / srv / nfs ، وننشئ دليلًا فرعيًا تحته لكل نظام ملفات جذر مثبت على NFS مطلوب. نقوم هنا بتضمين نظام ملفات جذر مشترك للحفاظ على نظام ملفات الجذر الخاص بنا:

$ sudo mkdir -p / srv / nfs

$ sudo mkdir -p / srv / nfs / rootfs

الآن ، يتطلب خادم NFS / etc / export أن يتم تكوينه بشكل صحيح ، للتحكم في الوصول إلى كل دليل نظام ملفات 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 install fastboot

الآن لتحديث الصورة ، ابدأ de dragonboard في وضع Fastboot باتباع الخطوات التالية:

  • اضغط مع الاستمرار على زر Vol (-) على DragonBoard 410c ، هذا هو الزر S4. لا يزال يجب عدم تشغيل DragonBoard ™ 410c
  • أثناء الضغط على زر Vol (-) ، قم بتشغيل DragonBoard 410c عن طريق توصيله
  • بمجرد توصيل DragonBoard 410c بالطاقة ، حرر الضغط على زر Vol (-).
  • انتظر حوالي 20 ثانية.
  • يجب أن يتم تشغيل اللوحة في وضع Fastboot.

من النافذة الطرفية لجهاز المضيف المتصل ، قم بتشغيل الأوامر التالية:

أجهزة $ sudo fastboot

عادة سوف تظهر على النحو التالي

فاستبوت de82318

في هذه المرحلة ، يجب أن تكون متصلاً بـ 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 قناع الشبكة 255.255.255.0 يصل

أو أدخل "Configuration" على HOST ، في العنصر "network" ، واضبط USB Ethernet على IP ثابت لتلك الواجهة.

الآن ، أعد تشغيل dragonboard مرة أخرى وتحقق من بدء تشغيل النظام ، في محاولة للاتصال باستخدام ssh:

$ ssh [email protected]

مراجع:

  • 96boards من الوثائق
  • HowtoForge - البند 6

موصى به: