이것은 닉스를 교차하여 닉스를 가로 지르며 팔 대상을 가로 지르는 WIP입니다.
최신 릴리스를 복제하십시오.
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 Remnants가 실수로 이미지에 들어가는 것을 제거하기 위해서는 여전히 많은 일을해야합니다 (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 Wi-Fi Puns의 AP 비콘을 보내는 서비스를 제공합니다. 이것은 상자 밖에서 무언가를 수행하도록 구성된 자체 OS를 구축 할 수있는 방법을 보여주는 데모입니다. (USB Wi -Fi 동글이 필요합니다. Ralink 칩셋 용 커널 모듈이 포함되어 있습니다).
일반 리눅스를 설치하고 대상에 서비스를 구성하는 것보다 훨씬 깔끔하다고 생각합니다.
UniFi 컨트롤러를 시작하는 이미지를 구입할 필요가없는 이미지를 만들 수 있습니다! 이 컨트롤러를 추가 메모리 및 처리 전력으로 사용하는 Unifi 라우터 또는 AP가있는 경우 유용합니다. 현재 BeagleBone으로 테스트되었습니다.
nix build -f .
-I nixpkgs=nixpkgs
-I machine=machines/beaglebone
-I image=images/unifi
비글 본이 느리기 때문에 부팅하는 데 시간이 걸릴 수 있습니다.
두 라즈베리 파이 제로는 이제 지원됩니다! 멋진 OTG 기능이 제공됩니다.
nix build -f .
-I nixpkgs=nixpkgs
-I machine=machines/raspberrypi-zerow
-I image=images/rpi0-otg-serial
이를 통해 USB 포트를 통해 직렬을 통해 Raspberry Pi에 전원을 공급하고 액세스 할 수 있습니다. 전원 포트가 아닌 데이터 포트에 마이크로 USB 케이블을 연결하십시오.
첫 번째 부팅은 SD 카드가 전체 공간을 채우기 위해 크기를 조정하기 때문에 더 오래 걸리므로 직렬 장치 (일반적으로 /dev/ttyACM0 )가 표시되는 데 시간이 더 걸릴 수 있습니다.
USB 포트를 이더넷 어댑터로 돌리는 이미지를 구축하여 컴퓨터에 연결하여 Raspberry Pi로 SSH를 만들 수 있습니다.
nix build -f .
-I nixpkgs=nixpkgs
-I machine=machines/raspberrypi-zerow
-I image=images/rpi0-otg-ether
SD 카드 ( '설치'섹션)에 복사하고 연결하고 부팅 할 때까지 기다렸다가 이더넷 장치로 표시됩니다.
Raspberry Pi 2는 1GB RAM을 가진 32 비트 쿼드 코어 @ 900MHz ARMV7 보드입니다. Raspberry Pi 2를 위해 구축 할 수 있으며 Nixops와 함께 작동합니다!
nix build -f .
-I nixpkgs=nixpkgs
-I machine=machines/raspberrypi-2
-I image=images/nixops
Raspberry Pi 3은 1GB RAM이있는 1.2GHz ARMV8 보드 @ 1.2GHz ARMV8 보드입니다. 또한 802.11n Wi-Fi 및 10/100 이더넷 포트가 내장되어 있습니다. Bluetooth는 아직이 플랫폼에서 작동하지 않습니다. 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를 구축하고 서명 한 다음 공급 업체 별 부트 로더 코드와 결합하는 방법의 좋은 예입니다. 이것은 Secure-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가있는 경우 운이 좋으면이 저장소는 EMMC에 다른 이미지를 부팅하고 굽는 SD 카드 이미지를 작성하는 출력 ( outputs 의 디렉토리)을 정의합니다. 평소 -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 버튼을 누르고 전원을 연결 한 다음 EMMC에 부트 로더가 이미 있으면 SD 카드로 부팅하도록해야합니다).
보드 정의를 작성하는 경우이 기능을 지원할 수 있으므로 crosspkgs/modules/hardware/burner 모듈에서 옵션을 구현하면 작성시 몇 가지 옵션으로 구성됩니다.
dd 의 경로 (EMMC 장치의 경로)dd 호출되기 전에 실행할 스크립트 crosspkgs/modules/hardware/leds 모듈에서 LED를 정의 할 수도 있습니다. 버너 스크립트는 해당 상태를 표시하는 데 사용합니다. LED는 /sys/class/leds/ 디렉토리의 디렉토리 이름 일뿐입니다.
구체적인 예를 원한다면 beaglebone 이미지 정의를 살펴보십시오.
Nixops 지원이 여기 있습니다! 즉, 재 플래싱없이 모든 장치를 관리 할 수 있습니다!
기본 이미지를 SD 카드에 BOLL에 태우려면 (이 이미지는 새로운 구성을 저장하기 위해 SSH와 더 큰 부팅 파티션이 포함되어 있습니다) :
nix build -f .
-I nixpkgs=nixpkgs
-I machine=machines/beaglebone
-I image=images/nixops
Nixops가 SSH 키 만 지원하므로 부팅하고 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
이제 새로운 구성으로 보드를 업데이트 할 준비가되었습니다! IP 환경 변수와 함께 nixops deploy 사용하여 장치의 설정으로 설정하십시오 (여기서는 원래 nixops 이미지를 통해 ap-puns 이미지를 배포).
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 파일을 수동으로 편집 할 수 있습니다. 42 세대에서 일시적으로 부팅하기 위해 해당 파일의 DEFAULT nixos-42 로 DEFAULT nixos-default 교체하십시오.
때로는 일이 잘못되면 빌드의 특정 부분을 테스트해야합니다.이 저장소는 구성되어있어 쉽게 수행 할 수 있습니다.
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
그런 다음 nix-shell 에서 genericBuild 호출하고 해당 패키지 빌딩을 시뮬레이션 할 수 있습니다.
최종 구성 값 및 기타 항목을 검사하려면 repl 에 떨어질 수 있습니다.
nix repl .
-I nixpkgs=nixpkgs
-I machine=machines/beaglebone
-I image=images/mini
그런 다음 변수 config 에는 시스템 구성이 포함됩니다.
일부 이미지는 사용 사례가있는 본격적인 데모이며 다른 이미지는 자신의 이미지를 만들기위한 템플릿 일뿐입니다.
(크기는 BeagleBone 빌드를 기반으로합니다)
| 이름 | 크기 | 설명 |
|---|---|---|
| 베이스 | > 2GB | 크로스 빌드에 필요한 닉스 구성의 가장 작은 변경 사항 |
| 미니 | 584MB | 기본보다 작으며 polkit , udisks , containers 등과 같이 대부분의 비 임계 서비스가 꺼져 있습니다. |
| 마이크로 | 564MB | 미니보다 작고 한 번 플래시되고 직접 업데이트되지 않아야합니다 (그러나 다른 이미지를 플래시하여 업데이트) |
| SSH | 584MB | 미니를 기반으로하지만 SSH 액세스 |
micro 이미지는 지금은 마이크로가 아니지만 곧 곧있을 것입니다. 그것은 닉스 유틸리티 나 데몬, 더 작은 커널, 일반적으로 보드에서 실행하는 데 필요한 최소값이없는 것입니다. 현재 mini 이미지와 크게 다르지 않습니다.
aircrack-ng 사용하여 말장 이름을 가진 가짜 AP 비콘을 보내십시오. 영감을 얻으려면 현재 열린 문제 또는해야 할 일을 살펴보십시오. 그렇지 않으면, 당신이 찾을 때 그것을 시도하고 수정을 시도하십시오. 궁극적으로 여기에 끝나는 모든 수정 사항은 상류로 보내져 모든 nixpkgs 가 혜택을 줄 수 있습니다.
또는 직접 상류로 보내고 문제에 커밋을 연결하면 여기에서 체리 고정 될 수 있습니다.
nix 유틸리티!nix-channel --update