Raspberry Pi + Fedora (aarch64) = نقطة اتصال Wi-Fi (أو Raspberry Blue Hat Router)

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

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

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

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

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

0. ما سوف تحتاجه

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

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

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

1. تركيب التوزيعة الأصلية

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

بعد تسجيله على بطاقة microSD وقبل استخدامه، عليك القيام بما يلي:

  1. قم بتوسيع "الجذر" لنظام الملفات (القسم الثالث، ext3)
    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. تعطيل سيلينوكس
    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 للنظام بعد التحميل:

Raspberry Pi + Fedora (aarch64) = نقطة اتصال Wi-Fi (أو Raspberry Blue Hat Router)

rpm -qa | wc -l
444

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

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

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

#!/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) مع محتويات جذر إصدار نظام التشغيل الأدنى الجديد. يمكنك إيقاف تشغيل Raspberry وإعادة بطاقة microSD إلى محطة عمل Linux.

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

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

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

  1. / التمهيد / 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 للقسم الجديد.

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

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- شبكة د:

systemctl disable systemd-networkd
systemctl enable systemd-networkd

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

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

4. نظام جاهز

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

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

./install /dev/mmcblk0

كن حذرا!

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

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

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

وأكرر مرة أخرى، النظام - الحد الأدنى! لذلك، لا تنزعج: DNF متاح، ولكي يعمل، سيتعين عليك "اختراع" الحل الصحيح / الخ / resolv.conf.

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

Raspberry Pi + Fedora (aarch64) = نقطة اتصال Wi-Fi (أو Raspberry Blue Hat Router)

rpm -qa | wc -l
191

5. واي فاي

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

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

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

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

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

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

بدونهم لن تحصل على 5 جيجا هرتز/تيار متردد.

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

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

للقيام بذلك في فيدورا تحتاج إلى إنشاء رابط رمزي:

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

ومن ثم سيكون من الممكن إعطاء أسماء ذات معنى دون البحث أودف، ولكن فقط باستخدام 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

  • مادبا - مدمج، تحويلة - محولات Wi-Fi خارجية (USB) مجمعة في "جسر" الشبكة المحلية;
  • سقيم - محول إيثرنت الذي يتصل به الإنترنت.

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

لقد خضع ملف الخدمة الخفي لتغييرات طفيفة hostapd.

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

[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 "السحري" للعمل في 5 جيجا هرتز/تيار متردد:

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 ميجابت/ثانية)Raspberry Pi + Fedora (aarch64) = نقطة اتصال Wi-Fi (أو Raspberry Blue Hat Router)
وأخيرا، الأسئلة الشائعة الصغيرة.

6. التعليمات

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

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

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

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

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

6.2 لكن Raspberry هو "جهاز توجيه منخفض": بطيء وبه منفذ Ethernet واحد!

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

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

الجهاز - شيء من هذا القبيلRaspberry Pi + Fedora (aarch64) = نقطة اتصال Wi-Fi (أو Raspberry Blue Hat Router)

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

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

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

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

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

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

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

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

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

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

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

هل هذا صحيح؟ حسنا إذا:

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 تم تكوينها!

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

سأنتهي من هذا.

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

المصدر: www.habr.com

إضافة تعليق