diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2014-04-19 13:02:13 +0200 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2014-04-19 13:14:51 +0200 |
commit | b03a2f9e9022f3e56bcf935eaa8d385bd1e5b374 (patch) | |
tree | 81b7e1e250d4c4e631aae32b13743018c76b4eaf /nixos | |
parent | 9f1c9404da858eb6347493190e40e59c7f81f2c8 (diff) | |
download | nixlib-b03a2f9e9022f3e56bcf935eaa8d385bd1e5b374.tar nixlib-b03a2f9e9022f3e56bcf935eaa8d385bd1e5b374.tar.gz nixlib-b03a2f9e9022f3e56bcf935eaa8d385bd1e5b374.tar.bz2 nixlib-b03a2f9e9022f3e56bcf935eaa8d385bd1e5b374.tar.lz nixlib-b03a2f9e9022f3e56bcf935eaa8d385bd1e5b374.tar.xz nixlib-b03a2f9e9022f3e56bcf935eaa8d385bd1e5b374.tar.zst nixlib-b03a2f9e9022f3e56bcf935eaa8d385bd1e5b374.zip |
Set personality when running a 32-bit container on a 64-bit host
Diffstat (limited to 'nixos')
-rw-r--r-- | nixos/modules/system/activation/top-level.nix | 1 | ||||
-rw-r--r-- | nixos/modules/virtualisation/containers.nix | 13 |
2 files changed, 11 insertions, 3 deletions
diff --git a/nixos/modules/system/activation/top-level.nix b/nixos/modules/system/activation/top-level.nix index a4a0d14df6ab..7cdaecce198e 100644 --- a/nixos/modules/system/activation/top-level.nix +++ b/nixos/modules/system/activation/top-level.nix @@ -68,6 +68,7 @@ let echo -n "$configurationName" > $out/configuration-name echo -n "systemd ${toString config.systemd.package.interfaceVersion}" > $out/init-interface-version echo -n "$nixosVersion" > $out/nixos-version + echo -n "$system" > $out/system mkdir $out/fine-tune childCount=0 diff --git a/nixos/modules/virtualisation/containers.nix b/nixos/modules/virtualisation/containers.nix index 4ce113f10ee8..4fca872d72eb 100644 --- a/nixos/modules/virtualisation/containers.nix +++ b/nixos/modules/virtualisation/containers.nix @@ -176,7 +176,6 @@ in "/nix/var/nix/profiles/per-container/$INSTANCE" \ "/nix/var/nix/gcroots/per-container/$INSTANCE" - SYSTEM_PATH=/nix/var/nix/profiles/system if [ -f "/etc/containers/$INSTANCE.conf" ]; then . "/etc/containers/$INSTANCE.conf" fi @@ -212,14 +211,22 @@ in extraFlags="--capability=CAP_NET_ADMIN" fi + # If the host is 64-bit and the container is 32-bit, add a + # --personality flag. + ${optionalString (config.nixpkgs.system == "x86_64-linux") '' + if [ "$(< ''${SYSTEM_PATH:-/nix/var/nix/profiles/per-container/$INSTANCE/system}/system)" = i686-linux ]; then + extraFlags+=" --personality=x86" + fi + ''} + exec $runInNetNs ${config.systemd.package}/bin/systemd-nspawn \ - -M "$INSTANCE" -D "/var/lib/containers/$INSTANCE" $extraFlags \ + -M "$INSTANCE" -D "$root" $extraFlags \ --bind-ro=/nix/store \ --bind-ro=/nix/var/nix/db \ --bind-ro=/nix/var/nix/daemon-socket \ --bind="/nix/var/nix/profiles/per-container/$INSTANCE:/nix/var/nix/profiles" \ --bind="/nix/var/nix/gcroots/per-container/$INSTANCE:/nix/var/nix/gcroots" \ - "$SYSTEM_PATH/init" + "''${SYSTEM_PATH:-/nix/var/nix/profiles/system}/init" ''; postStart = |