summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile10
-rw-r--r--initrd/bin/sh/catall (renamed from initrd/catall.sh)0
-rw-r--r--src/user/app/init/init.c8
-rw-r--r--src/user/bootstrap/main.c5
4 files changed, 15 insertions, 8 deletions
diff --git a/Makefile b/Makefile
index a37f474..6e10960 100644
--- a/Makefile
+++ b/Makefile
@@ -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 {