# Linux: Programm mit UI einmalig beim Systemstart ausführen



## Grizzly (21. Feb 2012)

Hallo alle zusammen,

ich habe folgenden Problemfall und würde mich über Input von Euch freuen:

Ich habe ein Java Programm, welches auf der JCurses (einer ncurses Umsetzung für Java) aufbaut. Dieses soll beim ersten Systemstart eines Ubuntu Systems einmalig ausgeführt werden. Dabei soll das UI am Bildschirm angezeigt werden - und zwar bevor der Login kommt. Sprich für das Programm soll man sich nicht einloggen müssen. Wenn das Programm erfolgreich beendet wurde, soll der Login kommen und bei jedem weiteren Start soll das Programm nicht mehr erscheinen bzw. nicht mehr ausgeführt werden.

Ich habe schon einen Lösungansatz über die CRONTAB gebastelt. Das funktioniert soweit auch ganz super (ein Eintrag in /var/log/messages wird erzeugt)... bis auf die Kleinigkeit, dass das UI nicht angezeigt wird. Ist aber prinzipiell auch klar, da CRON Jobs normalerweise immer im Hintergrund ausgeführt werden.

Als Nächstes habe ich probiert, ein entsprechendes Start-Skript in /etc/init.d abzulegen und dieses per

```
update-rc.d bootuprun start 99 3 .
```
als Startscript im Runlevel 3 einzutragen ("bootuprun" ist der Name des Skripts). Das funktioniert aber irgendwie überhaupt nicht. Hier das Skript:

```
#!/bin/sh

### BEGIN INIT INFO
# Provides:
# Required-Start:
# Required-Stop:
# Default-Start: 3
# Default-Stop:
# Short-Description: Executes scripts one time at boot time.
# Description: This script executes other scripts one time at
#              the boot time.
### END INIT INFO

PATH=/sbin:/bin:/usr/sbin:/usr/bin

logger -t bootuprun -p local3.info "Start bootuprun..."
echo "This is a bootuprun test!"
# read -p "Press [Enter] key to continue..." enterkey
logger -t bootuprun -p local3.info "bootuprun finished."

exit 0
```

Irgendwelche Ideen, wo mein Fehler liegt? Oder vielleicht ein Vorschlag mit einem ganz anderen Ansatz?


----------



## Grizzly (21. Feb 2012)

Okay, nach weiterem Suchen bin ich jetzt auf die Datei /etc/rc.local gestoßen. Diese wird als letzter Schritt vor dem Anzeigen des Logins ausgeführt. 

Leider scheint der read Befehl irgendwie nicht zu funktionieren. Ich hoffe, dass das an der für rc.local verwendeten Shell liegt und kein generelles Problem ist. Naja, schauen wir mal, wie sich das entwickelt...


----------



## Grizzly (21. Feb 2012)

Okay, das mit der Tastatur ist ein generelles Problem.


----------



## Grizzly (21. Feb 2012)

Ah, jetzt, ja, eine Insel: Ich habe das Problem gefunden. Es ist die verwendete Shell.
Standardmäßig sieht /etc/rc.local unter Ubuntu 10.04.3 LTS Server in etwa so aus (wenn man von den Kommentaren absieht):

```
#!/bin/sh -e

exit 0
```
Und in der Konstellation reagiert read auf keine Eingaben. Ich habe nun die Datei folgendermaßen umgeschrieben - und siehe da: Es funktioniert. 

```
#!/bin/bash -e

echo "Hello World"
echo "Please wait 10 seconds or press [Enter] key..."
read -t10 -n1

exit 0
```
Die Geschichte mit den 10 Sekunden habe ich mehr zur Sicherheit eingebaut, da ich das System ansonsten über PuTTY wiederbeleben hätte müssen - falls die Sache schief gegangen wäre.


----------

