/tmp에서 busybox 애플릿을 실행하세요.

/tmp에서 busybox 애플릿을 실행하세요.

헤드리스 Linux 장치에 문제가 있습니다. 간단히 말해서: rootfs를 사용할 수 없게 되어 모든 것이 차단됩니다. 전원을 껐다 켜는 것이 유일한 방법이며 수동으로 전원을 껐다 켜는 대신 자동으로 다시 시작하고 싶습니다.

/tmprootfs와 별개의 폴더 가 있습니다 .

tmpfs on /tmp type tmpfs (rw,relatime) 

그래서 아이디어가 떠올라서 busybox여기에 복사하고 백그라운드에서 스크립트를 실행했습니다.

# cp /bin/busybox /tmp
# (/tmp/busybox sleep 60;/tmp/busybox reboot) &
#

그런 다음 문제가 있는 상황을 제시하고 rootfs를 종료하고 기다렸습니다. 그러나 60초가 지나도 재부팅이 발생하지 않았습니다.

사용할 수 는 /없지만 이 명령을 사용하면 장치를 재부팅해야 하지 않나요?

답변1

한 가지 분명한 문제는 당신이 만든 복사본이 다음이 아니면 실행 가능하지 않다는 것입니다 . 할 수는 있지만 umask복사할 때 chmod해당 옵션을 사용하는 것이 더 쉽습니다 .-p

cp -p /bin/busybox /tmp

다른 잠재적인 문제도 있습니다.

/tmp의 파일 시스템이 실행 파일을 허용하지 않을 수 있습니다. 복사본을 만든 후에는 해당 복사본이 시스템에서 실제로 실행되는지 확인해야 합니다. 유사한 명령을 사용할 수 있습니다 /bin/busybox echo test.

상황에 따라 더 많은 어려움이 있습니다. rootfs를 사용할 수 없을 때 이 함수를 호출하려고 합니다. 불행히도 /tmp루트 아래에도 마운트됩니다. 그러나 rootfs에 액세스하지 않고도 커널에 액세스 할 수 있는 충분한 정보가 커널에 있으면 /tmp액세스가 가능합니다 . 60초 후에 테스트하면 정보가 여전히 메모리에 남아 있을 수 있지만 실행 후 며칠이 지나면 오류가 발생하면 정보가 더 이상 메모리에 없습니다.

시스템 장애 후 액세스가 필요하지 않도록 하려면 /tmp파일 시스템에 액세스하지 않고 직접 애플릿을 호출하도록 구성된 Bbusybox를 사용할 수 있습니다. 그런 다음 Busybox 셸에서 스크립트를 실행하여 /tmp상황을 확인하고 재부팅을 시도합니다.

Watchdog을 확인해 볼 수도 있습니다.

관련 정보