X-Git-Url: https://git.ucc.asn.au/?p=tpg%2Facess2.git;a=blobdiff_plain;f=README;h=b851fc826ccc007dfe123487e5e5f0a13a3592c4;hp=6890ba3c1047d3e812a10c9a4bd3dca60038511b;hb=6274aaa8894e14462a36c69090e2f9235f130e31;hpb=5fc81fa5e050f48374a6aff5636f3e60313dfc78 diff --git a/README b/README index 6890ba3c..b851fc82 100644 --- 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/ - 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 === -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)