다른 드라이브를 미러링하기 위한 스크립트가 포함된 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입니다.)
데비안 라이브 시스템이 자동으로 라이브 사용자를 6개의 비디오 콘솔과 직렬 콘솔 모두에 로그인한다는 점도 주목할 가치가 있습니다.
답변1
목표는 활성 ConsoleKit 세션을 설정하는 것입니다. 다음을 통해 확인할 수 있습니다:
$ ck-list-sessions | grep active
active = TRUE
ConsoleKit 세션이 여러 개인 경우 한 번에 하나 이상의 세션을 활성화할 수 없습니다.
출력이 다음과 유사한 경우
$ 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를 실행합니다 . 두 번째 회의가 중단되었습니다.active
FALSE
/bin/login
pam_ck_connector
ck-launch-session openbox
~/.xinitrc
해결책은 를 사용하는 것이 아니라 ck-launch-session
동일한 가상 터미널에서 xinit를 실행하고 기존 첫 번째 로컬 세션을 활성 상태로 유지하는 것입니다.XINITRC=/path_to_custom/xinitrc xinit -- :1 vt1