This tutorial quickly explains how to boot raspberry pi 3 from USB storage such as flash drive or USB Hard disk. As of April 2017 this has officially baked into there main kernel and is fully supported by raspberry pi.
Raspbian Pixel ► https://www.raspberrypi.org/downloads/
Etcher ► https://etcher.io/
First you will need to download Rasbian Pixel, this method does work with other newer OS too such as OSMC.
Now we will need a piece of software called etcher to write the image onto our SD card and USB Storage device.
Prepare the SD-Card and USB Storage
With all the software downloaded, now lets write the downloaded image to both the SD card and USB storage device, if you are unable to detect the USB storage device be sure to check the “unsafe” option in settings of etcher
Program USB Boot Mode
Once both the images have been written, we will need to insert a line to our config.txt file located at
to the end of the file on both sdcard and USB storage
This will set a bit in the OTP (One Time Programmable) memory in the Raspberry Pi SoC that will enable booting from a USB mass storage device. Once this bit has been set, the SD card is no longer required. Note that any change you make to the OTP is permanent and cannot be undone.
But you will still be able to boot from SD card if it is inserted and does not change the operations of your Pi
Now that the hard part is completed we just need to boot it from sd-card first. then reboot once it’s completely booted to ensure it has written the boot mode to the Pi. After the reboot you can now remove the SD-card and plug in the USB Storage device.
Be sure to remove the boot mode code from your sdcard when these steps are completed or you might flash another Pi by accident.
If your Pi is not booting from the usb storage device, you can check to see if the boot mode has been written by running this command on the Pi booted from SD
$ vcgencmd otp_dump | grep 17: 17:3020000a
ensure the output
0x302000a is shown. If not then the boot mode has not been written successfully.
Is it also possible that your USB Storage device is not supported, try on another storage device if possible.