본문으로 건너뛰기
로그인 둘러보기
개발·코딩·데이터베이스 · 윈도우즈 유틸

fwup

0

fwup은 임베디드 Linux 기반 시스템용 이미지 기반 소프트웨어 업데이트 유틸리티입니다. 전체 루트 파일시스템 이미지를 한 번에 업데이트하는 전략을 주로 지원하며, A/B 파티션 교체, 복구 파티션, 시험 업데이트/롤백 시나리오 등을 포함합니다.

A/B 파티션업데이트이미지임베디드펌웨어

소개

fwup은 임베디드 Linux 기반 시스템용 이미지 기반 소프트웨어 업데이트 유틸리티입니다. 전체 루트 파일시스템 이미지를 한 번에 업데이트하는 전략을 주로 지원하며, A/B 파티션 교체, 복구 파티션, 시험 업데이트/롤백 시나리오 등을 포함합니다. fhunleth가 개발했으며, Apache 2.0 라이선스로 배포됩니다. ZIP 아카이브에 펌웨어 업데이트 정보를 결합하고, 선택적으로 암호화 서명을 추가할 수 있습니다.

상세정보

표준 ZIP 아카이브 사용

디버깅과 전송을 간단하게 하기 위해 표준 ZIP 아카이브를 사용합니다.

유연한 구성 언어

다양한 플랫폼과 펌웨어 업데이트 정책에서 펌웨어 업데이트를 가능하게 하는 간단하지만 유연한 구성 언어를 제공합니다.

스트리밍 펌웨어 업데이트 처리

대상 저장소 요구사항을 간소화하기 위해 스트리밍 펌웨어 업데이트 처리를 지원합니다.

다중 펌웨어 업데이트 작업 옵션

하나의 아카이브로 다양한 대상 구성 업그레이드가 가능한 여러 펌웨어 업데이트 작업 옵션을 제공합니다.

기본 디스크 파티셔닝 및 FAT 파일시스템 조작

GPT와 MBR 파티셔닝 및 FAT 파일시스템 조작을 기본적으로 지원합니다.

인간 및 기계 가독성 있는 진행 상황 표시

펌웨어 업데이트 과정에서 인간과 기계가 모두 읽을 수 있는 진행 상황을 표시합니다.

SD카드 초기화 및 업데이트

Linux, OSX, BSD, 또는 Windows에서 실행 중인지에 관계없이 개발 시스템에서 SD카드를 초기화하거나 업데이트할 수 있습니다. MMC와 SD카드는 자동으로 감지되고 언마운트됩니다.

펌웨어 아카이브 디지털 서명 생성 및 검증

펌웨어 아카이브의 디지털 서명 생성과 검증을 지원합니다.

델타 업데이트 지원 (VCDIFF)

VCDIFF를 사용한 델타 업데이트를 지원합니다 (베타 기능).

스파스 파일 지원

대용량 파일시스템 초기화 시 기록해야 하는 바이트 수를 줄이기 위해 스파스 파일을 지원합니다.

다운로드·설치 방법

가장 간단한 설치 방법은 패키지 관리자나 설치 프로그램을 통해 이루어집니다. asdf 또는 mise-en-place를 사용 중이라면 asdf-fwup을 통해 fwup 버전을 소프트웨어 프로젝트의 .tool-versions 파일에서 관리할 수 있습니다.

macOS에서는 Homebrew를 통해 설치할 수 있습니다:

brew install fwup

Linux에서는 플랫폼에 맞는 적절한 패키지를 다운로드하여 설치할 수 있습니다:

  • Debian/Ubuntu AMD64 .deb
  • Debian/Ubuntu ARM64 .deb
  • Raspbian armhf .deb
  • Alpine Linux – 공식 apk 패키지
  • Arch Linux – AUR의 fwup-git 패키지
  • Buildroot – 2016.05 릴리스부터 업스트림 지원 포함
  • Yocto – meta-fwup 레이어 참조

Windows에서는 Chocolatey를 통해 설치할 수 있습니다:

choco install fwup

또는 GitHubリリース에서 fwup.exe 실행 파일을 다운로드하여 PATH에 추가할 수 있습니다.

소스 코드에서 직접 빌드하려면 최신 소스 코드 릴리스를 다운로드하거나 이 저장소를 클론한 후, 플랫폼에 맞는 빌드 지침을 따르세요:

  • Linux 빌드 지침: docs/build_linux.md
  • OSX 빌드 지침: docs/build_osx.md
  • Windows 빌드 지침: docs/build_windows.md
  • Raspbian 빌드 지침: docs/build_rpi.md
  • FreeBSD/NetBSD/OpenBSD 빌드 지침: docs/build_bsd.md

소스에서 빌드할 때는 프로덕션에서 사용하기 전에 회귀 테스트가 통과하는지 확인하세요 (make check 실행).

기본 사용법/명령어

.fw 파일을 받아서 SD카드에 내용을 설치하려면 다음 예시와 같이 실행할 수 있습니다 (Linux 기준):

$ sudo fwup example.fw
Use 14.92 GiB memory card found at /dev/sdc? [y/N] y
100%
Elapsed time: 2.736s

