Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (یا روتر رزبری با کلاه آبی)

مقاله Raspberry Pi + CentOS = Wi-Fi Hotspot (یا روتر رزبری با کلاه قرمزی) من در مورد راهی برای تبدیل Raspberry به یک نقطه دسترسی بی سیم با استفاده از سیستم عامل CentOS صحبت کردم. با مونتاژ روتر خانگی خود بر اساس این نقاشی، من خلاقیت خود را ارضا کردم و برای یک عنصر حیاتی از زیرساخت دنج خود آرامش خاطر بیشتری دریافت کردم. با این حال، احساس ناقص بودن راه حل و کمال گرایی درونی مرا آزار می دهد: «نتیجه ناقص کار حق وجود ندارد». این فکر که "به ایده آل می توان و باید دست یافت" من را برای یک دقیقه رها نکرد.

و سپس یک روز، در یکی از انجمن های موضوعی، به بحثی در مورد عمق بیت سیستم عامل های موجود برای Raspberry (aarch64 در مقابل armhfp) برخوردم: که در اصل سیستم عامل 64 بیتی می تواند بر روی Raspberry نسخه 3 مناسب باشد و کار کند. ++؟

CentOS محبوب من برای معماری ARM از "Userland" عجله ای برای تغییر به آخرین نسخه هسته و تبدیل شدن به 64 بیتی نداشت. و مخزن EPEL که از کجا بدون امضای دیجیتال وصل شده بود، در خواب بی قرار من کابوس بود...

به عنوان یکی از پیروان توزیع‌های مبتنی بر RPM، با تعجب متوجه شدم که سیستم عامل Raspberry در بحث‌ها کاملاً فراموش شده است. کلاه نمدی مردانه! و این با وجود این واقعیت است که انتشار آن
از نسخه 28 رسماً از Raspberry Pi 3B+ در نسخه 64 بیتی پشتیبانی می کند!

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (یا روتر رزبری با کلاه آبی)
در این مقاله در مورد روش نصب صحبت خواهم کرد فدورا (aarch64) بر Raspberry Pi 3 مدل B + в حداقل عملکرد اضافی. من به طور خلاصه در مورد ویژگی های افزایش یک نقطه دسترسی Wi-Fi که در نتیجه عملیات آزمایشی پیکربندی قبلی من شناسایی شده است صحبت خواهم کرد. CentOS 7.

0. آنچه شما نیاز دارید

همه چیز همان است که در مقاله قبلی ذکر شده است:

  • Raspberry Pi 3 Model B+;
  • microSD >= 4 گیگابایت (بعداً می توانید سیستم را به درایو 2 گیگابایتی "انتقال" کنید).
  • ایستگاه کاری با لینوکس و کارت خوان microSD.
  • اتصال شبکه سیمی بین Raspberry و یک ایستگاه کاری لینوکس (در این مورد، هیچ مانیتور و صفحه کلید اضافی برای راه اندازی نیاز نخواهد بود)، دسترسی به اینترنت از هر دو دستگاه.
  • مهارت پیشرفته در لینوکس (دانستن و نترسیدن: جدا, dd и mkfs).

مشابه تکرار شونده LFS-با ساخت لینوکس خود، از تصویر توزیع فدورا استفاده می شود و سپس بر اساس آن، یک سیستم حداقلی ایجاد می شود (بدون "کامپایل از منبع").

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. SELinux را غیرفعال کنید
    echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config
    

  3. Initial Setup Wizard را حذف کنید:
    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 Hotspot (یا روتر رزبری با کلاه آبی)

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 را به ایستگاه کاری لینوکس برگردانید.

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 به طوری که نقاط اتصال با UUID های پارتیشن جدید مطابقت داشته باشد.

عملکرد شبکه هنگامی که برای اولین بار 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-networked:

systemctl disable systemd-networkd
systemctl enable systemd-networkd

دسترسی ابرکاربر از طریق ssh مشابه مرحله 1 پیکربندی شده است.

پس از انجام همه کارها با دقت و بدون خطا، می توانید microSD را به "رزبری" منتقل کنید و با یک سیستم عامل 64 بیتی در یک نسخه حداقلی اضافی شروع به کار کنید.

