일부 오래된 임베디드 시스템을 업데이트해야 합니다. 그러나 RAUC 업데이트에는 4개의 파티션이 포함되어 있지만 이전 시스템에는 3개의 파티션만 있었습니다.
추가 파티션이 디스크 시작 부분에 있는데 외부 어댑터를 사용하여 장치를 플래시할 수 없습니다.
내가 가진 것은 장치의 기존 Linux에 대한 SSH 액세스입니다.
실행 중인 시스템에서 파티션 테이블을 변경하여 시스템 파티션을 이동할 수 있습니까?
아니면 dd
전체 디스크를 새 이미지로 덮어쓸 수 있나요?
나는 이것을 알아낼 수 없으며 여기에 좋은 해결책이 없는지 확실하지 않습니다.
답변1
나는 임베디드 시스템에서 비슷한 일을 했습니다. 저를 구한 것은 새 디스크(및 모든 파티션)의 압축 이미지가 메모리에 들어갈 만큼 작다는 것입니다.
내가 한 일은 사용자 정의 스크립트를 포함하도록 initramfs를 패치하는 것이었습니다. 부팅 시 무엇이든 설치하기 전에 (압축된) 디스크 이미지를 ramfs 파일 시스템에 복사하고 압축을 풀어 dd of=/dev/<disk>
완전히 덮어씁니다.모든 것, 새 파티션을 포함합니다.
(일부 파일을 유지하는 데 약간의 어려움을 겪었습니다. 결국 유지하고 싶은 것을 타르볼링하고 tmpfs에 넣은 다음 새 파일 시스템에 압축을 풀었습니다. 잘 작동했습니다.)
더 좋은 솔루션이 있다고 확신하지만 이것이 저에게 효과적입니다.
[추가하도록 편집됨:]
또 다른 옵션은 네트워크를 통해 디스크 이미지를 가져오는 작은 스크립트를 initramfs에 추가하는 것입니다. 완전한 시스템의 도움 없이 IP 설정 등을 파악해야 한다는 것은 어색할 수 있습니다. 하지만 스크립트를 initramfs에 넣는 것이 디스크를 마운트하지 않고도 RAM에서 실행할 수 있어 대부분을 다룰 수 있기 때문에 아마도 최선의 선택일 것입니다.