Linux
busysbox 重啟在初始化腳本中不起作用
我們有基於 Beaglebone 黑色的定制板,具有 256MB RAM 和 4GB eMMC。
我們從 Linux-3.12 升級到 Linux-4.4,busybox-1.20.2 升級到了busybox-1.26.2。
現在在busybox-1.26.2中,我們看到了busybox-1.20.2中沒有的問題
我在最後一個初始化腳本之一中添加了以下程式碼。
if [ -f /home/ankur ] ; then count=50 rm /home/ankur echo "----Check Whoami----" whoami #prints root reboot echo "--------------------" while [ true ] do count=$((count - 1 )) echo "Count = $count" if [ $count -le 0 ];then break; fi echo "Sleep 1" sleep 1 done fi
我觸摸了文件,
/home/ankur
然後重新啟動了電路板。我觀察到的是,系統沒有重新啟動,但計數器下降到 0,然後執行其他初始化腳本,然後重新啟動板。
因此,busybox 似乎正在獲取信號,
reboot
但僅在執行初始化腳本後才進行處理。
reboot
現在我的問題是,在完成所有初始化腳本之前有沒有辦法進入董事會。是否有任何busybox 配置可以禁用此重啟阻塞?
reboot -f
(強制重啟而不通過初始化)可以工作,但我們也需要執行停止腳本,所以不能使用它。
因此,busybox 似乎正在獲得重新啟動的信號,但僅在執行初始化腳本後才進行處理。
這正是
init
BusyBox 現在的工作方式,是的。不,這是不可配置的。您必須更改程序並重新建構它。進一步閱讀
- 丹尼斯·弗拉森科 (2014-11-21)。init:不要從信號處理程序執行關閉/重新執行操作。BusyBox 源。