fwupd를 통한 주변기기 펌웨어 업데이트

버전: 2.4.2
최종 업데이트: 2024년 10월 18일

개요

이 가이드의 목적은 ChromeOS UI에서 지원하는 fwupd 펌웨어 업데이트를 구성하는 방법을 설명하는 것입니다.

fwupd 플로우 차트

배경

fwupd는 Linux 기반 시스템에서 주변기기 및 기타 시스템 펌웨어 업데이트를 실행하는 오픈소스 데몬입니다. fwupd는 ChromeOS에서 주변기기 펌웨어를 업데이트하는 메커니즘입니다.

fwupd 업데이트 페이로드는 Linux 공급업체 펌웨어 서비스(LVFS)에 저장된 .cab 파일로 구성됩니다. Linux에서는 fwupd 업데이트가 LVFS에 업로드되면 널리 제공될 수 있습니다. 하지만 ChromeOS에서 업데이트를 사용할 수 있도록 하려면 ChromeOS팀에서 최적의 사용자 환경을 보장하기 위해 새로운 업데이트를 별도로 확인하고 허용 목록에 추가해야 합니다.

fwupd 프로세스

다음은 샘플이 Allion으로 전송된 WWCB 인증 주변기기에만 적용됩니다.

ChromeOS의 현재 fwupd 버전에서 아직 주변기기를 지원하지 않는 경우 사용 사례 1 사용 사례 2에 제공된 안내를 따르세요. ChromeOS에서 현재 버전의 fwupd가 이미 주변기기를 지원하는 경우 사용 사례 2로 건너뜁니다.

사용 사례 1: ChromeOS의 현재 fwupd 버전이 주변기기를 지원하지 않음

ChromeOS의 현재 fwupd 버전은 아직 주변기기를 지원하지 않습니다.

이미지

  1. ODM 및 OEM은 칩셋 공급업체와 직접 협력하여 플러그인 변경사항을 fwupd 코드베이스에 제출합니다.

    1. fwupd 통합 핸드북 (2단계 - fwupd 사용)을 참고하세요.
    2. 플러그인 변경사항: 예 1, 예 2
    3. .quirk 파일의 VIDs:PIDs 일치: 예 3
      • USB 주변기기가 기존 플러그인에서 지원되는 경우 버그 파일 변경의 대안으로 DS20 사양을 따를 수 있습니다.
    4. 그 결과 플러그인 및 쿼크 변경사항을 fwupd의 유지관리 담당자가 병합했습니다.
    5. 기다려 주세요. 버전을 기록해 둡니다
  2. 업데이트된 출시는 정기적으로 ChromeOS에 미러링되며 Chromium 출시 일정을 따릅니다.

  3. 예정된 Chromium 출시의 기능 동결 마감일 이후에 플러그인 변경사항, 버그 수정사항 또는 버그 파일 변경사항을 제출했지만 변경사항이 다음 ChromeOS 출시에 우선순위가 높은 경우 다음 안내를 따르세요.

    1. 파트너 문제 추적기로 이동합니다.
    2. Google 파트너 도메인 계정으로 로그인합니다.
    3. 왼쪽 메뉴에서 Create Issue(문제 생성) 버튼을 클릭하여 구성요소(ChromeOS > External > WWCB > PERIPHERAL OEM > fwupd)에 버그를 만듭니다. 이렇게 하면 ChromeOS팀에 ChromeOS의 fwupd 버전을 업데이트하라는 알림이 전송됩니다.

      버그에 다음 정보를 제공합니다.

      1. 버그 제목:

        [PRODUCT NAME - fwupd]: New Plugin NAME OF THE PLUGIN requires fwupd X.Y.Z version uprev
        
      2. 버그 설명:

        1. 플러그인 변경사항으로 구성된 fwupd 버전 번호:
          • 어떤 기능이 추가되나요?
          • 어떤 버그가 수정되었나요?
          • 어떤 하드웨어를 지원하나요?
        2. 기기 제조업체/모델
        3. VID, PID
        4. GUID (전역 고유 식별자)
      3. 스크린샷 예:

        fwupd uprev 버그의 스크린샷

  4. 버그가 분류되고 선택적 fwupd 버전이 Google 엔지니어가 ChromeOS의 테스트 이미지에 통합됩니다.

  5. 그러면 chromeOS에서 uprev된 fwupd 버전을 검증하는 데 버그가 할당되므로 uprev가 fwupd를 손상시키지 않습니다.

    • 테스트팀에서 5개의 제품을 선택하고 업데이트된 fwupd로 구성된 ChromeOS의 테스트 이미지를 사용하여 펌웨어를 업그레이드/다운그레이드합니다.
  6. 유효성 검사 결과는 버그에 제공됩니다.

    • 업그레이드 중에 발견된 버그로 인해 유효성 검사에 실패하면 해당 버그가 Google 엔지니어에게 다시 할당됩니다.
  7. 테스트가 완료되면 변경 목록이 승인되면 uprev된 버전의 fwupd가 카나리아 채널로 승격됩니다.

    • 버그에 의견을 남기면 어떤 빌드 버전의 ChromeOS가 업데이트된 버전의 fwupd로 구성되어 있는지 알 수 있습니다. CL Finder를 사용하여 ChromeOS 파트너 콘솔(CPCon)에서 빌드 버전을 검색할 수도 있습니다(Google 기업 파트너 도메인 계정 필요, CPCon 액세스 권한은 TAM에 문의하세요).

