systemd initrd에서 새 루트 디렉토리에 마운트를 유지하는 방법

systemd initrd에서 새 루트 디렉토리에 마운트를 유지하는 방법

배경

저는 dracut을 사용하여 사용자 정의 initrd를 구축하고 있습니다. 그것:

  • ext4 디스크 파티션을 다음에 마운트하십시오./data
  • 네트워크를 통해 저장된 squashfs 이미지 검색/data
  • Squashfs 설치
  • /sysroot하위 디렉터리와 /data/overlay상위 디렉터리 로 squashfs 미러 에 overlayfs를 설치합니다.
  • 마운트 /data를 바인딩합니다./sysroot/data

마지막 단계는 새 루트에서 새 이미지를 데이터 파일 시스템에 기록하여 덮어쓰는 내용을 검사할 수 있도록 완료되었습니다. 내가 아는 한 이것은 새로운 루트에서는 수행될 수 없습니다.

systemd.mount 장치를 사용하여 이러한 마운트를 구현하고 있습니다(예: 마지막 마운트).

[Unit]
After=sysroot.mount
After=data.mount

[Mount]
Where=/sysroot/data
What=/data
Type=none
Options=bind

[Install]
WantedBy=initrd.target

질문

/sysroot/data불행히도 systemd는 switch_root 전에 제거됩니다. 또한 /datasquashfs 이미지를 마운트 해제하려고 시도 하지만 해당 이미지가 사용 중이기 때문에 실패합니다.

이러한 설치를 유지하도록 systemd에 지시하는 방법이 있습니까? 내가 읽고문서스토리지 데몬에 대해 이 작업을 수행하는 방법에 대해서는 설치에 대해 수행하는 방법을 지정하지 않습니다.

답변1

/data를 /sysroot/data에 바인드 마운트할 필요는 없습니다.

initrd를 종료하면 문제 없이 블록 장치를 다시 마운트할 수 있습니다.mount /dev/sda1 /data

관련 정보