session_manager
用于管理Chrome
进程的生命周期。通常位于目录login_manager
下,并通过包chromeos-login
安装。
安装包信息
在ChromeOS
的编译环境下查询chromeos-login
的包信息如下:
$ emerge -s chromeos-login
Searching...
[ Results for search key : chromeos-login ]
[ Applications found : 1 ]
* chromeos-base/chromeos-login
Latest version available: 0.0.2-r2839
Latest version installed: [ Not Installed ]
Size of files: 0 KiB
Homepage: http://www.chromium.org/
Description: Login manager for Chromium OS.
License: BSD-Google
而其所依赖的包信息如下:
$ emerge -p chromeos-login
These are the packages that would be merged, in order:
Calculating dependencies... done!
[ebuild N ] app-arch/snappy-1.0.4 USE="-static-libs"
[ebuild N ] sys-apps/keyutils-1.5.9-r3 USE="-static -static-libs {-test}" ABI_X86="(64) -32 (-x32)"
[ebuild N ] chromeos-base/chromeos-config-tools-0.0.1-r248 USE="cros_host -asan -clang -cros-debug -profiling {-test}"
[ebuild N ] chromeos-base/libchromeos-ui-0.0.1-r759 USE="cros_host -asan -clang -cros-debug -profiling {-test}"
[ebuild N ] chromeos-base/libscrypt-1.1.6-r12 USE="cros_host -asan -clang -profiling -static-libs"
[ebuild N ] dev-util/google-perftools-2.0-r2 USE="debug -largepages -minimal -static-libs {-test}"
[ebuild N ] sys-fs/lvm2-2.02.97-r4 USE="lvm1 readline udev (-clvm) (-cman) -device-mapper-only -selinux -static -static-libs -thin"
[ebuild N ] sys-fs/ecryptfs-utils-101 USE="python -doc -gpg -gtk -openssl -pam -pkcs11 -suid -tpm"
[ebuild N ] dev-libs/leveldb-1.18-r1 USE="snappy tcmalloc -static-libs"
[ebuild N ] app-crypt/trousers-0.3.3-r61 USE="cros_host -cros-debug -doc -profiling -systemd -tss_trace"
[ebuild N ] chromeos-base/libcontainer-0.0.1-r534 USE="cros_host device-mapper -asan -clang -cros-debug -profiling {-test}"
[ebuild N ] chromeos-base/chaps-0.0.1-r1945 USE="cros_host -asan -clang -cros-debug -profiling -systemd {-test} -tpm -tpm2"
[ebuild N ] chromeos-base/cryptohome-0.0.1-r1731 USE="cros_host -asan -clang -cros-debug -direncryption -profiling -systemd {-test} -tpm -tpm2"
[ebuild N ] chromeos-base/chromeos-login-0.0.2-r2839 USE="cros_host -asan -cheets -clang -cros-debug -profiling -systemd {-test} -unibuild"
ebuild信息
chromeos-login
对应的ebuild
文件位于目录src/third_party/chromiumos-overlay/chromeos-base/chromeos-login
下:
# tree .
.
├── chromeos-login-0.0.2-r2839.ebuild
├── chromeos-login-9999.ebuild
└── files
└── chromeos-version.sh
1 directory, 3 files
由该配置文件可知最终编译出来的二进制文件位于/sbin/session_manager
目录下。
再查阅其中的ebuild
文件发现对应的工作目录为src/platform2
,在该目录下稍作搜索可知,session_manager
实现在目录src/platform2/login_manager
中,对应的gyp配置文件为src/platform2/login_manager/login_manager.gyp
,其中session_manager
相关的内容如下:
{
'target_name': 'session_manager',
'type': 'executable',
'libraries': [
'-lrootdev',
'-lcontainer',
],
'dependencies': ['libsession_manager'],
'sources': ['session_manager_main.cc'],
},
session_manager
代码实现的具体细节,就可以跟随文件src/platform2/login_manager/session_manager_main.cc
向下继续查看。
网友评论