Kevin Windrem avatar image
Kevin Windrem suggested

Raspberry Pi 4 multiple versions on SD card

Because we do not yet have software update for Raspberry Pi 4, I have created a process that mimics the Venus software update process.

You will need 'gparted'. I'm running a version on Ubuntu under Parallels on my Mac.

Venus maintains two root partitions, the active one and a backup one. When a software update occurs, Venus stores the update in the backup root partition. If the update is successful, Venus swaps the active and backup partitions and reboots.

The boot and data portions are not touched by a software update and get "reused" when active and backup root file systems are swapped.

The current Venus version for Raspberry Pi 4 does not have a software update process and therefore doesn't swap backup and active root partitions.

I created an SD card with multiple "backup" root partitions and manually switch between them.

Start with an already running and configured Venus. This will be your "base version". If the SD card isn't large enough,

If you don't have enough space on the card for multiple root portions, you'll need to copy partitions to a larger card. See below.

If don't have a working version, flash a base version for your testing onto an SD card. Then start this SD card on a Pi and allow it to create the partitions Venus expects. Configure the system as you normally would. Shutdown the PI.

Open the card with the base version on it in gparted, unmount all partitions and run Check on all partitions.

Resize the root and data partitions to around 3 GB. (A large root partition uses about 1.2 GB currently.)

Apply the changes.

The third partition contains the unused backup root FS. Delete it and apply the change. You must delete the third partition because an SD card contains at most 4 partitions. This space will remain unallocated.

In the large unallocated space at the end of the card, create an extended partition.

Copy the root partition and paste it into the extended partition. Apply the change.

It's a good idea to label the root partitions with the Venus version to avoid confusion later.

Leave this card open in gparted.

Flash another version to another SD card and run them in a PI, allowing Venus to configure the file system. You do NOT need to configure these versions.

Open this card in gparted and run Check on all partitions.

Resize the root partition as described above. Apply the changes.

Copy this partition and switch back to the base card.

Paste into the unused space at the end of the card. Apply the change.

Label this partition.

Repeat for additional test versions or come back to later when Victron rolls out new versions

You now have a card that will boot to the base version but contains images for other versions.

To switch versions, open the card in gparted and copy the partition for the Venus version you wish to test and paste it onto the main root partition (second partition on the card). Apply the changes.

The Pi will now boot to that version.

You may also wish to copy the boot (1st) partition from your main card to others in addition to the data partition.

This should also work for other versions of Pi modules when the built-in software update isn't appropriate or isn't available.

Alternative procedure:

Flash a new version of Venus on a blank SD card. Place in a Pi and allow to boot, creating the 4-partition structure on the PI and initializing all settings.

Open your "main" SD card and the new SD card in gparted.

Copy the data partition from the main card to the card with the new version.

Repeat for the boot partition if desired.

What this doesn't do is keep any configuration changes you make after making the SD cards consistent between versions.

Venus GX - VGXRaspberry Pi
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

No Comments

Your Opinion Counts

Share your great idea, or help out by voting for other people's ideas.