There are many applications today which have support for doing automated operating system installs. - oVirt/RHEV - support Windows SIF/unattended installs & Fedora/RHEL kickstarts - Oz - support Windows SIF/unattended installs & Fedora/RHEL kickstarts and equiv for Mandrake, Mandriva, Ubuntu, OpenSuse, Debian. - Ubuntu VM Builder - support Ubuntu only - BoxGrinder - supports RHEL, Fedora, CentOS, Scientific Linux kickstarts - GNOME Boxes - supports Windows SIF/unattended installs & Fedora kickstarts IMHO this is sub-optimal because everyone is reinventing the wheel, and they have to include alot of OS specific code todo so. The goal of libosinfo is to remove all OS specific knowledge from applications. Thus we need to provide API support for these automated installs. This series does just that. The new OsinfoInstallScript class provides the actual templates for generating the OS specific install script. The templates are representing using XSLT, so that we can easily do runtime variable substitution and conditional content generation. The new OsinfoInstallConfig class provides the configurable parameters that can be subsituted into the install scripts. This includes hardware properties (architecture), localization (timezone, language, keyboard), admin details (password), user details (login name, password, autologin flag, etc) and registration details (product key, user login & password). Each template is tagged with a 'profile'. The standard profile is 'jeos' which does a minimal installation. The other standard profile is 'desktop' which is a general purpose desktop install. It is possible to define site-specific configuration parameters and provide alternative templates and new template profiles. There is a new command line tool 'osinfo-install-script' which can be used by admins to generate a install script for any supported OS in our database. Of couse mgmt apps can use the API todo the same.eg # osinfo-install-script \ --profile jeos \ --config i10n-timezone=GMT \ --config i10n-keyboard=uk \ --config i10n-language=en_GB.UTF-8 \ --config admin-password=123456 \ fedora16 # Install script for fedora16 profile jeos install text keyboard us lang en_US.UTF-8 skipx network --device eth0 --bootproto dhcp rootpw 123456 firewall --disabled authconfig --enableshadow --enablemd5 selinux --enforcing timezone --utc America/New_York bootloader --location=mbr zerombr clearpart --all --drives=vda part biosboot --fstype=biosboot --size=1 part /boot --fstype ext4 --size=200 --ondisk=vda part pv.2 --size=1 --grow --ondisk=vda volgroup VolGroup00 --pesize=32768 pv.2 logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=768 --grow --maxsize=1536 logvol / --fstype ext4 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow reboot %packages @base @core @hardware-support %end