Difference between revisions of "NixOS on ARM/ODROID-C2"
(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]