Acess2 Hobby Operating System
Clone or download
Failed to load latest commit information.
AcessNative AcessNative - Tweak run script to select root app Dec 28, 2014
BuildConf BuildConf/x86_64 - Set AS to fix compile errors (caused by recent upd… Feb 15, 2015
Externals ALL - Compilation fixes after some bitrotting Jun 21, 2016
KernelLand Kernel/InitRD - Improve error reporting in generator program Jun 22, 2016
Notes Notes - Strike UDI off the TODO list Jan 31, 2015
Tools NetTest - Hack around race in runner Jun 21, 2016
UDI UDI/include - Update GFX to be auto-generated from [com]buster's version Feb 1, 2015
Usermode Usermode - Building (some changes to libposix/libc++), new initrd gen… Jun 21, 2016
.gitignore gitignore - Ignore ISO files May 10, 2014
.gitmodules Added libspiderscript Aug 3, 2013
.travis.yml Switch travis-ci config to use containers Aug 27, 2015
BuildAcessNative AcessNative - Updates for recent changes Jul 3, 2013
COPYING Strike that, I like zlib better :D Apr 24, 2010
CleanAllArch Fix clean all script for renamed armv7 arch Oct 9, 2011
DoRelease DoRelease - Switch to bash so replacement works Jan 21, 2014
EditBoot Tweaking root makefile Feb 9, 2013
MakeReleaseSet MakeReleaseSet - Fix platform suffix again Jan 21, 2014
Makefile Build - Fix build quirks for fresh Feb 16, 2015
Makefile.Version.cfg Increment version number Jan 21, 2014
Makefile.cfg ARMv7 - Fix compiler and partial compilation Feb 13, 2015
README README - Updating readme a little Jul 10, 2013
RunBochs Basic bochs config May 27, 2013
RunQemu RunQemu - Add AHCI support Jan 30, 2015
RunQemuArm RunQemuArm - Add a RTL8169 to tegra2 config Jan 21, 2014
TODO.txt Notes - Updated TODO and added notes on structure of vbox graphics Jul 22, 2013
bochsrc.txt Basic bochs config May 27, 2013



Acess2 is [TPG]'s hobby operating system.

It's mostly a learning experiment, but I've tried to keep the source simple
and have a _nearly_ POSIX compliant userland.

=== Source Tree ===
--- /KernelLand ---
The /KernelLand folder contains the kernel code
    - Core kernel
      - Architecture dependent code (memory management and process switching)
      - Binary file loaders
      - Virtual Filesystem layer
      - Core system drivers (PCI, VTerm, FIFO)
    - All manner of drivers and helper code, capable of being build-time and runtime linked

--- Usermode ---
The Usermode folder contains the user-land portion of the Acess OS
    - Usermode applications (Shell, IRC Client, GUI, ...)
    - Dynamic linker, and nearly all shared libraries used
    - Default filesystem contents (config files)

--- AcessNative ---
This folder contains a rather hacky emulation framework for the Acess Userland
(and to an extent, the kernel). It combines parts of the kernel code, IPC and
thread emulation to allow Acess applications to be run on Linux/Windows without
    - The kernel emulation framework
    - Replacement to load programs and translate syscalls into IPC
    - Library version of the above (for nativly compiled Acess programs)

--- BuildConf ---
Build configuration settings (compiler options, module selection)

--- Externals ---
External programs (e.g. ACPICA, SDL), packaged as makefiles and patches (source archives must
be downloaded by the user)

=== Building ===
Required Tools: GNU cross toolchain (GCC,Gas,binutils), NASM, mtools, PHP
Targets used:
 > x86 uses i586-elf
 > x86_64 uses x86_64-none-elf
 > armv7 uses arm-eabi

1. Edit Makefile.user.cfg and set options (a few are listed below, see Makefile.cfg for the rest)
 > DISTROOT : Location to install to (by default this is an existing FAT Floppy image)
 > xCP/xMKDIR : Commands to call when installing
  # There is a script in Tools/BootFloppy to create an empty disk image
2. Either download a copy of ACPICA to Externals/ACPICA or set 'USE_ACPICA=0' before running make
3. Run `make all install` (default architecture is x86)

Other make invocations
- Build and install the kernel (x86)
`PLATFORM=smp make`
- Build and install the x86:smp kernel
`ARCH=x86_64 make all`
- Build (but don't install) the entire x86_64 kernel and userland
`ARCH=armv7 PLATFORM=tegra2 make all install`
- Build and install the entire armv7 kernel and userland (with the kernel targeting a Tegra2)