我正在努力找出如何检查[vsyscall]表的配置方式(原生或模拟)。该设置应在名为vsyscall_mode
的变量中设置。任何人都可以了解如何检查此设置?
通过重新运行cat /proc/self/maps
我发现[vsyscall]的内存映射区域没有改变,[vdso]的内存映射区域也没有改变。这是否意味着vsyscall的设置被设置为native?
答案 0 :(得分:3)
vsyscall模式在内核配置中设置,因此您可以在本机和仿真之间进行选择。
for fish-shell:
cat /usr/src/linux-headers-(uname -r)/.config | grep VSYSCALL
for bash:
cat /usr/src/linux-headers-$(uname -r)/.config | grep VSYSCALL
debian 8上的输出(例如):
CONFIG_GENERIC_TIME_VSYSCALL=y
CONFIG_X86_VSYSCALL_EMULATION=y
答案 1 :(得分:0)
结合前两个答案,您可以使用zgrep
:
zgrep VSYSCALL /proc/config.gz
如果你在启动时设置vsyscall=emulate
,输出将类似于:
CONFIG_GENERIC_TIME_VSYSCALL=y
CONFIG_X86_VSYSCALL_EMULATION=y
# CONFIG_LEGACY_VSYSCALL_EMULATE is not set
CONFIG_LEGACY_VSYSCALL_NONE=y
答案 2 :(得分:-1)
通常在/proc/config.gz文件中可用,它将包含当前的内核配置。