# SPDX-FileCopyrightText: no # SPDX-License-Identifier: CC0-1.0 # # Unsquash / unpack a filesystem. Multiple sources are supported, and # they may be squashed or plain filesystems. # # Configuration: # # from globalstorage: rootMountPoint # from job.configuration: the path to where to mount the source image(s) # for copying an ordered list of unpack mappings for image file <-> # target dir relative to rootMountPoint. --- # Each list item is unpacked, in order, to the target system. # # Each list item has the following **mandatory** attributes: # - *source* path relative to the live / intstalling system to the image # - *sourcefs* the type of the source files; valid entries are # - `ext4` (copies the filesystem contents) # - `squashfs` (unsquashes) # - `file` (copies a file or directory) # - (may be others if mount supports it) # - *destination* path relative to rootMountPoint (so in the target # system) where this filesystem is unpacked. It may be an # empty string, which effectively is / (the root) of the target # system. # # Each list item **optionally** can include the following attributes: # - *exclude* is a list of values that is expanded into --exclude # arguments for rsync (each entry in exclude gets its own --exclude). # - *excludeFile* is a single file that is passed to rsync as an # --exclude-file argument. This should be a full pathname # inside the **host** filesystem. # - *weight* is useful when the entries take wildly different # times to unpack (e.g. with a squashfs, and one single file) # and the total weight of this module should be distributed # differently between the entries. (This is only relevant when # there is more than one entry; by default all the entries # have the same weight, 1) # # EXAMPLES # # Usually you list a filesystem image to unpack; you can use # squashfs or an ext4 image. An empty destination is equivalent to "/", # the root of the target system. The destination directory must exist # in the target system. # # - source: "/path/to/filesystem.sqfs" # sourcefs: "squashfs" # destination: "" # # Multiple entries are unpacked in-order; if there is more than one # item then only the first must exist beforehand -- it's ok to # create directories with one unsquash and then to use those # directories as a target from a second unsquash. # # - source: "/path/to/another/filesystem.img" # sourcefs: "ext4" # destination: "" # - source: "/path/to/another/filesystem2.img" # sourcefs: "ext4" # destination: "/usr/lib/extra" # # You can list filesystem source paths relative to the Calamares run # directory, if you use -d (this is only useful for testing, though). # # - source: ./example.sqfs # sourcefs: squashfs # destination: "" # # You can list individual files (copied one-by-one), or directories # (the files inside this directory are copied directly to the destination, # so no "dummycpp/" subdirectory is created in this example). # Do note that the target directory must exist already (e.g. from # extracting some other filesystem). # # - source: ../CHANGES # sourcefs: file # destination: "/tmp/derp" # - source: ../src/modules/dummycpp # sourcefs: file # destination: "/tmp/derp" # # The *destination* and *source* are handed off to rsync, so the semantics # of trailing slashes apply. In order to *rename* a file as it is # copied, specify one single file (e.g. CHANGES) and a full pathname # for its destination name, as in the example below. unpack: - source: ../CHANGES sourcefs: file destination: "/tmp/changes.txt" weight: 1 # Single file - source: src/qml/calamares/slideshow sourcefs: file destination: "/tmp/slideshow/" exclude: [ "*.qmlc", "qmldir" ] weight: 5 # Lots of files # excludeFile: /etc/calamares/modules/unpackfs/exclude-list.txt