IBM VIOS network installation

This page has not been liked. Updated 4/12/13, 12:48 PM by BrianRappTags: None


The normal procedure to install the IBM Virtual I/O Server (VIOS) is using the delivered DVD. This can become an issue, for example if the system is located at a different place in a different building in a different street etc. or if you'll have to install more than one POWER5/5+ server. The solution is to install the VIOS using an installation server preferably a Linux based one.



The following section assumes that you'll hava a Linux based installation server up and running, meaning tftp, NFS and DHCP works for installation purposes.


My special thanks go to my colleaque Bernhard Zeller, IBM Germany, for working out how it works!

Preparing the installation sources

Just like any other network installation you must get and provide the installation sources on the installation server and to the clients. These sources are located on the installation DVD.

Either load the disk or mount the ISO-image and you will get something similar to the following.

bc1-mms:/ # mount -o loop -o map=off -o ro vios_1.2.1.iso /mnt
bc1-mms:/ # ll /mnt
total 46
drwxr-xr-x  11 root root 2048 Jan 11  2006 .
drwxr-xr-x  24 root root  632 Jun 23 15:22 ..
-rw-r--r--   1 root root   49 Jan 11  2006 .Version
-rw-r--r--   1 root root   27 Jan 10  2006 OSLEVEL
-r-xr-xr-x   1 root root 8985 Jan 11  2006 README.vios
drwxr-xr-x   3 root root 2048 Jan 10  2006 RPMS
-rw-r--r--   1 root root 5133 Jan 10  2006
-rw-r--r--   1 root root 9083 Jan 10  2006
drwxr-xr-x   3 root root 2048 Jan 10  2006 installp
drwxr-xr-x   3 root root 2048 Jan 10  2006 ismp
-rw-r--r--   1 root root   60 Jan 11  2006
*drwxr-xr-x   4 root root 2048 Jan 11  2006 nimol*
drwxr-xr-x   3 root root 2048 Jan 11  2006 ppc
drwxr-xr-x   4 root root 2048 Jan 10  2006 root
drwxr-xr-x   3 root root 2048 Jan 10  2006 sbin
drwxr-xr-x   3 root root 2048 Jan 10  2006 udi
drwxr-xr-x   8 root root 2048 Jan 10  2006 usr

The interesting part is located under nimol/ioserver_res - in our example it is /mnt/nimol/ioserver_res.

