Merge branch 'master' of git://cadel.mutabah.net/acess2
[tpg/acess2.git] / README
diff --git a/README b/README
index 6890ba3..b851fc8 100644 (file)
--- a/README
+++ b/README
@@ -4,46 +4,75 @@
 
 Acess2 is [TPG]'s hobby operating system.
 
-The Acess kernel is SEMI-posix compilant, but there will be a comatability
-library that emulates the different functions.
+It's mostly a learning experiment, but I've tried to keep the source simple
+and have a _nearly_ POSIX compliant userland.
 
 === Source Tree ===
---- /Kernel ---
-The /Kernel tree contains the kernel sources.
- Within the root of the tree is the miscelanious architecture agnostic
-   code for managing threads, loading modules and other things.
- /Kernel/arch/<archname> - Architecture dependent code
- /Kernel/bin - Binary file format parsers. Takes a binary file and
-   convertes it into a binary object that the loader can then load into memory.
- /Kernel/vfs - The Virtual Filesystem
- /Kernel/vfs/fs - The various filesystem drivers for the VFS.
- /Kernel/drv - Drivers
+--- /KernelLand ---
+The /KernelLand folder contains the kernel code
+  Kernel/
+    - Core kernel
+    arch/<archname>/
+      - Architecture dependent code (memory management and process switching)
+    bin/
+      - Binary file loaders
+    vfs/
+      - Virtual Filesystem layer
+    drv/
+      - Core system drivers (PCI, VTerm, FIFO)
+  Modules/
+    - All manner of drivers and helper code, capable of being build-time and runtime linked
 
 --- Usermode ---
-/Usermode contains the base acess system
- /Usermode/Applications - Usermode applications such as the default
-   command shell and the login shell.
- /Usermode/Libraries - Usermode shared libraries and crt0.o, currently
-   implemented are libacess (kernel interface), a basic libc and ld-acess
-   (dynamic linker).
- /Usermode/include - Required include files for the shared libraries.
+The Usermode folder contains the user-land portion of the Acess OS
+  Applications/
+    - Usermode applications (Shell, IRC Client, GUI, ...)
+  Libraries/
+    - Dynamic linker, and nearly all shared libraries used
+  Filesystem/
+    - 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
+recompilation.
+  acesskernel_src/
+    - The kernel emulation framework
+  ld-acess_src/
+    - Replacement ld-acess.so to load programs and translate syscalls into IPC
+  libacess-native.so_src/
+    - 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 ===
-Compiling Acess is relatively simple (at the moment)
-First edit /Makefile.cfg and set the build programs (making sure they match
-  the architecture you are building for).
-Then select the architecture to build (At the moment only x86:i386 works).
-Edit the FILESYSTEMS variable to alter what filesystems are comipled in 
-  (see /Kernel/vfs/fs for what filesystems are included).
-DRIVERS defines what device drivers are to be included from the Kernel
-  tree (see /Kernel/drv for a list).
-MODULES defines what modules should be statically linked with the kernel
-  (see /Modules for a list)
-
-Set the source root directory (ACESSDIR) and the destination  directory
- (DISTROOT).
-
-Now you can compile the kernel and usermode applications by calling make
- in the source root.
+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
+`make`
+- 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)
 
 

UCC git Repository :: git.ucc.asn.au