# lineakd

## equinox0r

hi ..

ich habe mir ein kleines initscript für lineakd gebastelt .. leider braucht der daemon einen laufenden x-server .. kann man das irgendwie umgehen so dass einfach nur die config für lineakd geladen wird? oder muss man den dazu irgendwie austricksen?

für interessierte noch das script:

```
#!/sbin/runscript

start() {

        ebegin "Starting lineakd"

        /usr/bin/lineakd -f /etc/lineakd.conf

        eend $?

}

end() {

        ebegin "Stopping lineakd"

        killall -9 lineakd

        eend $?

}
```

----------

## Yanaar

Hi,

also, mein Script sieht so aus:

```

#!/bin/sh

/usr/bin/lineakd

```

und steckt im Autostart meines KDE. Ganz einfach   :Very Happy: 

----------

## equinox0r

naja so würde das natürlich auch funktionieren, aber so ein initscript find ich schöner  :Wink: 

----------

## Yanaar

Ja, ja, ich seh schon, mein sauber ausgearbeitetes Script ist Dir nicht kompliziert genug   :Smile: 

Vielleicht reicht ja schon sowas wie

```

depend() {

 use X

}

```

zu Beginn des Scriptes, aber ich weiß nicht, ob es "use X" überhaupt gibt. Schau Dir mal /etc/init.d/xdm an, oder andere Scripte, aber ich finde nichts dort, was auf den ersten Blick vom Starten des X-Servers abhängt.

Ein anderes Problem könnte auch sein, dass nicht Du als user lineak startest, sondern root. Wie das dann aussieht, z.B. mit dem Starten von Programmen über einen Multimedia-Knopf oder der Zuordnung von Start/Stop/Pause etc zu einem Multimedia-Programm, das der user gestartet hat, aber deren Kontrolle root gehört, das weiß ich auch nicht. 

Da finde ich meine Lösung eleganter, denn läuft erst mal alles, startest und stoppst Du es ohnehin nicht ständig   :Very Happy: 

----------

## equinox0r

 *Yanaar wrote:*   

> 
> 
> ```
> 
> depend() {
> ...

 

das hatte ich mir auch schon überlegt, aber es gibt ja kein "X" in /etc/init.d/

xdm benutze ich nicht, ich dachte vielleicht an sowas, dass der framebuffer dazu missbraucht werden kann, ich weiss aber nicht wie ...

 *Yanaar wrote:*   

> Ein anderes Problem könnte auch sein, dass nicht Du als user lineak startest, sondern root. Wie das dann aussieht, z.B. mit dem Starten von Programmen über einen Multimedia-Knopf oder der Zuordnung von Start/Stop/Pause etc zu einem Multimedia-Programm, das der user gestartet hat, aber deren Kontrolle root gehört, das weiß ich auch nicht. 

 

das macht keine probleme. wenn ich (innerhalb vom X) als root "/etc/init.d/lineakd start" aufrufe, tun die tasten für jeden user

 *Yanaar wrote:*   

> Da finde ich meine Lösung eleganter, denn läuft erst mal alles, startest und stoppst Du es ohnehin nicht ständig  

 

ha.. du vielleicht  :Wink: 

----------

## psyqil

 *equinox0r wrote:*   

> ha.. du vielleicht 

  :Very Happy:  Ja, aber wenn Du's in .xinitrc oder so hast, kannst Du's doch immer noch mit Deinem Skript abschiessen und neustarten...

----------

## equinox0r

ich wollts aber trotzdem gern im init haben .. sieht beim booten schöner aus  :Very Happy:   :Very Happy: 

----------

## equinox0r

mir ist eben noch was eingefallen..

man kann ja runlevels selbst definieren.. leider hab ich davon kein plan, ist das so irgendwie möglich?

----------

## moe

 *equinox0r wrote:*   

> 
> 
> es gibt ja kein "X" in /etc/init.d/
> 
> xdm benutze ich nicht,
> ...

 

Nur um ein evtl. Missverständniss auszuräumen, /etc/init.d/xdm startet den Loginmanager (heisst das so?) deiner Wahl (festgelegt in /etc/profile), nicht zwingend den xdm..

Wenn du allerdings völlig ohne xdm,gdm,kdm,wasauchimmer arbeitest, bringt dir ein "use xdm" in deinem runscript trotzdem nichts..

Gruss Maurice

----------

## equinox0r

jop ist klar .. 

würde es denn funktionieren, wenn ich im initscript in 10 sekundenabständen überprüfe ob $DISPLAY gesetzt ist oder nicht?

hält das dann die anderen init prozesse auf?

----------

## moe

Hmm, normalerweise würden dann alle folgenden Initscripte warten bis deiner endlich fertig ist.. Das könnte man dann evtl. verhindern, wenn man in /etc/conf.d/rc RC_PARALLEL_STARTUP="yes" setzt..

Wie, wer und wodurch startet denn deine X-Session?

Gruss Maurice

----------

## equinox0r

mein user mit startx ..

ich hab noch keinen loginmanager gesehen der mir gefallen würde, deshalb mach ich das so  :Wink: 

also login -> exec startx

das mit dem parallel_startup hört sich schonmal ganz gut an ...

----------

## moe

Ich vermute aber, dass /etc/init.d/local (wegen "after *") erst dann starten wird, wenn alle anderen Initscripts fertig sind, du also keinen Loginprompt erhalten wirst..

Obwohl ich gerade sehe, dass in /etc/init.d/local lediglich etwaige Einträge in /etc/conf.d/local.start|stop ausgewertet werden, wer verursacht denn eigentlich den Login-Prompt?

----------

## equinox0r

du meinst

c1:12345:respawn:/sbin/agetty 38400 tty1 linux

?

----------

## moe

Jo genau, wo stehtn das, bzw. wer ruft das auf?

----------

## equinox0r

ich weiss zwar nicht genau was du mit "wo das steht" meinst, aber folgendes sollte zumindest den anderen teil deiner frage beantworten  :Wink: 

```
ps faux ww | grep agetty

