debootstrap، linux و u-boot.
إذا اشتريت جهازًا منفردًا غير شائع جدًا ، فقد تواجه عدم وجود صورة لمجموعة التوزيع المفضلة لديك. حدث نفس الشيء مع Flipper One المخطط له . ببساطة لا يوجد Kali Linux لـ IMX6 (أنا أطبخ) ، لذلك يجب أن أقوم ببنائه بنفسي.
عملية التنزيل بسيطة للغاية:
- تمت تهيئة الحديد.
- من بعض المناطق على جهاز التخزين (بطاقة SD / eMMC / إلخ) تتم قراءة أداة تحميل التشغيل وتنفيذها.
- يبحث المُحمل عن نواة نظام التشغيل ويقوم بتحميله في بعض مناطق الذاكرة ويتم تنفيذه.
- تقوم النواة بتحميل بقية نظام التشغيل.
بالنسبة لمهمتي ، هذا المستوى من التفاصيل كافٍ ، يمكنك قراءة التفاصيل في مقال آخر . تختلف "بعض" المناطق المذكورة أعلاه من لوحة إلى أخرى ، مما يخلق بعض الصعوبات في التثبيت. إنهم يحاولون توحيد تحميل منصات ARM للخوادم باستخدام UEFI ، ولكن نظرًا لأن هذا غير متاح للجميع ، فسيتعين عليك جمع كل شيء بشكل منفصل.
بناء نظام ملفات الجذر
تحتاج أولاً إلى تحضير الأقسام. يدعم Das U-Boot أنظمة ملفات مختلفة ، واخترت FAT32 لـ
/bootو ext3 للجذر ، وهذا هو ترميز الصور القياسي لـ Kali ضمن ARM. سأستخدم GNU Parted ، لكن يمكنك جعل الشيء نفسه مألوفًا أكثر fdisk. كما أنها تحتاج dosfstoolsو e2fsprogsإلى إنشاء نظام الملفات: apt install parted dosfstools e2fsprogs.
نقوم بترميز بطاقة SD:
- ضع علامة على بطاقة SD على أنها تستخدم ترميز MBR:
parted -s /dev/mmcblk0 mklabel msdos - إنشاء مقطع من
/boot128 ميغا:parted -s /dev/mmcblk0 mkpart primary fat32 1MiB 128MiB. يجب ترك أول ميغابايت ضائعة للترميز نفسه ولمحمل الإقلاع. - نقوم بإنشاء نظام ملفات جذر لكامل السعة المتبقية:
parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100% - إذا لم يتم إنشاء ملفات القسم أو تغييرها فجأة ، فأنت بحاجة إلى تنفيذ "partprobe" ، ثم ستتم إعادة قراءة جدول الأقسام.
- أنشئ نظام ملفات لقسم التمهيد مع التسمية
BOOT:mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1 - قم بإنشاء نظام ملفات جذر بتسمية
ROOTFS:mkfs.ext3 -L ROOTFS /dev/mmcblk0p2
رائع ، الآن يمكنك تعبئته. للقيام بذلك ، سيتطلب
debootstrapأداة مساعدة إضافية لإنشاء نظام ملفات جذري لأنظمة تشغيل تعتمد على دبيان apt install debootstrap.
نجمع FS:
- قم
/mnt/بتركيب القسم على (استخدم نقطة تثبيت أكثر ملاءمة):mount /dev/mmcblk0p2 /mnt - :
debootstrap --foreign --include=qemu-user-static --arch armhf kali-rolling /mnt/ http://http.kali.org/kali.--include, QEMU.chrootARM-.man debootstrap. , ARM-armhf. - -
debootstrap, :chroot /mnt/ /debootstrap/debootstrap --second-stage - :
chroot /mnt /bin/bash -
/etc/hosts/etc/hostname. , . - .
locales( ), (dpkg-reconfigure locales tzdata).passwd. - قم بتعيين كلمة مرور
rootللأمرpasswd. - ينتهي تحضير الصورة لي بالحشو
/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.
- استنساخ الأساسية وقتا طويلا، حتى مجرد تحميل:
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 - تكوين قبل تجميع:
make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig. التكوين موجود في الدليلarch/arm/configs/. إذا لم يكن هناك أي شيء ، فيمكنك محاولة العثور على ملف جاهز وتنزيله وتمرير اسم الملف في هذا الدليل إلى المعلمةKBUILD_DEFCONFIG. كملاذ أخير ، انتقل مباشرة إلى النقطة التالية. - اختياريًا ، يمكنك ضبط الإعدادات:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig - وسنقوم بتجميع الصورة:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- - يمكنك الآن نسخ الملف باستخدام kernel:
cp arch/arm/boot/zImage /mnt/boot/ - والملفات التي تحتوي على DeviceTree (وصف الأجهزة المتوفرة على السبورة):
cp arch/arm/boot/dts/*.dtb /mnt/boot/ - وقم بتثبيت الوحدات المجمعة كملفات منفصلة:
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 للتمهيد الأولي. عادةً ما يتم تقديم الدعم الكامل في مفترق طرقها الخاص ، لكن لا تنسوا المساهمة في المنبع. في حالتي ، اللوحة مدعومة في الخط الرئيسي ، لذلك تجاهلت مفترق الطرق .
نقوم بتجميع أداة تحميل التشغيل نفسها:
- :
git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10 - :
cd u-boot - :
make mx6ull_14x14_evk_defconfig. Das U-Boot,.config, . - -
armhf:make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx
نتيجة لذلك ، نحصل على ملف
u-boot.imx، هذه صورة جاهزة يمكن كتابتها على محرك أقراص فلاش USB. نكتب إلى بطاقة SD ، ونتخطى أول 1024 بايت. لماذا اخترت الهدف u-boot.imx؟ لماذا تخطيت 1024 بايت بالضبط؟ هذا ما تقترحه الوثائق . بالنسبة للوحات الأخرى ، قد تختلف عملية إنشاء الصور وحرقها قليلاً.
انتهى ، يمكنك التمهيد. يجب أن يقوم برنامج bootloader بالإبلاغ عن نسخته الخاصة ، وبعض معلومات اللوحة ومحاولة العثور على صورة kernel على القسم. إذا لم تنجح ، فسيحاول التمهيد عبر الشبكة. بشكل عام ، الإخراج مفصل تمامًا ، يمكنك العثور على خطأ في حالة وجود مشكلة.
بدلا من الاستنتاج
هل تعلم أن جبين الدلفين ليس عظميًا؟ إنها حرفيًا العين الثالثة ، عدسة دهنية لتحديد الموقع بالصدى!
