Raspberry Pi + Fedora (aarch64) = نقطة اتصال Wi-Fi (أو جهاز توجيه التوت في قبعة زرقاء)

في المقالة Raspberry Pi + CentOS = نقطة اتصال Wi-Fi (أو جهاز توجيه التوت في قبعة حمراء) تحدثت عن كيفية تحويل التوت إلى نقطة وصول لاسلكية باستخدام نظام التشغيل CentOS. بعد أن جمعت جهاز التوجيه المنزلي الخاص بي من هذا الرسم ، أرضيت نفسي الإبداعية وتلقيت تهمة الهدوء لعنصر حاسم من بنيتي التحتية المريحة. ومع ذلك ، فإن الشعور بعدم اكتمال القرار والكمال الداخلي لم يعط الراحة: "نتيجة غير كاملة للعمل ليس لها الحق في الوجود." إن الفكرة القائلة بأن "هذا المثال يمكن تحقيقه ويجب تحقيقه" لم يترك لي دقيقة واحدة.

ثم في يوم من الأيام في أحد المنتديات المواضيعية ، صادفت مناقشة حول عمق البت لأنظمة التشغيل الحالية لـ "Malinka" (aarch64 vs armhfp): ما هي أنظمة التشغيل 64 بت التي يمكن أن تتناسب بشكل أساسي وتكسب المال على Raspberry الإصدار 3 ++؟

لم أكن في عجلة من أمري CentOS للهندسة المعمارية ARM المفضلة من "Userland" للتبديل إلى أحدث إصدار من kernel والتحويل إلى 64 بت. ومستودع EPEL ، الذي يربط بين الله يعلم أين كان بدون حل رقمي ، كان كابوسًا في حلمي المضطرب ...

عندما تحدثت بصفتي ملتزمًا بالتوزيعات المستندة إلى RPM ، فوجئت عندما وجدت أن Fedora قد نسي تمامًا في مناقشات نظام التشغيل لـ "التوت" ! وهذا على الرغم من حقيقة أن إصداره
من الإصدار 28 يدعم رسميًا Raspberry Pi 3B + في إصدار 64 بت!

فيدورا آرتش 64

في هذه المقالة ، سأتحدث عن كيفية تثبيت Fedora (aarch64) على Raspberry Pi 3 Model B + في إصدار صغير للغاية . سوف أتطرق بإيجاز إلى ميزات رفع نقطة وصول Wi-Fi التي تم تحديدها نتيجة للتشغيل التجريبي لتكويني السابق على CentOS 7 .

0. ما هو المطلوب


كل نفس المذكورة في المقالة السابقة:

  • Raspberry Pi 3 Model B + ؛
  • microSD> = 4 جيجابايت (لاحقًا يمكنك "نقل" النظام إلى محرك أقراص 2 جيجابايت) ؛
  • محطة عمل Linux مع قارئ بطاقة microSD ؛
  • اتصال شبكة سلكي بين Raspberry ومحطة العمل مع Linux (في هذه الحالة ، لا يلزم وجود شاشة ولوحة مفاتيح إضافية للتكوين) ، والوصول إلى الإنترنت من كلا الجهازين ؛
  • مهارة متقدمة في لينكس (أن تعرف ولا تخاف: افترقنا ، دد ، مكف ).

مثل تجميع LFS التكراري لنظام Linux الخاص بك ، سيتم استخدام صورة توزيع Fedora ، ومن ثم سيتم إنشاء نظام بسيط على أساسه (بدون "تجميع من المصدر").

1. تثبيت التوزيع الأصلي


إحداثيات الصورة الأولية للنظام على الويب:
https: //.../fedora-secondary/releases/.../Spins/aarch64/images/Fedora-Minimal-...xz