사용 사례 2: ChromeOS 최신 버전의 fwupd가 주변기기를 지원함

ChromeOS의 현재 버전 fwupd는 이미 주변기기를 지원하며 새 펌웨어를 사용할 수 있습니다.

이미지

  1. .cab 파일을 만듭니다.

    모든 펌웨어는 캐비닛 아카이브로 업로드됩니다. LVFS는 펌웨어 바이너리와 함께 보관 파일에 대상 기기와 펌웨어를 설명하는 .metainfo.xml 파일이 하나 이상 포함될 것으로 예상합니다. Linux에서 gcab (캐비닛 파일을 만드는 라이브러리)을 사용하여 캐비닛 보관 파일을 만들 수 있습니다.

  2. 테스트를 거친 최종 펌웨어 업데이트(.cab 파일)를 LVFS에 업로드합니다.

    1. 안정적인 리모컨에서 업데이트를 사용할 수 있는지 확인합니다.

      비공개, 엠바고 또는 테스트 원격에서 사용할 수 있는 경우 ChromeOS 미러에 추가되지 않습니다.

    2. 서명된 보고서를 통해 LVFS에서 유효성 검사로 표시된 업데이트

      기기 테스트가 추가되었는지 확인합니다.

      • 예제 json 파일, 기기 테스트를 위해 테스트 프레임워크에서 지원하는 파일
    3. 첫 번째 펌웨어 업로드인 경우 최소 2개의 펌웨어, (다운그레이드 테스트용) 기본 펌웨어 및 (업그레이드 테스트를 위한) 새 펌웨어를 LVFS의 안정적인 리모컨에서 사용할 수 있는지 확인합니다.

  3. 펌웨어 업그레이드는 서명된 보고서를 통해 ChromeOS에서 테스트해야 합니다.

    1. 인증서를 LVFS에 업로드하여 DUT를 계정에 연결합니다.

      1. 내 계정으로 LVFS에 로그인합니다.
      2. 오른쪽 상단의 '사용자' 아이콘을 클릭하거나 https://fwupd.org/lvfs/profile{:.external}을 클릭합니다.
      3. 프로필 설정을 클릭합니다.
      4. Chromebook에서 클라이언트 인증서를 찾습니다.

        • 참고: Chromebook이 개발자 모드여야 합니다.
        • ctrl+alt+t를 눌러 ChromeOS 개발자 셸을 실행합니다.
        • 유형:

          shell
        • /var/lib/fwupd/pki로 이동합니다.

          cd /var/lib/fwupd/pki
        • client.pem를 Chromebook의 폴더(예: Downloads)에 복사합니다.

          cp client.pm /home/chronos/user/MyFiles/Downloads/
    2. LVFS 웹사이트의 클라이언트 인증서 섹션에서 인증서 업로드 버튼을 클릭하고 인증서를 업로드합니다.

      1. 테스트에 사용하는 각 Chromebook에서 이 단계를 반복합니다. 여러 컴퓨터에 여러 인증서를 업로드할 수 있습니다.
    3. DUT를 통해 업그레이드를 테스트하고 서명된 보고서를 업로드합니다.

      1. 보고서를 테스트하고 업로드하려면 다음 명령어를 실행하고 메시지가 표시되면 인증합니다.

        fwupdmgr refresh
        fwupdmgr update
        fwupdmgr report-history --sign
      2. 참고: --sign 플래그 없이 보고서를 이미 업로드한 경우 fwupdmgr report-history --sign --force를 사용하여 동일한 보고서를 LVFS에 다시 업로드할 수 있습니다.

        fwupdmgr report-history --sign --force
        • --verbose를 전달하여 서버 응답을 확인할 수 있습니다.

          fwupdmgr report-history --force --verbose
      3. 확인 대화상자에서 를 클릭합니다.

        • 그러면 서명된 보고서가 계정에 업로드됩니다.
        • 확인하려면 https://fwupd.org/lvfs/dashboard로 이동하여 왼쪽 상단의 섹션 아래에 있는 서명된 보고서를 클릭합니다.
    4. LVFS의 펌웨어 버전에 서명된 보고서가 있는지 확인

      • LVFS에서 주변기기를 검색합니다.
      • 업로드된 서명된 보고서가 Chromebook을 사용하여 주변기기의 펌웨어 버전을 성공적으로 업그레이드한 후 이루어졌다면 테스트 주체 섹션에 ChromeOS 버전, 업데이트 버전, 항목이 표시됩니다. 를 참고하세요.
      • 출시 게이팅에 'ChromOS 사용자가 사용할 수 있음'이라는 녹색 체크표시가 표시되는지 확인합니다.
    5. M126부터 펌웨어 업데이트는 펌웨어에 LVFS에서 서명된 보고서(ChromeOS로 테스트됨)가 있는 경우에만 ChromeOS 사용자가 사용할 수 있습니다.

      • 24시간이 지나면 사용자가 주변기기를 Chromebook에 연결하고 ChromeOS UI를 통해 펌웨어를 업그레이드할 수 있습니다. 설정 > ChromeOS 정보 > 펌웨어 업데이트로 이동합니다.
      • 참고: 특정 마일스톤의 ChromeOS에서 필요한 모든 플러그인 변경사항을 사용할 수 있다고 가정하면 펌웨어 업데이트를 사용할 수 있습니다.

