将程序拷贝到debian/binary目录(也就是板子系统的根文件目录/)下的opt目录里,创建一个.sh文件autostart.sh,文件的大致内容是判断服务文件有没有拷贝到/lib/systemd/system/下,从而保证程序只安装一次,避免重复安装。
#! /bin/sh
# chkconfig: 345 99 10
echo "try to install bmc after reboot"
if [ -f "/lib/systemd/system/bmcd.service" ];then
echo "bmc already configured"
else
echo "try to install bmc"
cd /opt/bmc
sudo sh ./install.sh
fi
然后将autostart.sh的文件。但是/etc/rc.local在编译debian系统的时候会被复写,原来写的启动脚本都会没有。查看编译日志:
文件拷贝到/etc/profile.d目录下,让系统开机自动执行这个sh脚本。
更新:
发现/etc/profile.d下的脚本每次启动shell都会自动执行,于是在/etc/rc.local里添加命令启动autostart.sh的文件。但是/etc/rc.local在编译debian系统的时候会被复写,原来写的启动脚本都会没有。查看编译日志发现root@xinyi:/# sed -i "/exit 0/i \ rm /dev/rfkill" /etc/rc.local
,发现脚本会往/etc/rc.local里动态插入指令,于是全局搜索/etc/rc.local,发现在/debian/mk-rootfs-bullseye.sh(根文件系统定制脚本)里有操作/etc/rc.local,就修改/debian/mk-rootfs-bullseye.sh在里面添加脚本。
#---------------start bmc&&live-server bycz--------------
sed -i '2a sh /opt/bmc/bmc-autostart.sh' /etc/rc.local
sed -i '3a sh /opt/live-server/live-server-autostart.sh' /etc/rc.local
注意sed一定要加-i,否则修改无效。
重新编译
0 条评论