بعد كتابته إلى microSD وقبل استخدامه ، من الضروري :

  1. تمديد "الجذر" لنظام الملفات (القسم الثالث ، ext4)

    parted /dev/mmcblk0 resizepart 3 100%
    e2fsck -f /dev/mmcblk0p3; resize2fs /dev/mmcblk0p3; e2fsck -f /dev/mmcblk0p3
    for i in 1 2 3; do mkdir -p /mnt/$i; mount /dev/mmcblk0p$i /mnt/$i; done
    

  2. تعطيل SELinux

    echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config
    

  3. حذف معالج الإعداد الأولي:

    find /mnt/3/etc/systemd/ -iname initial-setup.service -delete
    

  4. السماح بوصول ssh:

    mkdir -p /mnt/3/root/.ssh
    cp -fv ~/.ssh/id_rsa.pub /mnt/3/root/.ssh/authorized_keys
    sed -i 's/#PermitRootLogin.*/PermitRootLogin yes/g' /mnt/3/etc/ssh/sshd_config
    


الآن يمكنك تنزيل "التوت" من microSD والاتصال به عبر الشبكة.

تستغرق البداية الباردة حوالي دقيقة ونصف. نظام TTX بعد التمهيد:

فيدورا آرتش 64

rpm -qa | wc -l
444

2. الحد الأدنى من تجميع النظام


لسوء الحظ ، فإن "الحد الأدنى من التوزيع" من المطورين بعيد عن الأكثر تواضعًا في استهلاك الموارد. يمكن جعل صورة النظام أصغر.

للقيام بذلك ، على "التوت" تحتاج إلى تشغيل البرنامج النصي:

#!/bin/bash

. /etc/os-release
P=$(mktemp --directory $(pwd)/$ID-$VERSION_ID.XXX)

dnf --installroot=$P --releasever=$VERSION_ID --setopt=install_weak_deps=false \
--assumeyes install  \
    bcm283x-firmware \
    dnf              \
    grub2-efi-aa64   \
    kernel           \
    openssh-server   \
    shim-aa64

for f in /boot/efi/EFI/fedora/grub.cfg \
         /boot/efi/EFI/fedora/grubenv  \
         /boot/efi/rpi3-u-boot.bin     \
         /etc/default/grub             \
         /etc/fstab
do
  cp -fv $f $P$f
done

