For information on editing, see the description of Plan 9 wiki syntax.
Venti is necessary to get the most out of Fossil. See [setting up Venti]. If you are using a Venti server on your local machine, you need to find your local IP address (cat /net/ndb) and set ! % venti=your-ip-address in your environment. The main data storage for Fossil is the Venti server. Fossil keeps dirty blocks and ephemeral snapshots in a local disk partition called the write buffer. The write buffer does not need to be as big as the file system you wish to store, but it it doesn't hurt and it makes the initialization easier. Rsc's laptop uses a fossil write buffer of a gigabyte, and sources server uses a mere half gigabyte. Note that if you built a fossil (non-kfs) machine with the help of the installer, many of the steps in this document have already been done by the installer. It's probably worth your time to understand what it did on your behalf, but you can skip over doing things until the part about adding "listen" commands to serve files to other machines. Format the write buffer with: ! % fossil/flfmt /dev/sdC0/fossil Then create a file called flproto containing: ! srv -p fscons ! srv fossil ! fsys main config /dev/sdC0/fossil ! fsys main open -AWP ! fsys main note: make sure the file ends in '\n' (i.e. hit enter after the last line) -- otherwise, fossil will silently treat it as an error. See fossilcons(8) for more about what the commands mean. Run ! % fossil/fossil -c '. flproto' ! % con -l /srv/fscons to start fossil, execute the flproto script, and connect to the console. If any command in the script fails, the script does not continue. Connecting to /srv/fscons should show you any errors. If you type enter a few times you should get ! prompt: ! main: ! main: (The first prompt is printed before the script runs. The last command in the script changes the default file system to `main'; subsequent prompts reflect this.) Draw a new window and mount fossil: ! % mount -c /srv/fossil /n/fossil Now you have a console window and a window with fossil mounted. You'll be switching between them quite a bit. The examples will show the % prompt for the shell commands and main: for the fossil console commands. The -AWP flags in the open command turn off authentication, turn on arbitrary wstats, and turn off permission checking. The fossil file system has three main trees: /active, /archive, and /snapshot. The active file system is in /active. When you mounted /srv/fossil before, you attached to /active. See fossil(4) for more. Before you can create files with particular users and groups, you need to add them to the users table. Execute the following at the fossil console to create a users file: ! main: create /active/adm adm sys d775 ! main: You'll probably want to use the same set of users from your current file system. The file format has changed slightly from the old kfs format, in that the first field is now a string rather than a number. (The string is what gets stored in the fossil disk structures, just like a number gets stored in the kfs and fs disk structures.) You can convert by running: ! % sed 's/^([^:]+):([^:]+)/\2:\2/' /adm/users >/n/fossil/adm/users Here, /adm/users comes probably from your local kfs. Then tell fossil to reload the users file: ! main: users -r /active/adm/users Test that the reload worked by running: ! % echo hi >/n/fossil/foo ! % chgrp glenda /n/fossil/foo ! % ls -l /n/fossil/foo ! % rm /n/fossil/foo The chgrp should succeed. If it doesn't, the users table isn't right. Now you're in a good state for initializing the file system, which you can do with: ! % mount /srv/kfs /n/kfs ! % disk/mkfs -a -s /n/kfs /sys/lib/sysconfig/proto/allproto | ! disk/mkext -u -d /n/fossil If your kfs and fossil write buffer are on the same disk, you may find that running one and then the other is much faster so they don't contend for the disk: ! % disk/mkfs -a -s /n/kfs /sys/lib/sysconfig/proto/allproto >/somewhere/else ! % disk/mkext -u -d /n/fossil /mnt/factotum/ctl to set up a key. This will be necessary for the mount to work once you lose the -AWP flags. The user name should be your user name on the local machine. The password can be anything. (Since both mount and fossil are using the same factotum and thus the same keys, the authentication will succeed!) Congratulations! You have a fossil. See fossil(4) and fossilcons(8) for more information. BOOTING A STANDALONE FOSSIL SYSTEM NOTE: this section relates to an older type of kernels, called 'pcfl' which have now been deprecated for the 'pcf' ones, which allow you to change fossil configurations without having to recompile kernels. If you have installed Plan 9 directly onto a disk without using a kfs partition then you do not need to read this section. This is complicated and clunky. You will have to debug something along the way. You really need to understand how the system works and how all the pieces fit together before you attempt this. It is possible to build a kernel that boots from a local fossil system. The pc kernel configuration pcfl is the starting point. Copy pcfl to pcyour-sys-name and then: * change cpuserver = 0 to cpuserver = 1 in port if you want a cpu server. * change fl to your own system name in the paths in the bootdir section. You need to create /sys/lib/sysconfig/your-sys-name and populate it. The files in /sys/lib/sysconfig/fl are a good starting point. You'll want to edit them to suit your setup. In particular, you need to: * change boot's cpuserver=no to cpuserver=yes if desired * change boot's venti command line if desired * change flproto to fit your configuration; note that the srv file must be named boot and not fossil. * change venti.conf to fit your configuration. You may also have to edit the set of boot files in the configuration file for the kernel to include fdisk, and run fdisk -p from your boot script, if your venti partitions need so to be learned. Now you should be able to build a kernel and boot it. Note that you have to run lnfs in order to build. It probably won't boot because something isn't set up quite right. You're on your own for debugging.