서명된 보고서에 관한 자세한 내용은 LVFS에서 확인할 수 있습니다.

FAQ

Q: 어떤 Chromebook에서 fwupd를 지원하나요?

M101 이상의 모든 ChromeOS 기기

Q: ChromeOS와 통합된 fwupd 버전을 찾으려면 어떻게 해야 하나요?

  1. 브라우저(M109 이상)를 통해 chrome://system를 엽니다.
    1. fwupd_version로 이동합니다.
  2. 또는 개발자 모드, 루트 콘솔을 통해
    1. fwupdmgr --version을 입력합니다.
    2. runtime org.freedesktop.fwupd 찾기

Q: fwupd 업데이트 절차는 얼마나 걸리나요?

fwupd uprev는 Chromium 출시 일정을 따르므로 fwupd uprev 요청이 브랜치 기능 동결 마감일 전에 제출되었는지 확인하세요.

Q: ChromeOS 출시 일정에 대한 자세한 내용은 어디에서 확인할 수 있나요?

Chromium 출시 일정

Q: Chromebook을 개발자 모드로 전환하는 방법은 무엇인가요?

  1. Chromebook의 전원을 끕니다.
  2. esc+새로고침을 길게 누른 다음 전원 버튼을 누릅니다.
    • 참고: 일부 Chromebook에서는 esc+(오른쪽 화살표 키)를 누른 다음 전원 버튼을 누릅니다.
  3. 기기가 켜지고 복구 화면/모드가 표시됩니다.
  4. 그런 다음 ctrl+d 키를 누른 다음 Enter 키를 눌러 수락합니다.
    • 참고: ctrl+d 전에 다른 키를 누르면 기기가 개발자 모드로 전환되지 않습니다.
  5. 기기가 재부팅되고 경고음이 울리며 '시스템이 개발자 모드로 전환 중입니다'라는 메시지가 표시됩니다.
  6. 약 30초 후에 '시스템에서 개발자 모드를 준비 중입니다'라는 메시지가 표시됩니다.
  7. 결국에는 (디스크 크기에 따라 10분에서 1시간 이상이 될 수 있음) 기기가 일반 시작 화면으로 재부팅됩니다.
  8. ctrl+alt+(오른쪽 화살표 키)를 눌러 명령 프롬프트를 시작합니다.
    • 참고: 일부 Chromebook에서는 ctrl+alt+refresh 키입니다.
    • 브라우저 보기로 돌아가려면 ctrl+alt+(왼쪽 화살표 키)를 누릅니다.
  9. 자세한 내용은 [개발자 모드]에서 확인할 수 있습니다.

Q: Chromebook을 일반 모드로 전환하는 방법(즉, 개발자 모드 사용 중지)

기기를 재부팅하고 펌웨어 화면에서 스페이스바를 누릅니다.

자세한 내용은 [개발자 모드]를 참고하세요.

Q: ChromeOS에서 fwupd를 통한 다운그레이드를 지원하나요?

아니요. fwupd의 프로덕션 버전 또는 펌웨어가 손상되면 https://fwupd.org/lvfs/dashboard를 통해 서명된 보고서를 삭제해야 합니다. 플러그인 변경사항을 제출하거나 새 펌웨어를 사용할 수 있을 때마다 테스트하는 것이 중요합니다. LVFS의 안정적인 원격에서 항상 기본 버전의 펌웨어를 사용할 수 있도록 합니다.