4. سیستم آماده

"تصویر" سیستم تمام شده، ایجاد شده طبق دستورالعمل های بالا، را می توان از لینک دانلود کرد:
Fedora-Tiny-31-5.5.7-200.aarch64

این یک آرشیو حاوی دو فایل خواهد بود: اسکریپت نصب و TGZ با فایل های سیستم عامل. آرشیو باید در یک ایستگاه کاری لینوکس باز شود، یک microSD وارد کنید (یک کارت 2 گیگابایتی کافی است) و اسکریپت را با یک پارامتر - نام دستگاه اجرا کنید:

./install /dev/mmcblk0

مراقب باشید!

بدون هیچ هشداری، دستگاه فرمت شده و سیستم عامل روی آن نصب می شود.

پس از اجرای بدون خطا اسکریپت، کارت را می توان دوباره به "تمشک" مرتب کرد و از آن استفاده کرد: گرفتن از طریق dhcp، رمز عبور - "1".

سیستم از تمام شناسه ها و کلیدها پاک می شود، به همین دلیل است که هر نصب جدید منحصر به فرد است.

یک بار دیگر تکرار می کنم، سیستم - حداقل! بنابراین، نگران نباشید: DNF در دسترس است، برای کارکرد آن باید درست را "اختراع" کنید. /etc/resolv.conf.

شروع سرد Raspberry حدود 40 ثانیه طول می کشد. TTX سیستم پس از بارگذاری:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (یا روتر رزبری با کلاه آبی)

rpm -qa | wc -l
191

5. وای فای

من کمی در مورد ویژگی های پیاده سازی نقطه دسترسی Wi-Fi صحبت خواهم کرد. برای جزئیات، می توانید به قبلی من مراجعه کنید مقاله.

EPEL دیگر مورد نیاز نیست - همه بسته ها در مخازن رسمی موجود هستند.

احتمالاً ارزش تسلیم شدن را دارد dnsmasqاز آنجایی که فدورا، برخلاف CentOS، دارای یک سیستم شبکه نسبتاً جدید است که دارای سرورهای 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

بدون آنها شما 5GHz/AC دریافت نخواهید کرد.

با توجه به تعداد و نام رابط ها. اکنون من قویاً به همه توصیه می کنم که به "خدمات" سوئیچ های نرم افزاری متوسل نشوند مگر اینکه کاملاً ضروری باشد (پل) که بار قابل توجهی را به پشته شبکه وارد می کند و مسیریابی را کاهش می دهد. اگر قصد ندارید چندین آداپتور بی سیم داشته باشید، باید فقط از رابط های فیزیکی استفاده کنید. من دو وای فای دارم، بنابراین فقط آنها را در یک پل نرم افزاری ترکیب می کنم (اگرچه با نگاه متفاوت به تنظیمات 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

  • INT - توکار، EXT - آداپتورهای Wi-Fi خارجی (USB) مونتاژ شده در یک "پل" شبکه;
  • رنگ پریده - آداپتور اترنت که اینترنت به آن متصل است.

متوجه شدید؟ fq_codel - یک چیز واقعا جالب. همراه با یک هسته لینوکس جدید، آنها معجزات واقعی را در محدوده بی سیم انجام می دهند: یک "دانلود تورنت" شدید منجر به کاهش ناگهانی سرعت در بین همسایگان نخواهد شد. حتی یک تلویزیون IP خانگی که "از طریق هوا" با یک کانال بارگذاری شده کار می کند "از هم نمی پاشد" و به هیچ وجه "لکنت" نمی کند!

فایل سرویس Daemon دستخوش تغییرات جزئی شده است 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 "جادویی" برای کار در 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 مگابیت بر ثانیه)Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (یا روتر رزبری با کلاه آبی)
و در نهایت، یک پرسش متداول کوچک.

6 سوالات متداول

6.1 چرا یک روتر Wi-Fi در Raspberry بسازید؟

یکی می تواند به سادگی پاسخ دهد، مانند "آزمایش و همه اینها جالب است."

