diff --git a/headless-scripts/Readme.md b/headless-scripts/Readme.md index 4535a2b..065b85a 100644 --- a/headless-scripts/Readme.md +++ b/headless-scripts/Readme.md @@ -1,6 +1,6 @@ # Flashable image to get started more quick -# This is a WORK IN PROGRESS, NOT CURRENTLY WORKING. +# This is a WORK IN PROGRESS, SHOULD BE WORKING. For now the image creation work is at: * Modified pi-gen [rtgoodwin's fork of pi-gen](https://github.com/rtgoodwin/pi-gen) in (whatever current branch I'm working at the time). @@ -10,25 +10,46 @@ For now the image creation work is at: * Assumes your Pi comes up on Wifi, with internet access. (But so does most of this guide.) USB networking still enabled for troubleshooting. * I moved all script downloads and variable creation to the initial setup. At this point, I'm designing it to pull the setup scripts dynamically, since development is still ongoing. If/when we reach a good frozen state, we can generate an image that is ready to run. I think it'll also be pretty tricky to do some of the remounting and creating the backing files etc. on the image creation side. Open to suggestions/contributions there though! -* The archive server might not be reachable during the first boot during setup, ex. if building the card somewhere away from the archive server location. So I no longer fail on it not being reachable. + * At the very least we could bake in stable first stage headlessBuild scripts for Mac/Linux/Windows. + ## Building the Pi -WORK IN PROGRESS BUT MOSTLY RIGHT +WORK IN PROGRESS BUT MOSTLY RIGHT. And still shorter than the full process! -1. Flash the image from: XXXXXXXX -1. Mount the card again, and in the `boot` directory create a `teslausb_setup_variables.conf` file to export the same environment varibles normally needed for setup (including archive, Wifi, and push notifications (if desired).) See the main README for these instructions for now. +1. Flash the image from [here](https://www.dropbox.com/s/zfzjbmx4744q810/image_2018-10-21-teslausb_headless-lite.zip?dl=0) +1. Mount the card again, and in the `boot` directory create a `teslausb_setup_variables.conf` file to export the same environment varibles normally needed for setup (including archive, Wifi, and push notifications (if desired).) See the main README for all the variables. 1. Run the `setup-piForHeadlessBuild.sh` (note: **not** `setup-piForHeadlessSetup.sh`): `curl https://raw.githubusercontent.com/rtgoodwin/teslausb/headless-patch/headless-scripts/setup-piForHeadlessBuild.sh -o setup-piForHeadlessBuild.sh` `chmod +x setup-piForHeadlessBuild.sh` `./setup-piForHeadlessBuild.sh .` 1. If all goes well, put card into Pi and boot. +1. Wait for the the Pi to come up as a CAM USB drive, if you have it plugged into your computer. If not, give it a few minutes until the LED starts pulsing steadily which means the archive loop is running and you're good to go. +## What happens under the covers + +When the Pi boots the first time: * A `/boot/teslausb-headless-setup.log` file will be created and stages logged. This takes the place of the "STOP" commands * Marker files will be created in `boot` like `TESLA_USB_SETUP_STARTED` and `TESLA_USB_SETUP_FINISHED` to track progress. May use a progress system so the script can pick back up if needed. (This is probably useful for the general/old way of setup too.) * The Pi LED will flash patterns as it gets to each stage (labeled in the setup-teslausb-headless script). * 10 flashes means setup failed! - * After the final stage and reboot the LED will go back to normal + * After the final stage and reboot the LED will go back to normal. Remember, the step to remount the filesystem takes a few minutes. + +At this point the next boot should start the Dashcam/music drives like normal. If you're watching the LED it will start flashing every 1 second, which is the archive loop running. + +> NOTE: Don't delete the `TESLAUSB_SETUP_FINISHED` file. This is how the system knows setup is complete. + + + + + +### Image creation TODOs +1. Patch the hostname to teslausb +1. Make it so if someone deletes the `TESLAUSB_SETUP_FINISHED` file it's handled gracefully. +1. I still see some errors during pi-gen about locale, may need to be fixed? stage0/01-locale/debconf en_US.UTF-8 +1. Cache the remount packages? Might mess with first boot like `rsyslog` +1. Any other steps to move into the base image? +1. Aspirational TODO: Remove more packages and set services to stopped to make the boot process faster? #### Modifications to pi-gen builder from master @@ -46,11 +67,4 @@ Built image on a Raspi running Stretch, for maximum Pi-ception. 1. (Yes at this point you could suggest that just putting the end state files in place instead of patching would be good, but why not be idiomatic? :) ) 1. Add a script to flash LEDs 1. Run `sudo ./build.sh` from the `pi-gen` directory. -1. If you get a failure, it's almost certainly after stage2, so you can add SKIP files in stage2-stage5 present) and rerun `sudo CLEAN=1 ./build.sh` - -### Image creation TODOs -1. TODO: Patch the hostname to teslausb -1. TODO: I still see some errors during pi-gen about locale, may need to be fixed? stage0/01-locale/debconf en_US.UTF-8 -1. TODO: Cache the remount packages? Might mess with first boot like `rsyslog` -1. Aspirational TODO: Remove more packages etc to make the boot process faster? OR start from `stage1` if we don't need all of `stage2` - +1. If you get a failure, it's almost certainly after stage2, so you can add SKIP files in stage2-stage5 present) and rerun `sudo CLEAN=1 ./build.sh` \ No newline at end of file