Portál AbcLinuxu, 10. května 2025 05:34

Dotaz: Xfce Shutdown/Restart

HrabalVojta avatar 8.6.2011 22:54 HrabalVojta | skóre: 23 | blog: gentoo_pentoo | Třebíč
Xfce Shutdown/Restart
Přečteno: 956×
Odpovědět | Admin
Klasický problém s unable jsou zešedlý a já z toho taky pomalu šedivým ... něco jsem zkoušel ale místo abych mohl restartovat přibyly tam suspend s hybernaci.
USE="freedom -software_patents" emerge --deep --update --newuse world
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

8.6.2011 23:27 wike | skóre: 19 | blog: experimental
Rozbalit Rozbalit vše Re: Xfce Shutdown/Restart
Odpovědět | | Sbalit | Link | Blokovat | Admin
Skúšal si tipy na Gentoo Wiki Archives - HOWTO Let a common user shutdown/reboot ?
brk avatar 9.6.2011 06:30 brk | skóre: 29 | blog: broukoviny
Rozbalit Rozbalit vše Re: Xfce Shutdown/Restart
Ten návod už poněkud staršího data. Dnes raději něco ve stylu Tips, and tricks for ConsoleKit/PolicyKit/udev, without hal na Gentoo fóru.

USE="-qt -kde"
HrabalVojta avatar 12.6.2011 08:36 HrabalVojta | skóre: 23 | blog: gentoo_pentoo | Třebíč
Rozbalit Rozbalit vše Re: Xfce Shutdown/Restart
je mozne ze podle tohoto navodu mi po rebootu nenajeli xfce ale twm .. ?
USE="freedom -software_patents" emerge --deep --update --newuse world
HrabalVojta avatar 12.6.2011 17:19 HrabalVojta | skóre: 23 | blog: gentoo_pentoo | Třebíč
Rozbalit Rozbalit vše Re: Xfce Shutdown/Restart
Je fakt dobrý, že to začlo fungovat. Ale jenom tehdy když to spouštím přes startx. Jakmile se maj Xka najet přes xdm je problém ...
USE="freedom -software_patents" emerge --deep --update --newuse world
9.6.2011 01:02 Petr Gajdůšek | skóre: 13 | blog: Úlomky | Znojmo
Rozbalit Rozbalit vše Re: Xfce Shutdown/Restart
Odpovědět | | Sbalit | Link | Blokovat | Admin
Neznám XFCE, ani nevím jakou verzi používáte.

Musel by jste zjistit jak je to prováděno, nejlépe ze zdrojáků :). Pokud správně funguje process, který se o vypnutí/reset stará (asi session manager používaný XFCE), tak ten po té, co ukončení session, nejspíš zavolá buď přímo console-kit nebo - obklikou - HAL (pokud už není odstraněn). Pokud je volba nepřístupná, tak si asi zjišťuje předem i práva a console-kit není buď nainstalován vůbec nebo vaše session v něm nebylo správně registrováno nebo je přihlášeno více uživatelů. V posledních dvou případech by si ale měl consolekit (resp. policy-kit) "pouze" vyžádat autorizaci admina (heslo roota nebo vaše, pokud jste členem skupiny sudo), koho pokládá za admina závisí na konfiguraci policy-kit. Je ale možné, že by XFCE kontrolovalo práva k vypnutí předem, již při zobrazení dialogu, když jsou ty tlačítka nepřístupná? Potom byste vůbec neměl možnost autorizovat se jako admin, kdyby to bylo potřeba. Moc se mi to nezdá... ale třeba to tak je.

Máte console-kit nainstalován a spuštěn?

$ps aux | grep console-kit

Je sezení registrované jako lokální a aktivní? Předesílám, že pokud používáte jiný display manager než GDM, tak řádně registrované asi nebude (např. bude jako nelokální). V tom případě bude nejrychlejší nainstalovat GDM a mohlo by to začít fungovat.

