X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=README;h=b851fc826ccc007dfe123487e5e5f0a13a3592c4;hb=d7dcea0e5a8df0f479e99f168a10b9a9535c7ad6;hp=66d70f1b84a78204133b06d51a41241560062e4c;hpb=9d3800f60f2212432e550a4e003ae65b498a4d36;p=tpg%2Facess2.git diff --git a/README b/README index 66d70f1b..b851fc82 100644 --- a/README +++ b/README @@ -4,28 +4,75 @@ Acess2 is [TPG]'s hobby operating system. -The Acess kernel is SEMI-posix compilant, but 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/ - 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// + - 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 === +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) + +