Difference between revisions of "NixOS on ARM/ODROID-C2"

From NixOS Wiki
Jump to: navigation, search
(Add link to product page)
(Roughly document installing to the odroid c2)
Line 3: Line 3:
  
 
ODROID-C2 support is being worked on by '''@grahamc'''. Mainline kernel from NixOS has been reported as working<ref>https://logs.nix.samueldr.com/nixos-aarch64/2018-01-25#863144;</ref>. A non-specified build from mainline u-boot also has been reported to work.
 
ODROID-C2 support is being worked on by '''@grahamc'''. Mainline kernel from NixOS has been reported as working<ref>https://logs.nix.samueldr.com/nixos-aarch64/2018-01-25#863144;</ref>. A non-specified build from mainline u-boot also has been reported to work.
<!--
 
  
 
== Board-specific installation notes ==
 
== Board-specific installation notes ==
  
[...]
 
  
-->
+
Note this assumes u-boot is in partition 1 of your board's connected eMMC. If you haven't done that yet, read the backlog from https://logs.nix.samueldr.com/nixos-aarch64/2018-11-21#1738333; and also https://github.com/NixOS/nixpkgs/compare/master...samueldr:u-boot/odroid-c2.
 +
 
 +
1. Download the sd-image from Hydra at https://hydra.nixos.org/job/nixos/release-18.09-aarch64/nixos.sd_image.aarch64-linux/latest
 +
2. Copy it to the SD card
 +
3. Mount first partition to /mnt with sudo mount /dev/mmcblk0p1 /mnt
 +
4. Edit /mnt/extlinux/extlinux.conf and delete all the console=tty.... arguments in the APPEND line
 +
5. Add console=ttyAML0,115200n8 to the end of the APPEND line
 +
 
 +
it will look something like this:
 +
 
 +
<syntaxhighlight>
 +
[grahamc@Morbo:~]$
 +
[grahamc@Morbo:~]$ cat  /mnt/extlinux/extlinux.conf
 +
# Generated file, all changes will be lost on nixos-rebuild!
 +
 
 +
# Change this to e.g. nixos-42 to temporarily boot to an older configuration.
 +
DEFAULT nixos-default
 +
 
 +
MENU TITLE ------------------------------------------------------------
 +
TIMEOUT 30
 +
 
 +
LABEL nixos-default
 +
  MENU LABEL NixOS - Default
 +
  LINUX ../nixos/gz1chw67hj8fj2b3xdrkv1nxrv8jvdzv-linux-4.19.13-Image
 +
  INITRD ../nixos/4gifkl2yv2g58nxmf6z68y42s70xrsg0-initrd-initrd
 +
  FDTDIR ../nixos/gz1chw67hj8fj2b3xdrkv1nxrv8jvdzv-linux-4.19.13-dtbs
 +
  APPEND systemConfig=/nix/store/...-nixos-system-nixos-xxx.xxx.xxx.xxx init=/nix/store/...-nixos-system-nixos-xx.xx.xxxx.xxx init loglevel=7 cma=32M console=ttyAML0,115200n8
 +
</syntaxhighlight>
 +
 
 +
and then boot the sdcard.
 +
 
 +
Once booted, partition your on-board emmc like:
 +
 
 +
<syntaxhighlight>
 +
Device        Boot    Start      End  Sectors  Size Id Type
 +
/dev/mmcblk0p1          2048  264191  262144  128M  c W95 FAT32 (LBA)
 +
/dev/mmcblk0p2 *      264192 50595839 50331648  24G 83 Linux
 +
/dev/mmcblk0p3      50595840 61071359 10475520    5G 83 Linux
 +
</syntaxhighlight>
 +
 
 +
note p2 is bootable.
 +
 
 +
<syntaxhighlight>
 +
$ mkfs.ext4 /dev/mmcblk0p2
 +
$ mkswap /dev/mmcblk0p3
 +
$ swapon /dev/mmcblk0p3
 +
$ mount /dev/mmcblk0p2 /mnt
 +
$ nixos-generate-config /mnt
 +
$ nixos-install
 +
$ reboot
 +
</syntaxhighlight>
 +
 
 
== Serial console ==
 
== Serial console ==
  

Revision as of 04:02, 6 January 2019

Status

ODROID-C2 support is being worked on by @grahamc. Mainline kernel from NixOS has been reported as working[1]. A non-specified build from mainline u-boot also has been reported to work.

Board-specific installation notes

Note this assumes u-boot is in partition 1 of your board's connected eMMC. If you haven't done that yet, read the backlog from https://logs.nix.samueldr.com/nixos-aarch64/2018-11-21#1738333; and also https://github.com/NixOS/nixpkgs/compare/master...samueldr:u-boot/odroid-c2.

1. Download the sd-image from Hydra at https://hydra.nixos.org/job/nixos/release-18.09-aarch64/nixos.sd_image.aarch64-linux/latest 2. Copy it to the SD card 3. Mount first partition to /mnt with sudo mount /dev/mmcblk0p1 /mnt 4. Edit /mnt/extlinux/extlinux.conf and delete all the console=tty.... arguments in the APPEND line 5. Add console=ttyAML0,115200n8 to the end of the APPEND line

it will look something like this:

[grahamc@Morbo:~]$ 
[grahamc@Morbo:~]$ cat  /mnt/extlinux/extlinux.conf
# Generated file, all changes will be lost on nixos-rebuild!

# Change this to e.g. nixos-42 to temporarily boot to an older configuration.
DEFAULT nixos-default

MENU TITLE ------------------------------------------------------------
TIMEOUT 30

LABEL nixos-default
  MENU LABEL NixOS - Default
  LINUX ../nixos/gz1chw67hj8fj2b3xdrkv1nxrv8jvdzv-linux-4.19.13-Image
  INITRD ../nixos/4gifkl2yv2g58nxmf6z68y42s70xrsg0-initrd-initrd
  FDTDIR ../nixos/gz1chw67hj8fj2b3xdrkv1nxrv8jvdzv-linux-4.19.13-dtbs
  APPEND systemConfig=/nix/store/...-nixos-system-nixos-xxx.xxx.xxx.xxx init=/nix/store/...-nixos-system-nixos-xx.xx.xxxx.xxx init loglevel=7 cma=32M console=ttyAML0,115200n8

and then boot the sdcard.

Once booted, partition your on-board emmc like:

Device         Boot    Start      End  Sectors  Size Id Type
/dev/mmcblk0p1          2048   264191   262144  128M  c W95 FAT32 (LBA)
/dev/mmcblk0p2 *      264192 50595839 50331648   24G 83 Linux
/dev/mmcblk0p3      50595840 61071359 10475520    5G 83 Linux

note p2 is bootable.

$ mkfs.ext4 /dev/mmcblk0p2
$ mkswap /dev/mmcblk0p3
$ swapon /dev/mmcblk0p3
$ mount /dev/mmcblk0p2 /mnt
$ nixos-generate-config /mnt
$ nixos-install
$ reboot

Serial console

I used minicom to access the serial:

$ cat /etc/minirc.odroid-c2 
# Machine-generated file - use "minicom -s" to change parameters.
pu port             /dev/ttyUSB0
pu lock             /var/lock
pu rtscts           No

then run sudo minicom to access the serial console.


Resources

Product page with spec sheet: [1]