Working around problems with a CentOS 6 kickstart upgrade

Each time I go to deploy a new release of Centos or Fedora I encounter a new “feature” or “change” that breaks configurations that previously worked. I recently encountered several problems upgrading several hosts to FEDORA 16, and this afternooon I encountered another issue while attempting to upgrade several Centos 5 servers to Centos 6.

The issue with the CentOS upgrade revolves around changes to the software installation groups. Groups that worked perfectly fine with CentOS 5 no longer work with CentOS 6. This results in the installer spitting out “This group does not exist” errors when it parses the “%packages” section in your kickstart.cfg:


So what exactly changed? In CentOS 5.7 we had the following groups available to the installer:

$ yum grouplist

Installed Groups:
   Administration Tools
   Dialup Networking Support
   GNOME Software Development
   Legacy Network Server
   Mail Server
   Network Servers
   Server Configuration Tools
   System Tools
   Web Server
   Windows File Server
   Yum Utilities
Available Groups:
   Authoring and Publishing
   Cluster Storage
   DNS Name Server
   Development Libraries
   Development Tools
   Engineering and Scientific
   FTP Server
   FreeNX and NX
   GNOME Desktop Environment
   Games and Entertainment
   Graphical Internet
   Java Development
   KDE (K Desktop Environment)
   KDE Software Development
   Legacy Software Development
   Legacy Software Support
   MySQL Database
   News Server
   OpenFabrics Enterprise Distribution
   PostgreSQL Database
   Printing Support
   Sound and Video
   Text-based Internet
   X Software Development
   X Window System

And in CentOS 6 this list was revised and expanded to the following groups:

$ yum grouplist

Installed Groups:
   E-mail server
   Graphical Administration Tools
   Hardware monitoring utilities
   Legacy UNIX compatibility
   Networking Tools
   Optional packages
   Performance Tools
   Perl Support
Available Groups:
   Additional Development
   Afrikaans Support
   Albanian Support
   Amazigh Support
   Arabic Support
   Armenian Support
   Assamese Support
   Azerbaijani Support
   Backup Client
   Backup Server
   Basque Support
   Belarusian Support
   Bengali Support
   Bhutanese Support
   Brazilian Portuguese Support
   Breton Support
   Bulgarian Support
   CIFS file server
   Catalan Support
   Chhattisgarhi Support
   Chichewa Support
   Chinese Support
   Compatibility libraries
   Console internet tools
   Coptic Support
   Croatian Support
   Czech Support
   Danish Support
   Debugging Tools
   Desktop Debugging and Performance Tools
   Desktop Platform
   Desktop Platform Development
   Development tools
   Dial-up Networking Support
   Directory Client
   Directory Server
   Dutch Support
   English (UK) Support
   Esperanto Support
   Estonian Support
   Ethiopic Support
   FCoE Storage Client
   FTP server
   Faroese Support
   Fijian Support
   Filipino Support
   Finnish Support
   French Support
   Frisian Support
   Friulian Support
   Gaelic Support
   Galician Support
   General Purpose Desktop
   Georgian Support
   German Support
   Graphics Creation Tools
   Greek Support
   Gujarati Support
   Hebrew Support
   High Availability
   High Availability Management
   Hiligaynon Support
   Hindi Support
   Hungarian Support
   Icelandic Support
   Indonesian Support
   Infiniband Support
   Input Methods
   Interlingua Support
   Internet Applications
   Internet Browser
   Inuktitut Support
   Irish Support
   Italian Support
   Japanese Support
   Java Platform
   KDE Desktop
   Kannada Support
   Kashmiri Support
   Kashubian Support
   Kazakh Support
   Khmer Support
   Kinyarwanda Support
   Konkani Support
   Korean Support
   Kurdish Support
   Lao Support
   Large Systems Performance
   Latin Support
   Latvian Support
   Legacy X Window System compatibility
   Lithuanian Support
   Load Balancer
   Low Saxon Support
   Luxembourgish Support
   Macedonian Support
   Mainframe Access
   Maithili Support
   Malagasy Support
   Malay Support
   Malayalam Support
   Maltese Support
   Manx Support
   Maori Support
   Marathi Support
   Messaging Client Support
   Messaging Server Support
   Mongolian Support
   MySQL Database client
   MySQL Database server
   Myanmar (Burmese) Support
   NFS file server
   Nepali Support
   Network Infrastructure Server
   Network Storage Server
   Network file system client
   Northern Sotho Support
   Norwegian Support
   Occitan Support
   Office Suite and Productivity
   Oriya Support
   PHP Support
   Persian Support
   Polish Support
   Portuguese Support
   PostgreSQL Database client
   PostgreSQL Database server
   Print Server
   Printing client
   Punjabi Support
   Remote Desktop Clients
   Resilient Storage
   Romanian Support
   Russian Support
   SNMP Support
   Sanskrit Support
   Sardinian Support
   Scalable Filesystems
   Scientific support
   Security Tools
   Serbian Support
   Server Platform
   Server Platform Development
   Sindhi Support
   Sinhala Support
   Slovak Support
   Slovenian Support
   Smart card support
   Somali Support
   Southern Ndebele Support
   Southern Sotho Support
   Spanish Support
   Storage Availability Tools
   Swahili Support
   Swati Support
   Swedish Support
   System Management
   System administration tools
   Tagalog Support
   Tajik Support
   Tamil Support
   TeX support
   Technical Writing
   Telugu Support
   Tetum Support
   Thai Support
   Tibetan Support
   Tsonga Support
   Tswana Support
   TurboGears application framework
   Turkish Support
   Turkmen Support
   Ukrainian Support
   Upper Sorbian Support
   Urdu Support
   Uzbek Support
   Venda Support
   Vietnamese Support
   Virtualization Client
   Virtualization Platform
   Virtualization Tools
   Walloon Support
   Web Server
   Web Servlet Engine
   Web-Based Enterprise Management
   Welsh Support
   X Window System
   Xhosa Support
   Zulu Support
   iSCSI Storage Client

