switch-root: reopen /dev/console before we switch root

This commit is contained in:
Lennart Poettering
2012-07-10 19:19:59 +02:00
parent 94163dd543
commit cd3bd60a2e
4 changed files with 37 additions and 23 deletions
+22 -1
View File
@@ -2940,7 +2940,8 @@ int make_stdio(int fd) {
int make_null_stdio(void) {
int null_fd;
if ((null_fd = open("/dev/null", O_RDWR|O_NOCTTY)) < 0)
null_fd = open("/dev/null", O_RDWR|O_NOCTTY);
if (null_fd < 0)
return -errno;
return make_stdio(null_fd);
@@ -5844,3 +5845,23 @@ void warn_melody(void) {
ioctl(fd, KIOCSOUND, 0);
close_nointr_nofail(fd);
}
int make_console_stdio(void) {
int fd, r;
/* Make /dev/console the controlling terminal and stdin/stdout/stderr */
fd = acquire_terminal("/dev/console", false, true, true, (usec_t) -1);
if (fd < 0) {
log_error("Failed to acquire terminal: %s", strerror(-fd));
return fd;
}
r = make_stdio(fd);
if (r < 0) {
log_error("Failed to duplicate terminal fd: %s", strerror(-r));
return r;
}
return 0;
}
+1
View File
@@ -278,6 +278,7 @@ char *format_timespan(char *buf, size_t l, usec_t t);
int make_stdio(int fd);
int make_null_stdio(void);
int make_console_stdio(void);
unsigned long long random_ull(void);