종료 시 루프백 루트와 호스트를 제거했는지 확인하세요.

종료 시 루프백 루트와 호스트를 제거했는지 확인하세요.

LVM 형식의 이미지 파일에서 실행되는 Linux 시스템을 설정하려고 합니다. initramfs 및 부팅 옵션을 일부 수정한 후 호스트 파일 시스템을 에 마운트하고 /run/initramfs/host, losetup이미지를 에 마운트하고 /dev/loop0, 커널과 udev가 LVM(및 루트 LV)을 감지했는지 확인하여 이를 시작하고 실행할 수 있었습니다. 여태까지는 그런대로 잘됐다.

문제는 시스템을 종료(또는 다시 시작 또는...)할 때 닭과 달걀이 필요한 상황으로 인해 루트 파일 시스템이나 호스트가 제대로 마운트 해제되지 않는다는 것입니다 /oldroot. )은 아직 설치되어 있으므로 제거할 수 없으며 /oldroot/run/initramfs/host, 호스트를 제거하면 액세스할 수 없게 되므로 제거할 수 없습니다 /oldroot.

비정상적으로 종료한다고 해서 세상이 끝나는 것은 아닙니다. 두 파일 시스템이 모두 기록되므로 fsck로그는 다음 부팅 시에 단순히 재생되지만 분명히 완전히 종료하는 것이 더 나을 것입니다.

따라서 질문은 다음과 같습니다. 어떻게든 종료 순서를 조정하는 것이 가능합니까(I할 수 있는종료 스크립트 수정),또는두 파일 시스템을 완전히 마운트 해제할 수 있도록 부팅 순서(아마도 호스트 마운트 지점을 다른 위치로 이동)가 필요합니까?

답변1

누구든지 같은 문제가 있는 경우:

tmpfs필요한 것은 마운트 해제를 수행하기 전에 종료 스크립트에서 호스트 파일 시스템의 마운트 지점을 루트 파일 시스템 외부 위치로 이동하는 것입니다(피벗 루트에서 실행되므로 괜찮습니다).

mount --move /oldroot/run/initramfs/host /host

이렇게 하면 /oldroot완전히 제거할 수 있습니다. 그런 다음 간단한 명령을 사용하여 호스트 파일 시스템을 마운트 해제할 수 있습니다.

umount /host

답변2

일부가 있습니다운영 체제이런 종류의 작업을 수행하기 위한 팁:

  • mount --move이것이 당신을 만든다교환마운트 지점의 파일 시스템
  • pivot_rootchroot/루트 파일 시스템 전환과 함께 사용됩니다.

초기의,특징목표는 다음과 같습니다:

  1. initramdiskas를 사용하여 커널을 시작하십시오.루트 파일 시스템( RAM압축되지 않은 일부를 유지하십시오 initrd).
  2. 필요한 모든 모듈과 스크립트에 액세스하세요실제 루트 장치첫 번째 부팅 단계에서 시작되었습니다. (여기에는 네트워크 초기화 및 네트워크 장치 설치가 포함될 수 있습니다)
  3. 준비가 되면 확인하세요실제 루트 장치준비된 루트 파일 시스템으로 마운트됩니다. 실행 pivot_root(및 chroot)하므로 실행 후에는 다음과 ramdisk같이 됩니다.사용하지 않은 메모리 디스크에 설치되었습니다 /initrd.
  4. 그러면 거기에서 umount /initrd메모리를 해제할 수 있습니다.

살펴 man mount 보고 man pivot_root!

답변3

파일을 사용할 수 없게 만들지 않고 파일 시스템을 완전히 마운트 해제된 것으로 표시하려면 읽기 전용으로 다시 마운트하세요.

mount -o remount,ro /mount/point

이 작업은 실행 파일 읽기, 실행, 현재 디렉터리 또는 활성 마운트 지점을 위해 파일 시스템에 열려 있는 파일이 있는 경우에도 수행할 수 있습니다. 쓰기 위해 파일을 여는 경우에만 읽기 전용으로 다시 마운트할 수 없습니다.

관련 정보