Co tedy vypíše:

$ck-list-sessions

$echo $XDG_SESSION_COOKIE

$dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit \ /org/freedesktop/ConsoleKit/Manager \ org.freedesktop.ConsoleKit.Manager.GetSessionForCookie \ string:$XDG_SESSION_COOKIE

$ dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit \ /org/freedesktop/ConsoleKit/Manager \ org.freedesktop.ConsoleKit.Manager.GetSessions

Co udělá:

$ dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit \ /org/freedesktop/ConsoleKit/Manager \ org.freedesktop.ConsoleKit.Manager.Stop

Měl by se zavolat rovnou /sbin/shutdown nebo zobrazit autorizační dialog, pokud je přihlášeno více uživatelů nebo není sezení řádně registrované. Něco podobného by měl dělat session manager po ukončení sezení, nebo zavolá místo console-kit HAL, ten potom volá console-kit.

Jaký je obsah souboru /usr/share/polkit-1/actions/org.freedesktop.policykit.policy

Co vypíše: $ grep -rn AdminIdentities /etc/polkit-1/localauthority.conf.d/ Pokud tam bude jen AdminIdentities=unix-group:sudo, jste členem skupiny sudo? Pokud tam bude i AdminIdentities=unix-user:0, tak je to jedno, je by to žádalo heslo roota místo vašeho (při vypnutí/resetu pokud je příhlašené více uživatelů).

Jaký display manager používáte? GDM? Ten možná stále jako jediný umí řádně registrovat console-kit sezení. ck-launch-session volané z /etc/X11/Xsession.d/90consolekit nebo přímo z ~/.xinitrc nedávno ještě nestačilo. Display manager musel přímo volat console-kit, např. přes DBUS, jinak nebylo vytvořené sezení jako lokální.

Petr
HrabalVojta avatar 9.6.2011 07:20 HrabalVojta | skóre: 23 | blog: gentoo_pentoo | Třebíč
Rozbalit Rozbalit vše Re: Xfce Shutdown/Restart

Používám xfce 4.8 a s parametrem USE="-hal". Používám xdm. Více uživatelů.

ps aux | grep console-kit
root      1944  0.0  0.0   2860   732 pts/0    S+   08:49   0:00 grep --colour=auto console-kit
root     12760  0.0  0.1  25928  1552 ?        Ssl  00:43   0:00 /usr/sbin/console-kit-daemon
$ck-list-sessions 
$echo $XDG_SESSION_COOKIE

Nevypsali vůbec nic $XDG_SESSION_COOKIE vyhodilo prázdný řádek

dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit \ /org/freedesktop/ConsoleKit/Manager \ org.freedesktop.ConsoleKit.Manager.Stop
process 2057: arguments to dbus_message_new_method_call() were incorrect, assertion "_dbus_check_is_valid_path (path)" failed in file /var/tmp/portage/sys-apps/dbus-1.4.6/work/dbus-1.4.6/dbus/dbus-message.c line 1202.
This is normally a bug in some application using the D-Bus library.
  D-Bus not built with -rdynamic so unable to print a backtrace
Neúspěšně ukončen (SIGABRT)

/usr/share/polkit-1/actions/org.freedesktop.policykit.policy

grep -rn AdminIdentities /etc/polkit-1/localauthority.conf.d/
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC
"-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
"http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
<policyconfig>
<vendor>The PolicyKit Project</vendor>
<vendor_url>http://hal.freedesktop.org/docs/PolicyKit/</vendor_url>

<action id="org.freedesktop.policykit.exec">
<description>Run programs as another user</description>
<message>Authentication is required to run a program as another user</message>
<defaults>
<allow_any>auth_admin</allow_any>
<allow_inactive>auth_admin</allow_inactive>
<allow_active>auth_admin</allow_active>
</defaults>
</action>

