#include "conf-files.h"
#include "conf-parser.h"
#include "constants.h"
-#include "creds-util.h"
#include "cryptsetup-util.h"
#include "device-util.h"
#include "devnum-util.h"
static ImagePolicy *arg_image_policy = NULL;
static Architecture arg_architecture = _ARCHITECTURE_INVALID;
static int arg_offline = -1;
-static bool arg_oem = false;
STATIC_DESTRUCTOR_REGISTER(arg_root, freep);
STATIC_DESTRUCTOR_REGISTER(arg_image, freep);
bool dropped;
bool factory_reset;
- int oem;
int32_t priority;
uint32_t weight, padding_weight;
.no_auto = -1,
.read_only = -1,
.growfs = -1,
- .oem = -1,
};
return p;
p->verity = VERITY_OFF;
}
-static bool partition_is_oem(const Partition *p) {
- return p->oem > 0 || (p->oem < 0 && !p->factory_reset);
-}
-
static bool partition_exclude(const Partition *p) {
assert(p);
- if (arg_oem && !partition_is_oem(p))
- return true;
-
if (arg_filter_partitions_type == FILTER_PARTITIONS_NONE)
return false;
{ "Partition", "GrowFileSystem", config_parse_tristate, 0, &p->growfs },
{ "Partition", "SplitName", config_parse_string, 0, &p->split_name_format },
{ "Partition", "Minimize", config_parse_minimize, 0, &p->minimize },
- { "Partition", "OEM", config_parse_tristate, 0, &p->oem },
{}
};
int r;
" --sector-size=SIZE Set the logical sector size for the image\n"
" --architecture=ARCH Set the generic architecture for the image\n"
" --offline=BOOL Whether to build the image offline\n"
- " --oem=BOOL Whether to only include OEM partitions\n"
"\nSee the %s for details.\n",
program_invocation_short_name,
ansi_highlight(),
return 0;
}
-static int parse_credentials(void) {
- int r;
-
- r = read_credential_bool("repart.oem");
- if (r < 0)
- return log_error_errno(r, "Failed to read repart.oem credential: %m");
- arg_oem = r;
-
- return 0;
-}
-
static int parse_argv(int argc, char *argv[]) {
enum {
ARG_SKIP_PARTITIONS,
ARG_ARCHITECTURE,
ARG_OFFLINE,
- ARG_OEM,
};
static const struct option options[] = {
{ "sector-size", required_argument, NULL, ARG_SECTOR_SIZE },
{ "architecture", required_argument, NULL, ARG_ARCHITECTURE },
{ "offline", required_argument, NULL, ARG_OFFLINE },
- { "oem", required_argument, NULL, ARG_OEM },
{}
};
break;
- case ARG_OEM:
- r = parse_boolean_argument("--oem=", optarg, &arg_oem);
- if (r < 0)
- return r;
-
- break;
-
case '?':
return -EINVAL;
log_parse_environment();
log_open();
- r = parse_credentials();
- if (r < 0)
- return r;
-
r = parse_argv(argc, argv);
if (r <= 0)
return r;
Type=home
Label=home-first
Label=home-always-too-long-xxxxxxxxxxxxxx-%v
-# Test that OEM=yes makes sure that a partition is OEM even if FactoryReset=yes is set.
-FactoryReset=yes
-OEM=yes
EOF
tee "$defs/swap.conf" <<EOF
Type=swap
SizeMaxBytes=64M
PaddingMinBytes=92M
-# No OEM=yes here so this should not be considered an OEM partition since FactoryReset=yes.
-FactoryReset=yes
EOF
systemd-repart --offline="$OFFLINE" \
$imgs/zzz1 : start= 2048, size= 1775576, type=933AC7E1-2EB4-4F13-B844-0E14E2AEF915, uuid=4980595D-D74A-483A-AA9E-9903879A0EE5, name=\"home-first\", attrs=\"GUID:59\"
$imgs/zzz2 : start= 1777624, size= 131072, type=0657FD6D-A4AB-43C4-84E5-0933C84B4F4F, uuid=78C92DB8-3D2B-4823-B0DC-792B78F66F1E, name=\"swap\""
- systemd-repart --offline="$OFFLINE" \
- --definitions="$defs" \
- --dry-run=no \
- --seed="$seed" \
- --empty=force \
- --include-partitions=home,swap \
- --oem=yes \
- --offline="$OFFLINE" \
- "$imgs/zzz"
-
- output=$(sfdisk -d "$imgs/zzz" | grep -v -e 'sector-size' -e '^$')
-
- assert_eq "$output" "label: gpt
-label-id: 1D2CE291-7CCE-4F7D-BC83-FDB49AD74EBD
-device: $imgs/zzz
-unit: sectors
-first-lba: 2048
-last-lba: 2097118
-$imgs/zzz1 : start= 2048, size= 2095064, type=933AC7E1-2EB4-4F13-B844-0E14E2AEF915, uuid=4980595D-D74A-483A-AA9E-9903879A0EE5, name=\"home-first\", attrs=\"GUID:59\""
-
systemd-repart --offline="$OFFLINE" \
--definitions="$defs" \
--dry-run=no \