1#!/sbin/sh 2# 3# CDDL HEADER START 4# 5# The contents of this file are subject to the terms of the 6# Common Development and Distribution License (the "License"). 7# You may not use this file except in compliance with the License. 8# 9# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10# or http://www.opensolaris.org/os/licensing. 11# See the License for the specific language governing permissions 12# and limitations under the License. 13# 14# When distributing Covered Code, include this CDDL HEADER in each 15# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16# If applicable, add the following below this CDDL HEADER, with the 17# fields enclosed by brackets "[]" replaced with your own identifying 18# information: Portions Copyright [yyyy] [name of copyright owner] 19# 20# CDDL HEADER END 21# 22 23# 24# Copyright 2008 Sun Microsystems, Inc. All rights reserved. 25# Use is subject to license terms. 26# 27 28cat >console-login.xml <<EOF 29<?xml version="1.0"?> 30<!-- 31 Copyright 2008 Sun Microsystems, Inc. All rights reserved. 32 Use is subject to license terms. 33 34 NOTE: This service manifest is not editable; its contents will 35 be overwritten by package or patch operations, including 36 operating system upgrade. Make customizations in a different 37 file. 38--> 39 40<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1"> 41 42<service_bundle type='manifest' name='SUNWcsr:console'> 43 44<service 45 name='system/console-login' 46 type='service' 47 version='1'> 48 49 <dependency 50 name='fs' 51 grouping='require_all' 52 restart_on='none' 53 type='service'> 54 <service_fmri value='svc:/system/filesystem/minimal' /> 55 </dependency> 56 57 <dependency 58 name='identity' 59 grouping='require_all' 60 restart_on='none' 61 type='service'> 62 <service_fmri value='svc:/system/identity:node' /> 63 </dependency> 64 65 <dependency 66 name='utmpx' 67 grouping='require_all' 68 restart_on='none' 69 type='service'> 70 <service_fmri value='svc:/system/utmp:default' /> 71 </dependency> 72 73 <!-- Note that console-login should be dependent on any services 74 that may need to use the console. This requirement can be met 75 by establishing a dependency on milestone/sysconfig which, 76 among other things, collects such dependencies. 77 --> 78 <dependency 79 name='sysconfig' 80 grouping='require_all' 81 restart_on='none' 82 type='service'> 83 <service_fmri value='svc:/milestone/sysconfig' /> 84 </dependency> 85 86 <exec_method 87 type='method' 88 name='start' 89 exec='/lib/svc/method/console-login %i' 90 timeout_seconds='0'> 91 <method_context> 92 <method_credential user='root' group='root' /> 93 </method_context> 94 </exec_method> 95 96 <exec_method 97 type='method' 98 name='stop' 99 exec=':kill -9' 100 timeout_seconds='3'> 101 <method_context> 102 <method_credential user='root' group='root' /> 103 </method_context> 104 </exec_method> 105 106 107 <property_group name='startd' type='framework'> 108 <propval name='duration' type='astring' value='child' /> 109 <propval name='ignore_error' type='astring' 110 value='core,signal' /> 111 <propval name='utmpx_prefix' type='astring' value='co' /> 112 </property_group> 113 114 <property_group name='general' type='framework'> 115 <propval name='action_authorization' type='astring' 116 value='solaris.smf.manage.vt' /> 117 <propval name='value_authorization' type='astring' 118 value='solaris.smf.manage.vt' /> 119 </property_group> 120 121 <!-- these are passed to ttymon in the method script. 122 note that value_authorization is not passed to ttymon 123 and it's for smf_security(7). 124 --> 125 <property_group name='ttymon' type='application'> 126 <propval name='value_authorization' type='astring' 127 value='solaris.smf.value.vt' /> 128 <propval name='device' type='astring' value='/dev/console' /> 129 <propval name='label' type='astring' value='console' /> 130 <propval name='timeout' type='count' value='0' /> 131 <propval name='nohangup' type='boolean' value='true' /> 132 <propval name='modules' type='astring' 133 value='ldterm,ttcompat' /> 134 <propval name='prompt' type='astring' 135 value='\`uname -n\` console login:' /> 136 <propval name='terminal_type' type='astring' 137 value='' /> 138 </property_group> 139 140 141<instance name='default' enabled='true'> 142</instance> 143 144EOF 145 146# Note that this script file is normally parsed during build by sh(1). 147# When the parser encounters an EOF token (like the one above), it 148# will fork off and pipe all the text after the EOF above to the shell 149# for execution. 150# 151# one system console (/dev/console) plus five virtual consoles 152# (/dev/vt/#, # is from 2 to 6). 153 154for num in 2 3 4 5 6; do 155 cat >>console-login.xml <<EOF 156 157<instance name='vt$num' enabled='false'> 158 159 <dependency 160 name='system-console' 161 grouping='require_all' 162 restart_on='none' 163 type='service'> 164 <service_fmri value='svc:/system/console-login:default' /> 165 </dependency> 166 167 <dependency 168 name='vtdaemon' 169 grouping='require_all' 170 restart_on='none' 171 type='service'> 172 <service_fmri value='svc:/system/vtdaemon:default' /> 173 </dependency> 174 175 <!-- these are passed to ttymon in the method script --> 176 <property_group name='ttymon' type='application'> 177 <propval name='value_authorization' type='astring' 178 value='solaris.smf.value.vt' /> 179 <propval name='device' type='astring' value='/dev/vt/$num' /> 180 <propval name='label' type='astring' value='console' /> 181 <propval name='timeout' type='count' value='0' /> 182 <propval name='nohangup' type='boolean' value='true' /> 183 <propval name='modules' type='astring' 184 value='ldterm,ttcompat' /> 185 <propval name='prompt' type='astring' 186 value='\`uname -n\` vt$num login:' /> 187 <propval name='terminal_type' type='astring' 188 value='' /> 189 </property_group> 190 191</instance> 192 193EOF 194done 195 196cat >>console-login.xml <<EOF 197 198 <stability value='Evolving' /> 199 200 <template> 201 <common_name> 202 <loctext xml:lang='C'> 203Console login 204 </loctext> 205 </common_name> 206 <documentation> 207 <manpage title='ttymon' section='8' 208 manpath='/usr/share/man' /> 209 </documentation> 210 211 <pg_pattern name='ttymon' type='application' target='this' 212 required='false'> 213 <prop_pattern name='device' type='astring' 214 required='false'> 215 <description> 216 <loctext xml:lang='C'> 217The terminal device to be used for the console login prompt. 218 </loctext> 219 </description> 220 <visibility value='readwrite'/> 221 <cardinality min='1' max='1'/> 222 <values> 223 <value name='/dev/console'> 224 <description> 225 <loctext xml:lang='C'> 226The default console device 227 </loctext> 228 </description> 229 </value> 230 <value name='/dev/wscons'> 231 <description> 232 <loctext xml:lang='C'> 233The physical workstation console (i.e. keyboard and monitor) 234 </loctext> 235 </description> 236 </value> 237 <value name='/dev/term/a'> 238 <description> 239 <loctext xml:lang='C'> 240Serial device A 241 </loctext> 242 </description> 243 </value> 244 <value name='/dev/term/b'> 245 <description> 246 <loctext xml:lang='C'> 247Serial device B 248 </loctext> 249 </description> 250 </value> 251 </values> 252 <choices> 253 <include_values type='values'/> 254 </choices> 255 </prop_pattern> 256 <prop_pattern name='label' type='astring' 257 required='false'> 258 <common_name> 259 <loctext xml:lang='C'> 260/etc/ttydefs entry 261 </loctext> 262 </common_name> 263 <description> 264 <loctext xml:lang='C'> 265The appropriate entry from /etc/ttydefs 266 </loctext> 267 </description> 268 <visibility value='readwrite'/> 269 <cardinality min='1' max='1'/> 270 </prop_pattern> 271 <prop_pattern name='timeout' type='count' 272 required='false'> 273 <description> 274 <loctext xml:lang='C'> 275If no user input is given within the number of seconds defined by this property after the prompt is printed, ttymon should exit. 276 </loctext> 277 </description> 278 <units> 279 <loctext xml:lang='C'> 280seconds 281 </loctext> 282 </units> 283 <visibility value='readwrite'/> 284 <cardinality min='1' max='1'/> 285 </prop_pattern> 286 <prop_pattern name='nohangup' type='boolean' 287 required='false'> 288 <description> 289 <loctext xml:lang='C'> 290Do not force a hangup on the line by setting the speed to zero before setting the speed to the default or specified speed. 291 </loctext> 292 </description> 293 <visibility value='readwrite'/> 294 <cardinality min='1' max='1'/> 295 </prop_pattern> 296 <prop_pattern name='modules' type='astring' 297 required='false'> 298 <common_name> 299 <loctext xml:lang='C'> 300STREAMS modules 301 </loctext> 302 </common_name> 303 <description> 304 <loctext xml:lang='C'> 305STREAMS modules to be pushed on the terminal 306 </loctext> 307 </description> 308 <visibility value='readwrite'/> 309 <internal_separators>,</internal_separators> 310 </prop_pattern> 311 <prop_pattern name='prompt' type='astring' 312 required='false'> 313 <description> 314 <loctext xml:lang='C'> 315Prompt to be printed on console 316 </loctext> 317 </description> 318 <visibility value='readwrite'/> 319 <cardinality min='1' max='1'/> 320 </prop_pattern> 321 <prop_pattern name='terminal_type' type='astring' 322 required='false'> 323 <description> 324 <loctext xml:lang='C'> 325Sets the initial value of the TERM environment variable 326 </loctext> 327 </description> 328 <visibility value='readwrite'/> 329 <cardinality min='1' max='1'/> 330 </prop_pattern> 331 </pg_pattern> 332 333 </template> 334</service> 335 336</service_bundle> 337EOF 338