diff options
author | dzwdz | 2022-08-13 16:21:02 +0200 |
---|---|---|
committer | dzwdz | 2022-08-13 16:21:02 +0200 |
commit | 57427191e2cf0f08724b74fba3a35aa41ceda40d (patch) | |
tree | e78b02cfd05d978772cc8dfff8de1cb4791c8021 /src | |
parent | 1528e2153dfbd729916f1211a6f481a2171f855f (diff) |
user: plan9-style /bin/ union
Diffstat (limited to 'src')
-rw-r--r-- | src/user/app/init/init.c | 8 | ||||
-rw-r--r-- | src/user/bootstrap/main.c | 5 |
2 files changed, 10 insertions, 3 deletions
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 { |