UYOK

From SystemImager

Jump to: navigation, search

Contents

UYOK (UseYourOwnKernel)

Overview

SystemImager uses its own kernel+initrd.img to perform the installation of a generic image in the clients. Obviously this kernel is used only in the install phase; after the installation the clients will boot with their own kernel+initrd.img that must be present in the deployed image. The kernel+initrd.img used for the installation is called BOEL and it's shipped with the systemimager-i386boot-standard RPM. When you install the RPM you can find the kernel+initrd.img in /usr/share/systemimager/boot/<arch>/standard/, where <arch> is your architecture (i386, x86_64, ia64, ...).

BOEL uses a general purpose kernel that supports a lot of hardware components, but obviously it can't support all the possible devices that could be present in a totally generic client.

For this reason starting from 3.6.x release the UYOK (UseYourOwnKernel) was introduced. This feature allows you to use the same kernel that runs in your golden client to perform the installation in other clients. In this way it's possible to theoretically support all the hardware/components you could have.

To use UYOK and generate a custom kernel+initrd.img for your installer go to your golden client and run the following command:

 # si_prepareclient --server servername --no-rsyncd --my-modules

The initrd.img will be generated on the fly from the initrd_template package (eg. systemimager-i386initrd_template). If you specify --no-rsyncd argument, rsyncd will be not restarted. With --my-modules you can save a lot of space in the UYOK initrd, because only the the modules that are currently loaded in your golden client will be included. Without --my-modules all the available modules will be added into the initrd allowing your UYOK kernel+initrd.img to be used also with heterogeneous clients.

If all goes well you'll find the UYOK kernel+initrd.img in /etc/systemimager/boot/ in your golden client. When you run si_getimage from your image server (in this case do not specify --no-rsyncd) the UYOK kernel and initrd.img will be transferred to /usr/share/systemimager/boot/<arch>/<name_of_your_image> in your image server.

In general, if you have a heterogeneous environment (clients with different hardware and components) it's better to use the standard BOEL kernel+initrd.img, because the standard kernel is strongly optimized to obtain better performance. In the other cases, in particular if you have 3rd-party or custom kernel modules, it's strongly recommended to use UYOK.

PXE boot

If you boot your clients via network (PXE), you can simply copy the opportune kernel+initrd.img in /tftpboot to switch between standard BOEL installation and UYOK installation. Here is a typical pxelinux configuration:

 LABEL systemimager
 KERNEL kernel
 APPEND vga=extended initrd=initrd.img root=/dev/ram MONITOR_SERVER=192.168.0.2 MONITOR_CONSOLE=yes ramdisk_size=80000

Remember that if you don't use the --my-modules with si_prepareclient you could need to increase the ramdisk_size, typically a size of 80000 (80MB) should be enough for all the possible cases.

And remember that after you've configured the boot server, you can enable a client to boot via PXE or update its configuration simply modifying the file /etc/systemimager/pxelinux.cfg/syslinux.cfg in your boot server (like the configuration above) and running the following command:

 # si_mkclientnetboot --netboot --clients "hostname1 hostname2 ... | ip1 ip2 ..."

See also

Personal tools