Armbian provides a utility called *nand-sata-install* to transfer OS from SD card to other device such as USB, SATA, or NVMe. The utility can be invoke directly, ``` sudo nand-sata-install ``` or the recommended way, through *armbian-config* ``` sudo armbian-config ``` Helios64 support following boot mode | Boot Device | System / Rootfs Device | |-------------|------------------------| | eMMC | eMMC
SATA Drive
USB Drive| Boot device contains bootloader and other boot files such as kernel and DTB. It will be mounted under /boot/. !!! Notes *nand-sata-install* requires the target device already partitioned! ## System on eMMC ***Step 1 - Run Armbian Configuration Utility*** ![emmc step 0](/helios64/install/img/transfer/emmc_00_config_main.png) ***Step 2 - Select Install Menu*** ![emmc step 1](/helios64/install/img/transfer/emmc_01_config_system.png) ***Step 3 - Select Boot from eMMC - system on eMMC*** ![emmc step 2](/helios64/install/img/transfer/emmc_02_install_main.png) ***Step 4 - Confirm that the process will erase data on eMMC*** ![emmc step 3](/helios64/install/img/transfer/emmc_03_install_erase_confirm.png) ***Step 5 - Select filesystem type for eMMC*** ![emmc step 4](/helios64/install/img/transfer/emmc_04_install_fstype.png) ***Step 6 - Wait for transfer process completed*** ![emmc step 5](/helios64/install/img/transfer/emmc_05_install_transfer.png) ***Step 7 - Power Off Helios64 if you don't have OMV Installed*** **DO NOT** power off if you have installed OMV. There are several OMV files & folders not transferred by *nand-sata-install*. Please refer to [After running *nand-sata-install*](#existing-os-has-omv-installed) section before continue to next step. ![emmc step 6](/helios64/install/img/transfer/emmc_06_install_poweroff.png) ***Step 8 - Remove Micro SD card and power on the system*** ***Step 9 - Verify if the system transferred correctly*** ``` lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 111.8G 0 disk └─sda1 8:1 0 111.8G 0 part sdb 8:16 0 111.8G 0 disk └─sdb1 8:17 0 111.8G 0 part sdc 8:32 1 28.7G 0 disk └─sdc1 8:33 1 28.4G 0 part mmcblk1 179:0 0 14.6G 0 disk └─mmcblk1p1 179:1 0 14.4G 0 part / mmcblk1boot0 179:32 0 4M 1 disk mmcblk1boot1 179:64 0 4M 1 disk zram0 251:0 0 50M 0 disk /var/log zram1 251:1 0 1.9G 0 disk [SWAP] ``` You should see **mmcblk1p1** has MOUNTPOINT **/** ## System on USB or SATA (Including M.2 SATA) Determine which block device list block devices ``` lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 111.8G 0 disk └─sda1 8:1 0 111.8G 0 part sdb 8:16 0 111.8G 0 disk └─sdb1 8:17 0 111.8G 0 part sdc 8:32 1 28.7G 0 disk └─sdc1 8:33 1 28.4G 0 part mmcblk0 179:0 0 14.9G 0 disk └─mmcblk0p1 179:1 0 14.7G 0 part / mmcblk1 179:32 0 14.6G 0 disk └─mmcblk1p1 179:33 0 14.4G 0 part mmcblk1boot0 179:64 0 4M 1 disk mmcblk1boot1 179:96 0 4M 1 disk zram0 251:0 0 50M 0 disk /var/log zram1 251:1 0 1.9G 0 disk [SWAP] root@helios64:~# ls -l /sys/block/ total 0 lrwxrwxrwx 1 root root 0 Nov 5 10:13 loop0 -> ../devices/virtual/block/loop0 lrwxrwxrwx 1 root root 0 Nov 5 10:13 loop1 -> ../devices/virtual/block/loop1 lrwxrwxrwx 1 root root 0 Nov 5 10:13 loop2 -> ../devices/virtual/block/loop2 lrwxrwxrwx 1 root root 0 Nov 5 10:13 loop3 -> ../devices/virtual/block/loop3 lrwxrwxrwx 1 root root 0 Nov 5 10:13 loop4 -> ../devices/virtual/block/loop4 lrwxrwxrwx 1 root root 0 Nov 5 10:13 loop5 -> ../devices/virtual/block/loop5 lrwxrwxrwx 1 root root 0 Nov 5 10:13 loop6 -> ../devices/virtual/block/loop6 lrwxrwxrwx 1 root root 0 Nov 5 10:13 loop7 -> ../devices/virtual/block/loop7 lrwxrwxrwx 1 root root 0 Nov 5 10:13 mmcblk0 -> ../devices/platform/fe320000.mmc/mmc_host/mmc0/mmc0:aaaa/block/mmcblk0 lrwxrwxrwx 1 root root 0 Nov 5 10:13 mmcblk1 -> ../devices/platform/fe330000.sdhci/mmc_host/mmc1/mmc1:0001/block/mmcblk1 lrwxrwxrwx 1 root root 0 Nov 5 10:13 mmcblk1boot0 -> ../devices/platform/fe330000.sdhci/mmc_host/mmc1/mmc1:0001/block/mmcblk1/mmcblk1boot0 lrwxrwxrwx 1 root root 0 Nov 5 10:13 mmcblk1boot1 -> ../devices/platform/fe330000.sdhci/mmc_host/mmc1/mmc1:0001/block/mmcblk1/mmcblk1boot1 lrwxrwxrwx 1 root root 0 Nov 5 10:13 sda -> ../devices/platform/f8000000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/ata1/host0/target0:0:0/0:0:0:0/block/sda lrwxrwxrwx 1 root root 0 Nov 5 10:13 sdb -> ../devices/platform/f8000000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb lrwxrwxrwx 1 root root 0 Nov 5 10:13 sdc -> ../devices/platform/usb@fe900000/fe900000.usb/xhci-hcd.0.auto/usb2/2-1/2-1.3/2-1.3:1.0/host5/target5:0:0/5:0:0:0/block/sdc lrwxrwxrwx 1 root root 0 Nov 5 10:13 zram0 -> ../devices/virtual/block/zram0 lrwxrwxrwx 1 root root 0 Nov 5 10:13 zram1 -> ../devices/virtual/block/zram1 lrwxrwxrwx 1 root root 0 Nov 5 10:13 zram2 -> ../devices/virtual/block/zram2 ``` | Block Device | Physical drive | Remarks | |--------------|----------------|---------| | **mmcblk0** | micro SD card | | | **mmcblk1** | eMMC | | | **sda** | SATA or M.2 drive connected to Port 1 | *../devices/platform/f8000000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/***ata1***/* | | **sdb** | SATA drive connected to Port 4 | *../devices/platform/f8000000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/***ata4***/* | | **sdc** | USB drive connected to USB Port 3 (Front Panel) | *../devices/platform/usb@fe900000/fe900000.usb/xhci-hcd.0.auto/usb2/2-1/2-1***.3***/* | ***Step 1 - Run Armbian Configuration Utility*** ``` sudo armbian-config ``` ![sata step 0](/helios64/install/img/transfer/sata_usb_00_config_main.png) ***Step 2 - Select Install Menu*** ![sata step 1](/helios64/install/img/transfer/sata_usb_01_config_system.png) ***Step 3 - Select Boot from eMMC - system on SATA, USB or NVMe*** ![sata step 2](/helios64/install/img/transfer/sata_usb_02_install_main.png) **Step 4 - Select storage device and partition for rootfs*** *SATA drive at port 1 as System drive* ![sata step 3a](/helios64/install/img/transfer/sata_usb_03_select_target_sata.png) --- *USB drive as System drive* ![sata step 3b](/helios64/install/img/transfer/sata_usb_03_select_target_usb.png) ***Step 5 - Confirm that the process will erase data on eMMC and system partition*** ![sata step 4](/helios64/install/img/transfer/sata_usb_04_install_erase_confirm.png) **Step 6 - Select filesystem type for eMMC*** ![sata step 5](/helios64/install/img/transfer/sata_usb_05_install_boot_fstype.png) Wait until formatting process completed ![sata step 6](/helios64/install/img/transfer/sata_usb_06_install_format_boot.png) ***Step 7 - Select filesystem type for system partition*** ![sata step 7](/helios64/install/img/transfer/sata_usb_07_install_system_fstype.png) Wait until formatting process completed ![sata step 8](/helios64/install/img/transfer/sata_usb_08_install_format_system.png) ***Step 8 - Wait for transfer process completed*** ![sata step 9](/helios64/install/img/transfer/sata_usb_09_install_transfer.png) ***Step 9 - Power Off Helios64 if you don't have OMV Installed*** **DO NOT** power off if you have installed OMV. There are several OMV files & folders not transferred by *nand-sata-install*. Please refer to [After running *nand-sata-install*](#existing-os-has-omv-installed) section before continue to next step. ![sata step 10](/helios64/install/img/transfer/sata_usb_10_install_poweroff.png) ***Step 10 - Remove Micro SD card and power on the system*** **Step 11 - Verify if the system transferred correctly*** *System on SATA or M.2* ``` lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 111.8G 0 disk └─sda1 8:1 0 111.8G 0 part / sdb 8:16 0 111.8G 0 disk └─sdb1 8:17 0 111.8G 0 part sdc 8:32 1 28.7G 0 disk └─sdc1 8:33 1 28.4G 0 part mmcblk1 179:0 0 14.6G 0 disk └─mmcblk1p1 179:1 0 14.4G 0 part /media/mmcboot mmcblk1boot0 179:32 0 4M 1 disk mmcblk1boot1 179:64 0 4M 1 disk zram0 251:0 0 50M 0 disk /var/log zram1 251:1 0 1.9G 0 disk [SWAP] ``` You should see SATA drive at Port 1 has MOUNTPOINT **/** and eMMC has MOUNTPOINT **/media/mmcboot** --- *System on USB* ``` lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 111.8G 0 disk └─sda1 8:1 0 111.8G 0 part sdb 8:16 0 111.8G 0 disk └─sdb1 8:17 0 111.8G 0 part sdc 8:32 1 28.7G 0 disk └─sdc1 8:33 1 28.4G 0 part / mmcblk1 179:0 0 14.6G 0 disk └─mmcblk1p1 179:1 0 14.4G 0 part /media/mmcboot mmcblk1boot0 179:32 0 4M 1 disk mmcblk1boot1 179:64 0 4M 1 disk zram0 251:0 0 50M 0 disk /var/log zram1 251:1 0 1.9G 0 disk [SWAP] ``` You should see USB drive has MOUNTPOINT **/** and eMMC has MOUNTPOINT **/media/mmcboot** ## Existing OS Has OMV Installed Transferring rootfs using *nand-sata-install* will break OMV due to missing files. To prevent this, you need to proceed following section. ### Preparation before running *nand-sata-install* If you have configured NFS share located on SATA drive(s), you might like to prevent the content to be copied over to eMMC. run following command to prevent it ``` echo "/export/*" | sudo tee -a /usr/lib/nand-sata-install/exclude.txt ``` Lastly, if you're using ZFS, which by default mounts to **/**, make sure to add its mountpoint to **/usr/lib/nand-sata-install/exclude.txt** before running *nand-sata-install* as well. ### After running *nand-sata-install* OMV 5 stores part of its config (**salt** and **pillar** folders) in **/srv/** which are excluded by *nand-sata-install*. Before power off the system to finalize the system transfer, we need to mount system partition and copy those folders into it and finally power off the system. ``` sudo mkdir -p /mnt/system sudo mount /dev/sda1 /mnt/system sudo cp -rf -t /mnt/system/srv/ /srv/salt /srv/pillar sudo poweroff ``` !!! Note Pay attention to block device of system partition at second command. In this case /dev/sda1 is SATA drive at Port 1. Now you can continue to remove the micro SD card and power on the system. ## References - [Armbian Documentation](https://docs.armbian.com/User-Guide_Getting-Started/#how-to-install-to-emmc-nand-sata-usb) - [Tips from antsu at Armbian Forum](https://forum.armbian.com/topic/15431-helios64-support/?do=findComment&comment=110715)