← 返回博客

SSH 服务无法启动的排查过程

在调试泰山派1f时,发现官方固件一直在往串口打印警告:

/usr/bin/list-iodomain.sh version: V1.0.1 Get CHIP ID: rk356x XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXX PLEASE CHECK IO-DOMAIN !!!!!!!!!!!!!!! XXXXXXXXXX 请务必检查IO电源域配置 !!!!!!!!!!!!!!! XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Get IO DOMAIN VALUE: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 注意事项:PMUIO1/PMUIO2 固定不可配 VCCIO2电平由硬件FLASH_VOL_SEL决定: 当VCCIO2供电是1.8V,则FLASH_VOL_SEL管脚必须保持为高电平; 当VCCIO2供电是3.3V,则FLASH_VOL_SEL管脚必须保持为低电平; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX pmuio2_vsel: 3.3V vccio7_vsel: 3.3V vccio6_vsel: 1.8V vccio5_vsel: 3.3V vccio4_vsel: 1.8V vccio3_vsel: 3.3V vccio2_vsel: 3.3V vccio1_vsel: 3.3V XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

输出中提到/usr/bin/list-iodomain.sh version: V1.0.1查看哪些地方调用了这个脚本:

grep -r "list-iodomain.sh" /etc/ /usr/bin/ /root/ /home/ 2>/dev/null

发现是/etc/init.d/S98iodomain.sh: list-iodomain.sh在输出内容,那么我们只要注释掉这一行就行。
由于官方固件非常精简,没有nano也没有vim,我们只能使用vi

vi /etc/init.d/S98iodomain.sh

可以看到它的逻辑直接就是120s打印一次,非常烦:

#!/bin/sh case "$1" in start|"") while true do list-iodomain.sh sleep $(( 60 * 2 )) done & ;; restart|reload|force-reload) echo "Error: argument '$1' not supported" >&2 exit 3 ;; stop|status) # No-op ;; *) echo "Usage: [start|stop]" >&2 exit 3 ;; esac

直接注释掉list-iodomain.sh,如下:

case "$1" in start|"") while true do #list-iodomain.sh sleep $(( 60 * 2 )) done &

保存并退出,重启,警告就没有了