summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/user/app/init/init.c8
-rw-r--r--src/user/bootstrap/main.c5
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 {