Linux树莓派自启动脚本

注意:

  • 不同系统(Ubuntu Debian)可能方法不同,不一定通用。
  • 根据自己的实际可能需要做一些修改,比如说文件名,文件路径,用户名(有的系统是ubuntu,有的是pi),无线网卡的名字也可能不同,不一定是wlan0。

VNC自启动

1. Raspberry Pi OS (原 Raspbian) bullseye

bullseye系统自带RealVNC,打开开机自启动即可。
依次点击左上角树莓派的标识——>首选项——>Raspberry Pi configuration——>Interfaces——>VNC,设置成enabled即可。


Raspberry Pi configuration

Interfaces

2. ubuntu 20.04 server Raspberry Pi

Desktop:lxde-core

先安装tightvncserver,然后开启vnc生成xstartup文件。

sudo apt install tightvncserver
vncserver 
vncserver -kill :1

修改xstartup文件。

sudo vim .vnc/xstartup
// 添加以下内容
lxterminal &
/usr/bin/lxsession -s LXDE &
xhost +

添加myvnc文件到/etc/init.d/,注意权限问题,最后update。

sudo vim /etc/init.d/myvnc
sudo chmod 755 /etc/init.d/myvnc
sudo update-rc.d myvnc defaults

如果想要关闭myvnc的开机自启动:

sudo update-rc.d -f myvnc remove

myvnc文件:
这个文件只考虑开和关一个vnc,可以按自己的需求修改。

#!/bin/sh
### BEGIN INIT INFO

VNCUSER='ubuntu'
case "$1" in
        start)
                su $VNCUSER -c 'vncserver :1'
                echo "Starting VNC Server for $VNCUSER"
        ;;
        stop)
                su $VNCUSER -c 'vncserver -kill :1'
                echo "TightVNC Server stopped"
        ;;
        *)
                echo "Usage:"
                exit 1
        ;;
esac
exit 0

xhost + 自启动

1. Raspberry Pi OS (原 Raspbian) bullseye

需要开机的时候自动执行xhost +,试过添加到/etc/rc.local文件不可行,最后添加到/usr/share/dispsetup.sh文件才可以(猜测是X11启动顺序的问题)。

sudo vim /usr/share/dispsetup.sh
// 在exit 0前面添加下面一行
xhost +

2. ubuntu20.04 server Raspberry Pi

将 xhost + 添加到.vnc/xstartup文件末尾即可,随着VNC自启动一起执行。

sudo vim .vnc/xstartup
// 添加下面一行到文件末尾
xhost +

Listen 自启动

1. Raspberry Pi OS (原 Raspbian) bullseye

需要在开机的时候自动在后台nohup执行listen.py文件,输出以添加的形式写到log文件。

sudo vim /etc/rc.local
// 在exit 0前面添加下面一行
su pi -c "nohup python3 -u /home/pi/listen.py >>/home/pi/log 2>&1 &"

要验证rc.local是否成功执行,每次都需要重启比较麻烦,可以先用下面命令做测试。不过由于在开机启动的时候不同服务优先级不同,可能会出现一些依赖还没完成,所以最终还是要手动重启试一下。

sudo systemctl restart rc-local.service
sudo systemctl status rc-local.service

2. ubuntu20.04 server Raspberry Pi

待续······


Ad-hoc自组网自启动

1. Raspberry Pi OS (原 Raspbian) bullseye

先安装wireless-tools和net-tools

sudo apt install wireless-tools
sudo apt install net-tools

然后保存adhoc_start.sh文件到某一目录,比如说/home/pi/adhoc_start.sh,然后修改rc.local文件,最后重启。注意,如果这里不加sleep,在开机执行rc-local.service的时候,有一定概率会报错说找不到wlan0设备(猜测可能是在执行脚本的时候,还没完成网卡的识别,有可能是因为这里插的是外接网卡)。

sudo vim /etc/rc.local
// 在exit 0前面添加下面内容
sleep 10
su pi -c "sh /home/pi/adhoc_start.sh"

adhoc_start.sh文件:

#!/bin/sh
sudo ifconfig wlan0 down
sudo iwconfig wlan0 mode ad-hoc essid "rpad" key off
sudo ifconfig wlan0 192.168.0.2x
sudo ifconfig wlan0 up
echo "adhoc start"

2. ubuntu20.04 server Raspberry Pi

Desktop:lxde-core

同样先安装wireless-tools和net-tools

sudo apt install wireless-tools
sudo apt install net-tools

添加myadhoc文件到/etc/init.d/,注意权限问题,最后update。
注意myadhoc文件中的sudo ip route add default via 192.168.0.2x这一行,这个是当时为了k3s设置的,如果只有一个网卡可以不加。

sudo vim /etc/init.d/myadhoc
sudo chmod 755 /etc/init.d/myadhoc
sudo update-rc.d myadhoc defaults

先stop network-manager,再把开机启动给关了,然后重启。

sudo systemctl stop network-manager
sudo systemctl disable network-manager

如果想要关闭myadhoc的开机自启动:

sudo update-rc.d -f myadhoc remove

myadhoc文件:
这个文件只考虑了start,stop和其他没有实现,可以按自己的需求修改。

#!/bin/sh

case "$1" in
        start)
                sudo ifconfig wlan0 down
                sudo iwconfig wlan0 mode ad-hoc essid "rpad" key off
                sudo ifconfig wlan0 192.168.0.2x
                sudo ifconfig wlan0 up
                sudo ip route add default via 192.168.0.2x
                echo "adhoc start"
        ;;
        stop)
                echo "adhoc stop"
        ;;
        *)
                echo "Usage"
                exit 1
        ;;
esac
exit 0

3. Jetson xavier nx Ubuntu 20.04.5 LTS

Detailed: Linux ubuntu 5.10.104-tegra #1 SMP PREEMPT Tue Jan 24 15:09:44 PST 2023 aarch64 aarch64 aarch64 GNU/Linux

先修改sudoers文件,输入sudo无需密码:

sudo chmod u+w /etc/sudoers
sudo vim /etc/sudoers
添加以下,其中username根据自己的机器改,这里是xavier
username ALL=(ALL:ALL) NOPASSWD: ALL
chmod u-w /etc/sudoers 

在这里先用了跟树莓派Ubuntu20.04 server一样的方法,开机的时候没有成功。
尝试手动执行了一下adhoc.sh脚本,结果报错Error for wireless request "Set Mode" (8B06) ,多次尝试之后发现,开机之后第一次执行脚本设置Ad-hoc模式就会报错,之后执行就没有问题。
后面找到了一个更简单的方法,先打开Startup Applications,然后点Add,Name可以随便填,Command填开机之后要执行的命令。在这里,我添加了两个启动项adhoc1和adhoc2,命令都是sh /home/xavier/adhoc.sh。
最后关机重启即可。

adhoc.sh文件:

#!/bin/sh

sleep 10
sudo ifconfig wlan0 down
sudo iwconfig wlan0 mode ad-hoc essid "rpad" key off
sudo ifconfig wlan0 192.168.0.xx
sudo ifconfig wlan0 up
echo "adhoc start"
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容