他のドライブをミラーリングするためのスクリプトを含むUSBドライブにライブDebian Squeezeシステムがあります。このスクリプトはラベルごとにドライブをマウントするために使用されますが、udisks
シリアルコンソールでは実行されません。その理由は、シリアルコンソールに関連付けられたセッションが「アクティブ」と表示されないためです。これは、次のudisks
ように失敗することを意味します。
user@my-live-usb:~$ udisks --mount /dev/disk/by-label/image-data --mount-options ro
Mount failed: Not Authorized
allow_any
キーを変更して/usr/share/polkit-1/actions/org.freedesktop.udisks.policy
も役に立たないので、ConsoleKitにシリアルコンソールが「アクティブ」であることを知らせる方法が気になります。 DBUSインターフェースを介してこれを実行しようとしましたが失敗しました。
user@my-live-usb:~$ dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Session7 org.freedesktop.ConsoleKit.Session.Activate
Error org.freedesktop.DBus.GLib.UnmappedError.CkSeatError.Code0: Unable to activate session
Session7 は /dev/ttyS0 にリストされたセッションです。
それでは、ConsoleKitにシリアルコンソールをアクティブセッションとして認識させるにはどうすればよいですか?
(私の場合、udisksのバージョンは1.0.1 + git20100614-3で、コンソールキットは0.4.1-4です。)
Debianライブシステムが自動的にライブユーザーを6つのビデオコンソールとシリアルコンソールの両方にログインすることも注目に値します。
答え1
目標は、アクティブなConsoleKitセッションを確立することです。以下で確認できます。
$ ck-list-sessions | grep active
active = TRUE
ConsoleKitセッションが複数ある場合、一度に1つ以上のセッションをアクティブにすることはできません。
出力が次のような場合
$ ck-list-sessions | grep active
active = FALSE
active = FALSE
dbusを介してメッセージ転送を認証するためにアクティブなConsoleKitセッションが必要なものが機能しないため、問題があります(NetworkManager、つまりnm-applet
udisk ...)。
ConsoleKitセッションを作成(およびアクティブ化)する方法はいくつかあります。ディスプレイマネージャは、ConsoleKitデーモンと直接通信して設定できます。あるいは、pamモジュールはこれを行うことができます。あるいは、login / X11-session-initスクリプトがck-launch-sessionを呼び出してアクティブセッションを作成することもできます(モジュロエラー)。
通常、目標は、単一のスクリプトではなく、ウィンドウマネージャまたはログインシェルのアクティブセッションを取得するようにConsoleKitを設定することです。
ck-launch-session
ConsoleKitシステムをテストするには、それを使用して正しいコンソールキットセッションを作成してみることができます。たとえば、次のようにスクリプトを呼び出すことができます。
$ ck-launch-session ./script
ck-launch-sessionにエラーがないかテストするには、次のように呼び出します。
$ ck-launch-session ck-list-sessions
アクティブなセッションがあることを確認します。
間違い:ConsoleKit システムの最近リリースされたアップデート様々な種類 昆虫壊れやすい(そして過度にエンジニアリングされた?)ConsoleKitエコシステムを始めましょう。
たとえば、Ubuntu 11.10システムでは、アップグレード後にシステムの動作が停止した後にそのラインnox11
から削除する必要がありました。pam_ck_connector.so
/etc/pam.d/common-session
ck-launch-session
--- a/pam.d/common-session Fri May 25 10:26:53 2012 +0200
+++ b/pam.d/common-session Fri May 25 10:39:41 2012 +0200
@@ -29,5 +29,5 @@
session required pam_unix.so
session optional pam_winbind.so
session optional pam_ecryptfs.so unwrap
-session optional pam_ck_connector.so nox11
+session optional pam_ck_connector.so
# end of pam-auth-update config
この変更により、active
loginを介してウィンドウマネージャを起動するとセッションが直接作成されますWDM
。
これは、ウィンドウマネージャがアクティブなConsoleKitセッション内で実行され、ウィンドウマネージャプロセス(xtermなど)で子プロセスとして開始されたすべてのエントリもそのセッションの一部であることを意味します。つまり、これ以上の呼び出しはck-launch-session
必要ありませんnm-applet
。
答え2
私のセッションに問題があります。どこにis-local
ありますか?正しい会話のために。次にinを使ってxinitを実行します。 2回目の会議は中止されました。active
FALSE
/bin/login
pam_ck_connector
ck-launch-session openbox
~/.xinitrc
解決策はを使用するのではなく、ck-launch-session
同じ仮想端末でxinitを実行し、既存の最初のローカルセッションをアクティブに保つことです。XINITRC=/path_to_custom/xinitrc xinit -- :1 vt1