الحصول على GNU / Linux على لوحة ARM من البداية (على سبيل المثال ، Kali و iMX.6)

tl ؛ dr : إنشاء صورة Kali Linux لجهاز كمبيوتر ARM ، في برنامج debootstrap، linux و u-boot. إذا اشتريت جهازًا منفردًا غير شائع جدًا ، فقد تواجه عدم وجود صورة لمجموعة التوزيع المفضلة لديك. حدث نفس الشيء مع Flipper One المخطط له . ببساطة لا يوجد Kali Linux لـ IMX6 (أنا أطبخ) ، لذلك يجب أن أقوم ببنائه بنفسي.











عملية التنزيل بسيطة للغاية:



  1. تمت تهيئة الحديد.
  2. من بعض المناطق على جهاز التخزين (بطاقة SD / eMMC / إلخ) تتم قراءة أداة تحميل التشغيل وتنفيذها.
  3. يبحث المُحمل عن نواة نظام التشغيل ويقوم بتحميله في بعض مناطق الذاكرة ويتم تنفيذه.
  4. تقوم النواة بتحميل بقية نظام التشغيل.


بالنسبة لمهمتي ، هذا المستوى من التفاصيل كافٍ ، يمكنك قراءة التفاصيل في مقال آخر . تختلف "بعض" المناطق المذكورة أعلاه من لوحة إلى أخرى ، مما يخلق بعض الصعوبات في التثبيت. إنهم يحاولون توحيد تحميل منصات ARM للخوادم باستخدام UEFI ، ولكن نظرًا لأن هذا غير متاح للجميع ، فسيتعين عليك جمع كل شيء بشكل منفصل.



بناء نظام ملفات الجذر



تحتاج أولاً إلى تحضير الأقسام. يدعم Das U-Boot أنظمة ملفات مختلفة ، واخترت FAT32 لـ /bootو ext3 للجذر ، وهذا هو ترميز الصور القياسي لـ Kali ضمن ARM. سأستخدم GNU Parted ، لكن يمكنك جعل الشيء نفسه مألوفًا أكثر fdisk. كما أنها تحتاج dosfstoolsو e2fsprogsإلى إنشاء نظام الملفات: apt install parted dosfstools e2fsprogs.



نقوم بترميز بطاقة SD:



  1. ضع علامة على بطاقة SD على أنها تستخدم ترميز MBR: parted -s /dev/mmcblk0 mklabel msdos
  2. إنشاء مقطع من /boot128 ميغا: parted -s /dev/mmcblk0 mkpart primary fat32 1MiB 128MiB. يجب ترك أول ميغابايت ضائعة للترميز نفسه ولمحمل الإقلاع.
  3. نقوم بإنشاء نظام ملفات جذر لكامل السعة المتبقية: parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
  4. إذا لم يتم إنشاء ملفات القسم أو تغييرها فجأة ، فأنت بحاجة إلى تنفيذ "partprobe" ، ثم ستتم إعادة قراءة جدول الأقسام.
  5. أنشئ نظام ملفات لقسم التمهيد مع التسمية BOOT:mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
  6. قم بإنشاء نظام ملفات جذر بتسمية ROOTFS:mkfs.ext3 -L ROOTFS /dev/mmcblk0p2


رائع ، الآن يمكنك تعبئته. للقيام بذلك ، سيتطلب debootstrapأداة مساعدة إضافية لإنشاء نظام ملفات جذري لأنظمة تشغيل تعتمد على دبيان apt install debootstrap.



نجمع FS:



  1. قم /mnt/بتركيب القسم على (استخدم نقطة تثبيت أكثر ملاءمة):mount /dev/mmcblk0p2 /mnt
  2. : debootstrap --foreign --include=qemu-user-static --arch armhf kali-rolling /mnt/ http://http.kali.org/kali. --include , QEMU. chroot ARM-. man debootstrap. , ARM- armhf.
  3. - debootstrap , : chroot /mnt/ /debootstrap/debootstrap --second-stage
  4. : chroot /mnt /bin/bash
  5. /etc/hosts /etc/hostname . , .
  6. . locales ( ), (dpkg-reconfigure locales tzdata). passwd.
  7. قم بتعيين كلمة مرور rootللأمر passwd.
  8. ينتهي تحضير الصورة لي بالحشو /etc/fstabبالداخل /mnt/.


سوف أقوم بالتحميل وفقًا للعلامات التي تم إنشاؤها مسبقًا ، لذا سيكون المحتوى على النحو التالي:

