关于在rc.local中添加命令导致Linux系统无法开机的解决方案

1、问题描述

  由于一次不正确的操作导致Linux系统出现异常,每次开机编译程序时都提醒Makefile文件不同步,需要在命令行中手动同步一下时间。每次开机都需要执行一条相同的语句,这个操作让我觉得十分麻烦,想到Linux系统的 /etc/rc.local 文件中的命令可以开机自动执行,于是我就想到把我需要执行的命令放到这个文件中,这样每次开机就不需要我手动同步了。
  结果这条命令在开机时同步了系统时间,打乱了正常开机时的一些设置,导致系统执行完命令以后,就自动重启了,致使Linux系统无法开机。

2、解决方案

  无法开机时因为 rc.local 中异常命令的存在,只要能进入系统文件中,将这条命令删除了就可以解决这个问题。网上的一些方法是通过快捷键,在开机前进入终端去修改文件,但是我使用的是NVIDIA Jetson Nano运行的ARM版Ubuntu系统,尝试此方法无效。
  既然正常开机进不了系统,那只能采取其它方式了。Jetson Nano的系统是烧录在SD卡上的,那么是否可以将SD卡挂载到另一台Linux系统中,在其他系统上来修改文件呢?将SD卡拔下,放入读卡器,插到PC的Linux系统中,可以看到Linux系统能够识别到SD卡中的文件,然后修改/etc/rc.local文件,成功解决问题!

3、反思

  在rc.local中执行命令前,要思考这个命令会不会影响系统开机,否则可能就会出现我遇到的这个问题。
  本问题中,我的Linux系统固化在SD卡上,可以直接取下连接到PC上,如果是固化在EMMC中的系统,就需要使用另一台Linux设备来挂载该系统了,挂载系统的流程为:

  1. 使用数据线连接设备;
  2. 使用 lsblk 命令查询连接设备的地址,我的为/dev/sdb1;
  3. sudo mkdir /mnt/usb,创建一个目录;
  4. sudo mount /dev/sdb1 /mnt/usb,挂载系统;
  5. 挂载成功以后可以在 /mnt/usb 目录下看到被挂载系统的文件,修改要改动的文件;
  6. sudo umount /dev/sdb1,取消挂载。
Logo

更多推荐