No description, website, or topics provided.
C Assembly Objective-C Other
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
acpi Updated coding convention Nov 4, 2012
boot Updated coding convention Nov 4, 2012
console Updated coding convention Nov 4, 2012
cpu Updated coding convention Nov 4, 2012
gfx Fix to shaders to make them work with the Intel assembler from: Nov 24, 2013
input Updated coding convention Nov 4, 2012
intr Updated coding convention Nov 4, 2012
kernel Add gfx ring file, move temp memory management into gfxmem.c Nov 5, 2012
mem Updated coding convention Nov 4, 2012
net Updated coding convention Nov 4, 2012
pci Updated coding convention Nov 4, 2012
stdlib Viewport State for CC, SF Clip, and Scissor. Nov 10, 2012
test Updated coding convention Nov 4, 2012
time Updated coding convention Nov 4, 2012
tools Updated coding convention Nov 4, 2012
usb Updated coding convention Nov 4, 2012
.gitignore Ignore .patch files Jul 13, 2012
AUTHORS Update LICENSE file for multiple developers. Add AUTHORS file. Jul 13, 2012
LICENSE Update LICENSE file for multiple developers. Add AUTHORS file. Jul 13, 2012
Makefile portability for tools Jul 13, 2012
README Updated coding convention Nov 4, 2012
REFERENCES Add reference to Ivy Bridge documentation Nov 4, 2012
TODO Async packet sending and resending of single packet during ARP discov… Jun 23, 2012
module.mk 64-bit mode and C kernel. Apr 15, 2012
osdev.sln 1st attempt at drafting basic shaders. Feb 17, 2013
qemu.bat USB hub support. Low/Full speed devices now work over EHCI hubs. Jun 2, 2012
qemu.sh qemu launcher for macos Jul 13, 2012

README

This is a hobby OS project for learning more about low-level hardware.  See
the LICENSE file for details.

-------------------------------------------------------------------------------
Hardware Requirements:

- Intel Ivy Bridge w/ HD Graphics 4000
- Intel 82579V Gigabit Ethernet

QEMU is also supported in text mode.

-------------------------------------------------------------------------------
Setup and Installation for Windows:

- Install Cygwin (http://www.cygwin.com/) including the following packages
  and their dependencies:

    - bison
    - flex
    - gcc4
    - make
    - nasm
    - wget

- Build a 64-bit cross compiler for the kernel:
  - Setup
    - export PREFIX=/usr/local/cross
    - export TARGET=x86_64-elf
    - export PATH=$PATH:$PREFIX/bin
    - mkdir cross_gcc
    - cd cross_gcc
    - mkdir build_binutils build_gcc

  - Download and unpack source code
    - wget http://ftp.gnu.org/gnu/binutils/binutils-2.22.tar.bz2
    - wget http://ftp.gnu.org/gnu/gcc/gcc-4.7.0/gcc-4.7.0.tar.bz2
    - wget http://ftp.gnu.org/gnu/gmp/gmp-4.3.2.tar.bz2
    - wget http://www.mpfr.org/mpfr-2.4.2/mpfr-2.4.2.tar.bz2
    - wget http://www.multiprecision.org/mpc/download/mpc-0.8.1.tar.gz
    - tar xjf binutils-2.22.tar.bz2
    - tar xjf gcc-4.7.0.tar.bz2
    - tar xjf gmp-4.3.2.tar.bz2
    - tar xjf mpfr-2.4.2.tar.bz2
    - tar xzf mpc-0.8.1.tar.gz
    - mv gmp-4.3.2 gcc-4.7.0/gmp
    - mv mpfr-2.4.2 gcc-4.7.0/mpfr
    - mv mpc-0.8.1 gcc-4.7.0/mpc

  - Build binutils
    - cd build_binutils
    - ../binutils-2.22/configure --target=$TARGET --prefix=$PREFIX --disable-nls
    - make all
    - make install
    - cd ..

  - Build gcc
    - cd build_gcc
    - ../gcc-4.7.0/configure --target=$TARGET --prefix=$PREFIX --disable-nls --enable-languages=c --without-headers
    - make all-gcc
    - make install-gcc

- Install QEMU:
  - Precompiled Windows binaries are located at http://lassauge.free.fr/qemu/
  - Install http://lassauge.free.fr/qemu/release/Qemu-1.0.1-windows.zip
  - Copy bios.bin and vgabios-cirrus.bin from the Bios folder to QEMU's
    root directory.

- Install the TAP driver:
  - OpenVPN installers are located at http://openvpn.net/index.php/download.html
  - Install http://swupdate.openvpn.org/community/releases/openvpn-2.2.2-install.exe
  - Install only the "TAP Virtual Ethernet Adapter" component.
  - Modify the Network Connections:
    - Rename the TAP interface from "Local Area Connection (n)" to "tap"
    - Bridge the TAP interface with your active Local Area Connection.

- Update PATH:
  - Add QEMU and /usr/local/cross/bin to the PATH variable in .bash_profile

-------------------------------------------------------------------------------
Configuration:

- g_localTimeZone in time.c

-------------------------------------------------------------------------------
What to expect:

- Type 'help' to see available commands.  Some examples:

  - 'http' fetches web pages
  - 'gfx' switches into graphics mode
  - 'host' performs a DNS lookup on a hostname
  - 'ping' sends an ICMP echo request to an IP address
  - 'lsroute' prints the routing table
  - 'datetime' prints the current time
  - 'synctime' sends an NTP request and updates the CMOS

- tools/os_helper.exe provides services to improve OS development.  Currently
  this is used for remote logging via UDP.

-------------------------------------------------------------------------------
Emulator steps:

  $ make
  $ qemu.bat

-------------------------------------------------------------------------------
Hardware steps:

  Format a FAT16 drive, update the boot sector and copy the loader and kernel
  binaries.

  $ make
  $ tools/set_boot.exe //./<drive letter>: boot/boot.bin
  $ cp boot/loader.bin <drive letter>:/
  $ cp kernel/kernel.bin <drive letter>:/

  Boot!