I have gone through every tutorial I could find about booting from SATA. Firstly, you must use either the SD card or eMMC boot partition to boot from. Basically, setup a ROOT partition on your ssd/sata disk. copy the root from SD or eMMC to that partition. I then did:
sudo mount /dev/sda1 /tosata
sudo rsync -ax / /tosata
Now that Root is on the SATA, you need to modify uEnv.txt which is in the boot partition of SD or eMMC. In my case it was in /media/pi/BPI-BOOT/bananapi/bpi-m2u/linux . Use your favorite editor and change the root=mmcblk0p2 to root=/dev/sda1 and save. If you change it there and reboot, nothing happens and you will see a message about mounting fs on mmcblk0p2 or the like. You need to copy the new uEnv.txt , uImage, and uInitrd to /media/pi/BPI-BOOT directory. Now when you reboot, do a df -h in terminal. Voila / is on /dev/sda1 ! So now you can run any OS image off an external, much larger drive, not just Armbian!