Personal tools
     DOCUMENTATION

rPath Linux:Installer Customization/Common Customizations

From rPath Wiki

Jump to: navigation, search
rPath Linux --> Installer --> Customization --> Common Customizations

Contents

The following are considerations and instructions for some common customizations for the installer for appliances created in rBuilder based on rPath Linux.

Adding Custom Graphics to the Installer

rBuilder brands an appliance installation based on information in the rBuilder project. It uses default graphics and information such as the project name. To customize the graphics for the installer, add custom pixmap files by creating an anaconda-custom package.

The following are the graphics typically customized when using anaconda-custom. They should be installed in /usr/share/anaconda/pixmaps:

Filename Size (in pixels)
anaconda_header.png 800 x 58
first.png 800 x 600
first-lowres.png 640 x 480
progress_first.png 500 x 325
progress_first-375.png 353 x 170
splash.png 400 x 420
syslinux-splash.png 640 x 300

In the anaconda-custom recipe, use code as in the example here and modify it for your project:

class AnacondaCustom(PackageRecipe):
    name = 'anaconda-custom'
    version = '0.1'
 
    def setup(r):
        r.addSource('splash.png', 
                dest = '/usr/share/anaconda/pixmaps/')

To ensure the appliance uses these customizations, commit the anaconda-custom package to the rBuilder project associated with the appliance's development. When creating an installable ISO image of the appliance, expand the Advanced Options when creating an appliance build in rBuilder to verify the anaconda-custom package will be included during the build process, or to choose a particular version of anaconda-custom (the most recent is used by default).

Image:Bulbgraph.png   Most graphics can be modified or substituted directly. To display properly, the syslinux splash screen syslinux-splash.png needs to be saved as an indexed mode, 16-color (14 is best) portable network graphic (png) file. Solid colors are preferable to dithering.

Customizing Package Selection

See Installer Software Selection for considerations and instructions for using groups in an rBuilder project to customize the package selection in the Anaconda installer.

Modifying Installer Steps/Forcing Defaults During Installation

Create a custom install class for your rBuilder project to skip Anaconda installer steps and to force default selections during installation. Use the anaconda-custom package to include this custom Python script and to install it in /usr/share/anaconda/installclasses/.

The following example is a script (class file) named custom.py created to instruct the installer to skip particular steps in installation. Use a corresponding dispatch.skipStep to skip each step:

 
from installclass import BaseInstallClass
from rhpl.translate import *
from constants import *
import os
import iutil
 
class InstallClass(BaseInstallClass):
    hidden = 0
 
    id = "testclass"
    name = N_("r_Test Install Class")
    pixmap = "icon.png"
    description = N_("Software Appliance Installation")
 
    sortPriority = 100
    showLoginChoice = 1
 
    def setSteps(self, dispatch):
        BaseInstallClass.setSteps(self, dispatch);
 
        # Skip a bunch of steps--should be fairly self-explanatory.
        dispatch.skipStep("partitionmethod")
        dispatch.skipStep("partition")
        dispatch.skipStep("authentication")
        dispatch.skipStep("bootloader")
        dispatch.skipStep("network")
        dispatch.skipStep("package-selection")
        dispatch.skipStep("firewall")
        dispatch.skipStep("confirminstall")
 
    def setGroupSelection(self, grpset, intf):
        BaseInstallClass.__init__(self, grpset)
 
        # Automatically select "Everything" in package selection.
        grpset.unselectAll()
        grpset.selectGroup("everything")
 
    def setInstallData(self, id):
        BaseInstallClass.setInstallData(self, id)
        # Default to clear ALL partitions on the system. You will be prompted first.
        BaseInstallClass.setDefaultPartitioning(self, id.partitions, CLEARPART_TYPE_ALL)

In the example, the line dispatch.skipStep("firewall") is included to skip the step for configuring the firewall. Using this to skip the step results in the installer accepting the Anaconda defaults, which is firewall enabled and blocking all incoming traffic. If the appliance requires the firewall to allow certain incoming connections, a developer can define the selections and still skip the firewall step in the installer. For example, the following line at the end of this file enables the firewall and allows ssh and http connections (on ports 22 and 80 respectively):

self.setFirewall(id, ports = ['22:tcp', '80:tcp'])

In the anaconda-custom recipe, use a line resembling the following to add your custom install class:

r.addSource('custom.py', dir = '/usr/share/anaconda/installclasses/')

Product Name and Version in Stage 1

Currently, the product name and version for rPath Linux is specified in a text file used in Stage 1 (first of two stages of the installation). The text file is makebootdisk.dir/.buildstamp in anaconda-templates, and currently there is no way to modify this text file besides creating a custom anaconda-templates package for the purpose. See  Issue: RBL-1068