تجميع النواة
ساوضح لماذا الصور الحالية ليست مناسبة. مشكلتهم الرئيسية هي أنها مبنية على الإصدار 3.4 القديم من kernel ، وهذا يفرض على الفور حدًا أقصى على الإصدار 4 من برنامج التحويل البرمجي و ubuntu 12.04 بالتأكيد ، لا أتذكر 14.04. لذلك اتضح أنه إذا كنت تريد استخدام أحدث البرامج والمكتبات ، فسيتعين عليك إعادة إنشاء أحدث إصدار من kernel. بالطبع ، يمكنك إزالة القيود المفروضة على تجميع الإصدار 5 على الأقل من gcc في المصادر وإصلاح الشفرة بحيث يمكن إنشاؤها ضمن الإصدار 4 ، ولكن هذا لا يزال هراء. ناهيك عن حقيقة أنه في حالتنا ، يكون جزء الرسم الخاص بـ linux غير ضروري.
للبدء في kernel.org ، نخرج 4.14.57 kernel ؛ في ذلك الوقت كانت آخر نسخة مستقرة.
في المجلد المصدر ، قم بإنشاء برنامج نصي يبدأ التكوين:
نحصل على شيء مثل هذا:

في قائمة الملفات على 
/linux-4.14.57/arch/arm/configs/ حدد ملف 
/linux-4.14.57/arch/arm/configs/ ، هناك الإعدادات الأساسية لمعالجات سلسلة sunxi. ثم تحتاج إلى إضافة بعض الإعدادات. أي نحن نبحث أدناه الأعلام المحددة وتكوينها.
قمنا بتضمين كل شيء في النواة كلما أمكن ذلك.
CONFIG_BLK_DEV_INITRD - لن نستخدم ramfs بدلاً من ذلك ، ثم سنبدأ تشغيل Aufs (نظام ملفات التوحيد متعدد الطبقات المتقدم). باختصار ، قم بإزالة مربع الاختيار.
CONFIG_MEMCG - تشغيل مثل كل شيء في الداخل
CONFIG_BLK_CGROUP - تشغيل
CONFIG_CGROUP_DEVICE - تشغيل
CONFIG_CGROUP_CPUACCT - تشغيل
CONFIG_CGROUP_PERF - تشغيل مثل كل شيء في الداخل
CONFIG_EXPERT - ما عليك سوى اختيار وترك كل شيء في الداخل بشكل افتراضي
CONFIG_BLK_WBT - اختر مثل كل شيء في الداخل
CONFIG_PARTITION_ADVANCED - اختر من الداخل
CONFIG_SUN_PARTITION - حدد
ARCH_SUNXI - بداخلنا نترك فقط MACH_SUN5I
في دعم الناقل ، حدد CONFIG_PCI ، نظرًا لأن USB wifi يتطلب دعم ناقل PCI. من الواضح ، عندما يتم تمكين دعم wifi ، لا تتطلب النواة ناقل pci ، ومع ذلك ، بدون هذا WPA ، لا يجد المتلقي USB wifi. لماذا يحدث هذا ، يمكنك أن تبحث في أعماق التاريخ ، ولكن إذا حكمنا من خلال كل شيء ، فقد حدث تاريخيا ، بشكل عام ، تحتاج إلى معرفة وتذكر هذا.
CONFIG_CPU_FREQ_STAT - ابحث وحدد
داخل CONFIG_NET ، نختار WIRELESS ثم CONFIG_CFG80211 وهناك نحتفل CONFIG_NL80211_TESTMODE و CONFIG_CFG80211_WEXT ويشمل الأخير برنامج تشغيل wifi الخاص بنا للعارض.
CONFIG_MAC80211 - قم بتشغيل مكدس الشبكة.
CONFIG_MAC80211_MESH - تشغيل
CONFIG_MAC80211_LED - حسنًا ، دعنا نختار هذا
CONFIG_NFC - نقوم أيضًا بتضمين ما في الداخل باستثناء CONFIG_NFC_NCI.
CONFIG_PARPORT - تشغيل
CONFIG_LED_TRIGGER_PHY - حدد
CONFIG_REALTEK_PHY - حدد
CONFIG_WLAN - اختيار
CONFIG_RTL8XXXU - حدد وداخل CONFIG_RTL8XXXU_UNTESTED نحن نحتفل.
CONFIG_SERIO_SUN4I_PS2 - تشغيل
CONFIG_SERIAL_DEV_BUS - قم بتشغيله وحدد SERIAL_DEV_CTRL_TTYPORT من الداخل.
CONFIG_USB_WUSB_CBAF - تمكين
CONFIG_USB_WUSB_CBAF_DEBUG - تشغيل
CONFIG_USB_WDM - تشغيل
CONFIG_USB_SERIAL - اختيار
CONFIG_UWB - حدد وداخل التحديد CONFIG_UWB_HWA و CONFIG_UWB_I1480U وبعد ذلك CONFIG_USB_WUSB سيظهر وحدد أيضًا.
نختار CONFIG_STAGING وداخلنا نختار برنامج التشغيل CONFIG_RTL8192U و CONFIG_RTLLIB ، وداخل آخر نختار أيضًا كل شيء. يتم تمييزها بواسطة وحدات من الشعر في وقت لاحق سيكون عليهم ثملهم بشكل منفصل.
CONFIG_R8188EU - اختيار
بشكل عام ، يعد هذا الحد الأدنى الضروري لإعدادات kernel ، إذا كنت ترغب في تمكين شيء آخر فجأة ، فاقرأ بعناية تبعيات هذه المعلمة ، وإلا سيكون هناك خطأ عند التحويل البرمجي. بعد ذلك تحتاج إلى بدء التجميع:
 make O=../olimex-kernel-4.14.57/ -j2 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- uImage  
