# adding enough info to get node into dhcpd.conf rocks add host msu-kvm-1 cpus=8 rack=200 rank=1 membership=VM rocks add host interface msu-kvm-1 eth0 rocks set host interface ip msu-kvm-1 eth0 10.10.128.91 rocks set host interface name msu-kvm-1 eth0 msu-kvm-1 rocks set host interface mac msu-kvm-1 eth0 00:21:9b:92:24:cb rocks set host interface subnet msu-kvm-1 eth0 private # pxe will look for: # pxelinux.cfg/01-00-21-9b-92-24-cb # pxelinux.cfg/0A0A805B # ... To get ROCKS to generate the PXE config do: rocks set host krb-hep-0 action=os Modifying the bootactions in rocks db. These are the defaults from ROCKS 5.2: [root@msurxxi ~]# rocks list bootaction ACTION KERNEL RAMDISK ARGS install: vmlinuz-5.3-x86_64 initrd.img-5.3-x86_64 ks ramdisk_size=150000 lang= devfs=nomount pxe kssendmac selinux=0 noipv6 install headless: vmlinuz-5.3-x86_64 initrd.img-5.3-x86_64 ks ramdisk_size=150000 lang= devfs=nomount pxe kssendmac selinux=0 noipv6 headless vnc memtest: kernel memtest --------------------- -------------------------------------------------------------------------------------- os: localboot 0 --------------------- -------------------------------------------------------------------------------------- pxeflash: kernel memdisk bigraw pxeflash.img keeppxe rescue: vmlinuz-5.3-x86_64 initrd.img-5.3-x86_64 ks ramdisk_size=150000 lang= devfs=nomount pxe kssendmac selinux=0 noipv6 rescue And pxelinux.cfg/default is: [root@msurxxi ~]# cat /tftpboot/pxelinux/pxelinux.cfg/default.hide default rocks prompt 0 label rocks kernel vmlinuz-5.3-x86_64 append ks ramdisk_size=150000 lang= devfs=nomount pxe kssendmac selinux=0 noipv6 initrd=initrd.img-5.3-x86_64 The idea is to replace the bootactions os: and install: with menus that have timeouts and defaults set to match the rocks actions, but also allow interactive seelction of other items. Also a menu: bootaction is added. The pxelinux.cfg/default is rewritten by automatically by ROCKS. NOTE that running "rocks bootaction will update the pxelinux.cfg files for all hosts that use that bootaction. Need to remove install bootaction first in order to clear the initrd setting. (this gave me a python traceback, but did seem to do the right thing.) [root@msurxxi ~]# rocks remove bootaction action=install [root@msurxxi ~]# rocks add bootaction action=os args='pxelinux.cfg/rocks-os.menu' kernel='kernel menu.c32' [root@msurxxi ~]# rocks add bootaction action=install args='pxelinux.cfg/rocks-install.menu' kernel='kernel menu.c32' [root@msurxxi ~]# rocks add bootaction action=menu args='pxelinux.cfg/main.menu' kernel='kernel menu.c32' [root@msurxxi ~]# rocks list bootaction ACTION KERNEL RAMDISK ARGS install: kernel menu.c32 -------------------------- pxelinux.cfg/rocks-install.menu install headless: vmlinuz-5.3-x86_64 initrd.img-5.3-x86_64 ks ramdisk_size=150000 lang= devfs=nomount pxe kssendmac selinux=0 noipv6 headless vnc memtest: kernel memtest --------------------- -------------------------------------------------------------------------------------- menu: kernel menu.c32 --------------------- pxelinux.cfg/main.menu os: kernel menu.c32 --------------------- pxelinux.cfg/rocks-os.menu pxeflash: kernel memdisk bigraw pxeflash.img keeppxe rescue: vmlinuz-5.3-x86_64 initrd.img-5.3-x86_64 ks ramdisk_size=150000 lang= devfs=nomount pxe kssendmac selinux=0 noipv6 rescue ### setting for access on IPMI/DRAC console. For the PXELinux menu, the first menu definition loaded should begin with the line: SERIAL 1 57600 0x013 In ROCKS, this can be acheived by modifying /opt/rocks/lib/python2.4/site-packages/rocks/commands/set/host/boot/plugin_physical_host.py (The same file writes pxelinux.cfg/default) Keyboard didn't work for me via IPMI ### ROCKS default install and os actions can be replaced. Note that the syslinux 3.11 in SL5x doesn't do the timeout countdown. The images from pxelinux 4.02 in SL6 are included. Replace pxelinux.0 and menu.c32 together. ### To see grub menus, use config (as on dcache pool nodes) such as: [root@c-106-2 ~]# cat /boot/grub/grub-orig.conf # grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You do not have a /boot partition. This means that # all kernel and initrd paths are relative to /, eg. # root (hd1,0) # kernel /boot/vmlinuz-version ro root=/dev/sdb1 # initrd /boot/initrd-version.img #boot=/dev/sda default=0 timeout=5 hiddenmenu serial --unit=1 --speed=57600 --word=8 --parity=no --stop=1 terminal --timeout=5 serial console title Rocks (2.6.18-238.9.1.el5) root (hd1,0) kernel /boot/vmlinuz-2.6.18-238.9.1.el5 ro root=LABEL=/ time console=tty0 console=ttyS1,57600n8 initrd /boot/initrd-2.6.18-238.9.1.el5.img Note that the video console doesn't get the output of init (service startups). May need a modification to /etc/inittab? === rockwell@cap /tmp > diff plugin.orig plugin.new 139c139,140 < file = open(filename, 'w') --- > file = open(filename, 'w') > file.write('serial 1 57600 0x013\n') 144c145 < if len(kernel) > 6 and kernel[0:7] == 'vmlinuz': --- > if kernel and len(kernel) > 6 and kernel[0:7] == 'vmlinuz': 146c147 < if len(ramdisk) > 0: --- > if ramdisk and len(ramdisk) > 0: 151c152 < if len(args) > 0: --- > if args and len(args) > 0: 210c211,212 < file = open(filename, 'w') --- > file = open(filename, 'w') > file.write('serial 1 57600 0x013\n')