นี่คือ WIP ที่จะ ข้าม Nixos เพื่อทำงานบนเป้าหมายแขน
โคลนรีลีสล่าสุด:
git clone -b 0.7.0 --recursive --shallow-submodules https://github.com/illegalprime/nixos-on-arm.git
cd nixos-on-arm
ที่เก็บนี้ได้รับการจัดระเบียบใหม่เพื่อให้สามารถสร้างบอร์ดที่แตกต่างกันได้หาก/เมื่อมีการเขียนที่แตกต่างกัน เพื่อสร้างการใช้งาน:
nix build -f .
-I nixpkgs=nixpkgs
-I machine=machines/BOARD_TYPE
-I image=images/NIX_CONFIGURATION
ที่เก็บนี้ใช้เทรวิสเพื่อเก็บแคชแคชสดซึ่งคุณสามารถใช้เพื่อเร่งความเร็วในการสร้างของคุณ:
# install cachix if you haven't already
nix-env -iA cachix -f https://cachix.org/api/v1/install
# use this cache when building
cachix use cross-armedมีหลายสิ่งที่ส่งผลกระทบต่อขนาดภาพและเมื่อเร็ว ๆ นี้มีการทำงานจำนวนมากเพื่อลดลง:
ยังต้องทำหลายสิ่งหลายอย่างเพื่อลบเศษ x86 จากการเข้าไปในภาพโดยไม่ตั้งใจ (เช่นการอัปเดต patchshebangs nixos/nixpkgs#33956) และสารปนเปื้อนสามารถตรวจสอบ ./check-contamination.sh result
ดูภาพรวมรูปภาพสำหรับการแยกขนาดภาพ
nix build -f .
-I nixpkgs=nixpkgs
-I machine=machines/beaglebone
-I image=images/ap-puns
ปัจจุบัน images/ap-puns ให้บริการที่จะส่ง AP Beacons ของ WiFi Puns นี่คือตัวอย่างที่แสดงให้เห็นว่าเราสามารถสร้างระบบปฏิบัติการของตัวเองได้อย่างไรเพื่อทำบางสิ่งบางอย่างนอกกรอบ (หมายเหตุคุณต้องใช้ดองเกิล USB WiFi ฉันรวมโมดูลเคอร์เนลสำหรับ Ralink Chipset)
ฉันคิดว่ามันเรียบร้อยดีกว่าการติดตั้ง Linux ทั่วไปและกำหนดค่าบริการด้วยตัวเองตามเป้าหมาย
คุณสามารถสร้างภาพที่เริ่มต้นคอนโทรลเลอร์ Unifi ดังนั้นคุณไม่ต้องซื้อ! สิ่งนี้มีประโยชน์หากคุณมีเราเตอร์ unifi หรือ AP ซึ่งใช้คอนโทรลเลอร์นี้สำหรับหน่วยความจำพิเศษและกำลังการประมวลผล ปัจจุบันทดสอบกับ Beaglebone:
nix build -f .
-I nixpkgs=nixpkgs
-I machine=machines/beaglebone
-I image=images/unifi
เนื่องจาก Beaglebone ช้าอาจใช้เวลาสักครู่ในการบูต
รองรับทั้ง Raspberry Pi Zeros แล้ว! พวกเขามาพร้อมกับคุณสมบัติ OTG เย็น:
nix build -f .
-I nixpkgs=nixpkgs
-I machine=machines/raspberrypi-zerow
-I image=images/rpi0-otg-serial
สิ่งนี้จะช่วยให้คุณมีพลังและเข้าถึง Raspberry Pi ผ่านซีเรียลผ่านพอร์ต USB ตรวจสอบให้แน่ใจว่าได้เสียบสายเคเบิล Micro USB ของคุณในพอร์ตข้อมูลไม่ใช่พอร์ตพลังงาน
การบูตครั้งแรกใช้เวลานานขึ้นเนื่องจากมันปรับขนาดการ์ด SD เพื่อเติมเต็มพื้นที่ทั้งหมดดังนั้นอุปกรณ์อนุกรม (โดยปกติ /dev/ttyACM0 ) อาจใช้เวลานานกว่าจะปรากฏขึ้น
นอกจากนี้คุณยังสามารถสร้างภาพด้วยการเปลี่ยนพอร์ต USB เป็นอะแดปเตอร์อีเธอร์เน็ตให้คุณเข้าสู่ Raspberry Pi โดยเสียบเข้ากับคอมพิวเตอร์ของคุณ:
nix build -f .
-I nixpkgs=nixpkgs
-I machine=machines/raspberrypi-zerow
-I image=images/rpi0-otg-ether
คัดลอกไปยังการ์ด SD (การติดตั้ง ') เสียบเข้ารอเพื่อบูตและแสดงเป็นอุปกรณ์อีเธอร์เน็ตจากนั้นเพียงแค่:
Raspberry Pi 2 เป็นกระดาน quad core 32 บิต @ 900MHz ARMV7 พร้อม RAM 1GB คุณสามารถสร้างสำหรับ Raspberry Pi 2 และใช้งานได้กับ Nixops!
nix build -f .
-I nixpkgs=nixpkgs
-I machine=machines/raspberrypi-2
-I image=images/nixops
Raspberry Pi 3 เป็นบอร์ด Quad Core 64 บิต @ 1.2GHz ARMV8 พร้อม RAM 1GB นอกจากนี้ยังมี WiFi 802.11N ในตัวและพอร์ตอีเธอร์เน็ต 10/100 บลูทู ธ ยังไม่ทำงานบนแพลตฟอร์มนี้ คุณสามารถสร้างสำหรับ Raspberry Pi 3 และใช้งานได้กับ Nixops!
nix build -f .
-I nixpkgs=nixpkgs
-I machine=machines/raspberrypi-3
-I image=images/nixops
นี่เป็นบอร์ดที่น่าสนใจจริงๆในการทำงานและความช่วยเหลือมากมายถูกนำมาจาก Jumpnow/Meta-Odroid-C2 มันเป็นตัวอย่างที่ดีของวิธีการสร้าง U-boot ลงนามและจับคู่กับรหัสบูตตัวโหลดเฉพาะของผู้ขาย นี่คือการใช้งานอ้างอิงที่ดีสำหรับการบูตที่ปลอดภัยและบอร์ดแขน 64 บิต สร้างด้วย:
nix build -f .
-I nixpkgs=nixpkgs
-I machine=machines/odroid-c2
-I image=images/ssh
ฉันยังไม่ได้ใช้การสร้างเครื่องเผาไหม้ SD สำหรับบอร์ดนี้ แต่ควรทำอย่างตรงไปตรงมาและมันจะถูกนำไปใช้เมื่อฉันซื้อ EMMC
การกำหนดค่าบอร์ดสำหรับสิ่งนี้เพิ่งจะขอบคุณ @deadloko! ฉันไม่ได้เป็นเจ้าของบอร์ดนี้ดังนั้นฉันจึงไม่สามารถทดสอบได้ทุกรุ่น แต่ควรจะคล้ายกับ Beaglebone สร้างด้วย:
nix build -f .
-I nixpkgs=nixpkgs
-I machine=machines/toradex_apalis_imx6
-I image=images/mini
bmap มีประโยชน์จริงๆที่นี่ ( nix-shell -p bmap-tools )
sudo bmaptool copy --nobmap result/sd-image/*.img /dev/sdX
เมื่อภาพของคุณถูกรีดออกคุณอาจต้องการเก็บไว้ในสถานที่ถาวรบนกระดานของคุณ: EMMC พื้นที่เก็บข้อมูลประเภทนี้ยอดเยี่ยมเพราะไม่สามารถหลุดออกได้ง่ายเหมือนการ์ด SD แต่มันเข้าถึงได้ยาก
หากคุณมีพอร์ตการ์ด SD และ EMMC ที่คุณโชคดีที่เก็บนี้จะกำหนดเอาต์พุต (ไดเรกทอรีใน outputs ) ที่จะสร้างภาพการ์ด SD ที่จะบูตและเผาภาพอื่นลงใน EMMC คุณระบุภาพที่คุณต้องการเผาด้วยตัวเลือก -I image=
ตอนนี้เราใช้ bmaptool เพื่อเผาภาพที่เร็วกว่ามีการตรวจสอบความสมบูรณ์และทำให้แน่ใจว่าจะซิงค์ระบบไฟล์ นอกจากนี้เรายังบีบอัดภาพเพื่อให้สามารถคัดลอกไปยังภาพหัวเผาได้อย่างปลอดภัย
สิ่งที่คุณต้องทำคือใช้เอาท์พุท burner :
nix build
-f outputs/burner
-I nixpkgs=nixpkgs
-I machine=machines/beaglebone
-I image=images/nixops
เผาผลลัพธ์ไปยังการ์ด SD (ดูการเผาไหม้ไปยังการ์ด SD) และบูตเข้าไป หากมีการกำหนดค่า LED สำหรับบอร์ดนี้คุณควรเห็นหนึ่งในรูปแบบต่อไปนี้:
(โปรดทราบว่าบน Beaglebone คุณต้องกดปุ่ม USER ไว้เสียบปลั๊กแล้วปล่อยให้บูตลงในการ์ด SD ของคุณหากมีตัวโหลดบูตบน EMMC อยู่แล้ว)
หากคุณกำลังเขียนคำจำกัดความสำหรับบอร์ดคุณอาจต้องการเปิดใช้งานการสนับสนุนสำหรับคุณสมบัตินี้เพียงแค่ใช้ตัวเลือกในโมดูล crosspkgs/modules/hardware/burner ซึ่งในขณะที่เขียนประกอบด้วยตัวเลือกเพียงไม่กี่ตัวเลือก:
dd ภาพเข้าสู่ (เส้นทางของอุปกรณ์ EMMC)dd จะถูกเรียก นอกจากนี้คุณยังสามารถกำหนด LED ในโมดูล crosspkgs/modules/hardware/leds ซึ่งสคริปต์เครื่องเขียนจะใช้เพื่อแสดงสถานะ LED เป็นเพียงชื่อของไดเรกทอรีใน /sys/class/leds/ ไดเรกทอรี
ดูคำจำกัดความของภาพ beaglebone หากคุณต้องการตัวอย่างคอนกรีต
การสนับสนุนของ Nixops อยู่ที่นี่! นั่นหมายความว่าคุณสามารถจัดการอุปกรณ์ทั้งหมดของคุณได้โดยไม่ต้องแฟลชอีกครั้ง!
ในการเริ่มเผาภาพฐานลงบนการ์ด SD (ภาพนี้มี SSH และพาร์ติชันบูตขนาดใหญ่เพื่อจัดเก็บการกำหนดค่าใหม่ใน):
nix build -f .
-I nixpkgs=nixpkgs
-I machine=machines/beaglebone
-I image=images/nixops
จากนั้นบูตและเพิ่มคีย์ SSH ของคุณเพราะ Nixops รองรับคีย์ SSH เท่านั้น:
# copy over the key
ssh-copy-id root@IP_ADDRESS
# load your SSH keys into your environment
eval $( ssh-agent -s )
ssh-add ~ /.ssh/id_rsa สุดท้ายสร้างการปรับใช้ Nixops สำหรับอุปกรณ์ของคุณ ( iot สามารถเปลี่ยนเป็นอะไรก็ได้):
nixops create ./nixops.nix -d iot
ตอนนี้คุณพร้อมที่จะอัปเดตบอร์ดของคุณด้วยการกำหนดค่าใหม่! เพียงใช้ nixops deploy กับตัวแปรสภาพแวดล้อม IP ที่ตั้งค่าไว้ในอุปกรณ์ของคุณ (ที่นี่เราปรับใช้อิมเมจ ap-puns ผ่านภาพ nixops ดั้งเดิมของเรา):
IP=YOUR_DEVICES_IP
nixops deploy
-I nixpkgs=nixpkgs
-I machine=machines/beaglebone
-I image=images/ap-puns
-d iot
หากคุณสามารถเข้าถึงการเชื่อมต่อแบบอนุกรมคุณสามารถเลือกรุ่นของคุณในการบูต:
------------------------------------------------------------
1: NixOS - Default
2: NixOS - Configuration 2 (2019-09-16 14:23 - 19.09pre-git)
3: NixOS - Configuration 1 (1970-01-01 01:32 - 19.09pre-git)
Enter choice:
มิฉะนั้นคุณสามารถนำการ์ด SD ออกและแก้ไขไฟล์ /extlinux/extlinux.conf ด้วยตนเองด้วยตนเองในพาร์ติชันบูต แทนที่ DEFAULT nixos-default ด้วย DEFAULT nixos-42 ในไฟล์นั้นเพื่อบูตชั่วคราวจากรุ่นที่ 42
บางครั้งเมื่อสิ่งผิดพลาดคุณต้องทดสอบส่วนเฉพาะของการสร้างที่เก็บนี้จะถูกจัดระเบียบเพื่อให้ง่ายต่อการทำเช่นนั้น
สมมติว่า dhcp เสียคุณสามารถสร้างแพ็คเกจนั้นด้วย:
nix build -f .
-I nixpkgs=nixpkgs
-I machine=machines/beaglebone
-I image=images/mini
pkgs.dhcp
ในทำนองเดียวกันคุณสามารถวางลงในเชลล์เพื่อตรวจสอบกระบวนการสร้างสำหรับ dhcp เช่น:
nix-shell --pure .
-I nixpkgs=nixpkgs
-I machine=machines/beaglebone
-I image=images/mini
-A pkgs.dhcp
จากนั้นคุณสามารถโทรหา genericBuild ใน nix-shell และจำลองอาคารนั้น
หากคุณต้องการตรวจสอบค่าการกำหนดค่าขั้นสุดท้ายและสิ่งอื่น ๆ คุณสามารถวางลงใน repl :
nix repl .
-I nixpkgs=nixpkgs
-I machine=machines/beaglebone
-I image=images/mini
จากนั้น config ตัวแปรจะมีการกำหนดค่าระบบ
ภาพบางภาพเป็นตัวอย่างที่เต็มเปี่ยมพร้อมกรณีการใช้งานและภาพอื่น ๆ เป็นเพียงเทมเพลตสำหรับคุณในการสร้างภาพของคุณเองด้วย
(ขนาดขึ้นอยู่กับการสร้าง Beaglebone)
| ชื่อ | ขนาด | คำอธิบาย |
|---|---|---|
| ฐาน | > 2GB | การเปลี่ยนแปลงที่เล็กที่สุดในการกำหนดค่า Nix ที่จำเป็นในการข้ามการสร้าง |
| มินิ | 584MB | เล็กกว่าฐานโดยปิดบริการที่ไม่สำคัญที่สุดเช่น polkit , udisks , containers ฯลฯ |
| จุลภาค | 564MB | เล็กกว่ามินิหมายถึงการกะพริบหนึ่งครั้งและไม่ได้รับการปรับปรุงโดยตรง (แต่อัปเดตโดยการกระพริบภาพอื่น) |
| SSH | 584MB | ขึ้นอยู่กับมินิ แต่มีการเข้าถึง SSH |
ภาพ micro ไม่ได้มีขนาดเล็กมากในตอนนี้ แต่หวังว่ามันจะเร็ว ๆ นี้ มันหมายถึงการไม่มียูทิลิตี้ห้ามหรือ daemon เคอร์เนลขนาดเล็กและโดยทั่วไปขั้นต่ำที่จำเป็นในการทำงานบนกระดาน ปัจจุบันมันไม่แตกต่างจากภาพ mini มากนัก
aircrack-ng เพื่อส่ง AP บีคอนปลอมด้วยชื่อปุน สำหรับแรงบันดาลใจให้ดูที่ปัญหาที่เปิดอยู่ในปัจจุบันหรือสิ่งที่ต้องทำ มิฉะนั้นเพียงแค่ลองใช้และแก้ไขในขณะที่คุณพบพวกเขาในที่สุดการแก้ไขทั้งหมดที่จบลงที่นี่จะถูกส่งต้นน้ำดังนั้น nixpkgs ทั้งหมดจะได้รับประโยชน์
อีกทางเลือกหนึ่งส่งต้นน้ำโดยตรงและเชื่อมโยงการกระทำในปัญหามันอาจจะถูกเลือกเชอร์รี่ที่นี่
nix !nix-channel --update