首页 > 解决方案 > 如何在 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) 启动时运行?

标签: raspbiandebian-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”


推荐阅读