8.7. Cross Kickstarting

Rocks supports heterogeneous clusters that contain nodes of different hardware architectures with a process called cross-kickstarting. To support an architecture different than its own, a frontend needs to expand its local distribution with additional packages. This section describes how to install distributions for other architectures on your frontend.

Start with a frontend node, as described by Install Frontend Rocks 6, or Upgrade Frontend. Follow the instructions below for every desired architecture.

8.7.1. Cross Kickstarting x86_64 Compute Nodes with a i386 Frontend

For this example, we assume the frontend is an i386 (32-bit) and the compute nodes are x86_64 CPUs (64-bit).

  1. Download the x86_64 Rocks rolls. At a minimum, you'll need to download the x86_64 versions of the Base, Kernel, Web Server and OS disk 1 and OS disk 2 rolls.

    For each roll, add it to the frontend's roll repository:

    # rocks add roll <roll-name>.iso
    # rocks enable roll <roll-name>
  2. Rebuild your distribution:

    # cd /export/rocks/install
    # rocks create distro
    # rocks create distro arch=x86_64
  3. To prepare the frontend to cross-kickstart compute nodes via PXE, you first need to add the rocks-boot package from the x86_64 architecture:

    # rpm -i --force --ignorearch /export/rocks/install/rocks-dist/x86_64/RedHat/RPMS/rocks-boot-7.0-1.x86_64.rpm
    # cp /boot/kickstart/default/vmlinuz-7.0-x86_64 /tftpboot/pxelinux
    # cp /boot/kickstart/default/initrd.img-7.0-x86_64 /tftpboot/pxelinux
  4. Then you need to add a new bootaction:

    # rocks add bootaction action="install x86_64" kernel="vmlinuz-7.0-x86_64" \
      ramdisk="initrd.img-7.0-x86_64" \
      args="ks ramdisk_size=150000 lang= devfs=nomount pxe kssendmac selinux=0 noipv6"
  5. The next step requires you to PXE boot the cross-kickstarted node twice: the first is to discover the node, and a second time to install it.

    On the frontend, run insert-ethers to discover the compute node:

    # insert-ethers

    Then, PXE boot the compute node. After the compute node is discovered by insert-ethers, kill insert-ethers (by hitting the F9 key), then turn off the compute node.

    Now instruct the node to use the "install x86_64" profile when it PXE boots (the command below assumes the compute node's name is compute-0-0):

    # rocks set host installaction compute-0-0 action="install x86_64"

    Now PXE boot the compute node again. The compute node will now install itself with the x86_64 distribution.

8.7.2. Cross Kickstarting i386 Compute Nodes with a x86_64 Frontend

For this example, we assume the frontend is a x86_64 (64-bit) and the compute nodes are i386 CPUs (32-bit).

  1. Download the i386 Rocks rolls. At a minimum, you'll need to download the i386 versions of the Base, Kernel, Web Server and OS disk 1 and OS disk 2 rolls.

    For each roll, add it to the frontend's roll repository:

    # rocks add roll <roll-name>.iso
    # rocks enable roll <roll-name>
  2. Rebuild your distribution:

    # cd /export/rocks/install
    # rocks create distro
    # rocks create distro arch=i386
  3. To prepare the frontend to cross-kickstart compute nodes via PXE, you first need to add the rocks-boot package from the i386 architecture:

    # rpm -i --force /export/rocks/install/rocks-dist/i386/RedHat/RPMS/rocks-boot-7.0-1.i386.rpm
    # cp /boot/kickstart/default/vmlinuz-7.0-i386 /tftpboot/pxelinux
    # cp /boot/kickstart/default/initrd.img-7.0-i386 /tftpboot/pxelinux
  4. Then you need to add a new bootaction:

    # rocks add bootaction action="install i386" kernel="vmlinuz-7.0-i386" \
      ramdisk="initrd.img-7.0-i386" \
      args="ks ramdisk_size=150000 lang= devfs=nomount pxe kssendmac selinux=0 noipv6"
  5. The next step requires you to PXE boot the cross-kickstarted node twice: the first is to discover the node, and a second time to install it.

    On the frontend, run insert-ethers to discover the compute node:

    # insert-ethers

    Then, PXE boot the compute node. After the compute node is discovered by insert-ethers, kill insert-ethers (by hitting the F9 key), then turn off the compute node.

    Now instruct the node to use the "install i386" profile when it PXE boots (the command below assumes the compute node's name is compute-0-0):

    # rocks set host installaction compute-0-0 action="install i386"

    Now PXE boot the compute node again. The compute node will now install itself with the i386 distribution.