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 | |
parent | 1528e2153dfbd729916f1211a6f481a2171f855f (diff) |
user: plan9-style /bin/ union
-rw-r--r-- | Makefile | 10 | ||||
-rw-r--r-- | initrd/bin/sh/catall (renamed from initrd/catall.sh) | 0 | ||||
-rw-r--r-- | src/user/app/init/init.c | 8 | ||||
-rw-r--r-- | src/user/bootstrap/main.c | 5 |
4 files changed, 15 insertions, 8 deletions
@@ -90,10 +90,10 @@ out/hdd: define userbin_template = -out/initrd/bin/$(1): src/user/linker.ld \ - $(call from_sources, src/user/app/$(1)/) \ - $(call from_sources, src/user/lib/) \ - $(call from_sources, src/shared/) +out/initrd/bin/amd64/$(1): src/user/linker.ld \ + $(call from_sources, src/user/app/$(1)/) \ + $(call from_sources, src/user/lib/) \ + $(call from_sources, src/shared/) @mkdir -p $$(@D) @$(CC) $(LFLAGS) -Wl,-pie -Wl,-no-dynamic-linker -T $$^ -o $$@ endef @@ -108,7 +108,7 @@ out/initrd/font.psf: /usr/share/kbd/consolefonts/default8x16.psfu.gz @gunzip $< -c > $@ out/initrd.tar: $(patsubst %,out/%,$(shell find initrd/ -type f)) \ - $(patsubst %,out/initrd/bin/%,$(USERBINS)) \ + $(patsubst %,out/initrd/bin/amd64/%,$(USERBINS)) \ out/initrd/font.psf @cd out/initrd; tar chf ../initrd.tar * diff --git a/initrd/catall.sh b/initrd/bin/sh/catall index a1c8c76..a1c8c76 100644 --- a/initrd/catall.sh +++ b/initrd/bin/sh/catall 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 { |