summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Moffett <ian@osmora.org>2025-06-24 04:40:58 -0400
committerIan Moffett <ian@osmora.org>2025-06-24 04:40:58 -0400
commit68fbcd77640d840e60bf9851ae12d20e8178854a (patch)
tree504f70956f3a277733784bde1e6282e9d9eb49fa
parent4e3351d4a75c02ac7a2a8c60cc6fa6579d95f08f (diff)
usr: Start shell + rc through /usr/sbin/init
Signed-off-by: Ian Moffett <ian@osmora.org>
-rw-r--r--sys/kern/init_main.c6
-rw-r--r--usr.sbin/init/main.c12
2 files changed, 14 insertions, 4 deletions
diff --git a/sys/kern/init_main.c b/sys/kern/init_main.c
index 43142ec..81ddcb5 100644
--- a/sys/kern/init_main.c
+++ b/sys/kern/init_main.c
@@ -46,10 +46,8 @@
#if defined(_INSTALL_MEDIA)
#define _START_PATH "/usr/sbin/install"
-#define _START_ARG NULL
#else
-#define _START_PATH "/usr/bin/osh"
-#define _START_ARG "/usr/rc/init.rc"
+#define _START_PATH "/usr/sbin/init"
#endif /* _INSTALL_MEDIA */
struct proc g_proc0;
@@ -66,7 +64,7 @@ start_init(void)
{
struct proc *td = this_td();
struct execve_args execve_args;
- char *argv[] = { _START_PATH, _START_ARG, NULL };
+ char *argv[] = { _START_PATH, NULL, NULL };
char *envp[] = { NULL };
execve_args.pathname = argv[0];
diff --git a/usr.sbin/init/main.c b/usr.sbin/init/main.c
index a136740..bec44ef 100644
--- a/usr.sbin/init/main.c
+++ b/usr.sbin/init/main.c
@@ -27,8 +27,20 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
+#include <sys/spawn.h>
+#include <stddef.h>
+
+#define SHELL_PATH "/usr/bin/osh"
+#define INIT_RC_PATH "/usr/rc/init.rc"
+
int
main(void)
{
+ char *argv[] = { SHELL_PATH, INIT_RC_PATH, NULL };
+ char *envp[] = { NULL };
+
+ spawn(SHELL_PATH, argv, envp, SPAWN_WAIT);
+ argv[1] = NULL;
+ spawn(SHELL_PATH, argv, envp, SPAWN_WAIT);
return 0;
}