diff options
Diffstat (limited to 'docs/install-omnia.adoc')
-rw-r--r-- | docs/install-omnia.adoc | 181 |
1 files changed, 181 insertions, 0 deletions
diff --git a/docs/install-omnia.adoc b/docs/install-omnia.adoc new file mode 100644 index 0000000..4c5abac --- /dev/null +++ b/docs/install-omnia.adoc @@ -0,0 +1,181 @@ += NixOS on Turris Omnia + +CAUTION: PCIe devices are not functional right now on the Turris Omnia! + +The Turris Omnia is little bit more complex regarding the initial setup compared +to Turris Mox. One issue is that armv7 builds are not provided by official +Hydra. The second issue is that there is not a single reasonable installation +(such as SD card on Turris Mox). + +Turris Omnia can be booted either from USB or internal disk or from internal +MMC. The USB drive is the easies to setup from PCs and thus it is suggested for +testing NixOS on your Turris Omnia. You can always return to the Turris OS just +by unplugging the USB drive. + +== 1.) Updating U-Boot + +The updated U-Boot is required to make Turris Omnia work with NixOS in most +cases. The reason is that the original U-Boot 2015.10 does not support booting +from USB or internal drive. The newer Turris Omnia routers have newer U-Boot +versions but always verify the U-Boot version before you continue by running the +following command as root on the router: + +include::shards/install-uboot.adoc[] + +---- +strings /dev/mtd0 | grep 'U-Boot [0-9.]\+' +---- + +The minimal suggested version is U-Boot 2022.07. + +=== Updating U-Boot on Turris OS + +These instructions apply if you have SD card with Turris OS and want to use the +official way of updating firmware on Turris Mox. The minimal version of Turris +OS to get new stable version of U-Boot is Turris OS 6.0. Please update the +Turris OS installation to this version or newer before you continue. + +The next step is to install `turris-nor-update` and run it: + +---- +opkg update +opkg install turris-nor-update +turris-nor-update +---- + +This should give you at least U-Boot 2022.07. + +=== Updating U-Boot on NixOS + +TODO + +== 2.) Get tarball with NixOS + +The initial system can either be downloaded from Gitlab or build locally. Note +that version available for download can be pretty old. It is just some version +that was build with latest commit to the NixTurris repository. + +* TODO (we do not have CI builds yet) +* ./build-tarball.adoc[Documentation on how to build your own tarball] + +== 3a.) Boot from USB drive + +This is the easies option to get NixOS on Turris Omnia. You can prepare the +drive in any Linux system and then just plug it into the Omnia. + +You should use some reliable and preferably USB 3.0 flash drive or just regular +SSD drive. The suggested minimal size is 8GB but that is pretty much every USB +drive on the market right now. You might want to use swap and thus make sure +that you use some higher quality one as swap can kill cheap flash drives pretty +fast. + +You need to format the USB drive first. The required partition table is GPT. You +can use only one partition that would be preferably formatted with BTRFS. The +important thing is to set label `NixTurris` so boot can locate the correct +partition by it. + +It is up to you which tool are you going to use. The instructions here are going +to be for GNU Parted. The following shell log should give you an idea of what +you should do to get the correct layout: + +---- +~# parted /dev/sdx +(parted) mktable gpt +(parted) mkpart NixTurris 0% 100% +(parted) set 1 boot on +(parted) quit +~# mkfs.btrfs /dev/sdx1 +---- + +The next step is to unpack the tarball to the USB drive. + +---- +~# mkdir -p mnt +~# mount /dev/sdx1 mnt +~# tar -xf nixos-system-armv7-linux.tar.xz -C mnt +~# umount mnt +~# eject /dev/sdx +---- + +Now you can take this drive and plug it in the Turris Omnia. The last step is to +instruct firmware to boot from USB. + +TIP: If you have USB to serial converter (see +https://docs.turris.cz/hw/serial/#turris-omnia[official documentation]) then you +can trigger USB boot only once using it. You have to reboot Omnia and halt boot +process by pressing kbd:[Enter] few times once you see `U-Boot` booting. You +should get U-Boot prompt shortly after (the line starting with `> `). USB boot +is initialized by entering `run usb_boot` to it and confirming by kbd:[Enter]. + +You need to have `uboot-envtools` package installed on Turris OS or `ubootTools` +on NixOS. + +First you have to verify your environment access configuration by printing the +current environment using `fw_printenv` (as root). You should get output with no +message informing you about invalid CRC. Do not proceed if you get it. + +To set USB boot as a preferred method run: + +---- +fw_setenv boot_targets usb0 mmc0 nvme0 scsi0 pxe dhcp +---- + +Feel free to validate settings by running `fw_printenv` again. + +Now you can reboot your Omnia to NixOS. The next step is to do first +configuration and for that you have to be able to ./initial-access.adoc[access +the router]. + +== 3b.) Install on internal storage + +It is highly suggested not to use internal MMC for the whole system. The +suggested deployment is rather the `/boot` partition on MMC or the whole system +on internal drive (note that U-Boot might not be able to boot from all internal +drives). + +TODO + +WARNING: this is not fully supported at the moment as tarball contains in +`/boot` only Syslinux configuration and thus boot simply from `/boot` is not +possible. You have to copy kernel, initrd and dtb to the `/boot` partition and +modify Syslinux's configuration file. + + +== Reverting to Turris OS + +The steps required to revert to Turris OS differ from how deep have you went +with installation. If you are lucky it is just about restarting U-Boot +environment, if not then you have to use Medkit to install Turris OS back. + +=== Resetting U-Boot environment to the default + +The modification suggested by this document are only to the single variable +(`boot_targets`). The revert to the previous value should be in most cases +enough. This can be done by (see previous usage in this document for required +packages): + +---- +fw_setenv boot_targets mmc0 nvme0 scsi0 usb0 pxe dhcp +---- + +You can also reset environment to the default if you want to be sure. For that +you need USB to serial converter connected (see +https://docs.turris.cz/hw/serial/#turris-omnia[official documentation]). Reboot +the board and halt boot process by pressing kbd:[Enter] few times once you see +`U-Boot` booting. You should get U-Boot prompt shortly after (the line starting +with `> `). To reset environment enter: + +---- +env default -a +saveenv +---- + +To continue boot you can enter command `boot`. + +=== Using Medkit to install Turris OS back to the MMC + +You have to do this only if you attempted installation on internal storage. +First you have to reset U-Boot environment and thus follow steps in the previous +section. Next follow the +https://docs.turris.cz/hw/omnia/rescue-modes/#re-flash-router[official medkit +steps]. |