我正在构建一个简单的 SDL 应用程序,一个啤酒厂应用程序,在我的车库中运行。我正在寻找一种直接的方法让我的应用程序在启动时运行并且不提供对系统的其他访问权限。如果我需要更改任何内容,我将能够使用 rsh 来更改板上的内容。一位 friend 告诉我,我可以通过某种方式修改 lightdm 脚本轻松地做到这一点,但还没有找到对此类内容的引用。
设备运行 ubuntu 14.4。
任何指针将不胜感激。
也许:
我可以转到 ~/.xinitrc 并将我的应用程序路径放在 exec 行吗?如果我的应用程序全屏运行?
最佳答案
如果它是全屏 SDL 应用程序(kiosk 样式),那么我的建议是使用纯 X。
也就是说,不要运行任何 WindowManager 或 CompositionManager,您不需要它们。 不要运行任何 DesktopManager 或 Greeter,您也不需要它们。
当系统启动时,只需将 X 服务器与您的应用程序一起运行,就像它是 WM 一样。例如来自 rc.local
。我认为 Ubuntu 14 支持以非 root 身份运行它:
su - user -c /usr/bin/startx /usr/bin/myapp
请注意,您可能需要在后台手动运行一些应用程序。您的 myapp
实际上是一个运行这些应用程序然后运行您的程序的脚本,这可能是个好主意。
或者,您可以不带参数运行 startx
,它会自动运行 /home/user/.xinitrc
。
在脚本中你可以写所有的备份程序(用&
)最后一行应该是你的程序(通常用exec/usr/bin/myapp
, 没有 &
)
~/.xinitrc
xsetroot -solid gray & #set the background
exec xterm #run a terminal
对于扩展示例,您可以查看您的/etc/X11/xinit/xinitrc
,如果您不指定任何脚本,那是默认脚本。
完成后,您仍然有一些热键可以访问系统。我能想到的:
- Ctrl+Alt+Del
- Ctrl+Alt+退格键
- Ctrl+Alt+Fn
- Alt+SysRq
但是所有这些都很容易被禁用。无论如何,如果可能的话,隐藏键盘并使用全触摸屏系统会更好。但请注意任何可用的 USB 端口!
然后是启动程序。您需要保护 grub 以避免更改引导选项。和 BIOS,使用密码,并禁用“更改启动顺序”选项(如果可用)。
然后是访问硬件(USB 端口、螺钉、电源按钮),但这取决于您安装的安全要求。
关于Linux简易嵌入式应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45445152/