diff --git a/os/image/README.md b/os/image/README.md index 8af3c7182..c61958df5 100644 --- a/os/image/README.md +++ b/os/image/README.md @@ -132,3 +132,25 @@ Here is a simplified "high level" sequence of what happens: - `DATA` to `/data` - readwrite - `DATA/home` to `/home` 6. systemd executes `mount-firmware.service` and `/boot/firmware` becomes available + +## Create full disk image + +Besides Rauc updates, we need full disk images. + +Proceed as such: + +1. Make a new disk +2. Setup PlanktoScope as usual on one of the slot +3. Create a bundle +4. Install bundle to B +5. Restart on B +6. Run preimage.js +7. Install bundle to A +8. Restart on A +9. Run preimage.js +10. Poweroff +11. Boot to sdcard +12. Cleanup /data + * keep `/data/home/pi` folder (nothing inside) + * keep `/data/rauc` +13. `sudo dd bs=4M if=/dev/nvme0n1 status=progress conv=fsync | xz > PlanktoScopeOS-2026.1.0.img.xz` diff --git a/os/rauc/.gitignore b/os/rauc/.gitignore index 1c4f07ce8..6b63b9b2a 100644 --- a/os/rauc/.gitignore +++ b/os/rauc/.gitignore @@ -3,6 +3,5 @@ *.sha256 *.raucb *.log -planktoscope-rauc-key.pem temp-dir diff --git a/os/rauc/README.md b/os/rauc/README.md index f5237de22..c77ec5c5e 100644 --- a/os/rauc/README.md +++ b/os/rauc/README.md @@ -10,7 +10,7 @@ A bundle is an update that will be installed on a slot. ```sh cd os/rauc -sudo ./rauc.js create-bundle /dev/device B +sudo NODE_DEBUG=execa ./rauc.js create-bundle /dev/device B ``` This will create a bundle from partitions `FIRMWARE_B` and `ROOT_B` on device `/dev/device`. @@ -36,6 +36,4 @@ openssl req -x509 -newkey rsa:2048 -nodes \ -days 7305 \ -subj "/C=FR/O=PlanktoScope/CN=PlanktoScope RAUC" sudo cp planktoscope-rauc-cert.pem /etc/rauc/cert.pem -# ⚠️ keep planktoscope-rauc-key.pem private and use it to generate bundle with -# rauc --key demo.key.pem bundle ``` diff --git a/os/rauc/planktoscope-rauc-key.pem b/os/rauc/planktoscope-rauc-key.pem new file mode 100644 index 000000000..24a15f55b --- /dev/null +++ b/os/rauc/planktoscope-rauc-key.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDOzSEr1pvKa9hV +qIiRkw3XCTRXt9QILpIynHk7wuduqA85fuhOOnYSsA8YJYJdolsimsSB0O5dpRs3 +MROqgb/aWEkzEmJmFH0ZIIt9OvoIxxdsPLc+eU3dGuGw6bCRcevM7QTL8kytoXwH +yMkcnLR4D/wm6WprmAiMlcxfTAiFBcCGtdQ2K+HvMF/CL8hJ5jzfb03cp+QB4DT5 +T9jixyiEqeqgc5KT1D9MSRFhbwMra6jokyGSayieFjUZ3Pnn6sdyRayJaeu1nZpH +MsRzXEfpgMgUZXVQuik60UMJHn9I9RadGuNuSqY8Gi2avghdO4o8QfpzRAQfr8mH +8enYYE3zAgMBAAECggEABq6HC1kQSI6Ke14KJ5X2RQPlno3wemEy1RLMMfueqash +bsykad6msPziR/fySd80jZ4tijo7cWgjxHk/9urhTYc7ujw2VLEFx7mO+DlfGciA +/7zIeOrHcsTrFOHAFDr3kPP5izNledi1XrUElnmTtStjDMjO6PINGKnAZDXbMp0J +hvHcf64tYspWYo9jmVr79GaD0RIEGEcNtZPRzyIbUSr9s/WUFuNezh6thrI9EXvV +kQLZ4W15uoiGPZl1fyZ7a3TQPFpKwne4/5kpBlLTrV2CSCkAOQCaOznyQb8qfrEf +y3BX9IFpHQhomgcjuctC1b0QsVGn3U9LLvjM5I2VyQKBgQD9VCtOuxT+vRabpoEb +V5C6areZySPsHyH4LsAzOR4PmJrb/GNKaFwNzyP2EipxOegKiZAI4g8l05yl1YIu +OoqqURaOZPxr+QgujbdDGaNUG+LepSdSm0jw6LZs0+YMyLQH01ULWJIDm//AaNqR +XYAdXCnLiiwJ+NdedwOWfcqreQKBgQDQ+11u/SdSTeFJKwDOWFx78QDw4JPYqKJP +0RYJxXoigA9vfFCX59UUWpIEeau5VD0RqldQgn8NXk03uO+byejmjUxpgG1dT1rp +Hd5S7YmPfuPkwnJBqHeJ8nQfFercyXFrFevhDKuQYHK5yn4AWKdXPBv/9LfXdVlb +ItNhwiK9ywKBgEeJnE04YX5qUVcVFwJsoO8zsbNY7K8CP6qBMT+F0qpe0uRqinN5 +sv0nUKVtjdS5oIBRRn5rsBFjh6oA+Ckr2PqtuWvusqWfBqN225i0Rb47vb5X7xnR +xjBZ1yI2WJGln8lR8YMpuNoSFI/2TDqep84it57F3xfV0KPZggbecPwpAoGBAJs5 +ymnRYe6xaGA3r+6VFYT+O2uv9EFe6MkOjicN5q1Pn6d4mEhs7AmlSIZIdbRADOhd +NWPYulSMsiBsnpWCARuW4qYOva0sb2NuSyAfziim4NGfWMzKPJhbXcNlPUFn43Xe +H4nXJmwkJ7M25CaPsySJwmZ5OECyqn+WO5qGX9XHAoGAey9RNN9h2atGF6+mXJts +SFBAz3jGgweQWgFeAew2PDUjN2+kwfpxlu7a7hAZTdFpCWfcv4EZBG8CILiOps3y +I4dLLgy004xTJGAVV/eYEBoa2NR4pz/RFlQ5VzGbeg+BbbuS2oiOjRuhlba9BmO3 +agTBuGPKjhbeHZe+x8yPqNk= +-----END PRIVATE KEY-----