关于Linux设置自启动程序后无法进行远程连接的解决方案

        在调试智能车时想设置自启动程序,但设置开机自启动后若没有将自启动程序挂后台运行并且未设置退出程序指令,则有很大可能系统会陷入死循环,下面是笔者给出的几个解决方案。

方案一:重装系统

        万事不决皆可重装系统,只要代码文件有备份,重装系统是一种简单粗暴的方法。但如果代码没有备份,该怎么解决呢?以下是未备份代码的解决方案。

方案二:使用串口助手

        此方法适合系统运行的程序没有进入死循环的状态,如一个开环程序,这里我使用Mobaxterm软件进行调试。

        打开软件,进入如下界面。如果不知道如何连接串口可以搜索串口连接,同时不同板子比特率不同,需要具体问题具体分析,这里就不介绍了。

关于Linux设置自启动程序后无法进行远程连接的解决方案_第1张图片

 选择com6接口(笔者这里是6,建议按照实际情况来)

连接上后观察串口输出

输入如下命令,观察系统目前进行的程序:

ps -ef

关于Linux设置自启动程序后无法进行远程连接的解决方案_第2张图片

 

选择要关闭的程序所对应的进程,输入:

kill -s 9 进程编号(如999)

可以强制关闭进程,结束任务,此时再用远程桌面连接即可。

        不过在调试过程中发现,由于系统大概率陷入死循环,所以根本没有机会进入敲命令行的界面,甚至在mobaxterm界面就会卡住,于是我们在摸索中发现了后面两种解决方式,这两种方式本质上是一种方式,区别就在于使用者是否安装有Linux系统或者带Linux系统的虚拟机。

方案三:使用外接显示器+键盘组合(无需拔出sd卡版,需要能运行系统的单片机或树莓派)

        由于我们小车使用的是edgeboard,所以可以将显示器与edgeboard相连,同时将键盘与板卡或者拓展坞相连,连接电源,启动系统,将系统显示在显示器上。

方法1、用键盘输入kill命令强行停止进程后再远程连接系统进行操作

方法2、直接在命令行读取那个eb.sh文件,升级系统权限,对文件进行操作,将自启动程序注释掉或者删除掉后即可。(此方法比较复杂,但是一劳永逸,和后面方案四思路是相同的)。

方案四:直接对sd卡中自启动文件进行操作(适合有linux系统或者带Linux系统的虚拟机)

        笔者这里使用的是VMware workstation pro 15.0+ubuntu20.04版本,其他版本应该类似。

1、首先将sd卡拔出,放入读卡器,将读卡器连接电脑。(如果是Linux系统的话电脑可以直接读取文件系统,那就直接对自启动程序eb.sh进行操作即可)。笔者这里由于是win10系统,linux有些文件夹读取不了,故使用虚拟机。

2、打开VMware workstation pro 15.0+ubuntu20.04,选择虚拟机->可移动设备->连接/断开设备连接读卡器(这里如果读取不了的话要看一下读卡器协议是否匹配,如虚拟机设置里usb控制器是2.0,但读卡器是3.0版本,那是检测不到的,可以把usb控制器调成3.1版本即可)。

3、系统弹出usb硬盘,在系统里找到自启动文件进行操作即可。

4、如果发现对于硬盘里的文件只有可读的权限,没有写入删除保存的权限,可以ctrl+alt+t打开命令行窗口,进入文件所在的地址,输入以下代码即可,即可升级权限,然后再操作文件即可。

sudo chmod 777 xxx(xxx是文件名,如eb.sh)

至于为什么要输入777的原因,可以参考这位大佬的博客,就不解释了。chmod 777 到底是啥 ???看完这个你就完全懂了!_人间世庄子的博客-CSDN博客_chmod777

你可能感兴趣的:(智能车,linux,嵌入式硬件)