diff --git a/Makefile b/Makefile index 69fa935..7b18303 100644 --- a/Makefile +++ b/Makefile @@ -54,12 +54,17 @@ image: iso: mkdir -p tmp mkdir -p katauos + mkdir -p katauos/katau/ sudo mount rootfs.iso9660 tmp/ sudo cp -R tmp/* katauos/ sudo chown -R kali:kali katauos/ cp katauos.bin grubshit/boot cp katauos.bin katauos/boot/ cp grubshit/boot/grub/grub.cfg katauos/boot/grub/grub.cfg + + cp grubshit/caller katauos/katau/caller + cp grubshit/callee katauos/katau/callee + sudo umount tmp/ grub-mkrescue -o boot.iso katauos/ diff --git a/include/exec_from_file.h b/include/exec_from_file.h index f7d07af..56950f1 100644 --- a/include/exec_from_file.h +++ b/include/exec_from_file.h @@ -9,4 +9,4 @@ #define USER_STACK_SIZE 0x4000 // 16KB stack (4 pages) #define USER_STACK_BOTTOM (USER_STACK_TOP - USER_STACK_SIZE) -void exec_from_file(const char* filename, const char* dirname); \ No newline at end of file +void exec_from_file(l9660_file* fs_file, const char* dirname); \ No newline at end of file diff --git a/src/kernel/kernel.c b/src/kernel/kernel.c index fcd0047..a213cbb 100644 --- a/src/kernel/kernel.c +++ b/src/kernel/kernel.c @@ -135,17 +135,8 @@ void kmain(unsigned int magic, unsigned int info) l9660_file* file = (l9660_file*)malloc(sizeof(l9660_file)); follow_path("/bin/bash.", file, dir); - - ////////////// - l9660_seek(file, L9660_SEEK_END, 0); - uint32_t file_size = l9660_tell(file); - debug_log("file_size: %X\n", file_size); - l9660_seek(file, L9660_SEEK_SET, 0); - free(file); - free(dir); - ////////////// - exec_from_file("caller.", "."); + exec_from_file(file, "."); while(1) { diff --git a/src/tasking/exec_from_file.c b/src/tasking/exec_from_file.c index 5cc067a..c3be57d 100644 --- a/src/tasking/exec_from_file.c +++ b/src/tasking/exec_from_file.c @@ -6,7 +6,7 @@ #include "../include/paging.h" #include "../include/task.h" -void exec_from_file(const char* filename, const char* dirname) +void exec_from_file(l9660_file* fs_file, const char* dirname) { asm volatile("cli"); int err; @@ -22,13 +22,21 @@ void exec_from_file(const char* filename, const char* dirname) uint32_t bss_start, bss_end; - err = vsf_read_file_by_path(filename, &file, &dir); + l9660_seek(fs_file, L9660_SEEK_END, 0); + uint32_t file_size = l9660_tell(fs_file); + debug_log("[exec_from_file] file_size: %X\n", file_size); + l9660_seek(fs_file, L9660_SEEK_SET, 0); - if(err != 0) + file = (uint8_t*)malloc(file_size); + + //err = vsf_read_file_by_path(filename, &file, &dir); + err = vfs_read_file(fs_file, file); + + /*if(err != 0) { - debug_log("read_file failed!\n"); return; } + */ //debug_log("result: %X\n", result); //debug_log("buffer: %s\n", file);