There is a nice little box from element14 that turns a simple Raspberry Pi 3 into a "desktop" system. It provides a power button to turn on a snazzy circular cyan light and boot the system, and if held depressed for 5 seconds, turns power off. It is supposed to provide boot-from-SSD capability, and with a little fixing, you can indeed boot from an SSD and remove the Micro SD card as used on other Raspberry Pi systems. This box is the PI_DESKTOP. Since this tip/trick involves modifying the PI DESKTOP with dangerous tools (a drill and a small file) that may damage beyond repair either the PI DESKTOP or your fingers or body, I deny all responsibility in making these fixes.
There is one little problem with the PI DESKTOP. I couldn't get this product to actually boot up from my SSD. As close as I got was getting a kernel panic for "unable to mount root fs [file system]." Being one not to waste snazz, I resolved to fix this. What follows is the main points in setting up and using this box.
Blowing a Bit
On your pre-desktop Pi 3 system, edit /boot/config.txt as superuser and append one line:
Reboot your system to program the USB boot capability. This Help post explains how to verify this mode is set using
vcgencmd and advises removing the added /boot/config.txt line so the Micro SD card can be used elsewhere without inadvertently programming this bit on other Pi systems.
Itching to Etch
Now you need to place the /boot firmware and beginning root partition of the latest Raspbian release on your SSD card. You've paid $50 already for the PI DESKTOP, but you need a way to access the SSD on a PC. I purchased the QNINE mSATA SSD Adapter To USB 3.0 from Amazon for $17. You may find a better or less expensive adapter.
This is the download location to get the latest Raspbian image and this is the Etcher utility to write the image to your SSD. Before selecting the disk, you need to check the Unsafe mode Dangerous checkbox in Settings. After starting Etcher, you get to the Settings panel by clicking the small gear icon in the upper right of the application next to the question mark:
Use the Back button to return to the main Etcher screen. Needless to say, you probably don't want to leave this checkbox checked indefinitely and you probably do want to be sure in selecting the right SSD drive before Flashing.
Some Assembly Required
Follow the Assembly Instructions: that come with the PI DESKTOP except you can jump over step 8. However, I encourage you to try following step 8 the first time to see if you have better luck at USB booting than I using just the PI DESKTOP product. If so, the rest of this Tip/Trick is still worth a read for other fixes.
Making Holes and Slots
Mount your SSD on the separate adapter and make a slot in the rear panel of the PI DESKTOP so that the adapter's USB connector protrudes through the case. Purchase a short USB extension cable and connect the adapter to the lower, nearest USB connector on the Pi. At this point you may ask, "What's the difference between the extension cable sticking out the back of the PI DESKTOP and the SSD and adapter sticking out?"
Purchase a small rechargeable battery, make a square hole near the USB extension cable slot to connect to the battery, and use double stick foam tape to mount the battery inside the PI DESKTOP. If you plan to add the small fan (next), you may need to power sand both ends of the battery to get a little clearance for the fan. You can use the battery to power your system in the field.
Purchase a small 5V fan and mount it in the corner behind the rechargeable battery. What is shown below is my first design of powering the fan; however, I found using the fan prevents USB booting (I could always turn the fan on after boot up) so I plan now to replace the miniature slide switch with a Micro USB panel mount connector cut to power the fan separately. Besides, I'm wondering if the fan produces more heat than it sucks out of the case.
Sizing Up after Booting Up
With these fixes, you can execute the following bash commands. You should get similar output but different values depending on the size of your SSD.
pi@raspberrypi:~ $ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 465.8G 0 disk
+-sda1 8:1 0 41.8M 0 part /boot
+-sda2 8:2 0 465.7G 0 part /
pi@raspberrypi:~ $ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/root 480760096 4520084 456646832 1% /
devtmpfs 443792 0 443792 0% /dev
tmpfs 448400 0 448400 0% /dev/shm
tmpfs 448400 17260 431140 4% /run
tmpfs 5120 4 5116 1% /run/lock
tmpfs 448400 0 448400 0% /sys/fs/cgroup
/dev/sda1 42137 21328 20809 51% /boot
tmpfs 89680 0 89680 0% /run/user/1000