注意:
- 不同系统(Ubuntu Debian)可能方法不同,不一定通用。
- 根据自己的实际可能需要做一些修改,比如说文件名,文件路径,用户名(有的系统是ubuntu,有的是pi),无线网卡的名字也可能不同,不一定是wlan0。
VNC自启动
1. Raspberry Pi OS (原 Raspbian) bullseye
bullseye系统自带RealVNC,打开开机自启动即可。
依次点击左上角树莓派的标识——>首选项——>Raspberry Pi configuration——>Interfaces——>VNC,设置成enabled即可。
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"