raspbian - 如何在 Raspbian 10(buster)上从启动运行脚本?
问题描述
我设计了一个 GUI,只要我打开我的 Raspberry Pi,我就想运行它。它目前设置为在启动时自动以用户身份登录,但如果这使过程更加困难,我可以改变它。我的 Raspi 在 Raspbian 10 (buster) 上运行,这让事情变得很困难,因为我只能找到 Raspbian 8 左右的教程。
我曾尝试修改 autostart 文件夹,但它与以前的 Raspbian 版本不在同一位置,并且似乎没有像以前那样工作。教程说要在 /home/pi/.config/autostart 中创建一个 .desktop 文件,但我没有 .config 文件夹,或者至少它是隐藏的。对我来说,自动启动在 /etc/xdg/autostart 中,当我尝试在终端中使用 nano 在此处创建新文件时,我收到消息 [Directory '/etc/xdg/autostart' is not writable] 并且它没有' t 保存我的文件。
我也尝试在 /etc/rc.local 中调用我的脚本,但它什么也没做。有人说它不适用于 GUI。
这是我在终端中输入的内容:
$ nano /etc/xdg/autostart/gui.desktop
并弹出一个新文件,但在底部我收到警告 [Directory '/etc/xdg/autostart' is not writable]
如何让我的 GUI 脚本在 Raspbian 10 (buster) 启动时运行?
解决方案
这里有很多问题,首先,当您查看教程时,要认识到 Linux 发行版是分层构建的,为简单起见,假设您的“层堆栈”看起来像这样:内核、systemd、x11、xdg、lxde。内核启动,然后启动 systemd,然后启动 x11(和许多其他东西),x11 启动 xdg(和其他一些东西,我认为),lxde 由 x11 或 xdg 启动,我不确定哪个。
你想在这个进程中添加一些东西,你可以在内核级别(坏主意),在他们的 systemd 级别(可能不正确,除非它是一个守护进程),在 x11 级别(仍然可能很糟糕,因为你仍然没有有一个用户会话),或者在 xdg 或 lxde 级别。
xdg 可能是正确的地方,因为它拥有您所需要的一切(一个 gui,一个用户会话),而且很常见(如果您切换窗口管理器,xdg 可能仍然可以工作)
既然如此,为什么您修改 xdg 的解决方案不起作用?这是因为 '/etc/xdg/autostart' 是系统配置目录。对其所做的任何更改都将适用于所有用户。您可能想要这样做,但系统正试图保护您系统上的其他用户,并且只允许 root 对每个人进行更改。如果您想这样做,请使用“sudo”(在堆栈交换和互联网的其他地方记录)。如果您只想为自己使用 ~/.config/autostart ( https://wiki.archlinux.org/index.php/XDG_Autostart ) 执行此操作,您可能需要使用“mkdir ~/.config/”创建该目录然后是“emacs ~/.config/autostart”
推荐阅读
- microservices - 微服务 - 如何使用 JWT 对单独的 API 微服务进行身份验证
- regex - 为什么这个https?和 (|en) 正则表达式不起作用?
- javascript - 如何在 Mongoose 中找到与数组字段的最后一个元素与给定查询值匹配的所有文档?
- php - 如何按属性 LARAVEL 对全局范围进行排序
- javascript - Vee-validate 验证禁用字段
- string - Boot.Locale 的“线性/连续文本块”是什么意思?
- dax - DAX 查询 countdistinct
- python - numpe.zeros 错误 0 正在被转换
- python - 使用 numpy 实现微分矩阵时出错
- html - Windows 上的水平正文溢出,但不是 macOS