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