This subdirectory includes the bootkernel (, a control file for the installation (, a system backup (mksysb) and a so called SPOT (ispot.tar.Z) which is a mini filesystem required during the installation.

Copy the content of nimol/ioserver_res in a directory of your choice. To be consistent I am using the /export directory on my installation server as a top directory for all sources.

bc1-mms:/ # mkdir /export/vios
bc1-mms:/ # cp /mnt/nimol/ioserver_res/* /export/vios
bc1-mms:/ # ll /export/vios
total 597824
drwxr-xr-x   2 root   root         176 Aug 14 12:04 .
drwxrwxr-x  22 nobody nobody       544 Aug 14 12:04 ..
-rw-r--r--   1 root   root    11670966 Aug 14 12:04
-rw-r--r--   1 root   root         951 Aug 14 12:04
-rw-r--r--   1 root   root    34033393 Aug 14 12:04 ispot.tar.Z
-rw-r--r--   1 root   root   565862400 Aug 14 12:04 mksysb

As a next step unpack the SPOT ispot.tar.Z in the directory.

bc1-mms:/ # cd /export/vios
bc1-mms:/export/vios # tar -xzf ./ispot.tar.Z
total 597824
drwxr-xr-x   3 root   root         200 Aug 14 12:12 .
drwxrwxr-x  22 nobody nobody       544 Aug 14 12:04 ..
drwxr-xr-x   3 root   root          72 Jan 10  2006 SPOT
-rw-r--r--   1 root   root    11670966 Aug 14 12:04
-rw-r--r--   1 root   root         951 Aug 14 12:04
-rw-r--r--   1 root   root    34033393 Aug 14 12:04 ispot.tar.Z
-rw-r--r--   1 root   root   565862400 Aug 14 12:04 mksysb

Now it is time to copy the bootkernel to your /tftpboot directory.

bc1-mms:/export/vios # cp /tftpboot/
bc1-mms:/export/vios # cd /tftpboot/
bc1-mms:/tftpboot # gunzip
bc1-mms:/tftpboot # ll
total 59495
-rw-r--r--   1 root   root   12190720 Aug 14 12:18

Now you'll have two choices:

  1. Keep the name of the bootkernel and point each client to that kernel.
  2. Use a unique name for each system you want to install.

Now the first option works - the system loads and starts the kernel but then it is getting a little bit tricky. As a next step the system or partition will try to load a file call <bootkernelname>.info. This .info file includes all required information about which is the NFS server, which NFS directories to mount, which files to use for installation and things like the client identity (i.e. hostname etc.). As you might assume at this point, this little .info file must be unique for each client/system/lpar you want to install! For example if you want to install one VIOS on the systems called bc1-js21-1-vio and bc1-js21-2-vio you must have two info file - one called and one called If you've decided to keep the name of the bootkernel as it is you must change the contents of the file each time you want to install a different system. In my opinion, this is not very comfortable.

You can, of course, create a copy of the kernel and rename it. Which could be a waste of disk space.

A much easier way is to create a symbolic link for each system pointing to that special kernel.

bc1-mms:/tftpboot # ln -s bc1-js21-1-vio
bc1-mms:/tftpboot # ln -s bc1-js21-2-vio
bc1-mms:/tftpboot # ll
-rw-r--r--   1 root   root   12190720 Aug 14 12:18
lrwxrwxrwx   1 root   root          6 Aug 17 12:52 bc1-js21-1-vio ->
lrwxrwxrwx   1 root   root          6 Aug 17 12:52 bc1-js21-2-vio ->

Now you'll have two links pointing to one "real" bootkernel.



Please note that the name you give this bootkernel must be equal to the name within the DHCP configuration!

Preparing DHCP

Now you must tell DHCP how to react on boot request from a specific system - i.e. which bootkernel to provide. Open the file /etc/dhcpd.conf with an editor of your choice and create a client stanza for each system - similar to the one below. Once again be carefull that the name of the file reflects the naming conventions in your /tftpboot directory.

host {
hardware ethernet 00:11:25:c9:1a:ed;
filename "/bc1-js21-1-vio";



Remember to restart the DHCP server in order to activate the changes.

Preparing NFS

Due to the fact that the installation of the VIOS works only over NFS you must add a line to the /etc/exports.

#Export File
/export/vios     *(ro,insecure,no_root_squash,sync)



Please note the option insecure. This is mandatory otherwise the VIOS partition will not be able to mount the NFS share! In addition use no_root_squash because the system will try to mount the NFS shares as root user!

Ah, don't forget to tell the NFS server to reload the configuration file!

Preparing syslogd

Wouldn't it be nice to see what'll happen during the installation of the VIOS? Personally I'll like the idea and if you, too, want to know what's going on it is usefull to modify the configuration of the syslog daemon.

First allow syslogd to receive remote messages by editing /etc/sysconfig/syslog file.

# /etc/sysconfig/syslog



Please note that SYSLOGD_PARAMS could also be called SYSLOGD_OPTIONS depending on the Linux distribution you use.

Next modify the configuration of the syslogd by editing /etc/syslog.conf.

# /etc/syslog.conf
#local2,local3.*              -/var/log/localmessages
local3.*                      -/var/log/localmessages
local4,local5.*               -/var/log/localmessages
local6,local7.*               -/var/log/localmessages
local2.*                      -/var/log/nimol.log

And finally restart syslogd to activate the changes.

Creating the .info file

As stated above the partition you want to become a VIOS will boot the kernel image you've specified in the DHCP configuration file and after this kernel will be successfully loaded the partition will try to load an <bootkernelname>.info file to get the required information for the installation. In our example let's assume we want to install the bc1-js21-1-vio. After the system has loaded the kernel (remember it is a symbolic link) it will look for a file within /tftpboot.

To create this file simply use vi /tftpboot/ The content should read as follows.

#----- Network Install Manager Info File -----#
export NIM_SERVER_TYPE=linux
export NIM_SYSLOG_PORT=514
export NIM_NAME=bc1-js21-1-vio
export NIM_HOSTNAME=bc1-js21-1-vio
export NIM_CONFIGURATION=standalone
export NIM_MASTER_HOSTNAME=bc1-mms
export RC_CONFIG=rc.bos_inst
export NIM_BOSINST_ENV="/../SPOT/usr/lpp/bos.sysmgt/nim/methods/c_bosinst_env"
export NIM_BOSINST_RECOVER="/../SPOT/usr/lpp/bos.sysmgt/nim/methods/c_bosinst_env -a hostname=bc1-js21-1-vio"
export SPOT=bc1-mms:/export/vios/SPOT/usr
export NIM_BOS_FORMAT=mksysb
export NIM_HOSTS=" "
export NIM_MOUNTS=" bc1-mms:/export/vios/  bc1-mms:/export/vios/mksysb:/NIM_BOS_IMAGE:file "
export ROUTES=" default:0: "

Adjust the file to match your environment - which means change the values of the following lines:

    • This is the DNS hostname for your system you'll plan to install.
    • This is the DNS hostname of your Linux installation server.
    • Adjust the option hostname= to the name of the system you'll plan to install.
  • SPOT
    • Change to the NFS share where you've extracted the SPOT.
    • Change the IP adresses and hostnames.
    • Adjust the NFS mount points appropriate.
    • Finally tell which system is your default router.



Please note that each parameter must be written in one line. Do not use backslashes to make the file more human-readable - the system you want to install could be irritated and abort the installation.

After you've made all necessary changes don't forget to save the file!

Starting the installation

Now everything's in place you could start the installation of the VIOS. If you want to be sure everything works you can restart the services tftp, nfs and dhcpd if not already done. You can verify if everything works by mounting the NFS directory from whatever system on your network and by trying to load the installation image manually by using a tftp-client.

Assuming everything works as expected start the system and boot into the SMS menu.



If you've not been able to include the correct MAC address of the LAN adapter yet, this is the point where you can find it. Enter Setup Remote IPL and you'll find the MAC addresses (called Hardware Address). Use this addresses and include the desired one in your dhcpd.conf file. Don't forget to restart the DHCP server!

Initiate a network boot from the SMS using:

  • Selection 5. Select Boot Options
  • Selection 1. Select Install/Boot Device
  • Selection 6. Network
  • Selection 1 or 2. Physiscal Device
    • Depending which LAN adapter should be used
  • Selection 2. Normal Mode Boot
  • Selection 1. Yes

Now the system send a BOOTP request and it will get an answer - you will be able to monitor the installation in /var/log/messages.

Aug 15 14:44:42 bc1-mms dhcpd: BOOTREQUEST from 00:11:25:c9:17:d9 via eth0
Aug 15 14:44:42 bc1-mms dhcpd: BOOTREPLY for to (00:11:25:c9:17:d9) via eth0
Aug 15 14:45:07 bc1-js21-2-vio nimol:,info=LED 610: mount  -r bc1-mms:/export/vios/SPOT/usr /SPOT/usr,
Aug 15 14:45:07 bc1-mms rpc.mountd: authenticated mount request from for /export/vios/SPOT/usr (/export/vios)
Aug 15 14:45:07 bc1-js21-2-vio nimol:,info=,
Aug 15 14:45:08 bc1-js21-2-vio nimol:,-S,booting,op710-1-vio,
Aug 15 14:45:08 bc1-js21-2-vio nimol:,info=LED 610: mount  bc1-mms:/export/vios/ /NIM_BOSINST_DATA,
Aug 15 14:45:08 bc1-mms rpc.mountd: authenticated mount request from for /export/vios/ (/export/vios)
Aug 15 14:45:08 op710-1-vio nimol:,info=LED 610: mount  bc1-mms:/export/vios/mksysb /NIM_BOS_IMAGE,
Aug 15 14:45:08 bc1-mms rpc.mountd: authenticated mount request from for /export/vios/mksysb (/export/vios)
Aug 15 14:45:08 bc1-js21-2-vio nimol:,info=,
Aug 15 14:45:15 bc1-js21-2-vio nimol:,-R,success,op710-1-vio,
Aug 15 14:45:15 bc1-js21-2-vio nimol:,info=extract_data_files,
Aug 15 14:45:15 bc1-mms rpc.mountd: authenticated unmount request from for /export/vios/ (/export/vios)
Aug 15 14:45:15 bc1-js21-2-vio nimol:,info=query_disks,
Aug 15 14:45:16 bc1-js21-2-vio nimol:,info=extract_diskette_data,
Aug 15 14:45:17 bc1-js21-2-vio nimol:,info=setting_console,
Aug 15 14:45:17 bc1-js21-2-vio nimol:,info=initialization,
Aug 15 14:45:18 bc1-js21-2-vio nimol:,info=verifying_data_files,
Aug 15 14:45:24 bc1-js21-2-vio nimol:,info=,


Things that can go wrong

Well, first of all it is usefull to use a recent VIOS software. I've seen installations that will not proceed after the kernel has been loaded because I've been using an older version of the VIOS. Version 1.2.1 has been used during all tests and it worked on POWER5/5+ servers and JS21 BladeServers, too.

In addition a most likely cause for a failure lies within the network setup of the installation server. Be sure that tftp and NFS are configured correctly! If there's a problem you can find hints in the /var/log/messages file.

If you don't get an DHCP/BOOTP response be sure that the DHCP server is configured correctly - i.e. that you are using the correct LAN adapter (check the MAC address in /etc/dhcpd.conf. Note that most network setups do not allow a BOOTP request travelling over subnet boundaries. Either check the setup of your firewalls/routers or make shure that the installation is within the same subnet of the systems you want to install.