BOEL update
From SystemImager
Contents |
[edit]
HOWTO: update SystemImager kernel (a.k.a. BOEL)
[edit]
Start with the old .config
Copy the previous config file from patches/linux.<ARCH>.config into the new kernel source directory. For example:
$ cp patches/linux.i386.config src/linux-2.6.16/.config
[edit]
Make the kernel
Try to make the kernel, cloning the previous configuration:
$ cd src/linux-2.6.16 && make xconfig
Surely you will get some errors here, due to the differences of the previous configuration parameters, but that's not a problem.
Using the xconfig interface simply choose a configuration compatible with the new kernel you want to use and remember the following guidelines.
[edit]
Developer's guidelines
- compile only the minimum functionalities to boot and to reach the image server via the network (compile all the available network drivers statically in the kernel)
- compile storage drivers and file systems as kernel modules (they'll be included in boel_binaries.tar.gz)
- do not use SLOB allocator: rsync becomes very slow with that! (better to use SLAB)
- compile RAM disk support statically in the kernel
- compile these filesystems statically in the kernel: cramfs, procfs', sysfs, tmpfs (aka virtual memory filesystem), ISO 9660, UDF
- enable support for large block devices
- enable support for largest memory size (in some systems with a lot of memory users could want to use tmpfs staging of the whole image)
- regarding networking and storage be more general as you can: BOEL should support all the available network cards and disk controllers
- remember that the target environment is mainly a single-user and single-task system (a preemptible kernel will only provide lower performance)
- do not enable sound and multimedia stuff
Moreover remember to update the kernel patches and remove those that are no more needed. The patches are constituted of the following files:
patches/linux.<ARCH>.<PATCH_NAME>.patch
[edit]
Update the .config
Save the new generated .config in patches/linux.<ARCH>.config and make the systemimager package to check if there's something wrong:
$ cp src/linux-2.6.16/.config patches/linux.i386.config $ make
