In this article I would like to describe how to integrate Fedora Core 2 (x86_64) with the Sun Fire v20z on board hardware in order to have full control of it.
The Sun Fire v20z is a 1U dual Opteron server (details here) which sports an impressive set of features designed for what is called "out-of-band" management, which in simple words, means to be able to "talk" to the server hardware regardless of which OS you loaded on it. On the other end, you can also perform "in-band" management", which means, managing the hardware from whithin the loaded OS. In the Sun Fire v20z, this is done is through the Intelligent Platform Management Interface (IPMI).
For their good reasons, Sun supports only RHEL 3, SuSE SLES 8 or SuSE 9 on the v20z, but if you are in a situation where Fedora fits into your requirements, you can follows those steps to get complete control on the server hardware.
First an outline of the necessary steps:
Having a server in mind, I installed a minimal Fedora system on it, i.e. performed an installation from the first CD only, where I deselected all package groups (this will then load 227 packages on the server). Then I added the needed packages to have a working environment for compiling a new kernel (I have setup a yum repository beforehand):
# yum install patch gcc tk xorg-x11-xauth rpm-buildnote that
xorg-x11-xauth
is needed because I want to work
out the kernel configuration with make xconfig
, which
means having a working X forwarding via ssh (therefore the xauth). If
you are happy with the ncurse based kernel configuration interface then
you don't need xorg-x11-xauth
.
Also, the rpm-build
is not strictly necessary, but I used
it for the
last step (userland tools installation).
Now I can build the kernel in the usual way (I used 2.4.26 patched for this security bug)
# make dep; make clean; make bzImage; make modules; make modules_install; make installConcerning the kernel configuration, I had to remove the aic79xx (CONFIG_SCSI_AIC79XX), ftape (CONFIG_FTAPE), cpqphp (CONFIG_HOTPLUG_PCI_COMPAQ) and ibmph (CONFIG_HOTPLUG_PCI_IBM) kernel modules to make it build.
In the end the grub bootloader has been updated with an entry for
the new kernel stanza and all the bits and bytes under /boot
have been properly set. However, one more step is necessary: because
the 2.4 kernels
look for /etc/modules.conf
, I had to create that file and
rebuild the initrd:
# cp /etc/modprobe.conf /etc/modules.confThis way the initrd will include the proper modules to boot up the system.
# mkinitrd -v -f /boot/initrd-2.4.26.img 2.4.26
Having completed the kernel installation, I then continued on the
second step: for the kernel modules I fetched the openipmi driver
package from the
Support Files CDROM that came with the server
(/path/to/cdrom/Support_Files/sysmgmt/redhat/rhel3/openipmi-1.1.8-27.noarch.rpm
)
and installed it with this command:
# rpm -ivh --nodeps openipmi-1.1.8-27.noarch.rpmif you get an error like this
error: unpacking of archive failed: cpio: lsetfileconjust run the rpm command again and it should install without further errors. It will then compile 3 kernel modules (ipmi_devintf, ipmi_msghandler and ipmi_kcs_drv) which have been especially setup by Sun to properly match the Sun Fire v20z hardware. Two of them will be loaded automatically
# lsmod | grep ipmibut the third one fails to load, so I did it manually
ipmi_devintf 5424 0 (unused)
ipmi_msghandler 26184 0 [ipmi_devintf]
# modprobe ipmi_kcs_drvEventually, correctly loaded modules will produce this entry in the system logs
# lsmod | grep ipmi
ipmi_kcs_drv 12421 0 (unused)
ipmi_devintf 5424 0
ipmi_msghandler 26184 0 [ipmi_kcs_drv ipmi_devintf]
Aug 19 12:06:59 opteron kernel: ipmi_kcs: Acquiring BMC @ port=0xa2also the file
/etc/rc.local
will be modified so that
those modules are reloaded on next reboot.
Once I have got the above modules loaded without errors, I proceeded to the last step: installing the userland tool wich can be downloaded here (a slightly older version is also available on the CDROM). Before the compilation I had to do this:
# yum install gcc-c++because the openipmi tools are written in C++ and need the above symbolik link to build properly. Then I extracted the rpm spec file, put the tarball where the rpm build process expects to find it and built the package:
# cd /usr/src/
# ln -s linux-2.4.26 linux-2.4
# tar xvzf ipmitool-1.5.9.tar.gz ipmitool-1.5.9/ipmitool.specagain, I got this error
# cp ipmitool-1.5.9.tar.gz /usr/src/redhat/SOURCES/
# rpmbuild -bb ipmitool-1.5.9/ipmitool.spec
# rpm -ivh /usr/src/redhat/RPMS/x86_64/ipmitool-1.5.9-1.x86_64.rpm
error: unpacking of archive failed: cpio: lsetfileconbut just repeating the rpm command succesfully installed the package. To test that all is right, try this command (it will scroll by for a while ..)
# ipmitool -I open sdr listif you get all sort of hardware diagnostics, the you are in business, enjoy!
... [snip] ...
cpu1.dietemp | 30 degrees C | ok
ambienttemp | 21 degrees C | ok
cpu0.memtemp | 25.20 degrees C | ok
... [snip] ...