في نفس الوقت ، قم بجمع الملفات وإلغاء تحديدها:
 make O=../olimex-kernel-4.14.57 -j2 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs 
هذا صحيح فقط ، لأن الملفات المصدر قد تكون في خطأ على الرغم من أنها متشابهة في kernel و uboot. لذلك ، لا أحد حتى الآخر سوف تعمل.
الخطوة التالية هي جمع الملفات التي تم جمعها في القسم الأول من بطاقة sd:
- 
/olimex-kernel-4.14.57/arch/arm/boot/ من هنا نحصل على النواة المجمعة ، ويسمى uImage ويزن 4.7 أمتار فقط.
- 
/olimex-uboot/arch/arm/dts/ من هنا نحصل على الشجرة المترجمة ، ملف sun5i-a13-olinuxino.dtb
- / 
/u-boot-2018.05/ - 
/u-boot-2018.05/ من هنا نحصل على boot.scr script script boot.
بناء أوبونتو
نظرًا لأن جميع الأجزاء الضرورية لتنزيل ملفات الجذر قد تم إعدادها ، يبقى إنشاء أوبونتو ولهذا نأخذ أحدث إصدار 18.04.
أولاً ، قم بإنشاء مجلد في الدليل الجذر:
 sudo mkdir /destrupt 
بالضبط هنا لأنه من أجل تطبيق chroot لاحقًا ، فإنك تحتاج إما إلى حقوق كاملة كما هو الحال في الدليل الجذر ، أو قم بتسجيل تكوين chroot لأي مجلد آخر. باختصار ، من الأسهل إنشاء مجلد في الدليل الجذر ولا يكلف نفسه عناء التهيئة.
للتجميع ، نحتاج إلى الحزم التالية ، يجب توفيرها إن لم يكن:
- Qemu المستخدم ثابت
- debootstarp
- schroot
بعد ذلك ، قم بتشغيل بناء أوبونتو:
sudo qemu-debootstrap # نستخدم qemu لأنه سيتم تثبيت qemu جنبًا إلى جنب مع مجموعة أوبونتو ، والتي سوف تسمح لك بتشغيل chroot على الفور من الإصدار المجمع من أوبونتو
--arch armhf # نوع بنية المعالج
--variant=minbase # التجميع في الإصدار الأدنى
bionic # بناء الإصدار 18.04
/destrup/ # عنوان مكان 
/destrup/http://ports.ubuntu.com/ubuntu-ports # أين يمكنك جمع المصادر
حسنًا ، تم تجميع أوبونتو 18.04 بالفعل ، سننتقل الآن إلى التكوين خطوة بخطوة:
1. قبل البدء ، نتسلق إلى / destrup / etc / apt / وتحرير sources.list ، أضف ما يلي:
 deb http://ports.ubuntu.com/ubuntu-ports bionic main restricted deb http://ports.ubuntu.com/ubuntu-ports bionic universe deb http://ports.ubuntu.com/ubuntu-ports bionic multiverse 
هذه مجرد مصادر للتوزيع للمعالج لدينا.
2. قم بتشغيل تغيير الجذر على توزيعة توزيعة المنشأ حديثًا:
 sudo chroot /destrup 
أولاً ، قم بتعيين كلمة المرور للمستخدم الجذر:
 passwd root 
