Kernel configuration

From OpenVZ Virtuozzo Containers Wiki
Jump to: navigation, search

This article summarises various kernel configuration issues.

OpenVZ related kernel config options[edit]

Please make sure the following config options are enabled in your kernel .config file before compilation process:

CONFIG_SCHED_VCPU=y
CONFIG_FAIRSCHED=y
CONFIG_SIM_FS=m
CONFIG_VZ_QUOTA=m
# CONFIG_VZ_QUOTA_UNLOAD is not set
CONFIG_VZ_QUOTA_UGID=y
CONFIG_VE=y
CONFIG_VE_CALLS=m
CONFIG_VZ_GENCALLS=y
CONFIG_VE_NETDEV=m
CONFIG_VE_ETHDEV=m
CONFIG_VZ_DEV=m
CONFIG_VE_IPTABLES=y
CONFIG_VZ_WDOG=m
CONFIG_VZ_CHECKPOINT=m
Yellowpin.svg Note: On architectures that do not currently support checkpointing (i.e. ppc and sparc) CONFIG_VZ_CHECKPOINT should be set to n

ACPI sleep[edit]

It is a bit tricky to make ACPI sleep and OpenVZ work together.

ACPI sleep is enabled by ACPI_SLEEP kernel option. The following dependencies are declared in kernel configs:

ACPI_SLEEP depends on X86 && (!SMP || SUSPEND_SMP)
SUSPEND_SMP depends on HOTPLUG_CPU && X86 && PM
FAIRSCHED depends on SCHED_VCPU

And SCHED_VCPU is incompatible with HOTPLUG_CPU:

./kernel/cpu.c:#error "CONFIG_HOTPLUG_CPU isn't supported with CONFIG_SCHED_VCPU"

On a non-SMP machine, you may disable SMP, this will resolve the conflict.

If you have an SMP machine, you can only disable FAIRSCHED and SCHED_VCPU. It will reduce some isolation between VEs (CPU scheduling will be performed per-task, not per-VE, and cpuunits and cpulimit settings will not take effect), but it is an acceptable solution if your VEs are trusted (and it's hard to imagine untrusted VEs on a notebook.)