هذا هو 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
يستخدم هذا المستودع Travis للحفاظ على ذاكرة التخزين المؤقت الطازجة Cachix ، والتي يمكنك استخدامها لتسريع عمليات الإنشاء الخاصة بك:
# 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 من التورية الواسعة. هذا عرض توضيحي يوضح كيف يمكن للمرء بناء نظام التشغيل الخاص به لتكوينه للقيام بشيء خارج الصندوق. (لاحظ أنك بحاجة إلى Dongle WiFi USB ، قمت بتضمين وحدات kernel لشرائح Ralink)
أعتقد أنه أنيق ، أفضل بكثير من تثبيت Linux عام وتكوين الخدمات بنفسك على الهدف.
يمكنك إنشاء صورة تبدأ وحدة تحكم UNIFI حتى لا تضطر إلى شراء صورة! هذا مفيد إذا كان لديك جهاز توجيه UniFi أو AP ، والذي يستخدم وحدة التحكم هذه لذاكرة إضافية وقوة المعالجة. تم اختباره حاليًا مع BeagleBone:
nix build -f .
-I nixpkgs=nixpkgs
-I machine=machines/beaglebone
-I image=images/unifi
نظرًا لأن Beaglebone بطيئة ، فقد يستغرق الأمر بعض الوقت للتمهيد.
يتم دعم كل من الأصفار PI Raspberry الآن! أنها تأتي مع ميزات OTG باردة:
nix build -f .
-I nixpkgs=nixpkgs
-I machine=machines/raspberrypi-zerow
-I image=images/rpi0-otg-serial
سيتيح لك ذلك تشغيل وتوت Raspberry Pi عبر Serial من خلال منفذ USB. تأكد من توصيل كبل USB Micro في منفذ البيانات ، وليس منفذ الطاقة.
يستغرق التمهيد الأول وقتًا أطول نظرًا لتغيير حجم بطاقة SD لملء مساحته بالكامل ، لذلك قد يستغرق الجهاز التسلسلي (عادة /dev/ttyACM0 ) وقتًا أطول.
يمكنك أيضًا إنشاء صورة مع تشغيل منفذ USB إلى محول Ethernet ، مما يتيح لك SSH الدخول إلى Raspberry Pi عن طريق توصيله بجهاز الكمبيوتر الخاص بك:
nix build -f .
-I nixpkgs=nixpkgs
-I machine=machines/raspberrypi-zerow
-I image=images/rpi0-otg-ether
انسخها إلى قسم بطاقة SD ("تثبيت") ، وقم بتوصيلها ، وانتظرها للتمهيد وللتعرض كجهاز Ethernet ، ثم فقط:
Raspberry PI 2 عبارة عن لوحة ARMV7 سعة 32 بت @ 900MHz ARMV7 مع ذاكرة وصول عشوائي 1 جيجابايت. يمكنك بناء Raspberry Pi 2 ، ويعمل مع Nixops!
nix build -f .
-I nixpkgs=nixpkgs
-I machine=machines/raspberrypi-2
-I image=images/nixops
Raspberry PI 3 عبارة عن لوحة Quad @ 1.2 جيجا هرتز ARMV8 64 بت مع ذاكرة وصول عشوائي 1 جيجا بايت. كما أنه يحتوي على 802.11n WiFi ، وميناء Ethernet 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 يمكنك أيضًا تحديد LEDs في وحدة crosspkgs/modules/hardware/leds ، والتي سيستخدمها البرنامج النصي الموقد لعرض حالته. LEDs هي مجرد أسماء من الدلائل في /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 المتغير على تكوين النظام.
بعض الصور عبارة عن عروض تجريبية كاملة مع حالة استخدام ، والبعض الآخر مجرد قوالب لك لبناء صورك الخاصة بها.
(يعتمد الحجم قبالة بيلبون بنيات)
| اسم | مقاس | وصف |
|---|---|---|
| قاعدة | > 2GB | أصغر التغييرات على تكوين NIX اللازم للبناء المتبادل |
| ميني | 584 ميجابايت | أصغر من القاعدة ، مع إيقاف تشغيل معظم الخدمات غير الحرجة ، مثل polkit ، udisks ، containers ، إلخ. |
| ميكررو | 564 ميغابايت | أصغر من المصغر ، المقصود أن يتم تومضه مرة واحدة ولم يتم تحديثه مباشرة (ولكن تم تحديثه عن طريق وميض صورة أخرى) |
| SSH | 584 ميجابايت | استنادًا إلى Mini ولكن مع وصول SSH |
الصورة micro ليست صغيرة للغاية في الوقت الحالي ، ولكن نأمل أن تكون قريبًا. من المفترض ألا يكون لديك أي مرافق NIX أو الخفي ، و kernel أصغر ، وعموما الحد الأدنى المطلوب للتشغيل على السبورة. حاليًا ، لا يختلف الأمر تمامًا عن الصورة mini .
aircrack-ng لإرسال منارات AP مزيفة بأسماء التورية للإلهام إما النظر إلى القضايا المفتوحة حاليًا أو ما يجب القيام به. خلاف ذلك ، فقط جربها ووضعها في الإصلاحات كما تجدها ، في نهاية المطاف سيتم إرسال جميع الإصلاحات التي تنتهي هنا في المنبع بحيث يمكن لجميع nixpkgs الاستفادة.
بدلاً من ذلك ، أرسلها مباشرة إلى أعلى وربط الالتزام في قضية ما ، وربما يتم اختياره هنا.
nix !nix-channel --update