diff --git a/bin/Makefile b/bin/Makefile index 93d6dc7..553d63c 100644 --- a/bin/Makefile +++ b/bin/Makefile @@ -70,6 +70,9 @@ mount-bin: mount (cd mount;make) +sh-bin: sh + (cd sh;make) + clean: (cd cp;make clean) (cd fdisk;make clean) diff --git a/bin/shell/exec.c b/bin/shell/exec.c index fd80db5..0ba94f4 100644 --- a/bin/shell/exec.c +++ b/bin/shell/exec.c @@ -32,31 +32,20 @@ #include #include "shell.h" - int boo = 0x0; - static char *argv_init[2] = { "/bin/sh", NULL, }; // ARGV For Initial Proccess -//static char *envp_init[12] = { "HOST=MrOlsen.uBixOS.com", "TERM=xterm", "SHELL=/bin/sh", "HOME=/", "PWD=/", "PATH=/bin:/sbin:/usr/bin:/usr/sbin", "USER=root", "LOGNAME=root", "GROUP=admin", "LD_DEBUG=all", "LD_LIBRARY_PATH=/lib", NULL, }; //ENVP For Initial Proccess -static char *envp_init[11] = { "HOST=MrOlsen.uBixOS.com", "TERM=xterm", "SHELL=/bin/sh", "HOME=/", "PWD=/", "PATH=/bin:/sbin:/usr/bin:/usr/sbin", "USER=root", "LOGNAME=root", "GROUP=admin", "LD_LIBRARY_PATH=/lib", NULL, }; //ENVP For Initial Proccess +//static char *envp_init[12] = { "HOST=MrOlsen.uBixOS.com", "TERM=xterm", "SHELL=/bin/sh", "HOME=/", "PWD=/", "PATH=/bin:/sbin:/usr/bin:/usr/sbin", "USER=root", "LOGNAME=root", "GROUP=admin", "LD_DEBUG=all", "LD_LIBRARY_PATH=/lib:/usr/lib", NULL, }; //ENVP For Initial Proccess +static char *envp_init[11] = { "HOST=MrOlsen.uBixOS.com", "TERM=xterm", "SHELL=/bin/sh", "HOME=/", "PWD=/", "PATH=/bin:/sbin:/usr/bin:/usr/sbin", "USER=root", "LOGNAME=root", "GROUP=admin", "LD_LIBRARY_PATH=/lib:/usr/lib", NULL, }; //ENVP For Initial Proccess void execProgram(inputBuffer *data) { char file[1024]; int cPid = 0x0; - //printf("Executing App\n"); - cPid = fork(); -printf("Forked: [%i]\n", cPid); if (!cPid) { sprintf(file, "%s%s", cwd, data->argv[1]); - // if (boo == 0) - //execve(file,data->argv, 0x0); - execve(file,argv_init, envp_init); - /* - else - execn(file,&data->argv); -*/ + execve(file,argv_init, envp_init); printf("%s: Command Not Found.\n",data->argv[1]); exit(-1); } @@ -65,7 +54,5 @@ while (pidStatus(cPid) > 0) sched_yield(); } - if (cPid > 4) - boo = 1; } } diff --git a/bin/shell/main.c b/bin/shell/main.c index 4eb2957..c3e59b7 100644 --- a/bin/shell/main.c +++ b/bin/shell/main.c @@ -41,16 +41,6 @@ int main(int argc, char **argv, char **env) { unsigned int *segbase = 0x0; - /* - __asm __volatile("movl %%gs:0, %0" : "=r" (segbase)); - - printf("Segbase: 0x%X - 0x%X\n", segbase, &segbase); - printf("Segbase[0]: 0x%X\n", segbase[0]); - */ - - for (int i=0;i < argc; i++) - printf("ARGV[%i]: %s\n", i, argv[i]); - char *buffer = (char *) malloc( 512 ); inputBuffer *inBuf = (inputBuffer *) malloc( sizeof(inputBuffer) ); @@ -78,13 +68,9 @@ parseInput( inBuf, buffer ); -printf( "m-arg: [%i]\n", inBuf->args->arg ); - if ( inBuf->args->arg != 0x0 ) { - -// execProgram( inBuf ); - if (!commands(inBuf)) - execProgram(inBuf); + if (!commands(inBuf)) + execProgram(inBuf); } freeArgs( inBuf ); diff --git a/sys/i386/fork.c b/sys/i386/fork.c index 0d1056e..3e222f8 100644 --- a/sys/i386/fork.c +++ b/sys/i386/fork.c @@ -94,10 +94,10 @@ newProcess->td.vm_dsize = _current->td.vm_dsize; newProcess->td.vm_daddr = _current->td.vm_daddr; - kprintf("Copying Mem Space! [0x%X:0x%X:0x%X:0x%X:0x%X:%i:%i]\n", newProcess->tss.esp0, newProcess->tss.esp, newProcess->tss.ebp, td->frame->tf_esi, td->frame->tf_eip, newProcess->id, _current->id); + //kprintf("Copying Mem Space! [0x%X:0x%X:0x%X:0x%X:0x%X:%i:%i]\n", newProcess->tss.esp0, newProcess->tss.esp, newProcess->tss.ebp, td->frame->tf_esi, td->frame->tf_eip, newProcess->id, _current->id); newProcess->tss.cr3 = (uInt32) vmm_copyVirtualSpace(newProcess->id); - kprintf( "Copied Mem Space! [0x%X]\n", newProcess->tss.cr3 ); + //kprintf( "Copied Mem Space! [0x%X]\n", newProcess->tss.cr3 ); newProcess->state = FORK; /* Fix gcc optimization problems */ diff --git a/sys/kernel/ld.c b/sys/kernel/ld.c index 59604a8..725b6ad 100644 --- a/sys/kernel/ld.c +++ b/sys/kernel/ld.c @@ -37,7 +37,7 @@ #include #include -uint32_t ldEnable() { +uint32_t ldEnable(const char *interp) { int i = 0x0; int x = 0x0; int rel = 0x0; @@ -56,11 +56,12 @@ Elf_Addr addr; /* Open our dynamic linker */ - //ldFd = fopen("sys:/libexec/ld.so", "rb"); - ldFd = fopen("sys:/libexec/ld-elf.so.1", "rb"); + ldFd = fopen(interp, "rb"); if (ldFd == 0x0) { - kprintf("Can not open ld.so\n"); + ldFd = fopen("sys:/libexec/ld.so", "rb"); + if (ldFd == 0x0) + return(0x0); } fseek(ldFd, 0x0, 0x0); @@ -174,7 +175,7 @@ //kprintf("SYMTAB"); break; default: - kprintf("INvalid: %i]", sectionHeader[i].sh_type); + //kprintf("Invalid: %i]", sectionHeader[i].sh_type); break; } }