كلمة المرور هذه مطلوبة لتسجيل الدخول في وقت التمهيد.
3. تثبيت الحزم التالية.
apt update - حزم التحديث
نحن 
iputils-ping, dhcpcd5, iproute2, iw, networkd-dispatcher, wireless-tools, net-tools. الحزم الخاصة بالشبكة: 
iputils-ping, dhcpcd5, iproute2, iw, networkd-dispatcher, wireless-tools, net-tools.حزم نظام الشبكة: 
linux-firmware, wpasupplicant, systemd, hostapd, kmod, udev.حسنًا والباقي بحيث كان من المناسب تعديل كل هذا وتكوينه: nano، mc، usbutils، sudo.
ولن أصف كل شيء لأنه سيمتد إلى مقالتين أخريين ، وسنتناول فقط بعض الحزم اللازمة للإعداد.
تكوين wpa supplicant.
بادئ ذي بدء ، سنحلل بإيجاز ما هو usb wifi.
الشريحة نفسها التي توفر wifi (في هذه الحالة rtl8188) عبارة عن ADC ملفوف ، مع عرضه الخاص للبيانات والوصول إلى USB. أي إذا قمت بتشغيل الأمر lsmod بدون وحدة r8188eu.ko المحملة ، فسنرى أن شخصًا ما قد أخذ منفذ USB. عند تحميل الوحدة النمطية ، سيكون اسم الجهاز مرئيًا بالفعل ، وبعبارة أخرى ، هذه الوحدة ليست سوى واجهة برنامج للتحكم في هذه الدائرة الصغيرة.
المكتبة التالية الأكثر أهمية هي lib80211.ko ، معيار IEEE 802.11 نفسه ، وبكلمات بسيطة ، هو تفسير إشارات الأثير الرقمية في تمثيل بروتوكولات الإنترنت الإلكترونية المحددة. ولكن من أجل إدارة كل هذا ، تحتاج إلى تثبيت linux-firmware ، وسوف يشمل برنامج التشغيل -wext- ، الذي سيقوم بكل هذا. سنقوم بتوصيله في مزيد من الدعاء.
لنبدأ التكوين التافه.
نحن نتسلق إلى أوبونت طازجة مجمعة على هذا العنوان:
 / etc / wpa_supplicant / wpa_supplicant.conf 
وننشئ ملف تكوين إن لم يكن وإذا كان هناك ، فإننا نصحح لهذا النوع:
 ctrl_interface_group=0  
إذا تم تكوين كل شيء بشكل صحيح وتم تحميل الوحدات الموضحة أعلاه ، فسيتم إنشاء ملف جهاز على العنوان المحدد في التكوين (معلمة ctrl_interface).
إعداد Systemd
لقد قمنا بتهيئة الطالب ، ولكن لا يوجد أحد لتشغيله حتى الآن. يمكنك بالطبع تثبيت مدير الشبكة والتمتع بضبط تلقائي ، ولكن أين هو المتشددين ثم أين القمامة. بشكل عام ، الملل الهائل.
لذلك نحن نتسلق إلى العنوان:
 / etc / systemd / system/ 
وهنا نقوم بإنشاء ملف يسمى 
network-wireless.service إذا لم يكن كذلك ، وإذا كان هناك ، نبدأ في تحرير:
 [Unit]  
دعونا نتحدث عن إطلاق المدعي:
ExecStart=/sbin/wpa_supplicant # path للوصول إلى 
ExecStart=/sbin/wpa_supplicant-B # تشغيل في الخلفية
-i wlx007005012449 # واجهة لتشغيل ، نفس ملف الجهاز
-D wext # اسم برنامج التشغيل لصافرة من لينكس البرامج الثابتة
-c /etc/wpa_supplicant/wpa_supplicant.conf # عنوان ملف التكوين 
-c /etc/wpa_supplicant/wpa_supplicant.confحسنًا ، بشكل عام ، يتم تكوين كل ما تحتاجه ، انتقل إلى تثبيت الوحدات النمطية.
تركيب وحدات.
لتثبيت الوحدات النمطية ، دعنا نعود قليلاً ، أي إلى المجلد مع مصدر kernel وقم بتشغيل الأمر لنسخ الوحدات النمطية من kernel إلى المجلد مع ubuntu من هناك:
 make O=../olimex-kernel-4.14.57 -j2 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules_install  
بعد ذلك ، يتم نسخ جميع وحداتنا المجمعة إلى أوبونتو على:
 / lib / modules / 4.14.57 / kernel 
الآن أهم شيء هو تسجيل إطلاق الوحدات النمطية المنسوخة وكل تبعياتها ، لذلك نحن نتسلق إلى العنوان:
 / etc / modules 
وتشغيل فتح ملف الوحدات النمطية للتحرير وإضافة الوحدات النمطية التالية:
 michael_mic r8188eu #   r8192e_pci rtllib rtllib_crypt_ccmp rtllib_crypt_tkip rtllib_crypt_wep r8192u_usb # lib80211 #   IEEE 802.11 
الآن يبقى نسخ جميع أوبونتو المجمعة إلى قسم بطاقة sd المشار إليها في المقالة السابقة كقسم لأوبونتو.
بعد ذلك ، يمكنك إدخال محرك أقراص فلاش USB في اللوحة ، وتطبيق الطاقة والجلوس على uart للوصول إلى إدارتها أو الدخول عبر ssh. يمكنك إضافة أمر إلى systemd لتعيين عنوان IP أو التكوين الآخر بشكل عام ، ثم كل شيء آخر في يديك ...
الجزء الأول من المقالالجزء الثاني من المقال