So as you can see various groups were removed, some were renamed and others were added. I’ve come to expect problems like this with every CentOS and Fedora upgrade, since there appears to be little to no thought given to compatibility between releases. So with that said, my applications just finished compiling so it’s time to take CentOS 6 for a ride. :)

Working around various Fedora 16 installation errors

I went to upgrade a few of my lab machines to Fedora 16 today and encountered a number of issues. The first issue I encountered was related to missing “%end” tags in my kickstart configuration file. The specific error was “Section does not end with %end”:


It appears Fedora now requires the %packages and %post sections to be explicitly ended with an end tag. The kickstart file I was using was from a Fedora 12 installation, and it worked just fine. That leads me to believe that “end” tag enforcement was added in Fedora 13, 14, 15 or 16. I’ll need to research this further. Adding the end tags fixed this issue and got me a bit further along in the installer. But when anaconda got to storage discovery I was greeted with the error “you have not created a bootloader stage1 target device.”:


I figured this was due to a missing kickstart directive, and it turns out I was right. Fedora 16 now requires a biosboot partition, which you can create with the biosboot directive. Here is what the official documents say about the biosboot partition:

“As of Fedora 16 there must be a biosboot partition for the bootloader to be installed successfully. This partition may be created with the kickstart option part biosboot –fstype=biosboot –size=1. However, in the case that a disk has an existing biosboot partition, adding a “part biosboot” option is unnecessary.”

Everything is working now though it took a bit longer than normal to dump a new Fedora image on my kickstart server. Oh the joys of jumping on the FEDORA-LATEST bandwagon so soon after a release. :)

Kickstarting Linux without a DHCP server

Kickstart is a super useful techology for performing Linux installations. Typically when you type linux ks=XXX from the boot menu:

boot: linux ks=floppy:/ks.cfg

The host will use DHCP to acquire an IP address. If a DHCP server isn’t available on the network you want to perform the kickstart on, you can forego DHCP and assign a static IP address by appending the “ip=,” “netmask=,” “gateway=” and “dns=” options to the kickstart command line:

boot: linux ks=flopp:/ks.cfg ip= netmask= gateway= dns=

This can come in handy!