summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRay Strode <rstrode@redhat.com>2007-10-21 20:52:27 -0400
committerRay Strode <rstrode@redhat.com>2007-10-21 20:52:27 -0400
commita234fea7ad4bbe64535367ccbb50e2b9093218f4 (patch)
tree454ffa5a7a8b9366b697cd1c731b08a6ac19c41e /src
parent0ab5c82cd09023e193b7588a3da53588ede72df8 (diff)
downloadplymouth-a234fea7ad4bbe64535367ccbb50e2b9093218f4.tar.gz
plymouth-a234fea7ad4bbe64535367ccbb50e2b9093218f4.tar.xz
plymouth-a234fea7ad4bbe64535367ccbb50e2b9093218f4.zip
move data to a ramfs and clean up mounts on exit
Shutdown was being noisy because we didn't unmount /var/run/plymouth/{proc,dev/pts} etc. Also we want /var/run/plymouth to be a ramfs so that nash doesn't go deleting it while its still running
Diffstat (limited to 'src')
-rw-r--r--src/main.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/main.c b/src/main.c
index 3cc75ee..0eddfb5 100644
--- a/src/main.c
+++ b/src/main.c
@@ -93,9 +93,16 @@ static void
on_quit (state_t *state)
{
ply_terminal_session_close_log (state->session);
- umount ("/sysroot");
ply_boot_splash_hide (state->boot_splash);
ply_event_loop_exit (state->loop, 0);
+
+ fchdir (state->original_root_dir_fd);
+ chroot (".");
+ ply_unmount_filesystem (PLY_WORKING_DIRECTORY "/sysroot");
+ ply_unmount_filesystem (PLY_WORKING_DIRECTORY "/sysroot");
+ ply_unmount_filesystem (PLY_WORKING_DIRECTORY "/proc");
+ ply_unmount_filesystem (PLY_WORKING_DIRECTORY "/dev/pts");
+ ply_unmount_filesystem (PLY_WORKING_DIRECTORY);
}
static ply_boot_server_t *
@@ -185,7 +192,7 @@ create_working_directory (state_t *state)
{
ply_trace ("creating working directory '%s'",
PLY_WORKING_DIRECTORY);
- if (!ply_create_directory (PLY_WORKING_DIRECTORY))
+ if (!ply_create_detachable_directory (PLY_WORKING_DIRECTORY))
return false;
ply_trace ("changing to working directory");
@@ -212,6 +219,10 @@ create_working_directory (state_t *state)
if (!ply_create_directory (PLYMOUTH_PLUGIN_PATH + 1))
return false;
+ ply_trace ("creating sysroot subdirectory");
+ if (!ply_create_directory ("sysroot"))
+ return false;
+
return true;
}