386BSD 0.1 development
[unix-history] / usr / src / sys.386bsd / ROADMAP
CommitLineData
598a6f6f
WJ
1This is the kernel source tree, where new versions of the operating system
2can be made.
3
4Machine dependent sources are segregated into a directory
5heirarchy (i386/), within which hardware drivers are isolated in a per-bus
6directory (i386/isa), processor specific archetecture files may be found
7in a per-processor directory (i386/i386), and externally visiable machine
8dependant include files may be found also in a seperate directory
9(i386/include -- note: these are referred to explicitly via the "machine"
10include file symbolic link, or, implictly via the master include files in
11located in /usr/include -- thus <sys/types.h> will include
12i386/include/types.h, for example). System configuration files, are located
13in a configuration directory (i386/conf), from where the config program
14*must* be run as the first step in making a new system kernel.
15
16Generic machine-independant code is located in the various directories
17(kern, ufs, nfs, isofs, vm, net, netinet, stand, ddb, sys, conf).
18The central kernel is in the "kern" directory, and all of it's include files
19and shared definitions with other kernel subsystems are located in the
20"sys" include file directory. Filesystem dependant code (ufs, nfs, isofs)
21are located in their respective directories, and interface to the kernel
22via a virtual filesystem interface (vfs), definied within the kernel proper.
23The virtual memory subsystem is located in the "vm" directory. It's interface
24is subject to considerable revision. The optional in kernel debugger is
25present in two directories (ddb, i386/ddb), to use it you must compile the
26system with the "ddb" device, and load the symbol table with the "dbsym"
27command. Networking interface code is in the "net" directory, while "netinet"
28holds the INTERNET core protocol implementation. Shared standalone bootstrap code
29is in the "stand" directory.
30
31The directory "compile" holds all per-host compilation directories. In use,
32one goes to the i386/conf directory, runs the config program on a host
33description file (e.g. config SUMNER), which builds the "compile/SUMNER"
34directory and all files. Then, in the "compile/SUMNER" directory, the
35command "make depend" is used to build the dependency graph (.depend)
36for make. Next, the system is compiled from scratch by typing "make".
37The system may be tested by copying into a floppy that holds a minimal
38set of utilies (e.g. fixit floppy), and when satisfactory, can be copied
39into the root as /386bsd on the hard disk, and the system rebooted.
40
41To debug the system, one can use the "gdb" debugger to examine post-mortum
42dumps, or to modify kernel memory on a running system (e.g. setting
43debug flags in drivers). To read a postmortum (in /var/crash), type something
44like "gdb -k /var/crash/system.N /var/crash/ram.N", for the Nth dump you
45wish to examine. To look at a running system, "gdb -k /386bsd /dev/mem".
46For in-kernel debugging, one can compile in the "ddb" debugger and enter
47it by typing CTRL, ALT, and ESC simulatineously. Finally, printfs can be
48scattered in the kernel for debugging, just like user programs.