루트 파일 시스템을 원격으로 업데이트

루트 파일 시스템을 원격으로 업데이트

임베디드 Linux 장치에 대한 원격 액세스(SSH)만 가능하고 운영 체제를 새 버전으로 업그레이드하는 것이 목표라고 가정해 보겠습니다. 장치에는 파티션이 하나만 있지만 50% 이상 사용되지 않으며 장치에서 사용할 수 있는 RAM은 약 256MB입니다. 무엇을 할 것인가? 내 생각에 해결책에는 tempfs와ivot_root가 포함될 수 있습니다.

이 작업을 수행하는 방법에 대한 막연한 아이디어는 다음과 같습니다.

  1. 새 rootfs 구조를 장치의 디렉터리에 업로드합니다.
  2. 임시 파일 시스템을 RAM에 마운트하고 필요한 시스템 리소스를 복사하여 rootfs가 처리되는 동안 시스템 실행을 유지합니다.
  3. ivot_root나 chroot 또는 둘 다를 사용하여 루트를 tempfs로 변경합니다. 확실하지는 않습니다.
  4. 업로드된 디렉터리에서 rootfs 구조를 복사하여 이전 디렉터리를 교체하세요.
  5. 새 버전의 운영 체제로 재부팅

제 생각에는 이것이 실제로 작동하기에는 너무 단순해 보입니다. 내 계획의 허점을 지적하고 내가 무엇을 놓치고 있는지 말해 주실 수 있나요? 아니면 올바르게 수행하는 방법을 더 잘 안내해 주실 수 있나요? 이런 일을 해본 경험이 있는 사람이 있나요?

답변1

chroot는 현재 프로세스의 루트만 변경하므로 나머지 파티션을 변경하면 시스템이 종료될 가능성이 높습니다(따라서 현재 프로세스도 종료됩니다).

ivot_root도 마찬가지입니다.

Hub_root는 루트 파일 시스템을 이동합니다.현재 프로세스의put_old 디렉토리로 이동하여 new_root를 새 루트 파일 시스템으로 만듭니다.

Raspberry Pi의 루트 파일 시스템을 업데이트해야 할 때 USB 드라이브를 여기에 연결하고 거기에서 부팅합니다. 임시 파일 시스템은 잘 작동하며 SD 카드를 제거하지 않고도 "실제" 루트 파일 시스템을 변경할 수 있습니다. (라즈베리 파이는 접근하기 어렵지만 USB 스틱을 연결할 수 있습니다.)

RAM 디스크로 "부팅"하는 적절한 방법을 생각할 수 없습니다.내부에시스템의 최종 부팅은 여전히 ​​미디어에서 이루어집니다. 항상 CD를 ​​넣어야 하는 모든 Linux Live CD를 생각해 보십시오.최대시스템의 내용은 이미 RAM에 있습니다.

파일 시스템을 다시 분할할 수 있는 경우 두 번째 파티션에 "새" OS를 설치하고 해당 OS를 활성 및 부팅 가능으로 표시할 수 있습니다.

  1. 두 번째 파티션의 파일 시스템을 다시 파티션합니다(새 운영 체제용).
  2. 새 파티션을 활성 및 부팅 가능으로 표시
  3. 새 파티션 포맷
  4. 두 번째 파티션에 새 운영 체제(또는 임시 운영 체제)를 설치합니다.
  5. 새(두 번째) 파티션에서 부팅하려면 부트로더(grub, LILO...)를 업데이트하세요.
  6. 재시작
  7. 첫 번째 파티션의 내용 삭제
  8. 첫 번째 파티션에 새 운영 체제를 설치합니다.
  9. 첫 번째 파티션에서 부팅하려면 부트 로더(grub, LILO...)를 업데이트하세요.
  10. 재시작
  11. 두 번째 파티션의 내용 삭제
  12. 두 번째 파티션 삭제
  13. 첫 번째 파티션의 크기를 전체 크기로 조정

실행 중 크기 조정은 어렵지만이 웹사이트이것이 가능할 수도 있다고 주장합니다. (2007년에!) 이 작업을 수행하려면 2GB RAM이 필요하다고 주장합니다.

관련 정보