root      1959  0.0  0.0  1380  564 vc/1     S    Sep14   0:00 /sbin/agetty 38400 tty1 linux

root      1960  0.0  0.0  1380  564 vc/2     S    Sep14   0:00 /sbin/agetty 38400 tty2 linux

root      1961  0.0  0.0  1380  564 vc/3     S    Sep14   0:00 /sbin/agetty 38400 tty3 linux

root      1962  0.0  0.0  1380  564 vc/4     S    Sep14   0:00 /sbin/agetty 38400 tty4 linux

root      1963  0.0  0.0  1380  564 vc/5     S    Sep14   0:00 /sbin/agetty 38400 tty5 linux

root      1964  0.0  0.0  1380  564 vc/6     S    Sep14   0:00 /sbin/agetty 38400 tty6 linux
```

----------

## moe

Ja fast, meinte eigentlich welcher Skript (sofern überhaupt) diese Prozesse startet.. Ich erinnere mich dunkel an UML (User-Mode-Linux) Probleme, wo man genau diesen Aufruf ändern musste, damits auch auf virtuellen Terminals klappt, aber mir will nicht einfallen wo das war..

edit: nu ists mir eingefallen, das war in /etc/securetty also kein direkter Befehlsaufruf.. Musst halt einfach mal probieren, wenn dein Initscript dann wirklich den Login verhindert, kannst ihn ja immernoch wieder rausnehmen..

----------

## Yanaar

Ich weiß aber nicht, ob "alle 10 Sekunden überprüfen, ob etwas gestartet ist" im Sinne von runlevels ist.

Wenn Du ein eigenes Runlevel willst, mußt Du immer noch X vorher starten, den Erfolg beim Booten zu bewundern, ist also ohnehin nicht   :Smile: 

Ein eigenes runlevel bedeutet: Ordner in /etc/runlevels erstellen, z.B. lineak, alles mit rc-update add hinzufügen, was Du ohnehin in default hast plus xdm plus Dein lineak und schließlich dem Bootloader Deiner Wahl die Option mitzugeben, bei grub wäre das:

softlevel=lineak.

In Dein Startscript setzt Du dann sowas wie use (oder need) xdm als depend.

Dann hast Du nur die Möglichkeit, mit X und lineak oder ohne X und lineak zu starten, ist für Deinen Wunsch also nicht wirklich sinnvoll. Und wie gesagt, sehen tust Du nichts.

lineaks X-Abhängigkeit steht übrigens im ebuild, ich dachte zuerst, dass vielleicht nur xosd dafür verantwortlich wäre. Aber auch ohne xosd will es X haben.

Du kannst ja mal probieren, ob Du es ohne X-Abhängigkeit übersetzen kannst und wenn ja, was Dir dann so alles fehlt   :Very Happy: 

----------

## psyqil

 *Quote:*   

> Ja fast, meinte eigentlich welcher Skript (sofern überhaupt) diese Prozesse startet..

 

man init! Du sollst Vater und Mutter ehren!  :Very Happy: 

----------

## equinox0r

 *Yanaar wrote:*   

> Du kannst ja mal probieren, ob Du es ohne X-Abhängigkeit übersetzen kannst und wenn ja, was Dir dann so alles fehlt  

 

das ist vielleicht eine idee ...

weil den lineakd brauche ich ja eigentlich nur um das configfile zu laden, die gui dazu habe ich noch nie gestartet  :Wink: 

und der dienst alleine benötigt sicherlich kein X ...

----------

## Yanaar

 *equinox0r wrote:*   

>  *Yanaar wrote:*   Du kannst ja mal probieren, ob Du es ohne X-Abhängigkeit übersetzen kannst und wenn ja, was Dir dann so alles fehlt   
> 
> das ist vielleicht eine idee ...
> 
> weil den lineakd brauche ich ja eigentlich nur um das configfile zu laden, die gui dazu habe ich noch nie gestartet 
> ...

 

Das glaube ich nicht, das gui-config-Ding und lineakd sind ja auch zwei verschiedene ebuilds, das gui-Teil muß man nicht emergen und trotzdem steht im lineakd-ebuild, es benötige X.

Ich schätze, die Makros brauchen X, wobei

EAK_SCREEN_LOCK(X) Where X is either KDE, GNOME or XSCREENSAVER

das einzige ist, das nach X riecht.

Das Ergebnis wird sein, dass lineak entweder gar nicht kompiliert oder Du am Ende gar keines dieser Makros hast. Deshalb meinte ich, versuchs und schau nach, was fehlt.

Wenns durchkompiliert und Du nichts vermißt, is gut   :Smile: 

----------

