# KDE Shutdown Menu erweitern?

## michel7

Wie kann ich mein KDE Shutdown Menu auf diese Art und Weise erweitern?

http://www.mrgreen.info/Foren/Beitraege/Bildschirmphoto2.png

So dass ich gleich aus KDE auswählen kann, welches OS beim Neustart gebootet wird?!

Irgendwie scheinen recht viele Distris (Suse, KUbuntu, Mandriva) diese Erweiterung zu haben, aber unter Gentoo funktioniert es nicht ...

----------

## manuels

Moin,

ich habe mich dafür auch mal interessiert.

Die Option wird (ich weiss nicht ab welcher KDE-Version) automatisch angezeigt, wenn man Zugriff auf die /boot/grub/grub.conf hat.

Bei Gentoo Linux ist (wenn man alles per Anleitung macht) /boot aber auf einer eigenen Boot-Partition, die normalerweise nicht gemoutet ist.Ich habe mal mit Oswald Buddenhagen (der KDE-Entwickler, der dafür zuständig ist) gesprochen, ob KDE die Partition nicht automatisch mounten könne.

Er sagte jedoch, dass der Aufwand für so etwas zu groß sei.

Tschö mit ö

Manuel

----------

## Dragonix

 *Quote:*   

> Die Option wird (ich weiss nicht ab welcher KDE-Version) automatisch angezeigt, wenn man Zugriff auf die /boot/grub/grub.conf hat. 

 

Kann ich mit 3.5.5 nicht bestätigen:

Und für alle die /boot nicht extra haben:

Kmenu --> Einstellungen --> Systemverwaltung --> Anmeldungsmanager

Da dann den Reiter "Herunterfahren" auswählen und bei Verschiedenes den Bootmanager auswählen, in diesem Fall Grub.

Bei meinem 2. Pc gehts, bei meinem ersten komischerweisse aber nich   :Shocked: 

----------

## Fauli

 *Dragonix wrote:*   

> Bei meinem 2. Pc gehts, bei meinem ersten komischerweisse aber nich  

 

Sind denn die Rechte so gesetzt, dass der User /boot/grub/grub.conf lesen kann?

----------

## michel7

Also bei mir ist /boot keine eigenständige Partition sondern ein Verzeichnis auf der Festplatte, daher muss in diesem Fall nichts gemountet werden. Allerdings werden die Bootoptionen im Shutdows Menü auch nicht automatisch angezeigt. Ich vermute da muss was gepatcht werden ... Ahja /boot/grub/grub.conf ist auch für normale Benutzer lesbar.

P.S: Kmenu --> Einstellungen --> Systemverwaltung --> Anmeldungsmanager -> Grub ist schon voreingestellt, allerdings alles ohne Erfolg.

Wenn jemand genauere Infos hat wie man dieses Menü freischalten lässt ... so her damit ;)

----------

## manuels

Normale Nutzer müssen die grub.conf auch bearbeiten dürfen.

----------

## Fauli

 *manuels wrote:*   

> Normale Nutzer müssen die grub.conf auch bearbeiten dürfen.

 

Stimmt, das leuchtet mir ein.

Aber das ist doch auch eine Sicherheitslücke: Jemand könnte durch irgendeine Backdoor mit den Rechten des Users einen präparierten Kernel im Home-Verzeichnis des Users ablegen und diesen dann beim nächsten Booten starten.

----------

## michel7

 *manuels wrote:*   

> Normale Nutzer müssen die grub.conf auch bearbeiten dürfen.

 

Das bleibt glaube ich nur root-nutzern vorbehalten.

----------

## manuels

nagut, aber wenn du der normale Nutzer die Datei nicht bearbeiten kann, dann kann Grub auch nicht wissen was es als nächstes starten soll.

----------

## michel7

Hab jetzt die Rechte der Datei /boot/grub/grub.conf so gesetzt dass auch der normale Benutzer sie bearbeiten kann. Leider ohne Ergebnis ... noch Vorschläge?

----------

## flammenflitzer

Warum soll jemand Schreibrechte auf eine Datei haben müssen, die er nur lesen oder ausführen will. Leuchtet nicht ein.

----------

## Fauli

 *flammenflitzer wrote:*   

> Warum soll jemand Schreibrechte auf eine Datei haben müssen, die er nur lesen oder ausführen will. Leuchtet nicht ein.

 

