실행 중인 시스템에서 Linux(읽기 전용) 루트 덮어쓰기

실행 중인 시스템에서 Linux(읽기 전용) 루트 덮어쓰기

이것은 나에게 매우 일반적인 문제인 것 같습니다. 읽기 전용 루트에서 Linux를 실행하는 임베디드 시스템이 있습니다. 전체 파티션을 덮어쓰는 방식으로 새 소프트웨어 이미지를 설치하는 업데이터 데몬이 있습니다. 내 질문은: 실행 중인 시스템에서 이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

  1. 업데이트된 파티션을 /dev/sdX현재(읽기 전용) 마운트된 루트인 에 추가하시겠습니까?
  2. 논의된 대로 현재 루트를 pivot_roottmpfs로 이동합니다.여기?
  3. 2개의 루트 파티션을 사용하고 업데이트할 때마다 "활성" 파티션을 전환하시겠습니까?

2와 3의 단점은 RAM(2개용)이나 디스크 공간(3개용)이 많이 필요하다는 것입니다. 실행 중인 시스템에서 읽기 전용 루트 파티션을 덮어쓰고 업데이트된 시스템으로 재부팅하는 안전한 방법이 있습니까?

답변1

그래서 제가 한 일은 1. 접근 방식을 택했는데 파일 시스템 문제로 인해 시스템이 더 이상 안정적이지 않은 문제에 부딪혔습니다. 마운트된 파티션을 덮어쓰는 것은 좋은 생각이 아닌 것 같습니다(그래도 놀랄 일은 아닙니다). 이 문제를 해결하기 위해 2. 작동하지만 몇 가지 단점이 있는 아이디어(pivot_root)를 시도했습니다. 그 중 하나는 업데이트가 완료된 후 가능한 한 빨리 실행 중인 프로세스의 대부분을 중지하거나 재부팅해야 한다는 것입니다. 마지막으로 저는 3. 아이디어를 시도했는데 유일한 단점은 디스크 공간이 "낭비"된다는 것입니다. 다른 모든 것은 꽤 잘 작동합니다.

관련 정보