From 051176c71742874fb068e2627711034bacf50506 Mon Sep 17 00:00:00 2001 From: Thadeu Lima de Souza Cascardo Date: Thu, 20 Oct 2016 10:22:21 +0000 Subject: [PATCH] Create tty at chroot. After doing chroot, create pts mount points and ttyGS0. Signed-off-by: Thadeu Lima de Souza Cascardo --- init.c | 12 +++++++++++- init.h | 1 + main.c | 4 ++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/init.c b/init.c index 0a9948a..1cef827 100644 --- a/init.c +++ b/init.c @@ -22,8 +22,18 @@ int devmount_setup(void) { + int r; mkdir("/dev", 0755); - return mount(NULL, "/dev", "devtmpfs", MS_NOEXEC | MS_NOSUID | MS_NOATIME, NULL); + r = mount(NULL, "/dev", "devtmpfs", MS_NOEXEC | MS_NOSUID | MS_NOATIME, NULL); + if (r < 0) + r = mount(NULL, "/dev", "tmpfs", MS_NOEXEC | MS_NOSUID | MS_NOATIME, NULL); + return r; +} + +int devpts_setup(void) +{ + mkdir("/dev/pts", 0755); + return mount(NULL, "/dev/pts", "devpts", MS_NOEXEC | MS_NOSUID | MS_NOATIME, NULL); } int sysfsmount_setup(void) diff --git a/init.h b/init.h index 90d9ba9..4f83fad 100644 --- a/init.h +++ b/init.h @@ -19,6 +19,7 @@ #define _INIT_H int devmount_setup(void); +int devpts_setup(void); int sysfsmount_setup(void); #endif diff --git a/main.c b/main.c index daea84c..26b4274 100644 --- a/main.c +++ b/main.c @@ -145,6 +145,10 @@ int main(int argc, char **argv) if (r) printf("failed chroot\n"); r = chdir("/"); if (r) printf("failed second chdir\n"); + sysfsmount_setup(); + devmount_setup(); + devpts_setup(); + do_mknod("/sys/class/tty", "ttyGS0", 0, 1); execve("/bin/bash", args, NULL); return 0; } -- 2.20.1