ในบทความ
แล้ววันหนึ่งในฟอรัมเฉพาะเรื่องแห่งหนึ่ง ฉันได้พบกับการอภิปรายเกี่ยวกับความลึกของบิตของระบบปฏิบัติการที่มีอยู่สำหรับ Raspberry (aarch64 เทียบกับ armhfp): โดยหลักการแล้วระบบปฏิบัติการ 64 บิตสามารถพอดีและทำงานกับ Raspberry เวอร์ชัน 3 ได้ ++?
CentOS อันเป็นที่รักของฉันสำหรับสถาปัตยกรรม ARM จาก "Userland" ไม่รีบร้อนที่จะเปลี่ยนไปใช้เคอร์เนลเวอร์ชันล่าสุดและเปลี่ยนเป็น 64 บิต และพื้นที่เก็บข้อมูล EPEL ซึ่งเชื่อมต่อจากพระเจ้ารู้ดีว่าที่ใดที่ไม่มีลายเซ็นดิจิทัล ถือเป็นฝันร้ายในการนอนหลับกระสับกระส่ายของฉัน...
เมื่อพูดถึงการแจกแจงตาม RPM ฉันรู้สึกประหลาดใจที่พบว่าระบบปฏิบัติการสำหรับ Raspberry ถูกลืมไปอย่างสิ้นเชิงในการสนทนา Fedora! และถึงแม้จะมีการเปิดตัวก็ตาม
ในบทความนี้ฉันจะพูดถึงวิธีการติดตั้ง เฟโดรา (aarch64) บน ราสเบอร์รี่ Pi 3 รุ่น B + в ประสิทธิภาพขั้นต่ำเป็นพิเศษ. ฉันจะกล่าวถึงคุณสมบัติของการเพิ่มจุดเชื่อมต่อ Wi-Fi สั้น ๆ ซึ่งระบุว่าเป็นผลมาจากการดำเนินการทดลองของการกำหนดค่าก่อนหน้าของฉัน
0. สิ่งที่คุณต้องการ
ทุกอย่างเหมือนกับที่ระบุไว้ในบทความก่อนหน้า:
- ราสเบอร์รี่ Pi 3 รุ่น B+;
- microSD >= 4GB (หลังจากนั้นคุณสามารถ "ถ่ายโอน" ระบบไปยังไดรฟ์ 2GB ได้)
- เวิร์กสเตชันพร้อม Linux และเครื่องอ่านการ์ด microSD
- การเชื่อมต่อเครือข่ายแบบใช้สายระหว่าง Raspberry และเวิร์กสเตชัน Linux (ในกรณีนี้ ไม่จำเป็นต้องมีจอภาพและแป้นพิมพ์เพิ่มเติมในการตั้งค่า) การเข้าถึงอินเทอร์เน็ตจากอุปกรณ์ทั้งสอง
- ทักษะขั้นสูงใน Linux (รู้และไม่ต้องกลัว:
แยก ,dd иเอ็มเคเอฟเอส ).
คล้ายกับการวนซ้ำ
1. การติดตั้งระบบจำหน่ายเดิม
พิกัดอิมเมจดิบของระบบบนอินเทอร์เน็ต:
หลังจากบันทึกลงใน microSD และก่อนใช้งาน คุณต้อง:
- ขยาย "รูท" ของระบบไฟล์ (พาร์ติชันที่ 3, 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
- ปิดการใช้งาน SELinux
echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config
- ลบตัวช่วยสร้างการตั้งค่าเริ่มต้น:
find /mnt/3/etc/systemd/ -iname initial-setup.service -delete
- อนุญาตการเข้าถึงผ่าน 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 ของระบบหลังจากโหลด:
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. การติดตั้งระบบขั้นต่ำ
การติดตั้งเกี่ยวข้องกับการคัดลอกไฟล์ "รูปภาพ" OS ขั้นต่ำ (ที่ได้รับในขั้นตอนก่อนหน้า) ไปยัง microSD ที่เตรียมไว้เป็นพิเศษลงในไดเร็กทอรีที่เหมาะสม
การ์ด 2GB และพาร์ติชั่นสองอันก็เพียงพอแล้ว:
- / boot / EFI - EFI+FAT32, บูต, 100MB;
- / (รูท) - EXT4 พื้นที่ที่เหลืออยู่ทั้งหมด
หลังจากเตรียม microSD และคัดลอกไฟล์แล้วคุณจะต้อง:
- แก้ไขการบูตระบบปฏิบัติการ
- เปิดเครือข่าย
- กำหนดค่าการเข้าถึงผ่าน ssh
การแก้ไขการบูตคือการแทนที่ UUID ของส่วนต่างๆในไฟล์:
microSD:/boot/efi/EFI/fedora/grub.cfg
microSD:/boot/efi/EFI/fedora/grubenv
และพารามิเตอร์ ที่บันทึกไว้_รายการ= ในไฟล์สุดท้าย
ในไฟล์:
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
หลังจากดาวน์โหลดสำเร็จ ให้จัดระเบียบการเปิดตัว
systemctl disable systemd-networkd
systemctl enable systemd-networkd
การเข้าถึง Superuser ผ่าน ssh ได้รับการกำหนดค่าคล้ายกับขั้นตอนที่ 1
เมื่อทำทุกอย่างอย่างรอบคอบและไม่มีข้อผิดพลาดคุณสามารถย้าย microSD ไปที่ "ราสเบอร์รี่" และเริ่มทำงานกับระบบปฏิบัติการ 64 บิตในเวอร์ชันขั้นต่ำพิเศษ
4.ระบบพร้อม
สามารถดาวน์โหลด “อิมเมจ” ของระบบที่เสร็จแล้วซึ่งสร้างขึ้นตามคำแนะนำด้านบนได้จากลิงค์:
นี่จะเป็นไฟล์เก็บถาวรที่มีสองไฟล์: สคริปต์การติดตั้งและ TGZ พร้อมไฟล์ OS ไฟล์เก็บถาวรจะต้องแตกไฟล์บนเวิร์กสเตชัน Linux ใส่ microSD (การ์ด 2GB ก็เพียงพอแล้ว) และเรียกใช้สคริปต์ด้วยพารามิเตอร์ - ชื่ออุปกรณ์:
./install /dev/mmcblk0
ระวัง!
อุปกรณ์จะถูกฟอร์แมตและติดตั้งระบบปฏิบัติการโดยไม่มีคำเตือนใดๆ
หลังจากเรียกใช้สคริปต์โดยไม่มีข้อผิดพลาดการ์ดสามารถจัดเรียงใหม่เป็น "ราสเบอร์รี่" และใช้: จับผ่าน dhcp รหัสผ่าน - "1"
ระบบถูกล้าง ID และคีย์ทั้งหมด ซึ่งเป็นสาเหตุที่ทำให้การติดตั้งใหม่แต่ละครั้งไม่ซ้ำกัน
ฉันขอย้ำอีกครั้งว่าระบบ- น้อยที่สุด! ดังนั้นอย่าตกใจ: มี DNF ให้เลือกเพื่อให้ใช้งานได้คุณจะต้อง "ประดิษฐ์" สิ่งที่ถูกต้อง
การสตาร์ท Raspberry แบบเย็นใช้เวลาประมาณ 40 วินาที TTX ของระบบหลังจากโหลด:
rpm -qa | wc -l
191
5. WiFi
ฉันจะกล่าวถึงคุณสมบัติของการใช้งานจุดเชื่อมต่อ Wi-Fi เล็กน้อย สำหรับข้อมูลเฉพาะ คุณสามารถดูข้อมูลก่อนหน้าของฉันได้
ไม่จำเป็นต้องใช้ EPEL อีกต่อไป - แพ็คเกจทั้งหมดอยู่ในที่เก็บข้อมูลอย่างเป็นทางการ
มันคงจะคุ้มค่าที่จะยอมแพ้
นอกจากนี้ไดรเวอร์ปัจจุบันสำหรับอแด็ปเตอร์ 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
เกี่ยวกับหมายเลขและชื่อของอินเทอร์เฟซ ตอนนี้ฉันขอแนะนำอย่างยิ่งให้ทุกคนอย่าหันไปใช้ "บริการ" ของสวิตช์ซอฟต์แวร์เว้นแต่จะจำเป็นจริงๆ (
และฉันชอบเปลี่ยนชื่ออินเทอร์เฟซ
ในการดำเนินการนี้ใน Fedora คุณต้องสร้างลิงก์สัญลักษณ์:
/etc/systemd/network/99-default.link -> /dev/null
จากนั้นจะสามารถตั้งชื่อที่มีความหมายได้โดยไม่ต้องพูดเกินจริง
ตัวอย่างเช่น นี่คือสิ่งที่เรียกว่าอะแดปเตอร์เครือข่ายในเราเตอร์ของฉัน:
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 - ในตัว ต่อ — อะแดปเตอร์ Wi-Fi ภายนอก (USB) ที่ประกอบเป็น “บริดจ์” แลน;
- ขาวซีด — อะแดปเตอร์อีเทอร์เน็ตที่เชื่อมต่ออินเทอร์เน็ต
คุณสังเกตเห็นไหม?
ไฟล์บริการ 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
และ “magic” 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]
Photoshop เล็กๆ น้อยๆ ที่สร้างจาก Ericsson A1018s ของฉัน:
(การเชื่อมต่ออินเทอร์เน็ต - 100Mbit/วินาที)
และสุดท้ายคำถามที่พบบ่อยเล็กๆ น้อยๆ
6 คำถามที่พบบ่อย
6.1 เหตุใดจึงสร้างเราเตอร์ Wi-Fi บน Raspberry
ใครๆ ก็ตอบได้ง่ายๆ เช่น “มันน่าสนใจที่จะลองและทั้งหมดนั้น”
แต่ที่จริงแล้วสำหรับฉันแล้วดูเหมือนว่าหัวข้อนี้ค่อนข้างจริงจัง ในยุคของอินเทอร์เน็ตที่ "นองเลือด" การซื้อเราเตอร์ในร้านค้าและยังคงเป็นตัวประกันให้กับผู้ผลิตถือเป็นโอกาสที่น่าหดหู่มาก หลายๆ คนเข้าใจอยู่แล้วว่าการนั่งโดยมี CVE หรือประตูหลังในตัวนั้นเป็นไปไม่ได้
แน่นอนคุณสามารถโยกย้ายไปยังเฟิร์มแวร์ WRT จากผู้ที่ชื่นชอบได้ อาจมีความไว้วางใจในตัวพวกเขามากกว่า แต่ถ้าคุณไม่ต้องการพึ่งพาพวกเขา ก็แค่ใช้ผลิตภัณฑ์ของคุณเอง ตามหลักการแล้วคอมพิวเตอร์ที่มีคุณสมบัติครบถ้วนเพื่อให้สามารถนำไปใช้กับทุกสิ่งในโลกได้ ในแง่ของเส้นทางแน่นอน
ดังนั้นการเลือก "ราสเบอร์รี่" จึงเป็นการเคลื่อนไหวทางเศรษฐกิจอย่างแท้จริง: คอมพิวเตอร์จริงและในขณะเดียวกันก็มีราคาไม่แพง แม้ว่าบางทีอาจมี "คู่ผสม" อยู่ข้างในด้วย
6.2 แต่ Raspberry นั้นเป็น "เราเตอร์ต่ำ": ช้าและมีพอร์ต Ethernet หนึ่งพอร์ต!
ในฐานะเราเตอร์ Wi-Fi ในบ้าน Raspberry จึงเป็นที่น่าพอใจสำหรับฉันมากกว่า ฉันได้พูดคุยเกี่ยวกับความเร็วลมข้างต้นแล้ว และมีอีเทอร์เน็ตเพียงตัวเดียวในผลิตภัณฑ์ที่คล้ายกันจาก Apple ก็เกือบจะเหมือนกัน!
แต่จริงๆ แล้วแน่นอนว่าฉันต้องการมากกว่านี้ และแม้ว่าอุปกรณ์ทั้งหมดในบ้านของฉันจะเชื่อมต่อแบบไร้สาย แต่บางครั้งยังจำเป็นต้องมีการเชื่อมต่อด้วยทองแดง ในกรณีเช่นนี้ ฉันมี "ฮับมือถือ" อยู่ในสต็อก:
อุปกรณ์ - อะไรทำนองนี้
6.3 หากนี่คือเราเตอร์ จะไม่มีการพูดถึง "การปรับแต่ง" TCP/IP เพราะนี่เป็นสิ่งสำคัญ!
นอกเหนือจากการตั้งค่าสแต็กเครือข่าย (tcp_fastopen, YeAH ฯลฯ ) บทความนี้และบทความก่อนหน้านี้ไม่ครอบคลุมถึงความแตกต่างอื่น ๆ โดยเฉพาะกระบวนการเตรียม microSD เพื่อการใช้งานที่เหมาะสมที่สุด (แม้ว่าตัวติดตั้งจะพยายามฟอร์แมตการ์ดหน่วยความจำใน วิธีที่ยุ่งยาก) กระบวนการปรับปรุงไม่มีที่สิ้นสุด คุณเพียงแค่ต้องหยุดให้ทันเวลา
6.4 ทำไมต้อง Fedora?
เพราะฉันชอบ! Fedora เป็นระบบ "กระแสหลัก" สำหรับผู้ที่ชื่นชอบบทความนี้โดยเฉพาะ ในขณะที่เขียนอาจเป็นระบบปฏิบัติการเดียวสำหรับ Raspberry ในเวอร์ชัน 64 บิตที่ได้รับการสนับสนุนอย่างเป็นทางการจากทีมงานนักพัฒนาที่สำคัญ (ซึ่งฉันรอไม่ไหวแล้ว
6.5 บลูทูธใช้งานได้หรือไม่? วิดีโอ/เสียง/GPIO เป็นอย่างไรบ้าง?
ไม่รู้. บทความนี้เกี่ยวกับการติดตั้งระบบขั้นต่ำและการใช้เป็นเราเตอร์ Wi-Fi ในภายหลัง
6.6 เหตุใดบทความทั้งหมดเกี่ยวกับ CentOS/Fedora/RedHat เริ่มต้นด้วยการปิดการใช้งาน SELinux?
เนื่องจากระบบมีขนาดเล็กมาก จึงไม่มีไฟร์วอลล์หรือยูทิลิตี้สำหรับการตั้งค่าด้วยซ้ำ ใครก็ตามที่ต้องการมันสามารถติดตั้งเพิ่มเติมทุกสิ่งที่ต้องการได้
6.7 ไม่สามารถใช้ระบบได้ ไม่สามารถเปลี่ยนรหัสผ่านได้ - ไม่มีรหัสผ่าน ไม่มีปิง ไม่มีอะไรเลย!
มี
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 ที่กำหนดค่าทันที!
การเตรียมโปรแกรมติดตั้ง “สำหรับทุกคน” จะต้องใช้เวลาและความพยายามพอสมควร หาก (ทันใดนั้น) มีคนพบว่าสิ่งนี้น่าสนใจและจำเป็นจริงๆ เขียนถึงเรา แล้วเราจะคิดอะไรบางอย่างขึ้นมา
ฉันจะจบเรื่องนี้
ฉันขอให้ทุกคนท่องเว็บอย่างปลอดภัยและควบคุมโครงสร้างพื้นฐานได้สูงสุด!
ที่มา: will.com