Minimizing for More Clarity (Raspberry PI 3 + Docker setup)

I’ve been working a lot with C and experimenting with Assembly Language the past few months and the attractiveness of minimalism has grown on me. I recently decided to downsize much of my coding environment to a Raspberry Pi in an effort to be as minimal as possible.  For any extra computing I have access to various cloud servers (Amazon, Digital Ocean). There are certain pros and cons to doing this –but so far the pros have been great:

Pros:

1. Working entirely in a Linux environment (Raspbian) exposes me more to the internals of computers.

2. The memory and CPU limits of a Raspberry Pi  impress upon me the need for efficient programming and proper resource management.

3. Size: The Raspberry Pi’s size is that of a credit card. I can carry my workstation anywhere (supposing where I go there’s a tv/monitor with HDMI access and a USB Keyboard).

Cons:

1. There aren’t many low cost options for having a portable screen for the Pi.

2. Booting from an SD-card/micro-sd card makes the Rpi inherently insecure to a determined attacker who has access to the removable devices.

My setup:

1. I installed Rasbpian Lite (This is the Operation system but only the bare minimum for it to to run). https://www.raspberrypi.org/downloads/raspbian

2. I installed Tmux to give me the ability to organize my work into multiple terminal windows and sessions.

3. I added my Raspberry Pi’s public keys to my Github account & my own cloud servers which allows me to transfer files back and forth easily. Should I reach a certain task where

3. (Optional) To keep my system relatively uncluttered I installed Docker. This allows me to spin up applications such MongoDB & MySQL without having to install them on my computer.  https://www.raspberrypi.org/downloads/raspbian/
* IMPORTANT* Most Docker Images that work on a computer/laptop (x86 architecture for example) will not work on a RaspberryPi because the architecture is ARM based.

Optional (Boot from USB):

I decided to boot my Pi3 from USB instead of the MicroSD card. Due to the variety of USB flash drives and storage media this process is only known to work on a some devices. I purchased a SanDisk Ultra Fit 128GB USB 3.0 Flash Drive for the first few days it worked seamlessly. However after a while it wouldn’t boot and I figured out it’s because of the 2 second boot timeout limit. If the USB drive doesn’t startup within two seconds the Pi3 will not boot at all. I followed the instructions at https://www.raspberrypi.org/blog/pi-3-booting-part-i-usb-mass-storage-boot/ to change the usb_boot_timeout to 5 seconds. All it is is adding this line at the bottom of config.txt: program_usb_boot_timeout=1 .

Notes:

>> Some keys on some keyboard may not be recognized on the Raspberry Pi depending on the “keyboard-layout” used. For example pressing the key for  ‘@’ may result in a quotation mark (“). I’ve tried a number of keyboards both generic and for Macs and I can’t find the optimum keyboard configuration. Some users have also recorded similar problems.

>> Docker Images can be quite large in size so it’s important to have enough space on the storage media (sd-card, micro-sd card, usb flash drive/hard drive)

>> I haven’t quite figured out how to transfer my Android Development to my Pi but the following articles are promising:
https://developer.android.com/studio/build/building-cmdline.html
http://incise.org/android-development-on-the-command-line.html
pi2

Leave a Reply