为 BeagleBone/Angstrom 设置启动脚本

为 BeagleBone/Angstrom 设置启动脚本

我正在努力在 BeagleBone 上设置 pinmux,以便可以访问多个 UART。操作系统是 Angstrom Linux(演示映像,如果有帮助的话)。我有一个 shell 脚本:

#!/bin/sh

echo "Configuring Pinmux"

echo 0 > /sys/kernel/debug/omap_mux/uart1_txd
echo 20> /sys/kernel/debug/omap_mux/uart1_rxd

echo "UART 1 (TX):"
cat /sys/kernel/debug/omap_mux/uart1_txd
echo

echo "UART 1 (RX):"
cat /sys/kernel/debug/omap_mux/uart1_rxd
echo

echo 1 > /sys/kernel/debug/omap_mux/spi0_d0
echo 21> /sys/kernel/debug/omap_mux/spi0_sclk

echo "UART 2 (TX):"
cat /sys/kernel/debug/omap_mux/spi0_d0
echo

echo "UART 2 (RX):"
cat /sys/kernel/debug/omap_mux/spi0_sclk
echo

它设置了 UARTS 以供使用。现在,我希望这个脚本在启动时运行,这样我就不必每次都搞乱它。我应该把它放在哪里/建立一个链接才能做到这一点?

答案1

刚刚检查了 Angstrom Linux,它是基于 Debian 的,因此将这些行复制到/etc/rc.local对您有用:

echo 0 > /sys/kernel/debug/omap_mux/uart1_txd
echo 20> /sys/kernel/debug/omap_mux/uart1_rxd
echo 1 > /sys/kernel/debug/omap_mux/spi0_d0
echo 21> /sys/kernel/debug/omap_mux/spi0_sclk

答案2

因此,经过多次挖掘,我找到了正确的方法。 Angstrom 使用 systemd 在启动时启动东西,因此将东西放在 /etc/rc* 中n*.d 无法正常工作。相反,您创建一个服务,将其告知 systemd,然后它就会自动运行。

在 /lib/systemd/system 中,我创建了一个名为 pinmux.service 的文件:

[Unit]
Description=Setting up Pinmux

[Service]
ExecStart = /home/**username**/pinmux.sh

[Install]
WantedBy=multi-user.target

这会调用我的主目录中名为 pinmux.sh 的 shell 脚本,该脚本会执行所有设置,如我的问题中所述。

要启用它,请先调用systemctl enable pinmux.service,然后调用 systemctl start pinmux.service

现在,该脚本将在启动时被调用。

答案3

作为一个新手,我知道有两种方法可以做到这一点,其中一种很简单:/etc/rc5.d您可以看到一些文件,其名称以一些数字开头,这些数字指定谁将首先开始,并且它们分别从第一个数字到最后一个数字开始。将您的脚本与最后一个数字放在此处:

vi /etc/rc5.d/S25yourScript.sh

我假设 S25 是最后一个数字:) 将您的脚本粘贴到此处并退出。当你重新启动后,你的脚本就会工作

相关内容