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)
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;
}