Article ID: 111112, created on Apr 12, 2011, last review on Aug 12, 2014

  • Applies to:
  • Virtuozzo containers for Linux 4.6
  • Virtuozzo containers for Linux 4.0

ATTENTION: This article is for old RDAC drivers and may not work with newer version.
It is recommended to use this article for all driver versions.


1) Download 'devel' packages for your kernel following this knowledge base article:
6732 How to obtain kernel headers on PVC node in order to compile a third-party driver

[root@pvclinux64 ~]# PVC=`awk '{print $NF}' /etc/virtuozzo-release`
[root@pvclinux64 ~]# KERNEL=`uname -r`
[root@pvclinux64 ~]# ARCH=`uname -m`
[root@pvclinux64 ~]# mkdir drivers
[root@pvclinux64 ~]# cd drivers/
[root@pvclinux64 drivers]# wget -c${ARCH}/${PVC}/CU-${KERNEL}/vzkernel-devel-${KERNEL}.${ARCH}.rpm
[root@pvclinux64 drivers]# wget -c${ARCH}/${PVC}/CU-${KERNEL}/vzmodules-${KERNEL}.${ARCH}.rpm
[root@pvclinux64 drivers]# wget -c${ARCH}/${PVC}/CU-${KERNEL}/vzkernel-${KERNEL}.${ARCH}.rpm

2) Download the latest rdac driver for your device from this link or contact the hardware vendor.
[root@pvclinux64 drivers]# wget -c

3) Create a temporary container based on CentOS 5 or RHEL 5 OS template and start it:
[root@pvclinux64 drivers]# vzctl create 55 --ostemplate centos-5-x86_64 --config slm.1024MB --hostname rdacdrivers
[root@pvclinux64 ~]# vzctl set 55 --diskspace 10000000 --save
[root@pvclinux64 drivers]# vzctl start 55

4) Install 'devel' template into container or separate packages (as in case of RHEL template):
[root@pvclinux64 drivers]# vzpkg install 55 devel
or if there is no devel template installed for the selected OS template it is possible to install packages in the following way:
[root@pvclinux64 drivers]# vzpkg install 55 -p autoconf213 psutils patchutils rpm-build rpm-python gcc gcc-c++ gcc-gnat gcc-java gcc-objc gdb openjade openssl-perl patch tetex tetex-latex tetex-dvips libtool automake14 automake15 automake16 automake17 cpp cvs passivetex texinfo dejagnu gettext flex dos2unix doxygen distcache bc bison byacc gperf docbook-style-xsl xmlto strace docbook-dtds tetex-latex tetex-dvips xmltex gnutls-devel apr-devel apr-util-devel gd-devel cups-devel curl-devel db4-devel rpm-devel distcache-devel python-devel gettext-devel glib-devel glib2-devel gmp-devel gettext-devel expect-devel bzip2-devel beecrypt-devel httpd-devel kudzu-devel libattr-devel libacl-devel hesiod-devel krb5-devel libselinux-devel libgcrypt-devel libgpg-error-devel audit-libs-devel libusb-devel zlib-devel unixODBC-devel sendmail-devel tcl-devel pam-devel readline-devel slang-devel libtiff-devel libxml2-devel libxslt-devel ncurses-devel net-snmp-devel newt-devel openssl-devel libpng-devel freetype-devel fontconfig-devel libgcj-devel

5) Copy kernel headers and driver sources to container:
[root@pvclinux64 drivers]# cp ./* /vz/root/55/root

6) Enter to the temporary container:
[root@pvclinux64 drivers]# vzctl enter 55
entered into Container 55
-bash-3.2# su -
[root@rdacdrivers ~]#

7) Install kernel headers:
[root@rdacdrivers ~]# rpm -ihv *.rpm --nodeps

8) Extract driver sources:
[root@rdacdrivers ~]# tar -xvzf rdac-LINUX-09.03.0C05.0331-source.tar.gz -C /root

9) Compile the driver:
[root@rdacdrivers ~]# cd linuxrdac-09.03.0C05.0331/
[root@rdacdrivers linuxrdac-09.03.0C05.0331]# make all

10) Archive compiled drivers:
[root@rdacdrivers linuxrdac-09.03.0C05.0331]# mkdir /root/rdac
[root@rdacdrivers linuxrdac-09.03.0C05.0331]# DEST_DIR=/root/rdac make copyfiles copyrpmfiles
[root@rdacdrivers linuxrdac-09.03.0C05.0331]# tar zcf /root/rdac-`uname -r`.x86_64.tar.gz -C /root/rdac .
11) Install drivers to the node:
[root@rdacdrivers linuxrdac-09.03.0C05.0331]# exit
-bash-3.2# exit
exited from Container 55
[root@pvclinux64 drivers]# tar -zxf /vz/root/55/root/rdac-`uname -r`.x86_64.tar.gz -C /
[root@pvclinux64 drivers]# cd /vz/root/55/root/linuxrdac-09.03.0C05.0331/
[root@pvclinux64 linuxrdac-09.03.0C05.0331]# depmod -a
[root@pvclinux64 linuxrdac-09.03.0C05.0331]# make setupdriver
12) Find the generated MPP initrd image and correct grub.conf to be used for you kernel:
[root@pvclinux64 linuxrdac-09.03.0C05.0331]# ls -la /boot/mpp-`uname -r`.img
-rw-------   1 root root  2773633 Apr  8 12:45 mpp-2.6.18-028stab070.14.img
[root@pvclinux64 linuxrdac-09.03.0C05.0331]# vim /etc/grub.conf
[root@pvclinux64 linuxrdac-09.03.0C05.0331]# grep -B3 mpp  /etc/grub.conf
title Parallels Containers (2.6.18-028stab070.14)
    root (hd0,0)
    kernel /vmlinuz-2.6.18-028stab070.14root=/dev/sda4    resume=/dev/sda2 splash=silent showopts debug max_scsi_luns=8
    initrd /mpp-2.6.18-028stab070.14.img

NOTE: After compiling and installing the driver to the node it is required to configure multipathing according to your needs.

Additional information

See also related articles:
111113 How to compile custom drivers for PVC kernel
6732 How to install kernel headers on PVC node in order to compile a third-party driver
6731 How to build HP-ILO modules for PVC

36627b12981f68a16405a79233409a5e d02f9caf3e11b191a38179103495106f e8e50b42231236b82df27684e7ec0beb 35c16f1fded8e42577cb3df16429c57a 2897d76d56d2010f4e3a28f864d69223

Email subscription for changes to this article
Save as PDF