فن الشامانية أو البرامج الثابتة المخصصة ل Olinuxino. نواة وأوبونتو الجزء 3

تجميع النواة


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

للبدء في kernel.org ، نخرج 4.14.57 kernel ؛ في ذلك الوقت كانت آخر نسخة مستقرة.

في المجلد المصدر ، قم بإنشاء برنامج نصي يبدأ التكوين:

#!/bin/sh make O=../olimex-kernel-4.14.57 #      -j2 #     ARCH=arm #      CROSS_COMPILE=arm-linux-gnueabihf- #   xconfig #   

نحصل على شيء مثل هذا:



في قائمة الملفات على /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 #   modules #   LOADADDR=0x40008000 #        

في نفس الوقت ، قم بجمع الملفات وإلغاء تحديدها:

 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=/var/run/wpa_supplicant #       #       usb  #      ap_scan=1 #wpa_supplicant   ,  - network={ ssid="SSID_" psk=" " key_mgmt=WPA-PSK #   proto=WPA2 pairwise=CCMP } 

إذا تم تكوين كل شيء بشكل صحيح وتم تحميل الوحدات الموضحة أعلاه ، فسيتم إنشاء ملف جهاز على العنوان المحدد في التكوين (معلمة ctrl_interface).

إعداد Systemd


لقد قمنا بتهيئة الطالب ، ولكن لا يوجد أحد لتشغيله حتى الآن. يمكنك بالطبع تثبيت مدير الشبكة والتمتع بضبط تلقائي ، ولكن أين هو المتشددين ثم أين القمامة. بشكل عام ، الملل الهائل.

لذلك نحن نتسلق إلى العنوان:

 / etc / systemd / system/ 

وهنا نقوم بإنشاء ملف يسمى network-wireless.service إذا لم يكن كذلك ، وإذا كان هناك ، نبدأ في تحرير:

 [Unit] #       Description=Wireless network connectivity Wants=network.target After=sys-subsystem-net-devices-wlx007005012449.device Before=network.target BindsTo=sys-subsystem-net-devices-wlx007005012449.device [Service] #    Type=oneshot RemainAfterExit=yes ExecStart=/sbin/ifconfig wlx007005012449 up #   ExecStart=/sbin/wpa_supplicant -B -i wlx007005012449 -D wext -c /etc/wpa_supplicant/wpa_supplicant.conf #   ExecStart=/sbin/dhcpcd wlx007005012449 #  dhcp   [Install] WantedBy=multi-user.target 

دعونا نتحدث عن إطلاق المدعي:

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 #     INSTALL_MOD_PATH=/destrup #    

بعد ذلك ، يتم نسخ جميع وحداتنا المجمعة إلى أوبونتو على:

 / 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 أو التكوين الآخر بشكل عام ، ثم كل شيء آخر في يديك ...

الجزء الأول من المقال
الجزء الثاني من المقال

Source: https://habr.com/ru/post/ar435586/


All Articles