LABEL = ROOTFS / أخطاء تلقائية = إعادة التحميل 0 1

LABEL = افتراضيات التشغيل التلقائي / التمهيد 0 0


أخيرًا ، يمكنك تحميل قسم التمهيد ، فنحن نحتاجه للنواة: `mount / dev / mmcblk0p1 / mnt / boot /"



بناء لينكس



لبناء النواة (ثم محمل التمهيد) على ديبيان اختبار من الضروري إنشاء مجموعة قياسية من دول مجلس التعاون الخليجي، GNU جعل والملفات رأس GNU C مكتبة لبنية الهدف (I armhf)، فضلا عن رؤوس بينسل، وحدة آلة حاسبة bc، bisonو flex: apt install crossbuild-essential-armhf bison flex libssl-dev bc. نظرًا لأن أداة تحميل التشغيل تبحث افتراضيًا عن ملف zImageعلى نظام الملفات في قسم التمهيد ، فقد حان الوقت لتقسيم محرك أقراص فلاش USB.



  1. استنساخ الأساسية وقتا طويلا، حتى مجرد تحميل: wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.xz. فكها وانتقل إلى دليل المصدر:tar -xf linux-5.9.1.tar.xz && cd linux-5.9.1
  2. تكوين قبل تجميع: make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig. التكوين موجود في الدليل arch/arm/configs/. إذا لم يكن هناك أي شيء ، فيمكنك محاولة العثور على ملف جاهز وتنزيله وتمرير اسم الملف في هذا الدليل إلى المعلمة KBUILD_DEFCONFIG. كملاذ أخير ، انتقل مباشرة إلى النقطة التالية.
  3. اختياريًا ، يمكنك ضبط الإعدادات: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
  4. وسنقوم بتجميع الصورة: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
  5. يمكنك الآن نسخ الملف باستخدام kernel: cp arch/arm/boot/zImage /mnt/boot/
  6. والملفات التي تحتوي على DeviceTree (وصف الأجهزة المتوفرة على السبورة): cp arch/arm/boot/dts/*.dtb /mnt/boot/
  7. وقم بتثبيت الوحدات المجمعة كملفات منفصلة: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=/mnt/ modules_install


النواة جاهزة. يمكنك إلغاء تحميل كل شيء:umount /mnt/boot/ /mnt/



داس يو بوت



نظرًا لأن برنامج bootloader تفاعلي ، فإن اللوحة نفسها ، وجهاز التخزين ، وجهاز USB-to-UART الاختياري كافية لاختبار تشغيلها. بمعنى أنه يمكنك تأجيل kernel و OS لوقت لاحق.



تقترح الغالبية العظمى من الشركات المصنعة استخدام Das U-Boot للتمهيد الأولي. عادةً ما يتم تقديم الدعم الكامل في مفترق طرقها الخاص ، لكن لا تنسوا المساهمة في المنبع. في حالتي ، اللوحة مدعومة في الخط الرئيسي ، لذلك تجاهلت مفترق الطرق .



نقوم بتجميع أداة تحميل التشغيل نفسها:



  1. : git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10
  2. : cd u-boot
  3. : make mx6ull_14x14_evk_defconfig. Das U-Boot, .config, .
  4. - armhf: make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx


نتيجة لذلك ، نحصل على ملف u-boot.imx، هذه صورة جاهزة يمكن كتابتها على محرك أقراص فلاش USB. نكتب إلى بطاقة SD ، ونتخطى أول 1024 بايت. لماذا اخترت الهدف u-boot.imx؟ لماذا تخطيت 1024 بايت بالضبط؟ هذا ما تقترحه الوثائق . بالنسبة للوحات الأخرى ، قد تختلف عملية إنشاء الصور وحرقها قليلاً.



انتهى ، يمكنك التمهيد. يجب أن يقوم برنامج bootloader بالإبلاغ عن نسخته الخاصة ، وبعض معلومات اللوحة ومحاولة العثور على صورة kernel على القسم. إذا لم تنجح ، فسيحاول التمهيد عبر الشبكة. بشكل عام ، الإخراج مفصل تمامًا ، يمكنك العثور على خطأ في حالة وجود مشكلة.



بدلا من الاستنتاج



هل تعلم أن جبين الدلفين ليس عظميًا؟ إنها حرفيًا العين الثالثة ، عدسة دهنية لتحديد الموقع بالصدى!










All Articles