From 57427191e2cf0f08724b74fba3a35aa41ceda40d Mon Sep 17 00:00:00 2001 From: dzwdz Date: Sat, 13 Aug 2022 16:21:02 +0200 Subject: user: plan9-style /bin/ union --- src/user/app/init/init.c | 8 +++++++- src/user/bootstrap/main.c | 5 +++-- 2 files changed, 10 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/user/app/init/init.c b/src/user/app/init/init.c index c788cb6..2ae8048 100644 --- a/src/user/app/init/init.c +++ b/src/user/app/init/init.c @@ -30,7 +30,13 @@ int main(void) { printf("in init (stage 2), main at 0x%x\n", &main); MOUNT_AT("/keyboard") { ps2_drv(); } - MOUNT_AT("/bin/") { fs_passthru("/init/bin"); } + MOUNT_AT("/bin/") { + fs_union((const char*[]){ + "/init/bin/amd64/", + "/init/bin/sh/", + NULL + }); + } MOUNT_AT("/tmp/") { const char *argv[] = {"/bin/tmpfs", NULL}; execv(argv[0], (void*)argv); diff --git a/src/user/bootstrap/main.c b/src/user/bootstrap/main.c index fbcb641..f06401b 100644 --- a/src/user/bootstrap/main.c +++ b/src/user/bootstrap/main.c @@ -23,9 +23,10 @@ void _start(void) { MOUNT_AT("/init/") { tar_driver(&_initrd); } - void *init = tar_find("bin/init", 8, &_initrd, ~0) + 512; + const char *initpath = "bin/amd64/init"; + void *init = tar_find(initpath, strlen(initpath), &_initrd, ~0) + 512; if (init) { - _klogf("execing init.elf"); + _klogf("execing init"); elf_exec(init, NULL, NULL); _klogf("elf_exec failed"); } else { -- cgit v1.2.3