<action id="org.freedesktop.policykit.lockdown">
<description>Configure lock down for an action</description>
<message>Authentication is required to configure lock down policy</message>
<defaults>
<allow_any>no</allow_any>
<allow_inactive>no</allow_inactive>
<allow_active>auth_admin</allow_active>
</defaults>
<annotate key="org.freedesktop.policykit.exec.path">/usr/bin/pklalockdown</annotate>
</action>
</policyconfig>

USE="freedom -software_patents" emerge --deep --update --newuse world
10.6.2011 15:19 Petr Gajdůšek | skóre: 13 | blog: Úlomky | Znojmo
Rozbalit Rozbalit vše Re: Xfce Shutdown/Restart
Omlouvám se, ty příkazy nemají obsahovat znaky \, ty jen escapují zalomení řádků, ale zapomněl jsem je obklopit pre značkou. Výchozí konfigurace pro console-kit je v souboru /usr/share/polkit-1/actions/org.freedesktop.consolekit.policy a ne v org.freedesktop.policykit.policy, jak jsem blbě napsal :(.

Navíc neznám Gentoo, odkaz který poslal brk vypadá dobře. Napíšu ještě obecně co mě napadá, konkrétní cesty jsou pro debian, jen ještě jednou předesílám, že pokud byste použil místo XDM GDM, tak problém pravděpodobně zmizí.

To, že je výstup ck-list-sessions prázdný, znamená, že sezení nebylo vůbec registrováno v console-kit. Asi téměř všichni display manažeři (včetně XDM) spouští skript /etc/X11/Xsession. Ten inkluduje skripty z /etc/X11/Xsession.d/ a jeden z nich registruje sezení v console-kit pomocí ck-launch-session (v debianu 90consolekit). Typuji, že vám tento skript chybí, nebo spouštíte XFCE nějakým nestandardním způsobem. Zkontrolujte také, jestli náhodou nespouštíte XFCE z ~/xsessionrc, potom se na další skripty vůbec nedostane. Asi budete muset projít proces spuštění ručně, začněte od /etc/X11/Xsession.

Nebo zkuste XFCE spustit přes startx a dejte do ~/.xinitrc něco jako exec ck-launch-session startxfce4

To už by mělo být sezení registrované. Bude ale pravděpodobně nelokální a neaktivní, a tady začnou problémy. Takže dále musíte nainstalovat (lib)pam-ck-connector a do /etc/pam.d/ pridat session optional pam_ck_connector.so do konfigurace pro login. Na konci nesmí být parametr nox11 (ten ale přidejte pokud, začnete používat GDM). Nevím přesně jaký je to soubor pro Gentoo...

Potom by sezení v ck-list-sessions už mělo být lokální, ale možná stále nebude aktivní. A s tím nevím jak dál, proto používám GDM, které registruje sezení přímo. Výchozí konfigurace console-kit totiž neumožňuje vypnout počítač z neaktivního sezení (soubor /usr/share/polkit-1/actions/org.freedesktop.consolekit.policy)

Změnit to samozřejmě můžete, např. vytvořením souboru /etc/polkit-1/localauthority/50-local.d/70-consolekit.pkla s obsahem:
[consolekit] 

Identity=unix-user:uživatel
Action=org.freedesktop.consolekit.system.*
ResultAny=no
ResultInactive=yes
ResultActive=yes
Nebo jen pro určité akce z možných org.freedesktop.consolekit.system.{stop,stop-multiple-users,restart,restart-multiple-users}, také místo ResultInactive=yes můžete použít auth_admin_keep, to si vyžádá autorizaci admina. Ke zobrazení dialogu autorizace budete asi potřebovat i policykit-1-gnome (nebo polkit-gnome ?) nebo jiného spuštěného agenta, nevím jestli má XFCE nějakého vlastního. (ps aux | grep policykit-1-gnome). Nebo spustit ručně /usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1. Debian ho má /etc/xdg/autostart/, takže se spouští automaticky.

Zda máte právo vypnout/restartovat počítač si můžete kdykoliv ověřit příkazem: pkcheck --action-id org.freedesktop.consolekit.system.stop --process $$ --allow-user-interaction

Při použití GDM místo XDM, tohle všechno není nutné, protože GDM registruje sezení v console-kit rovnou (ne přes polo-funkční ck-launch-session). Upravit konfiguraci console-kit byste ale mohl chtít stejně, např. pokud byste chtěl vypínat počítač bez autorizace admina při více přihlášených uživatelích.

A samozřejmě potřebujte v XFCE podporu pro dbus, policy-kit a console-kit. Pokud Vám funguje suspend/hibernace, tak za předpokladu, že se používá upower, máte asi podporu minimálně pro policy-kit. Zkontrolujte hlavně, že je přeložené s podporou console-kit.
HrabalVojta avatar 11.6.2011 08:10 HrabalVojta | skóre: 23 | blog: gentoo_pentoo | Třebíč
Rozbalit Rozbalit vše Re: Xfce Shutdown/Restart
Abychom si rozuměli XDM používám kvůli rychlosti, výkonnosti. Mám hold pomalou šunku. A proto mi XFCE s XDM vyhovuje. To že má pár háčků mi ani zas tak nevadí. K věci.

$ dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.GetSessionForCookie string:$XDG_SESSION_COOKIE
Error org.freedesktop.ConsoleKit.Manager.GeneralError: Unable to find session for cookie

$ dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.GetSessions
method return sender=:1.0 -> dest=:1.14 reply_serial=2 array [ ]

dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
Error org.freedesktop.ConsoleKit.Manager.NotPrivileged: Not Authorized


Script 90consolekit vlastním.
/etc/X11/xinit/xinitrc.d/90-consolekit
USE="freedom -software_patents" emerge --deep --update --newuse world
12.6.2011 21:31 Petr Gajdůšek | skóre: 13 | blog: Úlomky | Znojmo
Rozbalit Rozbalit vše Re: Xfce Shutdown/Restart
Z toho vyplývá, že stále nemáte registrované sezení.
Script 90consolekit vlastním. /etc/X11/xinit/xinitrc.d/90-consolekit
Tohle bude asi jen pro startx a v jedné z odpovědí jste psal, že startx funguje. Já bych tedy zkontroloval konfiguraci (a skripty) XDM:

1) zjistěte jaký konfigurační soubor XDM používá, buď je to argument parametru -config (pokud se předává v init scriptu) nebo výchozí konfigurační soubor, který najdete v manuálové stránce xdm v sekci FILES (v debianu /etc/X11/xdm/xdm-config).

2) V něm najděte hodnotu DisplayManager*session (v debianu /etc/X11/xdm/Xsession)

a tak postupujte dál... V debianu /etc/X11/xdm/Xsession inkluduje soubor /etc/X11/Xsession a ten zase všechny soubory v /etc/X11/Xsession.d/ a tedy také /etc/X11/Xsession.d/90consolekit

Pokud máte soubor 90consolekit pouze v /etc/X11/xinit/xinitrc.d/ tak by XDM muselo inkludovat tento soubor, ale to se mi nezdá, /etc/X11/xinit je pro startx. Klidně můžete zkusit nastavit DisplayManager*session na /etc/X11/xinit/xinitrc, pokud tento existuje nebo jiný, který inkluduje /etc/X11/xinit/xinitrc.d/*. Ale pokud chybí i ostatní konfigurace pro XDM, kdo ví jak by to dopadlo.

Nejsem schopen poradit nic specifického pro gentoo, takže tohle je má poslední odpověď. Pokud projdete systém konfigurace XDM (pár skriptů), tak snad řešení najdete. Pokud chybí skripty pro XDM, tak je nějak obnovit, v Gentoo nevím jak.

Takže se loučím a přeji hodně zdaru!

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.