-
Star
(130)
You must be signed in to star a gist -
Fork
(18)
You must be signed in to fork a gist
-
-
Save rofl0r/6168719 to your computer and use it in GitHub Desktop.
| #define _XOPEN_SOURCE 700 | |
| #include <signal.h> | |
| #include <unistd.h> | |
| int main() | |
| { | |
| sigset_t set; | |
| int status; | |
| if (getpid() != 1) return 1; | |
| sigfillset(&set); | |
| sigprocmask(SIG_BLOCK, &set, 0); | |
| if (fork()) for (;;) wait(&status); | |
| sigprocmask(SIG_UNBLOCK, &set, 0); | |
| setsid(); | |
| setpgid(0, 0); | |
| return execve("/etc/rc", (char *[]){ "rc", 0 }, (char *[]){ 0 }); | |
| } |
Is it not possible to straight up execute the /etc/rc script? Just by adding init=/etc/rc to the kernel command line?
Just go outside instead of turning on your computer. It uses 0B of disk space
I'm 100% sure this is way too slow. We need to write this in assembly. So that it'll fit in 1 sector of a drive.
I like shell scripts that don't need to be recompiled... A mount -a && /etc/rc works just fine
Is it not possible to straight up execute the /etc/rc script? Just by adding init=/etc/rc to the kernel command line?
You need a always running daemon, who will be reap a zombie. It is single work for init.
If you redirect this job to /etc/rc, you got a systemd again.
You cannot start an another daemon from /etc/rc for this. Zombie go to process with PID 1. /etc/rc have a PID 1 in your case.
For those confused, all this code does is:
SIG_BLOCKconstant./etc/rcscript.