Merge branch 'main' of git.chauvet.pro:starnakin/42_KFS
This commit is contained in:
commit
65a59534b4
69
README.md
Normal file
69
README.md
Normal file
@ -0,0 +1,69 @@
|
||||
# KFS (Kernel From Scratch)
|
||||
|
||||
This project aims to explore how a kernel works by building our own, gaining hands-on experience with core concepts like memory management, interrupt, keyboard driver, etc
|
||||
|
||||
## INSTALLATION
|
||||
|
||||
### Cross compile the compile
|
||||
[THE DOCUMENTATION](https://wiki.osdev.org/GCC_Cross-Compiler)
|
||||
- install requirement follow [THE DOCUMENTATION](https://wiki.osdev.org/GCC_Cross-Compiler)
|
||||
- Setup the shell
|
||||
``` sh
|
||||
export PREFIX="$HOME/opt/cross"
|
||||
export TARGET=i386-elf
|
||||
export PATH="$PREFIX/bin:$PATH"
|
||||
mkdir $HOME/src
|
||||
cd $HOME/src
|
||||
```
|
||||
- Download [binutils](https://ftp.gnu.org/gnu/binutils/?C=M;O=D)
|
||||
- Download [gcc](https://ftp.gnu.org/gnu/gcc/?C=M;O=D)
|
||||
- Download [gdb](https://ftp.gnu.org/gnu/gdb/?C=M;O=D)
|
||||
- extract archives
|
||||
``` sh
|
||||
tar xf [your binutils archive]
|
||||
tar xf [your gcc archive]
|
||||
tar xf [your gdb archive]
|
||||
```
|
||||
- (protips use -j [nb core])
|
||||
- Compile binutils
|
||||
``` sh
|
||||
cd $HOME/src
|
||||
mkdir build-binutils
|
||||
|
||||
cd build-binutils
|
||||
../binutils-x.y.z/configure --target=$TARGET --prefix="$PREFIX" --with-sysroot --disable-nls --disable-werror
|
||||
make
|
||||
make install
|
||||
```
|
||||
- Compile gdb
|
||||
``` sh
|
||||
cd $HOME/src
|
||||
mkdir build-gdb
|
||||
|
||||
cd build-gdb
|
||||
../gdb.x.y.z/configure --target=$TARGET --prefix="$PREFIX" --disable-werror
|
||||
make all-gdb
|
||||
make install-gdb
|
||||
make
|
||||
make install
|
||||
```
|
||||
- Compile gcc
|
||||
``` sh
|
||||
cd $HOME/src
|
||||
|
||||
# The $PREFIX/bin dir _must_ be in the PATH. We did that above.
|
||||
which -- $TARGET-as || echo $TARGET-as is not in the PATH
|
||||
|
||||
mkdir build-gcc
|
||||
cd build-gcc
|
||||
../gcc-x.y.z/configure --target=$TARGET --prefix="$PREFIX" --disable-nls --enable-languages=c,c++ --without-headers
|
||||
make all-gcc
|
||||
make all-target-libgcc
|
||||
make install-gcc
|
||||
make install-target-libgcc
|
||||
```
|
||||
|
||||
### Compile and the start the kernel
|
||||
``` sh
|
||||
make run
|
||||
```
|
@ -7,7 +7,7 @@ void print_stack(void)
|
||||
(struct stackframe *)__builtin_frame_address(0);
|
||||
|
||||
while (stack) {
|
||||
kprintf(0, "stack->ebp: %d\n", stack->ebp);
|
||||
kprintf(0, "fn: %d\n", stack->eip);
|
||||
stack = stack->ebp;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user