تجميع النواة
ساوضح لماذا الصور الحالية ليست مناسبة. مشكلتهم الرئيسية هي أنها مبنية على الإصدار 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 أو التكوين الآخر بشكل عام ، ثم كل شيء آخر في يديك ...
الجزء الأول من المقالالجزء الثاني من المقال