macOS 또는 Windows에서는 sudo 명령을 생략할 수 있습니다.

이전 버전의 fwup을 사용하는 경우 더 많은 인수를 지정해야 합니다: fwup -a -i example.fw -t complete

주요 명령어 옵션은 다음과 같습니다:

  • -a, –apply: 펌웨어 업데이트 적용
  • -c, –create: 펌웨어 업데이트 생성
  • -d : 메모리 카드의 장치 파일 지정
  • -D, –detect: 연결된 SD카드 또는 MMC 장치 나열 및 크기 표시
  • -E, –eject: 펌웨어 작성 후 제거 가능한 미디어 자동 추출
  • -f : 펌웨어 업데이트 구성 파일 지정
  • -g, –gen-keys: 펌웨어 서명 키 생성 (fwup-key.pub 및 fwup-key.priv)
  • -i : 입력 펌웨어 업데이트 파일 지정
  • -l, –list: 펌웨어 업데이트에서 사용 가능한 작업 목록 표시
  • -o : 업데이트 생성 시 출력 파일 지정
  • -p, –public-key-file : 펌웨어 업데이트 검증을 위한 공개 키 파일 지정
  • -s, –private-key-file : 펌웨어 업데이트 서명을 위한 개인 키 파일 지정
  • -S, –sign: 기존 펌웨어 파일 서명 (입력 및 출력 파일 지정 필요)
  • -t, –task : 펌웨어 업데이트 내에서 적용할 작업 지정
  • -u, –unmount: 장치의 모든 파티션 먼저 언마운트
  • -V, –verify: 기존 펌웨어 파일 검증
  • –version: 버전 정보 출력
  • -y: 펌웨어 업데이트 적용 시 자동으로 발견된 메모리 카드 수락
  • -z: 자동으로 감지될 메모리 카드 출력 후 종료

예시 사용법:

  • 펌웨어 업데이트 아카이브 생성: $ fwup -c -f fwup.conf -o myfirmware.fw
  • 연결된 SD카드에 펌웨어 적용 (자동 감지된 SD카드 사용, ‘complete’ 작업): $ fwup -a -i myfirmware.fw -t complete
  • 특정 장치에 펌웨어 적용 및 ‘upgrade’ 작업 지정: $ fwup -a -d /dev/sdc -i myfirmware.fw -t upgrade
  • .fw 파일로부터 dd(1)용 이미지 파일 생성: $ fwup -a -d myimage.img -i myfirmware.fw -t complete
  • 공개/개인 키 쌍 생성: $ fwup -g
  • 생성된 개인 키를 안전하게 보관하고 공개 키를 대상에 배치 후 기존 아카이브 서명: $ fwup -S -s fwup-key.priv -i myfirmware.fw -o signedfirmware.fw

이런 경우에 유용합니다

임베디드 Linux 시스템의 펌웨어 업데이트를 관리해야 하는 개발자나 시스템 통합자에게 유용합니다. 특히 전체 루트 파일시스템 이미지를 교체해야 하는 A/B 파티션 전략이나 복구 파티션을 활용한 안전한 업데이트 시나리오에서 펌웨어 아카이브 생성, 서명, 적용 과정을 간소화합니다. ZIP 아카이브 기반 접근 방식은 디버깅과 네트워크 전송을 간단하게 하며, 스트리밍 처리는 대상 장치의 저장소 요구사항을 줄여줍니다.

지원 환경·시스템 요구사항

fwup은 최소한의 의존성과 런타임 요구사항을 가지고 있습니다. 스크립트는 의도적으로 제한되어 실패 시나리오를 더 쉽게 추론할 수 있도록 설계되었습니다. 소프트웨어 업데이트 아카이브 배포는 기능이 아니며, 사용자는 외부 미디어에서 업그레이드를 실행하거나 네트워크에서 스트리밍하거나 Ansible과 같은 도구로 스크립트화할 수 있습니다.

최신 버전·업데이트

fwup은 시맨틱 버저닝(SemVer)을 사용합니다. 예를 들어 1.0.0을 사용 중이라면 2.0.0 이전까지 브레이킹 체인지가 없고, 1.1.0 이전까지 새로운 기능이 추가되지 않습니다. 현장에 장치가 있는 경우 보수적인 접근 방식으로 업그레이드를 권장합니다. 예를 들어 1.0.0 장치가 현장에 있다면 1.1.0으로 업데이트하는 것은 괜찮지만, 1.0.0 장치에서 무시될 수 있는 1.1.0 기능을 fwup.conf 파일에 사용하는 것은 주의해야 합니다.

제한 사항·확인 사항

펌웨어 업데이트 아카이브의 배포는 내장 기능이 아닙니다. 사용자는 외부 도구나 스크립트를 통해 아카이브 배포를 처리해야 합니다. 공간이 제한된 대상 장치를 위한 최소 빌드 옵션은 ./configure –enable-minimal-build을 통해 사용할 수 있으며, 이는 거의 사용되지 않는 기능을 제거합니다.

시스템 요구사항

별도의 시스템 요구사항이 등록되지 않았습니다.