ivot_root의 경우 MTD 파티션을 분리할 수 있도록 oldroot가 사용하는 모든 프로세스를 종료하고 셸을 종료하고 돌아갑니다.

ivot_root의 경우 MTD 파티션을 분리할 수 있도록 oldroot가 사용하는 모든 프로세스를 종료하고 셸을 종료하고 돌아갑니다.

arm7에 임베디드 리눅스가 있습니다.

플래시 장치인 MTD 파티션 10(예: /dev/mtd10)에 rootfs가 마운트되어 있습니다. 볼륨은 UBIFS 디바이스 UBI0(/dev/ubi0)입니다.

나는 대략 다음 지침에 따라 Pivot_root(chroot와 유사) tmpfs를 설정했습니다.라이브 루트 파일 시스템의 크기를 조정하는 것은 어떻습니까?.

mtd10(UBI0)을 삭제/재포맷하고 싶습니다. 제가 겪고 있는 문제는 UBI0이 사용 중이라는 메시지가 표시되기 전까지는 UBI0을 분리/포맷할 수 없다는 것입니다. 그래서 다음 명령을 사용합니다.

fuser -vm /dev/mtd10이를 통해 종료될 수 있는 프로세스 목록이 제공되었으므로 모든 작업을 수행한 다음 UBI0에 마운트된 모든 파티션을 마운트 해제(또는 umount -l)했습니다.

따라서 내 시스템은 더 이상 내가 실행 중인 셸 외에 UBI0에 대한 종속성을 갖지 않습니다. 나는 많은 방법 조합을 시도했지만 작동하는 것처럼 보이는 유일한 방법은 ( exit명령을 사용하여) 로그 아웃하고 다시 로그인하는 것입니다 (저는 단지 내 사용자 이름을 입력합니다 root).

이 시점 telinit u에서 로그아웃/실행하면 UBI0이 사라지고 분리할 수 있습니다.

고쳐 쓰다:Kill은 rc_mxc.S로그아웃과 비슷한 효과를 갖습니다(즉, 쉘이 종료되고 다시 로그인해야 합니다. 하지만 이로 인해 스크립트도 종료됩니다. :(

여기서 문제는 스크립트를 작성하는 방법을 모른다는 것입니다. 스크립트 내에서 실행하면 exit스크립트가 종료됩니다.

답변1

find /proc/$$ -type l -lsFS가 열린 상태에서 셸에서 실행합니다. 이 FS에 대한 각 링크에 대해 적절한 조치를 취하십시오.

  • fd하위 디렉터리 에서 : run 은 파일 설명자 번호이고, exec n>replacement가리키는 파일이거나 해당 설명자를 닫습니다.nreplacement&-
  • 또는 하위 디렉토리: run exe에서 tmpfs 루트 디렉토리에 있는 원하는 쉘의 경로를 대체하십시오 .map_filesexec /bin/sh/bin/sh
  • As cwd: cd다른 디렉토리로.
  • As root: tmpfs 루트 디렉토리로 이동하고 chroot ..

관련 정보