if not p.is_file():
die(f"Initrd {p} is not a file")
+ # For unprivileged builds we need the userxattr OverlayFS mount option, which is only available in Linux v5.11 and later.
+ with prepend_to_environ_path(args.extra_search_paths):
+ if (args.build_script is not None or args.base_image is not None) and GenericVersion(platform.release()) < GenericVersion("5.11") and os.geteuid() != 0:
+ die("This unprivileged build configuration requires at least Linux v5.11")
+
return MkosiConfig(**vars(args))
import collections
import contextlib
import os
+import platform
import stat
from collections.abc import Iterator, Sequence
from pathlib import Path
from typing import Callable, Deque, Optional, TypeVar, Union, cast
from mkosi.log import complete_step
+from mkosi.manifest import GenericVersion
from mkosi.run import run
from mkosi.types import PathString
workdir: Path,
where: Path
) -> Iterator[Path]:
- options = [f"lowerdir={lower}", f"upperdir={upper}", f"workdir={workdir}", "userxattr"]
+ options = [f"lowerdir={lower}", f"upperdir={upper}", f"workdir={workdir}"]
+
+ # userxattr is only supported on overlayfs since kernel 5.11
+ if GenericVersion(platform.release()) >= GenericVersion("5.11"):
+ options.append("userxattr")
try:
with mount("overlay", where, options=options, type="overlay"):