Der User wählt aus, welches Betriebssystem-Image beim nächsten Booten geladen werden soll. Das muss in der grub.conf gespeichert werden. Also muss der User Schreibrechte auf dieser Datei haben.

Einleuchtend, aber trotzdem falsch!

 *Obi-Wan wrote:*   

> Use the Source, Luke!

 

Die KDE-Sourcen zeigen, dass der Eintrag nicht vom einem Prozess des Users gemacht wird, sondern von kdm. Und das läuft als root.

```
132 static void

133 commitGrub( void )

134 {

135         FILE *f;

136         int pid;

137         static const char *args[] = { 0, "--batch", "--no-floppy", 0 };

138 

139         if (sdRec.bmstamp != mTime( GRUB_MENU ) &&

140             setGrub( sdRec.osname, &sdRec ) != BO_OK)

141                 return;

142 

143         args[0] = grub;

144         if ((f = pOpen( (char **)args, 'w', &pid ))) {

145                 fprintf( f, "savedefault --default=%d --once\n", sdRec.osindex );

146                 pClose( f, pid );

147         }

148 }
```

Aber was passiert hier? Es wird "/sbin/grub --batch --no-floppy" aufgerufen und dann über die Standardeingabe "savedefault --default=%d --once" an GRUB gesendet. "%d" wird durch die Nummer des Eintrags ersetzt, der im Shutdown-Dialog ausgewählt wurde.

Ich habe das mal manuell gemacht, aber savedefault ergibt in GRUB ein "Error 27: Unrecognized command". Meine Vermutung: Der GRUB-spezifische Code in KDM scheint für eine andere GRUB-Version geschrieben worden zu sein.

Warum es aber auf Dragonix' 2. PC funktioniert, erklärt das nicht.

EDIT:

Der savedefault-Befehl scheint aus diesem Patch zu stammen, der aber nicht in Gentoos GRUB-Patchset enthalten ist.

----------

## flammenflitzer

 *Dragonix wrote:*   

>  *Quote:*   Die Option wird (ich weiss nicht ab welcher KDE-Version) automatisch angezeigt, wenn man Zugriff auf die /boot/grub/grub.conf hat.  
> 
> Kann ich mit 3.5.5 nicht bestätigen:
> 
> Und für alle die /boot nicht extra haben:
> ...

 Funktioniert bei mir.

----------

## firefly

also in kdm-3.5.5-r1 ist ein patch enthalten, der anstelle der grub-shell+savedefault das tool grub-set-default zum verändern welcher grub-eintrag beim nächsten start verwendet werden soll

----------

## michel7

