export PREFIX="$HOME/opt/cross"
export TARGET=i686-elf
export PATH="$PREFIX/bin:$PATH"
- wget ftp://sourceware.org/pub/binutils/snapshots/binutils-2.30.0.tar.xz
- tar -xvf binutils-2.30.0.tar.xz
- mkdir build-binutils & cd build-binutils
- ../binutils-2.30.0/configure --target=$TARGET --prefix="$PREFIX" --with-sysroot --disable-nls --disable-werror
- make & make install
1. GMP (libgmp3-dev on apt-based systems, dev-libs/gmp on Gentoo, gmp-devel on Fedora, libgmp-devel on Cygwin)
2. MPFR (libmpfr-dev on apt-based systems, dev-libs/mpfr on Gentoo, mpfr-devel on Fedora, libmpfr-devel on Cygwin)
3. Mpc (libmpc-dev on apt-based systems, dev-libs/mpc on Gentoo, libmpc-devel on Fedora, libmpc-devel on Cygwin)
- wget http://mirrors-usa.go-parts.com/gcc/releases/gcc-5.4.0/gcc-5.4.0.tar.gz
- tar -xvf gcc-5.4.0.tar.gz & cd gcc-5.4.0
- mkdir build-gcc & cd build-gcc & ../gcc-5.4.0/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
- $HOME/opt/cross/bin/$TARGET-gcc --version
- export PATH="$HOME/opt/cross/bin:$PATH"
- yum install nasm
- sh build.sh
- qemu-system-x86_64 -cdrom build/os-x86_64.iso
- gdb build/kernel-x86_64.bin
- set arch i386:x86-64:intel
- b kmain
- target remote :1234
/ * Memory layout definition
* +------------+
* | 0x00100000 | Kernel multiboot header
* +------------+
* | 0x00x00000 | some kernel stucts before mmu_init
* +------------+
* | 0x20000000 | User mode image loaded address
* +------------+
* | 0x30000000 | User stack: 0x30000000~0x30010000
* +------------+
* | 0x30010000 | User stack heap bottom
* +------------+
* | 0xc0000000 | Kernel heap bottom
* +------------+
* | 0xdfffe000 | Init process kernel stack: 0xdfffe000~0xe0000000
* +------------+
* | 0xe0000000 |
* +------------+
*/
-
multi core support
-
network tcp/ip stack
-
windows
-
ext2/3 filesystem
-
threads