Q: 어떤 ChromeOS 버전에서 어떤 fwupd 업데이트를 지원하는지 어떻게 알 수 있나요?

변경사항이 어떤 빌드 버전에 통합되었는지 묻는 댓글을 달고 Google 엔지니어가 해당 정보를 제공할 수 있어야 합니다. CL Finder를 사용하여 ChromeOS 파트너 콘솔(CPCon)에서 빌드 버전을 검색할 수도 있습니다(Google 기업 파트너 도메인 계정 필요 - CPCon 액세스 권한은 TAM에 문의하세요). ChromeOS 파트너 프런트엔드(CPFE)에서 빌드 버전을 교차 참조하여 해당 버전이 어떤 마일스톤에 해당하는지 확인할 수 있습니다.

Q: LVFS 계정은 어떻게 만드나요?

계정 가져오기 LVFS 문서를 참조하세요.

Q: LVFS에 cab 파일을 업로드하려면 어떻게 해야 하나요?

펌웨어 업로드 LVFS 문서를 참고하세요.

Q: 특정 주변기기용 펌웨어인지 확인하는 방법

이 작업은 가장 잘 알려진 구성 파일을 통해 수행할 수 있습니다. 자세한 내용은 업데이트된 가장 잘 알려진 구성을 참고하세요.

Q: LVFS에 업로드하기 전에 fwupd 업데이트를 테스트하려면 어떻게 해야 하나요?

플러그인 변경사항이 제출되고 선택적 버전의 fwupd가 ChromeOS 테스트 이미지에 통합되면 ChromeOS 파트너 프런트엔드(CPFE)를 통해 테스트 이미지에 액세스할 수 있습니다(Google 기업 파트너 도메인 계정 필요 - CPFE 액세스 권한은 TAM에 문의).

LVFS 문서 ChromeOS에서의 펌웨어 테스트를 참고하세요. 또는 Moblab으로 fwupd 테스트를 실행할 수도 있습니다.

Q: 주변기기에 사용 가능한 펌웨어 업데이트가 있음을 어떻게 알 수 있나요?

업데이트가 LVFS에서 할당된 긴급성에 따라 업데이트가 사용 가능하다는 알림이 사용자에게 전송됩니다. 동작은 다음과 같습니다.

긴급 알림 동작
낮음 사용자에게 알림이 전송되지 않으며 직접 업데이트를 확인해야 합니다.
보통
높음
심각 업데이트가 완료될 때까지 부팅할 때마다 알림이 표시됩니다.

Q: fwupd 업데이트는 자동으로 이루어지나요?

아니요. 모든 fwupd 업데이트는 사용자가 시작하며 부팅 중에 또는 자동으로 실행되지 않습니다.

Q: DS20 사양의 이점은 무엇인가요?

현재는 USB 주변기기만 인증되었으며, 다른 하드웨어에서 사용한 것과 동일한 프로토콜을 사용하는 경우 DS20 설명자로만 작동합니다.

공급업체는 쿼크 파일 데이터를 fwupd 프로젝트가 아닌 USB 설명어에 넣을 수 있습니다. 이렇게 하면 USB 기기가 삽입되고 fwupd가 설명자 데이터를 읽고, 플러그인을 일치시키고, 공급업체가 fwupd에 패치를 제출하고 fwupd uprev를 기다릴 필요 없이 기기를 열거합니다.

Q: DS20은 파일 변경만 쿼크하는 대체 옵션인가요?

예. 대부분의 경우 향후 하드웨어에는 실제 코드 변경이 아닌 기존 플러그인에 VID 및 PID를 추가하기만 하면 됩니다. 코드 변경이 필요한 경우 공급업체는 fwupd에 플러그인 변경사항을 제출해야 합니다.

부록

  1. 개발자 가이드
  2. 개발자 지원팀
  3. CrOS 참여자를 위한 Git 및 Gerrit 소개
  4. 소스 코드 변경하기
  5. Gerrit 검토/승인 절차
  6. fwupd 통합 핸드북

업데이트 기록

날짜 버전 참고
2024-10-18 2.4.2 클라이언트 인증서를 업로드하기 위한 fwupd 워크플로 이미지 및 단계 업데이트
2024-07-23 2.4.1 서식 업데이트
2024-06-26 2.4 fwupd uprev 워크플로를 업데이트합니다(사용 사례 1)(2.4.1과 함께 게시됨).
2024-06-17 2.3 서명된 보고서 워크플로를 업데이트합니다. (2.4.1과 함께 게시됨)
2024-02-01 2.2 새 플랫폼에 게시됨. 문구가 약간 업데이트됨.
2023-10-12 2.1 케이스 1 및 케이스 2에 이미지 추가, 파트너 사이트에 호스팅된 fwupd 통합 핸드북
2022-08-14 2.0 초기 파트너 사이트 게시