اما در واقع به نظر من موضوع کاملاً جدی است. در عصر اینترنت "خونین"، خرید یک روتر در فروشگاه و گروگان ماندن سازنده آن چشم انداز بسیار بدی است. بسیاری از مردم از قبل می‌دانند که نشستن با CVE یا درب پشتی داخلی امکان‌پذیر نیست.

البته، می توانید از طرف علاقه مندان به سیستم عامل WRT مهاجرت کنید. احتمالاً اعتماد بیشتری به آنها وجود دارد، اما اگر نمی خواهید به آنها وابسته باشید، فقط از محصول خود استفاده کنید. در حالت ایده آل، یک کامپیوتر تمام عیار به طوری که همه چیز در جهان می تواند بر روی آن پیاده سازی شود. البته از نظر مسیریابی.

بنابراین، انتخاب یک "تمشک" یک حرکت صرفا اقتصادی است: یک کامپیوتر واقعی و در عین حال ارزان. اگرچه، شاید نیز - با "دوگانه" آنها در داخل.

6.2 اما Raspberry یک "روتر کم" است: کند و با یک پورت اترنت!

به عنوان یک روتر Wi-Fi خانگی، Raspberry برای من رضایت بخش است. قبلاً در مورد سرعت هوا در بالا صحبت کردم. و فقط یک اترنت وجود دارد، خوب، در یک محصول مشابه از اپل تقریباً یکسان است!

اما جدی، البته من بیشتر می خواهم. و با وجود این واقعیت که در خانه من همه دستگاه ها به صورت بی سیم متصل هستند، گاهی اوقات هنوز یک اتصال مسی لازم است. برای چنین مواردی، من یک "مرکز تلفن همراه" در انبار دارم:

دستگاه - چیزی شبیه به اینRaspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (یا روتر رزبری با کلاه آبی)

6.3 اگر این یک روتر است، در مورد "تنظیم" TCP/IP چیزی گفته نشده است، زیرا این مهم است!

علاوه بر تنظیم پشته شبکه (tcp_fastopen، YeAH، و غیره)، این مقاله و مقاله قبلی سایر نکات ظریف، به ویژه، فرآیند آماده سازی microSD را برای استفاده بهینه پوشش نمی دهند (اگرچه نصب کننده سعی می کند کارت حافظه را در قالب فرمت کند. یک راه دشوار). روند بهبود بی پایان است، فقط باید به موقع متوقف شوید.

6.4 چرا فدورا؟

برای اینکه دوست دارم! فدورا یک سیستم "جریان اصلی" برای گیک ها است که این مقاله در واقع برای آنها در نظر گرفته شده است. در زمان نگارش، شاید تنها سیستم عاملی که برای Raspberry در نسخه 64 بیتی به طور رسمی توسط کارکنان قابل توجهی از توسعه دهندگان پشتیبانی می شود (که من نمی توانم منتظر بمانم). هسته 5.6).

6.5 آیا بلوتوث کار می کند؟ ویدیو/صدا/GPIO چطور است؟

نمی دانم. مقاله در مورد نصب حداقل سیستم و استفاده بعدی از آن به عنوان روتر Wi-Fi است.

6.6 چرا همه مقاله‌های مربوط به CentOS/Fedora/RedHat با غیرفعال کردن SELinux شروع می‌شوند؟

از آنجایی که سیستم حداقل است، حتی فایروال یا ابزارهای کمکی برای تنظیم آن ندارد. هرکسی که به آن نیاز دارد می‌تواند هر آنچه را که نیاز دارد را نیز نصب کند.

6.7 سیستم قابل استفاده نیست، رمز عبور قابل تغییر نیست - بدون passwd. نه پینگ نه هیچی!

وجود دارد 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 پیکربندی شده دانلود کنم!

تهیه یک نصب کننده "برای همه" به زمان و تلاش نیاز دارد. اگر (ناگهان!) کسی واقعاً این را جالب و ضروری می‌داند، برای ما بنویسید تا چیزی به ذهنمان برسد.

من با این تمام می کنم.

برای همه آرزوی گشت و گذار ایمن و حداکثر کنترل بر زیرساخت دارم!

منبع: www.habr.com

اضافه کردن نظر