Make optional kernel subsystems register themselves via sysctl
The goal of this project is to provide an easy way of registration of optional kernel components under the kern.features sysctl tree, and spoofing of these values. This will help porters to improve automatic build configuration of ported software. Also writing system administration tools would become easier. Currently very few components register themselves, and the status of this registration cannot be changed later. I have an idea to make per-jail feature set, so it will be possible to have a jail where kern.features.compat_freebsd5 will be OFF while it's present in kernel. The idea of this project is taken from The FreeBSD list of projects
Project mentor: AlexanderLeidinger
IRC: kibab @ RusNet, kibab @ EFNet
Pre-beginning: Determine what kernel features really need to be registered via this framework.
24.05.10 - 30.05.10: Implementing sysctl change handler (that will be called when there is an attempt to change sysctl's value).
31.05.10 - 06.06.10: Organizing a persistent storage of sysctl values in a kernel address space (it will contain both values generated at boot-time and their overrides). Providing MP-safe ways to read//write to this storage.
07.06.10 - 20.06.10: Developing a way to set values that were absent. For example, if current kernel doesn't have COMPAT_FREEBSD7, but we want this to be spoofed. Testing, bugfixes. Code developed at this step will be presented as a mid-term evaluation.
21.06.10 - 04.07.10: Begin making per-jail sysctl storage. The goal is to give each jail a separate set of visible kernel features. This involves changing already developed code to keep a separate storage for each jail.
05.07.10 - 18.07.10: Mid-term avaluation: registration of the existing FEATURE macro consumers works, spoofing for these values works.
19.07.10 - 25.07.10: End making per-jail sysctl storage. Adding registration of all remaining kernel features.
26.07.10 - 08.08.10: Testing (building different package sets for different feature sets on the same host system). «Buffer zone» to finish what was not done, bugfixes.
09.08.10 - 15.08.10: Preparing final evaluation. Submitting final evaluation.