if (chdir (deploy_path) < 0)
err (EXIT_FAILURE, "failed to chdir to deploy_path");
- /* In the systemd case, this is handled by ostree-system-generator */
+ bool mount_var = true;
+ /* In the systemd case, this is handled by ostree-system-generator by default */
#ifndef HAVE_SYSTEMD_AND_LIBMOUNT
+ /* file in /run can override that behaviour */
+ if (lstat (INITRAMFS_MOUNT_VAR, &stbuf) < 0)
+ mount_var = false;
+#endif
+
/* Link to the deployment's /var */
- if (mount ("../../var", "var", NULL, MS_MGC_VAL|MS_BIND, NULL) < 0)
+ if (mount_var && mount ("../../var", "var", NULL, MS_MGC_VAL|MS_BIND, NULL) < 0)
err (EXIT_FAILURE, "failed to bind mount ../../var to var");
-#endif
char srcpath[PATH_MAX];
/* If /boot is on the same partition, use a bind mount to make it visible
exit (EXIT_SUCCESS);
}
+ /* We conflict with the magic ostree-mount-deployment-var file for ostree-prepare-root */
+ { struct stat stbuf;
+ if (fstatat (AT_FDCWD, INITRAMFS_MOUNT_VAR, &stbuf, 0) == 0)
+ {
+ if (unlinkat (AT_FDCWD, INITRAMFS_MOUNT_VAR, 0) < 0)
+ err (EXIT_FAILURE, "Can't unlink " INITRAMFS_MOUNT_VAR);
+ exit (EXIT_SUCCESS);
+ }
+ }
+
if (argc > 1 && argc != 4)
errx (EXIT_FAILURE, "This program takes three or no arguments");