From 80c988236fb476985826e85c5fbf6b101a60c39e Mon Sep 17 00:00:00 2001 From: Marian Stramm Date: Mon, 3 Jan 2022 01:39:12 +0100 Subject: [PATCH] pmb.install: add support for creating btrfs root filesystem (MR 2155) in preparation for reversible upgrades, this change adds the option of creating a btrfs root filesystem --- pmb/config/__init__.py | 3 ++- pmb/install/format.py | 5 +++++ pmb/parse/arguments.py | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/pmb/config/__init__.py b/pmb/config/__init__.py index 4e246261..ea5264be 100644 --- a/pmb/config/__init__.py +++ b/pmb/config/__init__.py @@ -164,7 +164,8 @@ locales = [ ] # Supported filesystems and their fstools packages -filesystems = {"ext2": "e2fsprogs", +filesystems = {"btrfs": "btrfs-progs", + "ext2": "e2fsprogs", "ext4": "e2fsprogs", "f2fs": "f2fs-tools", "fat16": "dosfstools", diff --git a/pmb/install/format.py b/pmb/install/format.py index da1c31ad..d9bdbaae 100644 --- a/pmb/install/format.py +++ b/pmb/install/format.py @@ -35,6 +35,9 @@ def format_and_mount_boot(args, boot_label): elif filesystem == "ext2": pmb.chroot.root(args, ["mkfs.ext2", "-F", "-q", "-L", boot_label, device]) + elif filesystem == "btrfs": + pmb.chroot.root(args, ["mkfs.btrfs", "-f", "-q", "-L", boot_label, + device]) else: raise RuntimeError("Filesystem " + filesystem + " is not supported!") pmb.chroot.root(args, ["mkdir", "-p", mountpoint]) @@ -106,6 +109,8 @@ def format_and_mount_root(args, device, root_label, sdcard): mkfs_root_args = mkfs_root_args + ["-N", "100000"] elif filesystem == "f2fs": mkfs_root_args = ["mkfs.f2fs", "-f", "-l", root_label] + elif filesystem == "btrfs": + mkfs_root_args = ["mkfs.btrfs", "-f", "-L", root_label] else: raise RuntimeError(f"Don't know how to format {filesystem}!") diff --git a/pmb/parse/arguments.py b/pmb/parse/arguments.py index 6d07aa0d..f71a31e2 100644 --- a/pmb/parse/arguments.py +++ b/pmb/parse/arguments.py @@ -162,7 +162,7 @@ def arguments_install(subparser): # Other group = ret.add_argument_group("other optional arguments") group.add_argument("--filesystem", help="root filesystem type", - choices=["ext4", "f2fs"]) + choices=["ext4", "f2fs", "btrfs"]) def arguments_export(subparser):