wiki:PibotGoldenImage

Version 4 (modified by David Albert, 8 years ago) (diff)

--

GOAL: A master PiBot image that is pre-configured for ease of setup. The image should be as small as possible for storage and distribution. The image should be easily installed onto an 8GB or larger uSD card.

EQUIPMENT USED:

PROCEDURE:

  • Install PC software (sd formatter, disk imager, cygwin, bonjour)
  • Prepare SD card:
    • Install Raspbian on SD card (see: https://www.raspberrypi.org/documentation/installation/installing-images/README.md). This creates two partitions: /boot that is accessible from Windows and /root that is ext4 and cannot (easily) be accessed from Windows.
    • Edit /boot/config.txt
      • uncomment framebuffer_width=1280
      • uncomment framebuffer_height=720
      • uncomment dtparam=i2c_arm=on
      • add at end: gpu_mem=32
    • Edit /boot/cmdline.txt
      • Insert after rootwait: modules-load=dwc2,g_ether g_ether.dev_addr=5a:77:1e:af:8e:9e g_ether.host_addr=72:8d:1f:c4:e8:ca
      • Remove init=resizefs... (to prevent automatic expansion to full SD card size) (Note: cmdline.txt must be a single line...no linebreaks)
    • Create an empty file: /boot/ssh (enables ssh server when started)
    • Optional: create /boot/wpa_supplicant.conf with your wifi network configuration information (allows Pi to connect to your network on boot)
  • Boot and configure SD card in Pi
    • Place uSD card in Pi Zero
    • Connect USB cable to Pi Zero OTG port
    • When it finishes booting (LED stops blinking) ssh to pibot.local using putty or cygwin ssh or ...
    • login as user 'pi' with password 'raspberry'
    • sudo raspi-config
    • Get a network connection for the Pi using one of the following methods:
      • Bridge your main connection on the windows 10 machine (Ethernet or WiFi) to the NDIS Ethernet connection for the PiBot USB OTG network (select both connections in the Network Connections then right-click and choose Bridge Connections); configure the DNS server as 8.8.8.8
      • Connect a USB Ethernet dongle to the Pi OTG connector
      • Configure /etc/wpa_supplicant/wpa_supplicant.conf on the Pi to include your local WiFi network
    • Update the OS on the Pi:
    • sudo apt-get update
    • sudo apt-get upgrade
    • Install any needed packages
      • sudo apt-get install subversion ant mercurial
      • curl -s get.pi4j.com | sudo bash
    • Install Oracle DIO (see https://www.raspberrypi.org/forums/viewtopic.php?f=81&t=99212)
      • hg clone http://hg.openjdk.java.net/dio/dev
      • export PI_TOOLS=/usr
      • export JAVA_HOME=/usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/
      • cd dev
      • make
      • cd ..
      • sudo mv ~/dev /opt/dio
      • sudo chown -R root.root /opt/dio
      • create /etc/ld.so.conf.d/libdio.conf containing /opt/dio/build/so
      • sudo ldconfig (to refresh the library path cache)
    • Install joystick support:
      • sudo apt-get install libjinput-java libjinput-jni libjinput-java-doc jstest-gtk
      • append uinput to end of /etc/modules
    • Do WiFi Configuration using hostapd and dnsmasq (see documentation)
    • Once card is configured, shutdown Pi
  • Make master image:
    • Place uSD card in PC
    • launch cygwin as adminstrator
    • dd bs=512 ibs=1M count=10491904 if=/dev/sdb of=pibot_x.img
      • (NOTE: 10491904 is one block past the last block of the /root partition on my setup - could be different in your setup depending on the amount of space you allocated when resizing the /root partition above.
    • check the partitions in fdisk first.
      • On the Pi:
        • sudo fdisk /dev/mmcblk0
        • p (print partition table)
        • note End block of /dev/mmcblk0p2
        • Use that block number + 1 as the count
      • Under cygwin (run cygwin as Administrator):
        • fdisk /dev/sdb
        • ...rest is as above