Update readme

Ready for testing and feedback.
This commit is contained in:
Richard Goodwin
2018-10-21 15:21:18 -05:00
parent fe764b00f7
commit 4f9136cf9b

View File

@@ -1,6 +1,6 @@
# Flashable image to get started more quick # 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: 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). * 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. * 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! * 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 ## 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. 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 these instructions for now. 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`): 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` `curl https://raw.githubusercontent.com/rtgoodwin/teslausb/headless-patch/headless-scripts/setup-piForHeadlessBuild.sh -o setup-piForHeadlessBuild.sh`
`chmod +x setup-piForHeadlessBuild.sh` `chmod +x setup-piForHeadlessBuild.sh`
`./setup-piForHeadlessBuild.sh .` `./setup-piForHeadlessBuild.sh .`
1. If all goes well, put card into Pi and boot. 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 * 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.) * 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). * The Pi LED will flash patterns as it gets to each stage (labeled in the setup-teslausb-headless script).
* 10 flashes means setup failed! * 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 #### 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. (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. Add a script to flash LEDs
1. Run `sudo ./build.sh` from the `pi-gen` directory. 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` 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`