修改etc中init.d文件夹导致系统无法启动

一、问题描述

由于GEC6818板子上没有adbd的服务,导致我无法使用在PC端adb连接开发板,然后我通过交叉编译adbd源码后,将adbd的动态库和可执行文件传输到开发板。

之后,我把adbd加入到/etc/init.d中的系统启动文件中,由于我运行adbd命令,无法自动退出,这就导致我重启开发板时,系统启动进程就会一直卡在adbd进程,无法退出。导致我无法进入系统!!!

二、尝试解决

最开始的思路是:

  1. 制作SD卡的Linux系统启动盘。
  2. 将SD卡插入开发板,将开发板调整为SD卡启动。
  3. 运行SD卡中的Linux系统,将eMMC挂载到当前系统中。
  4. 恢复/etc/init.d中的配置。
  5. 拔出SD卡,恢复开发板至eMMC启动。

是不是觉得这个步骤很繁琐?是的,我也觉得好繁琐。

那有没有简单一点的方法?有的,兄弟,有的。

三、最终解决方案

  1. 进入U-Boot命令行

在开发版启动时,按下任意键(如空格键)进入U-Boot命令行模式

  1. 修改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

  1. 恢复/etc/init.d中的启动脚本。
  2. 重启进入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中的启动脚本,直接运行bashsh

posted @ 2025-07-07 18:49  星空丶star  阅读(59)  评论(0)    收藏  举报