Ich werde aus all den Beiträgen leider nicht schlauer ;(

----------

## manuels

er will dir wohl mitteilen, dass du kdm auf 3.5.5-r1 updaten sollst und es dann funktionieren sollte

----------

## michel7

 *manuels wrote:*   

> er will dir wohl mitteilen, dass du kdm auf 3.5.5-r1 updaten sollst und es dann funktionieren sollte

 

mein kdm hat die versionsnummer 3.5.7

----------

## firefly

also in kdm-3.5.7 ist dieser patch auch enthalten

```
ebuild /usr/portage/kde-base/kdm/kdm-3.5.7.ebuild unpack

 * kdebase-3.5.7.tar.bz2 MD5 ;-) ...                                      [ ok ]

 * kdebase-3.5.7.tar.bz2 RMD160 ;-) ...                                   [ ok ]

 * kdebase-3.5.7.tar.bz2 SHA1 ;-) ...                                     [ ok ]

 * kdebase-3.5.7.tar.bz2 SHA256 ;-) ...                                   [ ok ]

 * kdebase-3.5.7.tar.bz2 size ;-) ...                                     [ ok ]

 * kdebase-3.5-patchset-04.tar.bz2 MD5 ;-) ...                            [ ok ]

 * kdebase-3.5-patchset-04.tar.bz2 RMD160 ;-) ...                         [ ok ]

 * kdebase-3.5-patchset-04.tar.bz2 SHA1 ;-) ...                           [ ok ]

 * kdebase-3.5-patchset-04.tar.bz2 SHA256 ;-) ...                         [ ok ]

 * kdebase-3.5-patchset-04.tar.bz2 size ;-) ...                           [ ok ]

>>> Checking kdebase-3.5.7.tar.bz2's mtime...

>>> Checking kdebase-3.5-patchset-04.tar.bz2's mtime...

>>> Not marked as unpacked; recreating WORKDIR...

>>> Unpacking source...

>>> Unpacking parts of kdebase-3.5.7.tar.bz2 to /var/tmp/paludis/portage/kde-base/kdm-3.5.7/work

>>> Unpacking kdebase-3.5-patchset-04.tar.bz2 to /var/tmp/paludis/portage/kde-base/kdm-3.5.7/work

 * Applying kdm-3.5-custom-session.diff ...                               [ ok ]

 * Applying kdm-3.5-grub-patch.diff ...                                   [ ok ]

 * Applying kdm-3.5-noimake.patch ...                                     [ ok ]

>>> Source unpacked.
```

EDIT: Es scheint ein konfigurationsproblem zu sein denn laut dem auszug aus dem manual von grub:

http://www.gnu.org/software/grub/manual/html_node/Invoking-grub_002dset_002ddefault.html

funktioniert grub-set-default nur, wenn man default save + savedefault in der grub konfigurationsdatei verwendet.

----------

## Fauli

Der Patch bringt aber nur dann etwas, wenn man in der grub.conf "default saved" gesetzt hat.

----------

## michel7

So schaut meine grub.conf aus. Wie muss ich sie jetzt genau noch ergänzen damit der patch funktioniert?

```

default 0

timeout 8

splashimage=(hd0,1)/boot/grub/splash.xpm.gz

title=Gentoo Linux

root (hd0,1)

kernel /boot/vmlinuz root=/dev/sda2 pci=nommconf video=vesafb:1024x768-16@60,mtrr:3,ywrap,splash=silent,theme:livecd-2007.0 quiet CONS$

initrd /boot/fbsplash

title=Windows XP

rootnoverify (hd0,0)

makeactive

chainloader +1
```

----------

## firefly

siehe link in meinem letzten Post (EDIT:-Teil)

----------

## michel7

Also default saved ist jetzt in der grub.conf drin. Leider immer noch kein Auswahlmenü vorhanden.

----------

## manuels

kleiner hinweis: einer von euch schreibt 

default save

der andere

default saved

----------

## Fauli

 *michel7 wrote:*   

> Also default saved ist jetzt in der grub.conf drin. Leider immer noch kein Auswahlmenü vorhanden.

 

Du hast "title=Gentoo Linux" in deiner grub.conf stehen. Es muss aber "title Gentoo Linux" heißen, damit KDM es erkennt.

----------

## michel7

Also das Auswahlmenü ist jetzt da, vielen Dank für all die Hinweise! Jetzt muss ich es nur irgendwie bewerkstelligen, dass wenn man Windows auswählt, dass es nur 1 mal gestartet wird. Irgendwie funktioniert es noch nicht so richtig. Und zwar wenn ich zb Windows ein mal ausgewählt habe, dann iwird später immer windows per default gestartet. Und noch etwas. Bei Suse wars glaube ich so, dass wenn ich zb Windows ausgewählt habe, das dann auch ohne Warteschleife gestartet wurde. Das war schon praktisch

----------

## Fauli

 *michel7 wrote:*   

> Jetzt muss ich es nur irgendwie bewerkstelligen, dass wenn man Windows auswählt, dass es nur 1 mal gestartet wird. Irgendwie funktioniert es noch nicht so richtig. Und zwar wenn ich zb Windows ein mal ausgewählt habe, dann iwird später immer windows per default gestartet.

 

Füg einfach noch eine Zeile mit "savedefault 0" hinter "chainloader +1" ein.

 *michel7 wrote:*   

> Und noch etwas. Bei Suse wars glaube ich so, dass wenn ich zb Windows ausgewählt habe, das dann auch ohne Warteschleife gestartet wurde. Das war schon praktisch

 

Das geht nur mit einem gepatchten GRUB.

----------

## michel7

Vielen Dank es hat bestens funktioniert!

----------

## michel7

@Fauli

und über welchen GRUB patch kann ich mein 2tes Anliegen realisieren?

----------

## Fauli

 *michel7 wrote:*   

> und über welchen GRUB patch kann ich mein 2tes Anliegen realisieren?

 

Ich hatte mittels Google diesen Patch für GRUB 0.90 gefunden. Für GRUB 0.97 lädst du dir aber am besten ein GRUB-Source-RPM von Suse, Ubuntu oder Mandriva herunter. Vielleicht ist dort ein aktueller Patch enthalten.

----------

## zworK

Jetzt möchte ich auch diese Option haben  :Smile: , bekomme es jedoch nicht hin. Vielleicht kann mir noch jemand auf die Spünge helfen.

Zu Grub:

/boot als eigene Partition, wird beim booten gemountet und die Dateien

```
/boot/grub/grub.conf

/boot/grub/menu.lst
```

 sind für normale Benutzer lesbar.

```
default saved

timeout 10

splashimage=(hd0,0)/grub/gentoo.xpm.gz

###########################################

## Windows XP

###########################################

title Windows XP >:(

rootnoverify (hd0,1)

makeactive

chainloader  +1

savedefault 1

###########################################

# 2.6.18-r6

###########################################

title Gentoo 2.6.18-r6 splash

root (hd0,0)

kernel (hd0,0)/gentoo-2.6.18-r6 root=/dev/mapper/crypt-root video=vesafb:ywrap,mtrr,1280x1024-32@60 splash=silent,theme:livecd-2006.1 quiet CONSOLE=/dev/tty1

initrd (hd0,0)/initramfs

savedefault

title Gentoo 2.6.18-r6

root (hd0,0)

kernel (hd0,0)/gentoo-2.6.18-r6 root=/dev/mapper/crypt-root

initrd (hd0,0)/initramfs

savedefault 1

title Gentoo 2.6.18-r6 min

root (hd0,0)

kernel (hd0,0)/gentoo-2.6.18-r6 root=/dev/mapper/crypt-root softlevel=min

initrd (hd0,0)/initramfs

savedefault 1

```

Die Einstellungen mit "default saved" und "title" passen soweit, die Datei 

```
/boot/grub/default
```

 ist vorhanden. Die Option mit "default saved" und "grub-set-default" benutze ich auch schon eine Weile von Hand.

Zu KDE:

KDE Version ist 3.5.7. KDM kommt bei mir aus dem kdebase-3.5.7 Paket. Der KDM Patch ist im kdebase-3.5-patchset-05.tar.bz2 enthalten und wird beim kompilieren auch eingepflegt.

```
#emerge -1 kdebase

...

 * Applying kdm-3.5-grub-patch.diff ...                                  [ ok ]
```

Unter KDE im "Kontrollzentrum -> Systemverwaltung -> Anmeldungsmanager -> Herunterfahren" ist "Grub" ausgewählt.

Ich denke, dass soweit alles richtig eingestellt ist. Doch das Auswahlmenü erscheint einfach nicht, ich kann nur "Rechner neu starten" auswählen.

Hat noch jemand nen Tipp?

----------

## Fauli

Die grub.conf sieht OK aus. Und menu.lst ist ja nur ein Link auf grub.conf.

Das Auswahlmenü sollte sich also ausklappen, wenn du die Maustaste auf dem Neustarten-Knopf gedrückt hältst.

----------

## zworK

 *Fauli wrote:*   

> Das Auswahlmenü sollte sich also ausklappen, wenn du die Maustaste auf dem Neustarten-Knopf gedrückt hältst.

 

Tatsächlich, das wars. Danke   :Very Happy: 

Ich habe jedoch wie im Screenshot des ersten Posts von michel7 eine Combobox erwartet oder zumindest einen optischen Hinweis auf mehrere Auswahlmöglichkeiten.

----------

## firefly

 *zworK wrote:*   

>  *Fauli wrote:*   Das Auswahlmenü sollte sich also ausklappen, wenn du die Maustaste auf dem Neustarten-Knopf gedrückt hältst. 
> 
> Tatsächlich, das wars. Danke  
> 
> Ich habe jedoch wie im Screenshot des ersten Posts von michel7 eine Combobox erwartet oder zumindest einen optischen Hinweis auf mehrere Auswahlmöglichkeiten.

 

zumindestens bei mir ist ein kleiner pfeil auf dem button zum neustarten.

----------

## zworK

 *firefly wrote:*   

>  *zworK wrote:*    *Fauli wrote:*   Das Auswahlmenü sollte sich also ausklappen, wenn du die Maustaste auf dem Neustarten-Knopf gedrückt hältst. 
> 
> Tatsächlich, das wars. Danke  
> 
> Ich habe jedoch wie im Screenshot des ersten Posts von michel7 eine Combobox erwartet oder zumindest einen optischen Hinweis auf mehrere Auswahlmöglichkeiten. 
> ...

 

Genau der erscheint bei mir nicht. Lag aber an dem Stil "Domino". Ein kurzer Wechsel auf "Plastik" und schon war auch der Pfeil da.

----------

