Boot SUN

De DocUnix.

Comment démarrer un SUN-Solaris en mode maintenance (single) :

A la console :

Pour passer en sur la console du serveur, passez la commande CO. Pour revenir sur l'openfirmware, taper ^B.

Au moment du boot du serveur (sur la console), envoyer un break à partir de l'openfirmware.

Revenir sur la console du serveur et au prompt soit > ou {ok} tapez boot -s

Pour modifier, la variable autoboot au prompt > ou {ok}, passer la commande setenv auto-boot? [false|true]

Comment créer un nouveau service sur Solaris 10

Avec solaris 10, la gestion de démarrage des services a été entièrement modifié. Il s'appuie maintenant sur un système de ressource comme sous AIX.

Pour créer un nouveau, il faut écrire un script standard de démarrage, arrêt et status de service. Exemple ci-dessous pour Xvfb placé dans notre exemple dans /etc/init.d d'après la doc IBM (corrigé) : http://publib.boulder.ibm.com/infocenter/iwphelp/v2r5m1/topic/com.ibm.wcs.ic.doc_2.5.1/install/i_inst_t_lwpsetup_xfvb_on_unx.html

/etc/init.d/xvfb avec les droits d'exécution root

#!/bin/sh

XVFB_DISPLAY=":0"

case "`uname`" in
        "Linux")
                XVFB_BINARY="/usr/X11R6/bin/Xvfb"
                ;;
        "SunOS"|"Solaris")
                XVFB_BINARY="/usr/openwin/bin/Xsun"
                ;;
        *)
                XVFB_BINARY=
                ;;
esac

if [ ! -z "$XVFB_BINARY" ]; then
        case "$1" in
                "start")
                        if [ -f "$XVFB_BINARY" ]; then
                                XVFB_PID="`pgrep -f \"$XVFB_BINARY $XVFB_DISPLAY\"`"
                                if [ -z "$XVFB_PID" ]; then
                                        echo "xvfb: Starting Xvfb on $XVFB_DISPLAY"
                                        `dirname $XVFB_BINARY`/Xvfb $XVFB_DISPLAY &
                                else
                                        echo "xvfb: ERROR: Xvfb is running on $XVFB_DISPLAY"
                                        exit
                                fi
                        else
                                echo "xvfb: ERROR: $XVFB_BINARY not found"
                                exit 1
                        fi
                        ;;
                "stop")
                        XVFB_PID="`pgrep -f \"$XVFB_BINARY $XVFB_DISPLAY\"`"
                        if [ ! -z "$XVFB_PID" ]; then
                                echo "xvfb: Stopping Xvfb on $XVFB_DISPLAY"
                                kill -9 $XVFB_PID
                           else
                                echo "xvfb: ERROR: Xvfb is not running on $XVFB_DISPLAY"
                                exit 1
                        fi
                                 ;;
                "status")
                        XVFB_PID="`pgrep -f \"$XVFB_BINARY $XVFB_DISPLAY\"`"
                        if [ -z "$XVFB_PID" ]; then
                             echo "xvfb: Xvfb is not running on $XVFB_DISPLAY"
                        else
                             echo "xvfb: Xvfb is running on $XVFB_DISPLAY"
                        fi
                        ;;
                *)
                        echo " Usage: "
                        echo " $0 start (start Xvfb)"
                        echo " $0 stop (stop Xvfb)"
                        echo " $0 status (check if Xvfb is running)"
                        exit 1
                        ;;
        esac
else
        echo "xvfb: ERROR: Could not determine platform"
        exit 1
fi

exit 0

Ensuite, il faut créer le fichier xml décrivant le service et ses dépendance dans /var/svc/manifest/site. Dans notre exemple, nous parlerons de xvfb.xml d'après la doc SUN http://docs.sun.com/app/docs/doc/820-2488/ds-tcp-sol10?l=en&a=view:

/var/svc/manifest/site/xvfb.xml

<?xml version="1.0"?>
<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
<!--
    ident    "@(#)xvfb.xml    1.0    09/01/12 SMI"
-->

<service_bundle type='manifest' name='SUNWcsr:xvfb'>

<service
    name='openwin/Xvfb'
    type='service'
    version='1'>

                        <create_default_instance enabled='true' />

                        <single_instance />

                <dependency
        name='fs-minimal'
        type='service'
        grouping='require_all'
        restart_on='none'>
                        <service_fmri value='svc:/system/filesystem/minimal' />
                </dependency>

                <dependency
        name='loopback-network'
        grouping='require_any'
        restart_on='none'
        type='service'>
                        <service_fmri value='svc:/network/loopback' />
                </dependency>

                <dependency
        name='physical-network'
        grouping='optional_all'
        restart_on='none'
        type='service'>
                        <service_fmri value='svc:/network/physical' />
                </dependency>

                <exec_method
        type='method'
        name='start'
        exec='/etc/init.d/xvfb'
        timeout_seconds='3' />

                <exec_method
               type='method'
               name='stop'
               exec=':true'
               timeout_seconds='3' >
                </exec_method>

                <property_group name='startd' type='framework'>
                        <propval name='duration' type='astring'  value='transient' />
                </property_group>

                <stability value='Unstable' />

                <template>
                        <common_name>
                                <loctext xml:lang='C'>
                                        openwin Xvfb
                                </loctext>
                        </common_name>
                </template>

</service>

</service_bundle>

Pour valider le fichier xml, il faut le valider avec la commande :

svccfg validate /var/svc/manifest/site/xvfb.xml

Or cette commande génère simplement une erreur d'ouverture de fichier s'il est incohérent. Dans ce cas, pour corriger le fichier, il faut utiliser la commande xmllint beaucoup plus claire dans ses remontées d'erreur :

xmllint /var/svc/manifest/site/xvfb.xml

Une fois le fichier validé par la commande svccfg validate, il faut l'importer avec la commande :

svccfg import /var/svc/manifest/site/xvfb.xml

Cela crée une nouvelle entrée dans les services, dans notre cas Xvfb. Ensuite pour que la commande soit lancée systématiquement à chaque reboot, il faut utiliser la commande svcadm :

svcadm enable Xvfb

Pour supprimer le service :

svcadm disable Xvfb
Outils personnels