After doing chroot, create pts mount points and ttyGS0.
Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@cascardo.eti.br>
int devmount_setup(void)
{
int devmount_setup(void)
{
- 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)
}
int sysfsmount_setup(void)
#define _INIT_H
int devmount_setup(void);
#define _INIT_H
int devmount_setup(void);
int sysfsmount_setup(void);
#endif
int sysfsmount_setup(void);
#endif
if (r) printf("failed chroot\n");
r = chdir("/");
if (r) printf("failed second chdir\n");
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;
}
execve("/bin/bash", args, NULL);
return 0;
}