修改etc中init.d文件夹导致系统无法启动
一、问题描述
由于
GEC6818板子上没有adbd的服务,导致我无法使用在PC端adb连接开发板,然后我通过交叉编译adbd源码后,将adbd的动态库和可执行文件传输到开发板。之后,我把
adbd加入到/etc/init.d中的系统启动文件中,由于我运行adbd命令,无法自动退出,这就导致我重启开发板时,系统启动进程就会一直卡在adbd进程,无法退出。导致我无法进入系统!!!
二、尝试解决
最开始的思路是:
- 制作SD卡的Linux系统启动盘。
- 将SD卡插入开发板,将开发板调整为SD卡启动。
- 运行SD卡中的Linux系统,将
eMMC挂载到当前系统中。- 恢复
/etc/init.d中的配置。- 拔出SD卡,恢复开发板至
eMMC启动。
是不是觉得这个步骤很繁琐?是的,我也觉得好繁琐。
那有没有简单一点的方法?有的,兄弟,有的。
三、最终解决方案
- 进入U-Boot命令行
在开发版启动时,按下任意键(如空格键)进入U-Boot命令行模式
- 修改U-Boot环境变量
通过设置
bootargs环境变量,传递内核参数来影响Linux的启动行为。
init=/bin/bash或者init=/bin/sh来直接进入,而不执行/etc/init.d中的脚本。
# 以GEC6818为例
setenv bootargs "lcd=at070tn92 tp=gslx680-linux root=/dev/mmcblk0p2 rw rootfstype=ext4 init=/bin/bash"
save
如果
/bint/bash无法启动,则尝试/bin/sh。
- 恢复
/etc/init.d中的启动脚本。 - 重启进入U-Boot,恢复启动行为
setenv bootargs "lcd=at070tn92 tp=gslx680-linux root=/dev/mmcblk0p2 rw rootfstype=ext4"
save
通过本次的调式和恢复,当
/etc/init.d中出现错误,最稳妥最万能的办法就是通过SD卡启动,挂载eMMC盘进行回复,当然也可以通过U-Boot修改启动参数,跳过/etc/init.d中的启动脚本,直接运行bash或sh。

浙公网安备 33010602011771号