루트 fs가 설치된 RO를 낮은 수준으로 변경할 수 있습니까?

루트 fs가 설치된 RO를 낮은 수준으로 변경할 수 있습니까?

관련된이 문제: 읽기 전용으로 마운트해야 하는 루트 파일 시스템이 있는 경우(완전히 손상되었다고 가정) 파티션을 다시 포맷하거나 dd해당 파티션에서 이전 백업 이미지를 사용할 수 있습니까(그런 다음 재부팅할 수 있습니까?)

나는 파일 시스템이 마운트될 때 이러한 급격한 변화를 좋아하지 않을 것이라고 생각합니다(읽기 전용이더라도).

또는 유사한 질문으로: fsck를 대화식으로 실행하는 것(즉, 다른 도구를 사용하여 파티션 데이터를 영구적으로 변경하는 것) 외에 잘못된 루트 파일 시스템을 수정할 수 있는 다른 방법이 있습니까?

답변1

글쎄, 대화식으로 실행하는 대신 fsck -y다른 질문에서 내 대답처럼 시도해 볼 수 있습니다. -P

ddrootfs 위에 이미지를 생성 하려는 경우 가장 좋은 옵션은 rootfs를 마운트하기 전에 initramfs에서 수행하는 것입니다.

할 수 있는해당 rootfs로 부팅된 시스템으로 이 작업을 수행하십시오. 그러나 이것은 Unix가 여러분에게 로프를 제공하는 것 중 하나입니다(루프는 이미 여러분을 위해 잘 묶여 있습니다). 파일 시스템은 그것을 전혀 좋아하지 않습니다("이봐, 거기에 inode가 있을 거라고 예상했는데, 이 쓰레기는 대체 뭐야?!"). 실제로 읽기 전용인지 확인하세요. 즉, 로그 재생이 아닌지 확인하세요.

파일 시스템에 대한 액세스를 피하면 파일 시스템에서 벗어날 수 있습니다. 이는 소스 이미지가 rootfs에 있을 수 없음을 의미합니다. 그건 정말 나쁜 생각이에요.

dd를 실행한 후에는 shutdown -r now작동하지 않습니다( ls및 포함하여도 작동하지 않음 cat). 대신에 워치독(또는 소프트독)을 사용하여 강제로 재설정하거나 일반적으로 내장된 쉘을 사용하여 /proc/sysrq-trigger계속 echo실행할 수 있도록 하는 것이 좋습니다 echo.

당신이 무엇을 하고 있는지 잘 모르겠지만, 일종의 장치를 만들고 있는 것처럼 들립니다. rootfs를 읽기 전용으로 유지하고 오버레이(공용 마운트, aufs 등)를 사용하여 livecd 작동 방식과 유사하게 변경하는 것을 고려해야 합니다. 또는 백업이나 복원만을 위한 rootfs를 보유할 수도 있습니다(작동하는 Android 휴대폰 수와 유사).

답변2

당신은 시도 할 수 있습니다. 그러나 나는 이에 반대할 것을 강력히 권고합니다. 커널이 프로그램의 일부를 메모리에서 언로드한 다음 원본 파일에서 다시 로드할 수 있으므로 실행 중인 프로그램이 중단될 수 있습니다. 프로그램과 사용 중인 모든 파일(특히 공유 라이브러리 포함)을 다른 파일 시스템(tmpfs 파일 시스템일 수 있음)에 복사했는지 확인하세요.

이론적으로 최악의 시나리오는 잘못된 데이터를 읽게 되는 것입니다. 어느 시점의 오류로 인해 파일 시스템이 읽기 전용으로 다시 마운트될 수 있습니다. 실제로 커널 패닉이 발생할 수 있습니다. 그럼에도 불구하고, 사용할 수 없는 파일 시스템으로 끝날 위험이 큽니다.

루트 파티션에서 fsck를 수행하려면 initramfs에서 수행하십시오. 그리고 나는 두 번째드로베르의 추천연합 파일 시스템으로 향상된 읽기 전용 루트 파일 시스템입니다.

관련 정보