Creating a backing store


Overview

SystemRescueCd is based on a read-only compressed filesystem. All the files of the system are stored in a large squashfs filesystem image file. As a consequence, the changes you make on the system are not saved, and they are lost when you reboot (except what you do on the other filesystems that you may have mounted).

The main filesystem in SystemRescueCd is aufs in old versions and overlayfs in version 6.x and more recent. So changes on system files are allowed and stored in memory. It allows you to change a system file, for instance you can replace a program with your own version, or you can make configuration changes in applications such as Firefox.

Users who want to keep their changes in the system files can create a customized SystemRescueCd media. It is very convenient when you want to add new programs to the system, but it is not comfortable if you often have to change files in the system. You do not want to make a new customized version everyday.

That is why SystemRescueCd provides the backing-store feature. A backing-store is a loopback filesystem stored on an USB-stick or on an hard drive, which contains all the files of the system that have been changed. The modifications are saved to the backing-store every time you edit a file, when you create a new directory, or when the system writes or deletes a file for any other reason. As a consequence, it allows you to keep your configuration changes: you can add your bookmarks and extensions to Firefox, and they will still be there when you reboot SystemRescueCd, as long as the same backing-store is loaded.

Backing stores are not compatible between SystemRescueCd-5.x and SystemRescueCd-6.x as they use different union filesystems (aufs vs overlayfs).

Using a backing store with SystemRescueCd-6.x

SystemRescueCd-6.x uses overlayfs instead of aufs. You have to use the cow_xxxx boot parameters in order to persist changes.

You need to have a linux filesystem where SystemRescueCd is allowed to store its changes. It can be any linux filesystem such as ext4, xfs or btrfs. You can either create a dedicated filesystem to store these changes or you can reuse an existing filesystem as changes will be isolated in a directory. You need provide SystemRescueCd an option on the boot command line (or in the boot loader configuration file) so it can identify the filesystem where to store these changes. The recommended method is to specify the filesystem label but this is not the only way.

You then need to boot SystemRescueCd with option cow_label=xxxx where xxxx is the label of a linux filesystem where you want changes to be stored. For example you use cow_label=boot if your /boot filesystem is labelled boot. This is similar to cow_device=/dev/disk/by-label/boot.

Changes will be stored in a directory prefixed with persistent. You can override this default using the cow_directory=xxxx option.

You can read archiso README.bootparams if you want more details about the boot options supported in SystemRescueCd-6.x.

Using a backing store with SystemRescueCd-5.x

What is a backing store with SystemRescueCd-5.x

A backing-store is a mere linux loopback filesystem. You can create a new backing store or grow an existing one using sysresccd-backstore from SystemRescueCd. The system automatically loads backing-stores named sysrcd.bs which are saved at the root of a writeable filesystem. In other words, you do not have to specify any boot option if you create a backing-store in the default location, and the system scans all the hard-disks partitions and usb-sticks at boot time. You can disable this behaviour by adding the following boot option: backstore=off. Unfortunately backing-stores cannot be copied on a cdrom / dvdrom, since discs are mounted read-only, and backing-stores can only be loaded in the early stage of the boot process.

The backing-store file does not have to be on the same partition as sysresccd. It means you can have the main SystemRescueCd files installed on an USB-stick, and you can have a backing-store saved on another USB-stick. Anyway, the most convenient way o use it is to save both the main SystemRescueCd files and the backing-store on the same USB-stick.

Creating a backing store with SystemRescueCd-5.x

Here is how to create and use a backing store:

  • boot SystemRescueCd with option “backstore=off”
  • mount the writable partition where you want the backing-store to be saved:
    • mkdir /mnt/backstore
    • mount -o rw /dev/sdaX /mnt/backstore
  • create the backing-store (you have to specify a size in mega-bytes)
    • sysresccd-backstore create /mnt/backstore/sysrcd.bs 256
  • unmount the writeable partition and reboot:
    • cd /root ; umount /mnt/backstore
    • reboot
  • when sysresccd starts again, it should automatically mount the backing-store and use it
  • you can check that the backing-store file is mounted on /mnt/memory
  • you can install Firefox extensions and change any file of the system
  • when you reboot sysresccd again, you customizations must still be there

The default place where to save the backing-store is the root of a partition in a file named sysrcd.bs. You are free to save the backing-store in an alternate location or with another name. In that case the file will not be automatically found by SystemRescueCd unless you specify the path using the following boot option: backstore=/path/to/mysysrcd.bs. By default SystemRescueCd scans all removable disks (eg: usb sticks) at boot time. If your backing-store file is on an hard-disk partition, you will have to boot with the option backstore=alldev so that it scans all block devices, not just removable ones. You can specify two options in the same time, for instance backstore=alldev,/path/to/mysysrcd.bs will search any file named /path/to/mysysrcd.bs on any block device of your computer.

Growing an existing backing store with SystemRescueCd-5.x

You can also grow an existing backing-store with no data loss:

  • boot SystemRescueCd with option “backstore=off”
  • mount the writeable partition where you want the backing-store to be saved:
    • mkdir /mnt/backstore
    • mount -o rw /dev/sdaX /mnt/backstore
  • use the sysresccd-backstore script and specify the new size in mega-bytes:
    • sysresccd-backstore grow /mnt/backstore/sysrcd.bs 512
  • umount the writeable partition and reboot:
    • cd /root ; umount /mnt/backstore
    • reboot

Documentation
Manual (EN)
LVM Guide
Disk partitioning
Networking

Project
Git repository
Bug reports