rm  -fv $P/dev/*
rm -rfv $P/var/cache/dnf

echo "--------------------------------------------------------------------------------"
du -hs $P

بعد عمل البرنامج النصي ، سيتم إنشاء دليل فرعي ( $ P ) في الدليل الحالي بمحتويات جذر إصدار الحد الأدنى الجديد لنظام التشغيل. يمكنك إيقاف تشغيل "التوت" وإعادة بطاقة microSD إلى محطة عمل Linux.

3. تثبيت نظام الحد الأدنى


يتم تقليل التثبيت لنسخ ملفات "صورة" الحد الأدنى لنظام التشغيل (التي تم الحصول عليها في الخطوة السابقة) إلى بطاقة microSD معدة خصيصًا في الدلائل المناسبة.

تكفي بطاقة 2 جيجابايت وقسمين عليها:

  1. / boot / efi - EFI + FAT32 ، تمهيد ، 100 ميجابايت ؛
  2. / (الجذر) - EXT4 ، كل المساحة المتبقية.

بعد تحضير microSD ونسخ الملفات إليه ، تحتاج إلى:

  • إصلاح نظام التشغيل التمهيد ؛
  • قم بتشغيل الشبكة ؛
  • تكوين الوصول عبر SSH.

يتكون إصلاح التنزيل من استبدال UUID للأقسام الموجودة في الملفات:

microSD:/boot/efi/EFI/fedora/grub.cfg
microSD:/boot/efi/EFI/fedora/grubenv

و save_entry = المعلمة في الملف الأخير

في الملف:

microSD:/etc/fstab

يمكنك العثور على القيم القديمة ، والقيم الحالية (الحالية) في إخراج الأمر:

blkid | grep mmcblk | sort

بعد الاستبدال ، يجب عليك أيضًا ضبط محتويات fstab إلى microSD بحيث تتوافق نقاط التثبيت مع UUIDs الجديدة للقسم.

في المرة الأولى التي تقوم فيها بتشغيل "التوت" ، يمكن تحقيق أداء الشبكة باستخدام "عكاز" صغير - قم بإنشاء ارتباط (بشكل تخطيطي):

ln -s /usr/lib/systemd/system/systemd-networkd.service \
  microSD:/etc/systemd/system/multi-user.target.wants
وملف:
mkdir -p microSD:/etc/systemd/network
cat > microSD:/etc/systemd/network/dhcp.network << EOF
[Match]
Name=*
[Network]
DHCP=ipv4
EOF

بعد التمهيد الناجح ، قم بترتيب إطلاق systemd-networkd :

systemctl disable systemd-networkd
systemctl enable systemd-networkd

تم تكوين وصول المستخدم الخارق عبر ssh بشكل مشابه للعنصر 1.

بعد القيام بكل شيء بدقة ودون أخطاء ، يمكنك إعادة ترتيب بطاقة microSD في "التوت" والبدء في العمل مع نظام تشغيل 64 بت بأدنى أداء إضافي.

4. نظام جاهز


يمكن تنزيل "صورة" النظام النهائي ، التي تم إنشاؤها وفقًا للتعليمات أعلاه ، من الرابط:
Fedora-Tiny-31-5.5.7-200.aarch64

سيكون هذا أرشيفًا يحتوي على ملفين: برنامج نصي للتثبيت و TGZ مع ملفات نظام التشغيل. يجب تفكيك الأرشيف على محطة عمل Linux ، وإدخال بطاقة microSD (تكفي بطاقة 2 جيجابايت) وتشغيل البرنامج النصي باستخدام المعلمة - اسم الجهاز:

./install /dev/mmcblk0
كن حذرا!

بدون أي تحذيرات ، سيتم تنسيق الجهاز وتثبيت نظام تشغيل عليه.


بعد العمل بدون أخطاء في النص البرمجي ، يمكن إعادة ترتيب البطاقة في "التوت" واستخدامها: لالتقاط dhcp ، كلمة المرور هي "1".

يتم مسح النظام من جميع أنواع المعرفات والمفاتيح ، ولهذا السبب يكون كل تثبيت جديد فريدًا.

أكرر مرة أخرى ، النظام هو الحد الأدنى ! لذلك ، لا تقلق: DNF متاح ، من أجل وظيفته سيكون عليك "إنشاء" /etc/resolv.conf الصحيح .

تستغرق بداية التوت الباردة حوالي 40 ثانية. نظام TTX بعد التمهيد:

فيدورا آرتش 64

rpm -qa | wc -l
191

5. واي فاي


سأتحدث قليلاً عن ميزات تنفيذ نقاط وصول Wi-Fi. للحصول على تفاصيل، يمكنك الرجوع إلى بلدي السابقة المادة .

لم تعد هناك حاجة EPEL - يتم تضمين جميع الحزم في المستودعات الرسمية.

ربما ، من الجدير التخلي عن dnsmasq ، لأن Fedora ، على عكس CentOS ، لديها نظام systemd-networkd حديث إلى حد ما ، حيث توجد خوادم DHCP / DNS عادية مضمنة. لكن حقيقة أن مطوري RHEL8 رفضوا دعم مكدس الشبكة بأي شيء آخر غير NM لا يوحي بالثقة في المستقبل المشرق للمشروع (الأشرار). باختصار ، لم أحاول ذلك.

علاوة على ذلك ، لا يمكن "سرقة" برامج التشغيل الفعلية لمحول Wi-Fi المدمج من توزيع Raspbian ، ولكن تنزيلها مباشرة من github .

هذا ما تبدو عليه ملفات البرامج الثابتة من Broadcom على "التوت" الخاص بي (بشكل تخطيطي):

ls /usr/lib/firmware/brcm | grep 43455

 [612775] brcmfmac43455-sdio.bin
  [14828] brcmfmac43455-sdio.clm_blob
[symlink] brcmfmac43455-sdio.raspberrypi,3-model-b-plus.txt -> brcmfmac43455-sdio.txt
   [2099] brcmfmac43455-sdio.txt

بدونها ، لن تعمل 5GHz / AC.

حول عدد وأسماء الواجهات. الآن أوصي بشدة أن لا يلجأ أي شخص دون الحاجة الخاصة إلى "خدمات" مفاتيح البرامج ( الجسر ) ، والتي تضيف حمولة كبيرة إلى مكدس الشبكة وتمنع التوجيه. إذا لم يتم التخطيط للعديد من المحولات اللاسلكية ، فيجب استخدام الواجهات المادية فقط. لدي اثنين من شبكات Wi-Fi ، لذلك أقوم فقط بدمجهما في جسر برنامج (على الرغم من أنه يمكنك الاستغناء عنه من خلال إلقاء نظرة مختلفة على إعداد hostapd).

وأحب إعادة تسمية الواجهات.

للقيام بذلك ، قم بإنشاء ارتباط رمزي في Fedora:

/etc/systemd/network/99-default.link -> /dev/null

ومن ثم سيكون من الممكن إعطاء أسماء ذات معنى دون العبث بـ udev ، ولكن فقط عن طريق systemd-networkd.

هنا ، على سبيل المثال ، تسمى محولات الشبكة في جهاز التوجيه الخاص بي:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

2: wan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000

3: lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000

4: int: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master lan state UP group default qlen 1000

5: ext: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master lan state UP group default qlen 1000

  • الباحث - في البناء، تحويلة - الخارجية (USB) واي فاي المحولات تجميعها في "جسر" الشبكة المحلية .
  • wan - محول إيثرنت متصل بالإنترنت.

هل لاحظت؟ fq_codel هو حقا شيء جيد. جنبا إلى جنب مع نواة لينكس الجديدة ، فإنهم يعملون معجزات في النطاق اللاسلكي: لن تؤدي "جودة التورنت" الشرسة إلى تدهور مفاجئ في السرعة بين الجيران. حتى العمل "عبر الأثير" IP-TV المنزلي مع قناة محملة لا "ينفصل" ولا "يتلعثم" من الكلمة على الإطلاق! خضع

ملف خدمة hostapd daemon لتغييرات طفيفة .

يبدو الآن مثل هذا (باستخدام المحول المدمج كمثال):

[Unit]
Description=Hostapd IEEE 802.11 AP, IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator
After=network.target
BindsTo=sys-subsystem-net-devices-int.device

[Service]
Type=forking
PIDFile=/run/hostapd-int.pid
#ExecStartPre=/usr/sbin/iw dev int set power_save off
ExecStart=/usr/sbin/hostapd /path/to/hostapd-int.conf -P /run/hostapd-int.pid -B

[Install]
RequiredBy=sys-subsystem-net-devices-int.device

و hostapd-int.conf “السحري” للعمل في 5GHz / AC:

ssid=rpi
wpa_passphrase=FedoRullezZ

# 5180 MHz  [36] (20.0 dBm)
# 5200 MHz  [40] (20.0 dBm)
# 5220 MHz  [44] (20.0 dBm)
# 5240 MHz  [48] (20.0 dBm)
# 5745 MHz [149] (20.0 dBm)
# 5765 MHz [153] (20.0 dBm)
# 5785 MHz [157] (20.0 dBm)
# 5805 MHz [161] (20.0 dBm)
# 5825 MHz [165] (20.0 dBm)

channel=36
#channel=149

# channel+6
# http://blog.fraggod.net/2017/04/27/wifi-hostapd-configuration-for-80211ac-networks.html

vht_oper_centr_freq_seg0_idx=42
#vht_oper_centr_freq_seg0_idx=155

country_code=US

interface=int
bridge=lan

driver=nl80211

auth_algs=1
wpa=2
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP

macaddr_acl=0

hw_mode=a
wmm_enabled=1

# N
ieee80211n=1
require_ht=1
ht_capab=[HT40+][SHORT-GI-40][SHORT-GI-20]

# AC
ieee80211ac=1
ieee80211d=0
ieee80211h=0
vht_oper_chwidth=1
require_vht=1
vht_capab=[SHORT-GI-80]

القليل من "الفوتوشوب" المصنوع من "Ericsson A1018s" الخاص بي:

(اتصال بالإنترنت - 100 ميجابت في الثانية)
Fedora aarch64

وفي الختام ، أسئلة متكررة صغيرة.

6. التعليمات


6.1 لماذا إنشاء جهاز توجيه Wi-Fi على Raspberry؟


يمكن للمرء أن يجيب ببساطة ، قائلاً "من المثير للاهتمام المحاولة وكل ذلك".

ولكن في الحقيقة ، يبدو لي أن الموضوع خطير للغاية. في عصر الإنترنت "الدموي" ، يعد شراء جهاز توجيه في متجر والبقاء رهينة لمصنّعه أمرًا مملاً للغاية. كثير من الناس يفهمون بالفعل أنه من المستحيل الجلوس مع CVE أو مستتر سلكي.

بالطبع ، يمكنك الهجرة إلى البرامج الثابتة WRT من المتحمسين. من المحتمل أن يكون هناك المزيد من الثقة بهم ، ولكن إذا كنت لا تريد الاعتماد عليهم ، فإن ذلك هو منتجك فقط. من الناحية المثالية ، كمبيوتر كامل لإمكانية تنفيذ كل شيء في العالم عليه. من حيث التوجيه ، بالطبع.

لذلك ، فإن اختيار "التوت" هو خطوة اقتصادية بحتة: كمبيوتر حقيقي وفي نفس الوقت - غير مكلف. على الرغم من أنه من الممكن أيضًا - بداخله "المزدوج".

6.2 لكن Raspberry هو "جهاز توجيه فرعي": بطيء ومنفذ إيثرنت واحد!


بصفتي جهاز توجيه Wi-Fi في المنزل ، فإن "Malinka" يناسبني أكثر من. حول السرعة "عبر الهواء" سبق أن قلت أعلاه. وإيثرنت واحد فقط ، حسنًا ، في منتج مشابه من Apple بنفس الطريقة تقريبًا!

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

الجهاز - مثل
Fedora aarch64

6.3 إذا كان هذا جهاز توجيه ، فلا شيء يقال عن "ضبط" TCP / IP ، لأنه مهم!


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

6.4 لماذا فيدورا؟


لأنني أحب! Fedora - "التيار" - نظام من المهوسين ، والذي ، في الواقع ، يهدف هذا المقال. في وقت كتابة هذا التقرير ، ربما يكون نظام التشغيل الوحيد لـ Raspberry في الإصدار 64 بت مدعومًا رسميًا من قبل عدد كبير من المطورين (الذي لا يمكنني الانتظار حتى 5.6 kernel ).

6.5 هل تعمل البلوتوث؟ كيف الفيديو / الصوت / GPIO؟


لا اعرف. تتناول المقالة الحد الأدنى من تثبيت النظام واستخدامه اللاحق كموجه Wi-Fi.

6.6 لماذا تبدأ جميع مقالات CentOS / Fedora / RedHat بتعطيل SELinux؟


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

6.7 لا يمكن استخدام النظام ، لا يمكن تغيير كلمة المرور - لا يوجد كلمة مرور. لا بينغ ، لا شيء!


هناك DNF . أو خيار التثبيت هذا ليس لك - استخدم أدوات التوزيع من المطورين.

6.8 أين الـ SWAP؟ لا استطيع العيش بدونه!


حقيقة؟ اوه حسنا:

fallocate -l 1G /swap
chmod -v 0600 /swap
mkswap -f /swap
swapon -v /swap
grep "/swap" /etc/fstab || echo "/swap swap swap defaults 0 0" >> /etc/fstab

6.9 أود تنزيل صورة جاهزة بنقطة وصول Wi-Fi مهيأة!


يتطلب إعداد المثبت "للجميع" قدرًا معينًا من الوقت والجهد. إذا (فجأة!) يبدو الأمر مثيرًا للاهتمام وضروريًا حقًا لشخص ما - اكتب ، سنخرج بشيء.



على ذلك - سأنهي.

أتمنى للجميع تصفحًا آمنًا وأقصى قدر من التحكم في البنية التحتية!

All Articles