KR101585350B1 - 관리 엔진을 사용하는 컴포넌트 업데이트 - Google Patents

관리 엔진을 사용하는 컴포넌트 업데이트 Download PDF

Info

Publication number
KR101585350B1
KR101585350B1 KR1020147001920A KR20147001920A KR101585350B1 KR 101585350 B1 KR101585350 B1 KR 101585350B1 KR 1020147001920 A KR1020147001920 A KR 1020147001920A KR 20147001920 A KR20147001920 A KR 20147001920A KR 101585350 B1 KR101585350 B1 KR 101585350B1
Authority
KR
South Korea
Prior art keywords
update
computing device
bootable image
management engine
block
Prior art date
Application number
KR1020147001920A
Other languages
English (en)
Other versions
KR20140028111A (ko
Inventor
이타마르 샤로니
님라드 디아망
Original Assignee
인텔 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인텔 코포레이션 filed Critical 인텔 코포레이션
Publication of KR20140028111A publication Critical patent/KR20140028111A/ko
Application granted granted Critical
Publication of KR101585350B1 publication Critical patent/KR101585350B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

관리 엔진을 사용하여 컴포넌트 업데이트를 적용하는 시스템들 및 방법들의 실시예들이 개시된다. 일부 실시예들에서, 그 방법은 보안 메모리 위치에 컴퓨팅 디바이스의 컴포넌트에 대한 업데이트를 포함하는 부팅 가능한 이미지를 저장하는 단계 및 컴퓨팅 디바이스를 부팅 가능한 이미지로부터 부팅하도록 구성하는 단계를 포함할 수 있다. 그러한 구성은 부팅 가능한 이미지에 대한 IDE-R을 위해 컴퓨팅 디바이스를 구성하는 단계를 포함할 수 있다.

Description

관리 엔진을 사용하는 컴포넌트 업데이트{COMPONENT UPDATE USING MANAGEMENT ENGINE}
대부분의 컴퓨팅 디바이스들은, 컴퓨팅 디바이스의 컴포넌트들의 내부 디바이스 기능들을 제어하는 프로그램들 및 데이터 구조들을 포함하는 펌웨어를 포함한다. 펌웨어는 EPROM(erasable programmable read only memory)들과 같은, 플래시에이블(flashable) 메모리 디바이스들에 흔히 저장된다. 플래시에이블 메모리 디바이스를 이용하는 것은, 사용 가능한 전력 소스가 없는 경우에 기존의 펌웨어를 유지하는 동안, 새로운 펌웨어로 메모리 디바이스를 플래시 오버(flash over)함으로써 펌웨어가 업데이트되도록 허용할 수 있다. 펌웨어를 업데이트하는 절차는 "컴포넌트 업데이트" 또는 "플랫폼 업데이트"로서 지칭될 수 있고, 플랫폼은 컴퓨팅 디바이스의 컴포넌트들 중 하나 이상을 지칭한다. 펌웨어 업데이트 동안, 업데이트되는 컴포넌트는 흔히 동작 불가능할 것임에 틀림없다. 컴포넌트가 그것의 펌웨어에 액세스하지 못하기 때문에, 컴포넌트는 그것의 기본 기능들을 수행할 수 없다.
많은 컴퓨팅 디바이스들은 컴퓨팅 디바이스가 그것의 운영 체제(OS)를 실행하는 동안 업데이트될 수 없는 펌웨어(또는 그외의 소프트웨어)를 포함한다. 예로서 OS는 일반적으로 하드 디스크 드라이브에 저장되고 하드 디스크 드라이브는 그것의 펌웨어가 업데이트되는 동안 데이터를 검색할 수 없기 때문에, 컴퓨팅 디바이스는 일반적인 OS 환경에서 하드 디스크 드라이브에 대한 펌웨어 업데이트를 관리할 수 없다. 그러한 펌웨어 업데이트들은 일반적인 OS 환경 밖에서 달성되어야 한다. 대개, 이것은 부팅 가능한 이미지를 컴퓨팅 디바이스에 전달함으로써 달성된다. 부팅 가능한 이미지는, 컴퓨팅 디바이스가 일반적인 OS 환경에 액세스하지 않고도 펌웨어 업데이트를 작동 및 적용시키도록 허용하는, DOS(disk operating system) 환경과 같은, 독립형(stand-alone) OS 환경을 포함할 수 있다.
통상적으로, 그러한 펌웨어 업데이트들에 사용되는 부팅 가능한 이미지들은, 플로피 디스크, USB 스틱, 또는 그외의 휴대용 매체를 통해 각 컴퓨팅 디바이스에 물리적으로 전달되어야 한다. 전달의 또 다른 공지된 방법은, 펌웨어 업데이트를 포함하는 부팅 가능한 이미지가 리모트 원격 서버에 저장되는, 전형적인 IDER(integrated device electronics redirect)이다. 네트워크 연결을 갖고 원격 서버에 액세스하도록 사전 구성된 컴퓨팅 디바이스는, 원격 부팅 가능 이미지로부터 부팅하여 펌웨어 업데이트를 적용할 수 있다.
본원에 설명된 본 발명은 첨부된 도면들에서 한정하려는 것이 아니라 예로서 예시된다. 예시의 간결함 및 명확함을 위해, 도면들에서 예시된 요소들은 반드시 일정한 비례로 도시된 것은 아니다. 예를 들어, 명확함을 위해 일부 요소들의 크기들은 그외의 요소들에 비하여 과장될 수 있다. 또한, 적절히 고려하여, 참조 표시들은 대응하거나 또는 유사한 요소들을 표시하기 위해 도면들 사이에서 반복된다.
도 1은 컴퓨팅 디바이스의 컴포넌트에의 업데이트를 관리하도록 구성된 시스템의 일 실시예의 간략화된 블록도.
도 2는 도 1의 컴퓨팅 디바이스의 소프트웨어 환경의 일 실시예의 간략화된 블록도.
도 3은 도 1 및 도 2의 업데이트 서버를 사용하여 부팅 가능한 이미지를 패키징 및 전달하는 방법의 일 실시예의 간략화된 흐름도.
도 4는 도 1 및 도 2의 업데이트 관리자를 사용하여 업데이트를 관리하는 방법의 일 실시예의 간략화된 흐름도.
도 5a 및 도 5b는 도 1및 도 2의 관리 엔진을 사용하여 업데이트를 적용하는 방법의 일 실시예의 간략화된 흐름도.
도 6은 도 1 및 도 2의 BIOS(Basic Input/Output System)를 사용하여 컴퓨팅 디바이스를 부팅하는 방법의 일 실시예의 간략화된 흐름도.
본 발명의 개념들은 다양한 변형들 및 대안의 형태들에 영향을 받기 쉽지만, 그들의 특정한 예시적인 실시예들이 도면들에서 예로서 도시되고 본원에서 구체적으로 설명될 것이다. 그러나, 본 발명의 개념을 개시된 특정 형태들에 한정하려는 의도는 없고, 오히려, 첨부된 특허청구범위에 의해 정의된 바와 같은 본 발명의 기술적 사상 및 범위 내에 속하는 모든 변형들, 등가물들, 및 대안들을 포함하기 위한 의도라는 것은 당연하다.
이하의 설명에서, 로직 구현들, 연산 코드(opcode)들, 피연산자(operand)들을 특정하기 위한 수단들, 리소스 분할/공유/복제 구현들, 시스템 컴포넌트들의 유형들 및 상호관계들, 및 로직 분할/통합 선택들과 같은 다수의 특정 상세가 본 발명의 더 완전한 이해를 제공하기 위해 기재된다. 그러나, 본 발명의 실시예들이 그러한 특정 상세 없이도 실시될 수 있다는 것을 본 기술 분야에 숙련된 자는 이해할 것이다. 그외의 예시들, 제어 구조들, 게이트 레벨 회로들 및 완전한 소프트웨어 명령어 시퀀스들은 본 발명을 모호하게 하지 않기 위해 도시되지 않는다. 본 기술 분야에 숙련된 자들은, 포함된 설명들을 이용하여, 과도한 실험 없이 적절한 기능을 구현할 수 있을 것이다.
"일 실시예" "실시예" "예시적인 실시예" 등에 대한 명세서 내의 참조들은, 설명된 실시예가 특정 특징, 구조, 또는 특성을 포함할 수 있지만, 반드시 모든 실시예가 특정 특징, 구조, 또는 특성을 포함하지는 않는다는 것을 나타낸다. 또한, 그러한 구절들은 반드시 동일한 실시예를 지칭하는 것은 아니다. 또한, 특정 특징, 구조, 또는 특성이 실시예와 함께 설명되는 경우, 그것은 명백히 설명되거나 또는 그렇지 않은 그외의 실시예들과 함께 그러한 특징, 구조, 또는 특성을 구현하기 위해 본 기술 분야에 숙련된 자의 지식에 속하는 것으로 제출되었다.
본 발명의 실시예들은 하드웨어, 펌웨어, 소프트웨어, 또는 그들의 임의의 조합으로 구현될 수 있다. 컴퓨팅 디바이스에서 구현된 본 발명의 실시예들은 컴포넌트들 사이의 하나 이상의 버스 기반 상호 연결 및/또는 컴포넌트들 사이의 하나 이상의 점 대 점 상호 연결을 포함할 수 있다. 본 발명의 실시예들은 또한, 하나 이상의 프로세서 및/또는 컨트롤러에 의해 판독 및 실행될 수 있는, 하나 이상의 비일시적 머신 판독 가능 매체에 저장된 명령어들로서 구현될 수 있다. 비일시적 머신 판독 가능 매체는, 머신(예를 들어, 컴퓨팅 디바이스)에 의해 판독 가능한 형태로 정보를 저장 또는 송신하기 위한 임의의 유형의(tangible) 메커니즘을 포함할 수 있다. 예를 들어, 비일시적 머신 판독 가능 매체는 ROM(read only memory); RAM(random access memory); 자기 디스크 저장 매체; 광 저장 매체; 플래시 메모리 디바이스들 등을 포함할 수 있다.
이제 도 1을 참조하면, 컴퓨팅 디바이스(102)의 컴포넌트에 대한 업데이트를 관리하도록 구성된 시스템(100)이 도시된다. 시스템(100)은 컴퓨팅 디바이스(102), 펌웨어 업데이트 서버(104), 및 컴퓨팅 디바이스(102)를 펌웨어 업데이트 서버(104)에 통신 가능하게 결합하는 네트워크(106)를 포함한다. 네트워크(106)는 근거리 네트워크, 광역 네트워크, 공개적으로 사용 가능한 글로벌 네트워크(예를 들어, 인터넷), 및/또는 그외의 네트워크와 같은 임의의 타입의 유선 및/또는 무선 네트워크로서 구현될 수 있다. 또한, 네트워크(106)는 라우터들, 스위치들, 사이에 있는 컴퓨터들 등과 같은, 컴퓨팅 디바이스(102)와 펌웨어 업데이트 서버(104) 사이의 통신을 용이하게 하기 위한 임의의 수의 부가적인 디바이스를 포함할 수 있다.
펌웨어 업데이트 서버(104)는 컴퓨팅 디바이스(102)로부터 분리된 임의의 타입의 컴퓨팅 디바이스 또는 컴퓨팅 디바이스들로서 구현될 수 있다. 예를 들어, 펌웨어 업데이트 서버(104)는, 네트워크(106)를 통해 컴퓨팅 디바이스(102)와 통신하도록 구성된, 하나 이상의 개인용 컴퓨터, 워크스테이션, 랩톱 컴퓨터, 휴대용 컴퓨터, 모바일 인터넷 디바이스, 셀룰러 폰, 개인 휴대 정보 단말기(PDA), 전화 통신 디바이스, 네트워크 기기, 가상화 디바이스, 저장 컨트롤러, 또는 그외의 컴퓨터 기반 디바이스로서 구현될 수 있다. 하나의 컴퓨팅 디바이스(102) 및 하나의 펌웨어 업데이트 서버(104)만이 도 1에 예시적으로 도시되지만, 시스템(100)은 임의의 수의 컴퓨팅 디바이스(102) 및 임의의 수의 펌웨어 업데이트 서버(104)를 포함할 수 있다.
펌웨어 업데이트 서버(104)는 데이터베이스(108)를 포함할 수 있거나 또는 다르게는 그것에 통신 가능하게 결합될 수 있다. 데이터베이스(108)는, 예를 들어, 관계형 데이터베이스, 플랫 파일 데이터베이스, 또는 펌웨어 업데이트 서버 메모리(도시되지 않음)와 같은 적합한 데이터 구조 및 위치에 저장된 데이터로서 구현될 수 있다. 데이터베이스(108)는 업데이트를 포함하는 부팅 가능한 이미지(110)를 포함한다. 예시적인 일 실시예에서, 부팅 가능한 이미지(110)는 컴퓨팅 디바이스(102)의 컴포넌트에 적용될 펌웨어 업데이트를 포함할 수 있다. 그 외의 실시예들에서, 부팅 가능한 이미지(110)는 컴퓨팅 디바이스(102)의 다수의 컴포넌트에 적용될 다수의 펌웨어 업데이트를 포함할 수 있다. 또 다른 실시예들에서, 부팅 가능한 이미지(110)는 컴퓨팅 디바이스(102)에 적용될 소프트웨어 업데이트를 부가적으로 또는 대안으로 포함할 수 있다.
컴퓨팅 디바이스(102)는 본원에 설명된 기능들을 수행할 수 있는 임의의 타입의 전자 디바이스로서 구현될 수 있다. 예를 들어, 컴퓨팅 디바이스(102)는 개인용 컴퓨터, 워크스테이션, 랩톱 컴퓨터, 휴대용 컴퓨터, 모바일 인터넷 디바이스, 셀룰러 폰, 개인 휴대 정보 단말기(PDA), 전화 통신 디바이스, 네트워크 기기, 가상화 디바이스, 저장 컨트롤러, 또는 그외의 컴퓨터 기반 디바이스로서 구현될 수 있다. 도 1의 예시적인 실시예에서, 컴퓨팅 디바이스(102)는 일차 프로세서(112), 메인 메모리(120), 칩셋(122), 하나 이상의 주변 디바이스(132), 데이터 저장 디바이스(134), 및 통신 회로(138)를 포함한다. 일부 실시예들에서, 전술한 컴포넌트들 중 몇몇은 컴퓨팅 디바이스(102)의 마더보드에 포함될 수 있고, 반면 그외의 컴포넌트들은, 예를 들어, 주변 포트를 통해 마더보드에 통신 가능하게 결합될 수 있다. 또한, 컴퓨팅 디바이스(102)는 명세서의 명확함을 위해 도 1에 도시되지 않은, 컴퓨터 및/또는 컴퓨팅 디바이스에서 흔히 발견되는 그외의 컴포넌트들, 서브 컴포넌트들, 및 디바이스들을 포함할 수 있는 것을 이해해야 한다.
컴퓨팅 디바이스(102)의 일차 프로세서(112)는 소프트웨어/펌웨어를 실행할 수 있는 임의의 타입의 프로세서, 예를 들어, 마이크로프로세서, 디지털 신호 프로세서, 마이크로컨트롤러 등으로서 구현될 수 있다. 일차 프로세서(112)는 프로세서 코어(114)를 갖는 싱글 코어 프로세서로서 예시적으로 구현된다. 그러나, 그외의 실시예들에서, 일차 프로세서(112)는 다중 프로세서 코어들을 갖는 멀티 코어 프로세서로서 구현될 수 있다. 또한, 컴퓨팅 디바이스(102)는 하나 이상의 프로세서 코어(114)를 갖는 부가적인 일차 프로세서들(112)을 포함할 수 있다. 일차 프로세서(112)는, 컴퓨팅 디바이스(102)에 상주하는 OS 및 다양한 애플리케이션들, 프로그램들, 라이브러리들, 및 드라이버들을 포함할 수 있는, 소프트웨어 스택을 실행하는 것을 일반적으로 담당한다. 소프트웨어 스택의 일부로서, 일차 프로세서(112)는 업데이트 관리자(116)를 실행할 수 있고, 이는 도 2를 참조하여 이하에 더 설명될 것이다.
컴퓨팅 디바이스(102)의 칩셋(122)은 메모리 컨트롤러 허브(MCH 또는 "노스브릿지(northbridge)"), 입/출력 컨트롤러 허브(ICH 또는 "사우스브릿지(southbridge)"), 및 펌웨어 디바이스를 포함할 수 있다. 펌웨어 디바이스는 BIOS(Basic Input/Output System)(124) 및/또는 그외의 정보를 저장하기 위한 메모리 저장 디바이스로서 구현될 수 있다. 그러나, 그외의 실시예들에서, 그외의 구성들을 갖는 칩셋들이 사용될 수 있다. 예를 들어, 일부 실시예들에서, 칩셋(122)은 플랫폼 컨트롤러 허브(PCH)로서 구현될 수 있다. 그러한 실시예들에서, MCH는 일차 프로세서(112)에 포함될 수 있거나 또는 다르게는 그것과 연관될 수 있고, 일차 프로세서(112)는 (도 1에서 점선에 의해 도시된 바와 같이) 메인 메모리(120)와 직접 통신할 수 있다.
프로세서(112)는 다수의 신호 경로를 통해 칩셋(122)에 통신 가능하게 결합된다. 이러한 신호 경로들 (및 도 1에 예시된 그외의 신호 경로들)은 컴퓨팅 디바이스(102)의 컴포넌트들 사이의 통신을 용이하게 할 수 있는 임의의 타입의 신호 경로들로서 실시될 수 있다. 예를 들어, 신호 경로들은 임의의 수의 와이어, 케이블, 라이트 가이드(light guide), 인쇄 회로 기판 트레이스, 비아, 버스, 사이에 있는 디바이스 등으로서 실시될 수 있다.
칩셋(122)은 또한, 일차 프로세서(112)와 구별되고 일반적으로 독립적으로 작동하는 관리 엔진(126)을 포함할 수 있다. 관리 엔진(126)은, 이하에 더 구체적으로 설명되는 바와 같이, 보안, 암호화, 및/또는 인증 기능들을 수행하도록 구성된 임의의 수의 하드웨어, 펌웨어, 및/또는 소프트웨어 모듈로서 실시될 수 있다. 관리 엔진(126)은, 칩셋(122) 내에 집적된 것으로서 도 1에서 예시적으로 도시되지만, 관리 엔진(126)은 다수의 신호 경로를 통해 칩셋(122)에 통신 가능하게 결합된 하나 이상의 확장 보드에 배치된 별개의 회로를 부가적으로 또는 대안으로 포함할 수 있다. 관리 엔진(126)은 칩셋(122)을 통해, 또는, 그 외의 실시예들에서, 다수의 독립적인 신호 경로를 통해 컴퓨팅 디바이스(102)의 다양한 컴포넌트들(예를 들어, 일차 프로세서(112), 메인 메모리(120) 등)에 통신 가능하게 결합될 수 있다.
도 1의 예시적인 실시예에서, 관리 엔진(126)은, 관리 엔진(126)이 일차 프로세서(112)와 독립적으로 작동하도록 허용하는 이차 프로세서(130)를 포함한다. 이차 프로세서(130)는, 하나 이상의 프로세서 코어(도시되지 않음)를 갖는 하나 이상의 프로세서를 포함하는, 소프트웨어/펌웨어를 실행할 수 있는 임의의 타입의 프로세서, 예를 들어, 마이크로프로세서, 디지털 신호 프로세서, 마이크로컨트롤러 등으로서 실시될 수 있다. 예시된 실시예에서, 관리 엔진(126)은 또한 이차 프로세서(130)에 액세스 가능하나 일차 프로세서(112)에는 액세스 불가능한, 보안 메모리(128)를 포함한다. 이러한 보안 메모리(128)는, 예를 들어, DRAM(dynamic random access memory) 디바이스들, SDRAM(synchronous dynamic random access memory) 디바이스들, DDR SDRAM(double-data rate synchronous dynamic random access memory) 디바이스들, 플래시 메모리 디바이스들, 및/또는 그외의 메모리 디바이스들을 포함하는 하나 이상의 메모리 디바이스 또는 데이터 저장 위치로서 실시될 수 있다. 보안 메모리(128)는 또한, 이차 프로세서(130)에 의해 실행 가능한 소프트웨어/펌웨어뿐만 아니라, 다양한 데이터를 저장할 수 있다. 일부 실시예들에서, 관리 엔진(126)은 또한, 전용 통신 회로와 같은, 부가적인 빌트인(built-in) 컴포넌트들을 포함할 수 있다.
일부 예시적인 실시예들에서, 관리 엔진(126)은, 캘리포니아주, 산타 클라라시의 인텔(Intel)사로부터 모든 사용 가능한, 및/또는 인텔사가 판매하는 칩셋들 내의 Intel® AMT(Intel® Active Management Technology)를 사용하여, Intel® AMT의 일부를 사용하여, Intel® ME(Intel® Management Engine)를 사용하여, 또는 Intel® vPro(Intel® vPro Technology)를 사용하여 구현될 수 있다. Intel AMT® 임베드된 플랫폼 기술은 각 엔드포인트 디바이스 상의 비휘발성 메모리에 저장된 하드웨어 및 소프트웨어 정보에 대역외(out-of-band) 액세스를 가능하게 하여, 그외의 관리 도구들에서 발견되는 기능하는 운영 체제 및 소프트웨어 에이전트(software agent)들 중 다수에 대한 필요를 없앤다.
컴퓨팅 디바이스(102)의 메인 메모리(120)는, 예를 들어, DRAM, SDRAM, DDR SDRAM, 플래시 메모리 디바이스들, 및/또는 그외의 메모리 디바이스들을 포함하는 하나 이상의 메모리 디바이스 또는 데이터 저장 위치로서 실시될 수 있다. 메인 메모리(120)는 다수의 신호 경로를 통해 칩셋(122)에 통신 가능하게 결합된다. 다양한 데이터 및 소프트웨어가 메인 메모리(120)에 저장될 수 있다. 예를 들어, 일차 프로세서(112)에 의해 실행되는 소프트웨어 스택을 구성하는 하나 이상의 운영 체제, 애플리케이션, 프로그램, 라이브러리, 및 드라이버는 실행 동안 메인 메모리(120)에 상주할 수 있다. 또한, 메인 메모리(120)에 저장된 소프트웨어 및 데이터는 메모리 관리 동작들의 일부로서 메인 메모리(120)와 데이터 저장 디바이스(134) 사이에서 스왑(swap)될 수 있다.
일부 실시예들에서, 메인 메모리(120)는, (관리 엔진(126)을 포함하는) 칩셋(122)에 액세스 가능하나 일차 프로세서(112)에는 액세스 불가능한, 보안 메모리(118)를 포함할 수 있다. 보안 메모리(118)는, 보안 메모리(118)에 액세스하기 위한 악성 소프트웨어의 능력을 방지하는, 메모리 격리 메커니즘을 사용하는 칩셋(122)에 의해 일차 프로세서(112)로부터 격리되는 메인 메모리(120)의 일부로서 실시될 수 있다. 일부 실시예들에서, 보안 메모리(118)는 상위 메모리 어드레스(UMA)로서 실시될 수 있다. 존재하는 경우, 보안 메모리(118)는 (보안 메모리(128)에 부가적으로 또는 대안으로) 관리 엔진(126)에 대한 부가적인 메모리 공간으로서 사용될 수 있다.
컴퓨팅 디바이스(102)는 또한 하나 이상의 주변 디바이스(132), 데이터 저장 디바이스(134), 및 통신 회로(138)를 포함할 수 있다. 그러한 실시예들에서, 칩셋(122)은 또한 하나 이상의 주변 디바이스(132), 데이터 저장 디바이스(134), 및 통신 회로(138)에 통신 가능하게 결합된다. 하나 이상의 주변 디바이스(132)는 입력 디바이스들, 출력 디바이스들, 및 그외의 인터페이스 디바이스들을 포함하는 임의의 수의 주변 디바이스를 포함할 수 있다. 예를 들어, 주변 디바이스(132)는 컴퓨팅 디바이스(102)의 디스플레이, 마우스, 키보드, 및 외부 스피커들을 포함할 수 있다. 주변 디바이스들(132)에 포함된 특정 디바이스들은, 예를 들어, 컴퓨팅 디바이스(102)의 의도된 사용에 의존할 수 있다. 통신 회로(138)는 컴퓨팅 디바이스(102)와 펌웨어 업데이트 서버(104) 사이의 통신들을 네트워크(106)를 통해 가능하게 하기 위한 임의의 수의 디바이스 및 회로로서 실시될 수 있다. 예를 들어, 통신 회로(138)는 하나 이상의 유선 및/또는 무선 네트워크 인터페이스 카드(NIC) 또는 그외의 네트워크 통신 카드, 모듈, 또는 회로로서 실시될 수 있다.
데이터 저장 디바이스(134)는, 예를 들어, 메모리 디바이스들 및 회로들, 메모리 카드들, 하드 디스크 드라이브들, 고체 상태 드라이브들, 또는 그외의 데이터 저장 디바이스들과 같은, 데이터의 단기 또는 장기 저장을 위해 구성된 임의의 타입의 디바이스 또는 디바이스들로서 실시될 수 있다. 도 1에 도시된 바와 같이, 데이터 저장 디바이스(134)는 데이터 저장 디바이스(134)의 내부 디바이스 기능들, 예를 들어, 데이터 저장 디바이스(134)의 데이터를 판독하기 위해 요구되는 물리적 하드웨어 조작들을 제어하는 펌웨어(136)를 포함한다. 펌웨어(136)는 전술한 부팅 가능한 이미지(110)에 포함된 업데이트의 목표일 수 있다. 펌웨어(136)에의 업데이트 동안, 데이터 저장 디바이스(134)에 저장된 데이터는 컴퓨팅 디바이스(102)의 그외의 컴포넌트들에 액세스 불가능할 수 있다. 컴퓨팅 디바이스(102)는 하나의 데이터 저장 디바이스(134)만을 포함하는 것으로서 예시되지만, 컴퓨팅 디바이스(102)는, 각각이 자체의 펌웨어(136)를 포함하는, 임의의 수의 데이터 저장 디바이스(134)를 포함할 수 있다는 것을 이해할 수 있을 것이다.
컴퓨팅 디바이스(102)의 일부 예시적인 실시예들에서, 데이터 저장 디바이스(134)로부터 데이터를 검색하기 위한 일차 프로세서(112)에 의한 요청들은 IDE(integrated device electronics) 버스(또한 때때로 IDE(integrated drive electronic) 버스로서 지칭됨)를 사용하여 다루어질 수 있다. 그러한 실시예들에서, 관리 엔진(126)은 그러한 요청들에 대하여 IDE-R(IDE redirection)을 수행하도록 구성될 수 있다. IDE-R 동안, 관리 엔진(126)은 칩셋(122)의 IDE 버스를 모니터링하고, 데이터 저장 디바이스(134)로부터 데이터를 검색하기 위한 일차 프로세서(112)에 의한 요청들을 인터셉트한다. 이러한 요청들은 이후, 보안 메모리(118) 또는 보안 메모리(128)를 포함하나 이에 한정되지 않는, 또 다른 메모리 디바이스로 리다이렉트(redirect)될 수 있다. 또 다른 실시예들에서, 관리 엔진(126)은 유사한 방식으로 USB-R(universal serial bus redirection)을 수행하도록 구성될 수 있다.
이제 도 2를 참조하여, 컴퓨팅 디바이스(102)의 컴포넌트에의 업데이트를 관리하기 위한 소프트웨어 환경(200)이 예시된다. 소프트웨어 환경(200)은, 컴퓨팅 디바이스(102), 펌웨어 업데이트 서버(104), 및 네트워크(106) 중 하나 이상에서 실행되고, 저장되고, 및/또는 전송되는 소프트웨어 및 펌웨어 모듈들을 포함한다. 그러한 것으로서, 컴퓨팅 디바이스(102), 펌웨어 업데이트 서버(104), 및 네트워크(106)의 소프트웨어 환경들은 (도 1과 동일한 참조 번호들을 사용하는) 도 2에 예시된다. 소프트웨어 환경(200)은, 설명의 명확함을 위해 도 2에 예시되지 않은, 그외의 모듈들, 애플리케이션들, 프로그램들, 및/또는 데이터를 포함할 수 있다는 것을 이해할 수 있을 것이다.
펌웨어 업데이트 서버(104)의 소프트웨어 환경은 업데이트를 포함하는 부팅 가능한 이미지(110)를 포함한다. 전술한 바와 같이, 일부 실시예들에서, 부팅 가능한 이미지(110)는 컴퓨팅 디바이스(102)에 대한 하나 이상의 펌웨어 업데이트 및/또는 소프트웨어 업데이트를 포함할 수 있다. 예를 들어, 부팅 가능한 이미지(110)는 컴퓨팅 디바이스(102)의 데이터 저장 디바이스(134)의 펌웨어(136)에의 업데이트를 포함할 수 있다. 부팅 가능한 이미지(110)는 또한 컴퓨팅 디바이스(102)의 일반 OS 환경과는 별개인 컴퓨팅 디바이스(102)에 의해 실행 가능한 독립형 OS 환경을 포함할 수 있다. 예를 들어, 일부 실시예들에서, 부팅 가능한 이미지(110)는 DOS(disk operating system) 환경 등을 포함할 수 있다. 일단 컴퓨팅 디바이스(102)가 이러한 독립형 OS 환경에서 동작하면, 컴퓨팅 디바이스(102)의 적절한 컴포넌트(예를 들어, 데이터 저장 디바이스(134))에 업데이트가 설치될 수 있다. 이하에 더 구체적으로 설명될 바와 같이, 업데이트를 포함하는 부팅 가능한 이미지(110)는 보안 목적들을 위해 펌웨어 업데이트 서버(104)에 의해 디지털 서명될 수 있다. 펌웨어 업데이트 서버(104)의 몇몇 예시적인 동작들은 도 3을 참조하여 이하에 더 설명될 것이다.
컴퓨팅 디바이스(102)의 소프트웨어 환경은 업데이트 관리자(116), BIOS(124), 관리 엔진(126), 데이터 저장 펌웨어(136), 및 보안 메모리(202)를 포함한다. 도 1을 참조하여 논의한 바와 같이, 보안 메모리(202)는 보안 메모리(118)를 형성하는 메인 메모리(120)의 일부에 및/또는 칩셋(122)에 상주하는 보안 메모리(128)에 상주할 수 있다. 어느 실시예에서도, 도 2에 도시된 바와 같이, 보안 메모리(202)는 관리 엔진(126)에 직접 액세스 가능(그러나 소프트웨어 환경(200)의 그외의 소프트웨어/펌웨어 모듈들에는 불가능)하다.
업데이트 관리자(116)는 컴퓨팅 디바이스(102)의 일차 프로세서(112)에 의해 실행될 수 있는 다수의 소프트웨어/펌웨어 모듈을 포함한다. 그외의 동작들 중에서, 업데이트 관리자(116)는 펌웨어 업데이트 서버(104)와 통신하여 컴퓨팅 디바이스(102)의 컴포넌트에 대한 업데이트가 가능한지를 판정하고, 그러하다면, 펌웨어 업데이트 서버(104)로부터 업데이트를 포함하는 부팅 가능한 이미지(110)를 수신할 수 있다. 업데이트 관리자(116)는 이후 수신된 부팅 가능한 이미지(110)를 관리 엔진(126)에 제공할 수 있다. 업데이트 관리자(116)는 또한 일반 OS 환경으로부터 컴퓨팅 디바이스(102)의 재부팅을 요청할 수 있다. 일부 실시예들에서, 업데이트 관리자(116)는 또한 컴포넌트 업데이트가 성공적이었는지에 관하여 펌웨어 업데이트 서버(104)와 통신할 수 있다. 업데이트 관리자(116)의 몇몇 예시적인 동작들은 도 4를 참조하여 이하에 더 설명될 것이다.
도 2에 도시된 바와 같이, 관리 엔진(126)은 컴퓨팅 디바이스(102)의 이차 프로세서(130)에 의해 실행될 수 있는 다수의 소프트웨어/펌웨어 모듈을 포함한다. 전술한 바와 같이, 관리 엔진(126)은 컴퓨팅 디바이스(102)의 일차 프로세서(112)와 독립적으로 동작할 수 있다. 업데이트 관리자(116)로부터 업데이트를 포함하는 부팅 가능한 이미지(110)를 수신할 때, 관리 엔진(126)은 부팅 가능한 이미지(110)의 로컬 카피(204)를 보안 메모리(202)에 저장할 수 있다. 일부 실시예들에서, 관리 엔진(126)은 수신된 부팅 가능한 이미지(110)의 및/또는 보안 메모리(202)에 저장된 로컬 카피(204)의 진위를 확인할 수 있다. 관리 엔진(126)은, IDE-R(또는 USB-R) 부팅을 수행하도록 BIOS(124)를 구성할 수 있고 보안 메모리(202)로부터 데이터를 검색함으로써 IDE-R(또는 USB-R) 요청들을 중개할 수 있다. 관리 엔진(126)은 또한 업데이트 관리자(116)와 통신하여 컴퓨팅 디바이스(102)의 재부팅을 요청할 수 있고 컴포넌트 업데이트가 성공적이었는지를 업데이트 관리자(116)에 통보할 수 있다. 관리 엔진(126)의 몇몇 예시적인 동작들은 도 5a 및 5b를 참조하여 이하에 더 설명될 것이다.
BIOS(124)는 컴퓨팅 디바이스(102)의 칩셋(122)에 의해 실행될 수 있는 다수의 소프트웨어/펌웨어 모듈을 포함한다. BIOS(124)는 컴퓨팅 디바이스(102)의 각 부팅 또는 재부팅 동안 실행되어 컴퓨팅 디바이스(102)의 컴포넌트들을 초기화 및 식별할 수 있고 OS 환경을 로딩할 수 있다. 예를 들어, 일반 부팅 시퀀스 동안, BIOS(124)는 데이터 저장 디바이스(134)의 펌웨어(136)와 통신하여 일반 OS 환경을 로딩할 수 있다. 그러나, 관리 엔진(126)으로부터 수신한 하나 이상의 구성 파라미터에 응답하여, BIOS(124)는 IDE-R 디바이스 또는 위치로부터 컴퓨팅 디바이스(102)를 대안으로 부팅할 수 있다. 그러한 실시예들에서, BIOS(124)는 보안 메모리(202)에 저장된 로컬 카피(204)를 사용하여 부팅 가능한 이미지(110)의 독립형 OS 환경을 로딩할 수 있다. BIOS(124)의 몇몇 예시적인 동작들은 도 6을 참조하여 이하에 더 설명될 것이다.
이제 도 3을 참조하여, 업데이트를 포함하는 부팅 가능한 이미지(110)를 패키징 및 전달하는 방법(300)이 간략화된 흐름도로서 예시된다. 일부 실시예들에서, 방법(300)은, 컴퓨팅 디바이스(102)의 데이터 저장 디바이스(134)에 대한 펌웨어 업데이트를 포함하는 부팅 가능한 이미지(110)의 준비를 포함할 수 있다. 예로서, OEM(original equipment manufacturer)은 방법(300)을 이용하여 그들의 컴포넌트들에 대한 펌웨어 업데이트들을 유포(disseminate)할 수 있다. 방법(300)은, 예를 들어, 컴퓨팅 디바이스(102)를 포함하는, 시스템(100)의 그 외의 컴포넌트들과 함께, 펌웨어 업데이트 서버(104)에 의해 실행될 수 있다.
방법(300)은, 펌웨어 업데이트 서버(104)가 업데이트를 포함하는 부팅 가능한 이미지(110)를 생성하는 블록(302)에서 시작한다. 업데이트를 포함하는 부팅 가능한 이미지(110)는 임의의 공지된 자동 또는 수동 프로그래밍 및/또는 컴파일 절차들에 의해 생성될 수 있다. 부팅 가능한 이미지(110)가 생성된 이후, 방법(300)은, 펌웨어 업데이트 서버(104)가 OEM 키를 사용하여 부팅 가능한 이미지(110)에 디지털 서명하는 블록(304)으로 진행한다. (이하에 더 설명되는 바와 같이) 이러한 OEM 키는 부팅 가능한 이미지(110)의 수신자가 부팅 가능한 이미지(110)가 진짜라는 것을 확인하는 것을 허용한다. 일부 실시예들에서, OEM 키는 RSA(Rivest, Shamir, and Adleman) 암호화 알고리즘으로 생성된 FWSK(Firmware Signing Key)일 수 있다.
블록(304) 이후, 방법(300)은, 펌웨어 업데이트 서버(104)가 업데이트가 사용 가능하다는 것을 네트워크(106)를 통해 하나 이상의 컴퓨팅 디바이스(102)에 통지하는 블록(306)으로 진행한다. 일부 실시예들에서, 블록(306)은, 업데이트가 사용 가능하다는 것을 네트워크(106)에 연결된 모든 컴퓨팅 디바이스들(102)에 통지하는 것을 포함할 수 있다. 블록(306) 이후, 방법(300)은, 펌웨어 업데이트 서버(104)가, 하나 이상의 컴퓨팅 디바이스(102)가 업데이트를 수신할 준비가 되었다는 것을 표시하는 하나 이상의 컴퓨팅 디바이스(102)로부터 응답을 기다리는 블록(308)으로 진행한다.
블록(308)에서 일단 펌웨어 업데이트 서버(104)가 컴퓨팅 디바이스(102)로부터 응답을 수신하면, 방법(300)은, 펌웨어 업데이트 서버(104)가 업데이트를 포함하는 부팅 가능한 이미지(110)를 네트워크(106)를 통해 응답하는 컴퓨팅 디바이스(102)에 송신하는 블록(310)으로 진행한다. 도 4-6을 참조하여 이하에 더 설명되는 바와 같이, 일단 업데이트를 포함하는 부팅 가능한 이미지(110)가 블록(310)에서 송신되면, 수신하는 컴퓨팅 디바이스(102)는 업데이트를 로컬적으로 적용하도록 시도할 것이다. 업데이트를 적용하려는 시도 이후, 컴퓨팅 디바이스(102)는 컴퓨팅 디바이스(102)의 목표한 컴포넌트에 업데이트가 성공적으로 적용되었는지를 표시하는 적절한 메시지를 펌웨어 업데이트 서버(104)에 송신할 것이다.
그와 같이, 블록(310) 이후, 방법(300)은, 펌웨어 업데이트 서버(104)가, 업데이트가 성공적으로 적용되었는지를 표시하는 응답을 컴퓨팅 디바이스(102)로부터 기다리는 블록(312)으로 진행한다. 메시지가, 컴퓨팅 디바이스(102)가 업데이트를 성공적으로 적용하지 못했다는 것을 표시하면, 방법(300)은, 펌웨어 업데이트 서버(104)가, 업데이트가 가능하다는 것을 컴퓨팅 디바이스(102)에 재통지하는 블록(306)으로 복귀한다. 도 3은 업데이트를 포함하는 단일 부팅 가능한 이미지(110)에 대한 방법(300)을 예시하지만, 펌웨어 업데이트 서버(104)는 다수의 부팅 가능한 이미지(110)를 하나 이상의 컴퓨팅 디바이스(102)에 동시에 패키징 및 전달할 수 있는 것으로 고려된다.
이제 도 4를 참조하여, 부팅 가능한 이미지(110)에 포함된 업데이트를 관리하는 방법(400)이 간략화된 흐름도로서 예시된다. 일반적으로, 방법(400)은 펌웨어 업데이트 서버(104)로부터 부팅 가능한 이미지(110)를 수신하는 단계, 부팅 가능한 이미지(110)를 관리 엔진(126)에 제공하는 단계, 및 관리 엔진(126)에 의해 요청된 바와 같이 컴퓨팅 디바이스(102)를 재부팅하는 단계를 포함한다. 일부 실시예들에서, 방법(400)은 또한, 업데이트가 성공적으로 적용되었는지에 관한 피드백을 펌웨어 업데이트 서버(104)에 제공하는 단계를 포함할 수 있다. 방법(400)은, 예를 들어, 시스템(100)의 그외의 컴포넌트들과 상호작용할 수 있는, 컴퓨팅 디바이스(102)의 그외의 컴포넌트들과 함께, 업데이트 관리자(116)에 의해 실행될 수 있다.
방법(400)은, 업데이트 관리자(116)가, 네트워크(106)를 통해 펌웨어 업데이트 서버(104)로부터 업데이트가 사용 가능하다는 통지를 기다리는 블록(402)에서 시작한다. 업데이트가 사용 가능하다는 통지를 수신할 때, 업데이트 관리자(116)는 업데이트가 컴퓨팅 디바이스(102)의 컴포넌트에 적용 가능한지 및 컴퓨팅 디바이스(102)가 업데이트를 수신할 준비가 되었는지를 판정할 수 있다. 이러한 조건들이 충족되는 경우, 업데이트 관리자(116)는 업데이트를 포함하는 부팅 가능한 이미지(110)를 수신할 준비가 되었다는 통지를 펌웨어 업데이트 서버(104)에 제공한다.
블록(402) 이후, 방법(400)은, 업데이트 관리자(116)가 네트워크(106)를 통해 펌웨어 업데이트 서버(104)로부터 업데이트를 포함하는 부팅 가능한 이미지(110)를 수신하는 블록(404)으로 진행한다. 일부 실시예들에서, 블록(404)에서 부팅 가능한 이미지(110)를 수신할 때, 업데이트 관리자(116)는 부팅 가능한 이미지(110)를 메인 메모리(120) 및/또는 데이터 저장 디바이스(134)에 저장할 수 있다. 블록(404)에서 업데이트를 포함하는 부팅 가능한 이미지(110)가 수신된 이후, (도 5a-b의 방법(500) 및 도 6의 방법(600)뿐만 아니라) 방법(400)은 네트워크(106)를 통해 펌웨어 업데이트 서버(104)와 통신하기 위한 컴퓨팅 디바이스(102)의 능력과 상관없이 진행할 수 있다. 다시 말해서, (예를 들어, 블록들(410 및 418)에서, 이하 논의되는) 펌웨어 업데이트 서버(104)에의 피드백의 선택적인 제공 외에, 컴퓨팅 디바이스(102)는 펌웨어 업데이트 서버(104)와 더 이상의 통신 없이 업데이트를 적용할 수 있다.
블록(404) 이후, 방법(400)은, 업데이트 관리자(116)가 업데이트를 포함하는 부팅 가능한 이미지(110)를 관리 엔진(126)에 제공하는 블록(406)으로 진행한다. 도 5a를 참조하여 이하에 더 설명되는 바와 같이, 블록(406)에서 일단 부팅 가능한 이미지(110)가 관리 엔진(126)에 제공되면, 관리 엔진(126)은 부팅 가능한 이미지(110)의 진위를 확인하고, 부팅 가능한 이미지(110)의 로컬 카피(204)를 보안 메모리(202)에 저장하고, IDE-R 부팅을 위해 BIOS(124)를 구성하고, 컴퓨팅 디바이스(102)의 재부팅을 요청하도록 시도할 것이다.
블록(406) 이후, 방법(400)은, 업데이트 관리자(116)가, 업데이트를 포함하는 부팅 가능한 이미지(110)의 진위가 확인되었는지에 관한 통지를 관리 엔진(126)으로부터 기다리는 블록(408)으로 진행한다. 부팅 가능한 이미지(110)가 확인될 수 없고 관리 엔진(126)이 에러를 업데이트 관리자(116)에 반환하면, 방법(400)은 블록(410)으로 진행한다. 블록(410)에서, (그 때 컴퓨팅 디바이스(102)가 네트워크(106)를 통해 펌웨어 업데이트 서버(104)와 통신할 수 있다면) 업데이트 관리자(116)는, 업데이트가 성공적으로 적용되지 않았다는 것을 펌웨어 업데이트 서버(104)에 통지한다. 블록(410)에서, 업데이트를 적용하기 위한 성공하지 못한 시도를 펌웨어 업데이트 서버(104)에 통지한 이후, 방법(400)은, 업데이트 관리자(116)가 컴퓨팅 디바이스(102) 상에서 현재 실행중인 OS로부터 웜(warm) 재부팅을 요청하는 블록(420)으로 진행한다.
그 대신 블록(408) 동안, 업데이트 관리자(116)가, 관리 엔진(126)으로부터 부팅 가능한 이미지(110)가 확인되었다는 것을 표시하는 메시지를 수신하면, 방법(400)은 (블록(410)보다는) 블록(412)으로 진행한다. 블록(412)에서, 업데이트 관리자(116)는 컴퓨팅 디바이스(102)를 재부팅하도록 관리 엔진(126)으로부터 요청을 기다린다. 일단 관리 엔진(126)으로부터 그러한 요청이 수신되면, 방법(400)은, 업데이트 관리자(116)가 컴퓨팅 디바이스(102) 상에서 현재 실행중인 OS로부터 웜 재부팅을 요청하는 블록(414)으로 진행한다. 도 5b를 참조하여 이하에 더 설명되는 바와 같이, (관리 엔진(126)이 IDE-R 부팅을 위해 BIOS(124)를 구성하였다고 가정하면) 블록(414)에서 재부팅 이후, 관리 엔진(126)은 부팅 가능한 이미지(110)의 로컬 카피(204)의 진위를 확인하고, IDE-R 요청들을 보안 메모리(202)에 중개하고, 업데이트가 성공적으로 적용되었는지를 업데이트 관리자(116)에 통보할 것이다.
블록(414) 이후, 방법(400)은, 업데이트 관리자(116)가, 업데이트가 성공적으로 적용되었는지에 관한 통지를 관리 엔진(126)으로부터 기다리는 블록(416)으로 진행한다. 관리 엔진(126)이 에러를 업데이트 관리자(116)에 반환하면, 방법(400)은 블록(410)으로 진행한다. 블록(410)에서, (그 때 컴퓨팅 디바이스(102)가 네트워크(106)를 통해 펌웨어 업데이트 서버(104)와 통신할 수 있다면) 업데이트 관리자(116)는 업데이트가 성공적으로 적용되지 않았다는 것을 펌웨어 업데이트 서버(104)에 통지한다. 블록(410)에서, 업데이트를 적용하기 위한 성공하지 못한 시도를 펌웨어 업데이트 서버(104)에 통지한 이후, 방법(400)은, 업데이트 관리자(116)가 컴퓨팅 디바이스(102) 상에서 현재 실행중인 OS로부터 웜 재부팅을 요청하는 블록(420)으로 진행한다.
그 대신 블록(416) 동안, 업데이트 관리자(116)가, 관리 엔진(126)으로부터 업데이트가 성공적으로 적용되었다는 것을 표시하는 메시지를 수신하면, 방법(400)은 (블록(410)보다는) 블록(418)으로 진행한다. 블록(418)에서, (그 때 컴퓨팅 디바이스(102)가 네트워크(106)를 통해 펌웨어 업데이트 서버(104)와 통신할 수 있다면) 업데이트 관리자(116)는 업데이트가 성공적으로 적용되었다는 것을 펌웨어 업데이트 서버(104)에 통지한다. 블록(418)에서, 업데이트를 적용하기 위한 성공적인 시도를 펌웨어 업데이트 서버(104)에 통지한 이후, 방법(400)은, 업데이트 관리자(116)가 컴퓨팅 디바이스(102) 상에서 현재 실행중인 OS로부터 웜 재부팅을 요청하는 블록(420)으로 진행한다.
이제 도 5a 및 5b를 참조하여, 부팅 가능한 이미지(110)에 포함된 업데이트를 적용하는 방법(500)이 간략화된 흐름도로서 예시된다. 일반적으로, 도 5a에 도시된 방법(500)의 일부는 부팅 가능한 이미지(110)의 진위를 확인하는 단계, 부팅 가능한 이미지(110)의 로컬 카피(204)를 보안 메모리(202)에 저장하는 단계, IDE-R 부팅을 위해 BIOS(124)를 구성하는 단계, 및 컴퓨팅 디바이스(102)의 재부팅을 요청하는 단계를 포함한다. 일반적으로, 도 5b에 도시된 방법(500)의 일부는 부팅 가능한 이미지(110)의 로컬 카피(204)의 진위를 확인하는 단계, IDE-R 요청들을 보안 메모리(202)에 전하는 단계, 및 업데이트가 성공적으로 적용되었는지를 업데이트 관리자(116)에 통보하는 단계를 포함한다. 방법(500)은, 예를 들어, 시스템(100)의 그외의 컴포넌트들과 상호작용할 수 있는, 컴퓨팅 디바이스(102)의 그외의 컴포넌트들과 함께, 관리 엔진(126)에 의해 실행될 수 있다.
(방법(400)의 블록(406)을 참조하여 전술한 바와 같이) 방법(500)은, 관리 엔진(126)이 업데이트 관리자(116)로부터 업데이트를 포함하는 부팅 가능한 이미지(110)를 수신하는 블록(502)에서 시작한다. 블록(502)에서 부팅 가능한 이미지(110)를 수신한 이후, 방법(500)은, 관리 엔진(126)이 부팅 가능한 이미지(110)의 진위를 확인하는 블록(504)으로 진행한다. 일부 실시예들에서, 블록(504)은 관리 엔진(126)에 저장된(예를 들어, 보안 메모리(128)에 저장된) 암호화/복호화 키(들)를 사용하여 부팅 가능한 이미지(110) 상의 디지털 서명된 OEM 키를 확인하는 관리 엔진(126)을 포함할 수 있다.
블록(504) 이후, 방법(500)은, 관리 엔진(126)이 부팅 가능한 이미지(110)에 포함된 업데이트를 적용하는 것을 진행할지를 판정하는 블록(506)으로 진행한다. 블록(504)에서 부팅 가능한 이미지(110)의 진위가 확인되지 않으면, 방법(500)은, 관리 엔진(126)이, 부팅 가능한 이미지(110)가 확인되지 않았다는 것을 표시하는 메시지를 업데이트 관리자(116)에 보내는 블록(508)으로 진행한다. 그 대신 블록(506) 동안, 관리 엔진(126)이, 부팅 가능한 이미지(110)의 진위가 확인되었다는 것을 판정하면, 방법(500)은 (블록(508)보다는) 블록(510)으로 진행하고, 관리 엔진(126)은, 부팅 가능한 이미지(110)가 확인되었다는 것을 표시하는 메시지를 업데이트 관리자(116)에 보낸다.
블록(510)에서, 관리 엔진(126)은 업데이트를 포함하는 부팅 가능한 이미지(110)의 로컬 카피(204)를 보안 메모리(202)에 저장한다. 전술한 바와 같이, 일부 실시예들에서, 블록(510)은 부팅 가능한 이미지(110)의 로컬 카피(204)를 보안 메모리(118)를 형성하는 메인 메모리(120)의 일부에 및/또는 칩셋(122)에 상주하는 보안 메모리(128)에 저장하는 관리 엔진(126)을 포함할 수 있다.
블록(510) 이후, 방법(500)은, 관리 엔진(126)이 IDE-R 부팅을 수행하도록 BIOS(124)를 구성할 수 있는 블록(512)으로 진행한다. 일부 실시예들에서, 블록(512)은 IDE-R 디바이스 또는 위치로부터 컴퓨팅 디바이스(102)를 부팅하도록 BIOS(124)의 하나 이상의 구성 파라미터를 설정하는 관리 엔진(126)을 포함할 수 있다. 블록(512) 이후, 방법(500)은, 다음 IDE-R 부팅의 위치가 (네트워크(106) 상의 원격 드라이브의 위치보다는) 부팅 가능한 이미지(110)의 로컬 카피(204)를 저장하는 보안 메모리(202)의 일부가 되도록 관리 엔진(126)이 하나 이상의 내부 파라미터를 설정하는 블록(514)으로 진행한다. 블록(514) 이후, 방법(500)은, 관리 엔진(126)이, 펌웨어 업데이트가 적용될 것이라는 것을 다음 부팅 때 자신에게 통보하도록 내부 플래그(예를 들어, "UPDATE_BOOT")를 설정하는 블록(516)으로 진행한다. 블록들(512-516)은, 컴퓨팅 디바이스(102)의 다음 부팅 때, 부팅 가능한 이미지(110)의 로컬 카피(204)를 실행하고, 그것 내에 포함된 업데이트를 적용하도록 BIOS(124) 및 관리 엔진(126)을 구성하는 결합된 효과를 갖는다. (방법(400)의 블록(412)을 참조하여 전술한 바와 같이) 블록(516) 이후, 방법(500)은, 관리 엔진(126)이 업데이트 관리자(116)로부터 웜 재부팅을 요청하는 블록(518)으로 진행한다.
(방법(400)의 블록(414)를 참조하여 전술한 바와 같이) 방법(500)은, 도 5b에 도시된 바와 같이, 관리 엔진(126)이 업데이트 관리자(116)에 의한 컴퓨팅 디바이스(102)의 재부팅을 기다리는 블록(520)을 계속한다. 컴퓨팅 디바이스(102)의 재부팅 때, 방법(500)은, 관리 엔진(126)이, 펌웨어 업데이트가 현 부팅 동안 적용될지를 판정하는 블록(522)으로 진행한다. 일부 실시예들에서, 블록(522)은, 관리 엔진(126)이 내부 플래그(예를 들어, "UPDATE_BOOT")가 설정되었는지를 판정하는 것을 포함할 수 있다. 블록(522) 동안, 관리 엔진(126)이, 적용될 준비가 된 업데이트가 없다는 것을 판정하면, 방법(500)은, 관리 엔진(126)이 그것의 일반 부팅 시퀀스를 계속하는 블록(524)으로 진행한다. 그 대신 블록(522) 동안, 관리 엔진(126)이, 업데이트가 적용될 준비가 되었다는 것을 판정하면, 방법(500)은 (블록(524)보다는) 블록(526)으로 진행한다.
블록(526) 동안, 관리 엔진(126)은 보안 메모리(202)에 저장된 부팅 가능한 이미지(110)의 로컬 카피(204)의 진위를 확인한다. 일부 실시예들에서, 블록(526)은 부팅 가능한 이미지(110)의 로컬 카피(204)에 디지털 서명된 OEM 키를 확인하는 관리 엔진(126)을 포함할 수 있다. 블록(526) 이후, 방법(500)은, 관리 엔진(126)이 부팅 가능한 이미지(110)의 로컬 카피(204)에 포함된 업데이트를 적용하는 것을 진행할지를 판정하는 블록(528)으로 진행한다. 블록(526)에서 로컬 카피(204)의 진위가 확인되지 않으면, 방법(500)은, 관리 엔진(126)이, 부팅 가능한 이미지(110)가 확인되지 않았다는 메시지를 업데이트 관리자(116)에 보내는 블록(530)으로 진행한다. 그 대신 블록(528) 동안, 관리 엔진(126)이, 로컬 카피(204)의 진위가 확인되었다는 것을 판정하면, 방법(500)은 (블록(530)보다는) 블록(532)으로 진행하고, 관리 엔진(126)은, 부팅 가능한 이미지(110)의 로컬 카피(204)가 확인되었다는 메시지를 업데이트 관리자(116)에 보낸다.
블록(532) 동안, 관리 엔진(126)은, 현 부팅 동안 IDE-R 요청들이 부팅 가능한 이미지(110)의 로컬 카피(204)를 저장하는 보안 메모리(202) 또는 네트워크(106) 상의 원격 드라이브로 다이렉트(direct)되어야 하는지를 판정하도록 블록(514)의 하나 이상의 내부 파라미터의 세트를 검사한다. 블록(532) 동안, 관리 엔진(126)이, IDE-R 요청들이 원격 드라이브로 전송되어야 한다는 것을 판정하면, 방법(500)은, 관리 엔진(126)이 (즉, IDE 버스 판독 요청들을 네트워크(106) 상의 원격 드라이브에 리다이렉트하는) 전형적인 IDE-R 시퀀스를 수행하는 블록(534)으로 진행한다. 그 대신 블록(532) 동안, 관리 엔진(126)이, IDE-R 요청들이 보안 메모리(202)에 로컬적으로 다이렉트되어야 한다는 것을 판정하면, 방법(500)은 (블록(534)보다는) 블록(536)으로 진행한다.
블록(536) 동안, 관리 엔진(126)은 컴퓨팅 디바이스(102)의 일차 프로세서(112) 및/또는 BIOS(124)로부터의 IDE 버스 판독 요청들을 보안 메모리(202)에 저장된 부팅 가능한 이미지(110)의 로컬 카피(204)에 리다이렉트함으로써 IDE-R 시퀀스를 중개한다. 이러한 절차를 사용하여, 블록(536) 동안 일차 프로세서(112)는 부팅 가능한 이미지(110)의 로컬 카피(204)에 포함된 업데이트를 적용한다. 예시적인 일 실시예에서, 부팅 가능한 이미지(110)의 로컬 카피(204)로부터의 부팅은, 일차 프로세서(112)가 데이터 저장 디바이스(134)의 펌웨어(136)를 업데이트하는 것을 허용할 수 있다. 블록(538)에 도시된 바와 같이, 관리 엔진(126)은, 언제 업데이트가 적용될지를 판정하도록 블록(536)의 진행을 동시에 모니터링한다.
관리 엔진(126)이, 업데이트가 블록(538)에서 완료됐다는 것을 판정한 이후, 방법(500)은, 펌웨어 업데이트가 이미 적용되었다는 것을 다음 부팅 때 자신에게 통보하도록 관리 엔진(126)이 내부 플래그(예를 들어, "UPDATE_BOOT")를 재설정하는 블록(540)으로 진행한다. 방법(500)의 일부 실시예들에서, 블록(540)은 또한, 후속 부팅에 대해 업데이트가 컴퓨팅 디바이스(102)에 다시 적용되는 것을 방지하도록 부팅 가능한 이미지(110)를 무효화하는 관리 엔진(126)을 포함할 수 있다. 블록(540) 이후, (방법(400)의 블록(416)을 참조하여 전술한 바와 같이) 방법(500)은, 관리 엔진(126)이, 업데이트 관리자(116)로부터 업데이트가 성공적으로 적용되었다는 것을 표시하는 메시지를 전송하는 블록(542)으로 진행한다.
이제 도 6을 참조하여, 컴퓨팅 디바이스(102)를 부팅하는 방법(600)이 간략화된 흐름도로서 예시된다. 일반적으로, 방법(600)은, 컴퓨팅 디바이스(102)의 현 부팅이 IDE-R 부팅인지를 결정하는 단계 및 적절한 부팅 시퀀스에 따라 컴퓨팅 디바이스(102)를 부팅하는 단계를 포함한다. 방법(600)은, 예를 들어, 시스템(100)의 그외의 컴포넌트들과 상호작용할 수 있는, 컴퓨팅 디바이스(102)의 그 외의 컴포넌트들과 함께, BIOS(124)에 의해 실행될 수 있다.
방법(600)은, BIOS(124)가, 컴퓨팅 디바이스(102)의 현 부팅이 IDE-R 디바이스 또는 위치로부터의 부팅이여야 하는지를 표시하는 하나 이상의 그것의 구성 파라미터를 검사하는 블록(602)에서 시작한다. (방법(500)의 블록(512)을 참조하여) 전술한 바와 같이, 관리 엔진(126)은, IDE-R 부팅이 수행되어야 한다는 것을 표시하도록 BIOS(124)의 하나 이상의 구성 파라미터를 설정할 수 있다. 블록(602) 이후, 방법(600)은, BIOS(124)가 일반 부팅 시퀀스 또는 IDE-R 부팅 시퀀스로 진행할지를 판정하는 블록(604)으로 진행한다. 블록(602)에서 검사된 하나 이상의 구성 파라미터가, IDE-R 부팅이 수행되어야 한다는 것을 표시하지 않으면, 방법(600)은, 일반 부팅 시퀀스가 BIOS(124)에 의해 수행되는(예를 들어, BIOS(124)는 데이터 저장 디바이스(134)로부터 일반 OS 환경을 로딩함) 블록(606)으로 진행한다. 그 대신 블록(604) 동안, BIOS(124)가 컴퓨팅 디바이스(102)의 현 부팅이 IDE-R 디바이스 또는 위치로부터의 부팅이어야 한다는 것을 판정하면, 방법(600)은 (블록(606)보다는) 블록(608)으로 진행한다.
블록(608) 동안, BIOS(124)는 판독 요청들을 관리 엔진(126)에 보낼 것이고, 이는 그 자신의 내부 파라미터들에 기초하여 이러한 판독 요청들을 적절한 IDE-R 디바이스 또는 위치에 리다이렉트할 것이다. (방법(500)의 블록(536)을 참조하여 전술한 바와 같이) 관리 엔진(126)이 BIOS(124)로부터의 IDE-R 요청들을 보안 메모리(202)에 저장된 부팅 가능한 이미지(110)의 로컬 카피(204)에 리다이렉트하도록 구성되는 경우에, 방법(600)은 블록(610)을 포함할 것이다. 이러한 상황들에서, BIOS(124)는 컴퓨팅 디바이스(102)에 적용되는 업데이트를 포함하는 부팅 가능한 이미지(110)의 로컬 카피(204)를 사용하여 컴퓨팅 디바이스(102)를 부팅할 것이다. 실행되는 것에 응답하여, 부팅 가능한 이미지(110)는 업데이트를 컴퓨팅 디바이스(102)의 각각의 컴포넌트에 적용한다. 일부 실시예들에서, 부팅 가능한 이미지는, 컴퓨팅 디바이스(102)로 하여금 업데이트의 성공적인 완료 시 재부팅하게 하는 명령어를 포함할 수 있다. 그러한 실시예들에서, 업데이트 관리자(116)는 업데이트의 성공적인 완료 시 재부팅을 요청하지 않을 수 있다(즉, 방법(400)의 블록(420)은 업데이트 관리자(116)에 의해 실행되지 않을 수 있다).
본 발명은 도면들 및 전술한 설명에서 상세히 예시되고 설명되었지만, 그러한 예시 및 설명은 예시적이며 특징을 제한하지 않는 것으로서 간주되어야 하고, 예시적인 실시예들만이 도시되고 설명되었으며 모든 변경들 및 수정들이 본 발명의 기술적 사상의 범위 내에 속한다는 것은 당연하다.

Claims (25)

  1. 컴퓨팅 디바이스 상에서, 상기 컴퓨팅 디바이스의 컴포넌트에 대한 업데이트를 포함하는 부팅 가능한 이미지를 수신하는 단계;
    상기 부팅 가능한 이미지를 상기 컴퓨팅 디바이스의 로컬, 보안 메모리 위치에 저장하는 단계;
    상기 컴퓨팅 디바이스를 상기 부팅 가능한 이미지로부터 부팅하도록 구성하는 단계;
    상기 컴퓨팅 디바이스를 재부팅하는 단계; 및
    상기 컴퓨팅 디바이스의 상기 재부팅에 응답하여 상기 업데이트를 상기 컴포넌트에 적용하는 단계
    를 포함하고,
    상기 컴퓨팅 디바이스를 상기 부팅 가능한 이미지로부터 부팅하도록 구성하는 단계는 IDE-R(integrated device electronics redirection)을 위해 상기 컴퓨팅 디바이스의 BIOS(basic input/output system)를 구성하는 단계를 포함하는 방법.
  2. 제1항에 있어서,
    상기 부팅 가능한 이미지를 수신하는 단계는,
    업데이트 서버로부터 디지털 서명된 부팅 가능한 이미지를 수신하는 단계; 및
    상기 부팅 가능한 이미지를 저장하기 전에 상기 부팅 가능한 이미지가 상기 업데이트 서버에 의해 디지털 서명되었다는 것을 확인하는 단계
    를 포함하는 방법.
  3. 제1항 또는 제2항에 있어서,
    상기 부팅 가능한 이미지를 저장하는 단계는 상기 부팅 가능한 이미지를 상기 컴퓨팅 디바이스의 관리 엔진의 전용 메모리 위치에 저장하는 단계를 포함하고, 상기 전용 메모리 위치는 상기 컴퓨팅 디바이스의 일차 프로세서에 의해 액세스 불가능한 방법.
  4. 제1항 또는 제2항에 있어서,
    상기 부팅 가능한 이미지를 저장하는 단계는 상기 부팅 가능한 이미지를 상위 메모리 영역(UMA) 위치에 저장하는 단계를 포함하는 방법.
  5. 삭제
  6. 제1항에 있어서,
    상기 업데이트를 상기 컴포넌트에 적용하는 단계는 상기 부팅 가능한 이미지를 사용하여 IDE-R 요청들에 응답하는 단계를 포함하는 방법.
  7. 제6항에 있어서,
    상기 IDE-R 요청들에 응답하는 단계는, 상기 컴퓨팅 디바이스의 관리 엔진을 이용하여 상기 BIOS로부터 IDE-R 요청들을 수신하는 단계 및 상기 관리 엔진을 이용하여, 상기 부팅 가능한 이미지의 데이터로 상기 IDE-R 요청들에 응답하는 단계를 포함하는 방법.
  8. 제1항 또는 제2항에 있어서,
    상기 업데이트를 상기 컴포넌트에 적용하는 단계는,
    상기 컴퓨팅 디바이스의 관리 엔진을 이용하여 IDE-R 요청들을 수신하는 단계; 및
    상기 부팅 가능한 이미지를 사용하여 상기 IDE-R 요청들에 응답하는 단계
    를 포함하는 방법.
  9. 제1항 또는 제2항에 있어서,
    상기 업데이트를 상기 컴포넌트에 적용하는 단계는 상기 컴포넌트의 펌웨어를 업데이트하는 단계를 포함하는 방법.
  10. 제1항 또는 제2항에 있어서,
    상기 업데이트를 상기 컴포넌트에 적용하는 단계는 상기 업데이트를 하드 디스크 드라이브에 적용하는 단계를 포함하는 방법.
  11. 복수의 명령어를 포함하는 하나 이상의 비일시적 머신 판독 가능 매체로서,
    상기 복수의 명령어는, 실행되는 것에 응답하여 컴퓨팅 디바이스로 하여금, 제1항 또는 제2항의 방법을 수행하게 하는 하나 이상의 비일시적 머신 판독 가능 매체.
  12. 부팅 디바이스;
    상기 부팅 디바이스에 대한 부팅 요청들을 만드는 일차 프로세서;
    보안 메모리 위치를 갖는 로컬 메모리 디바이스 - 컴퓨팅 디바이스의 컴포넌트에 대한 업데이트를 포함하는 부팅 가능한 이미지는 상기 보안 메모리 위치에 저장됨 -; 및
    이차 프로세서를 포함하는 관리 엔진 - 상기 관리 엔진은 상기 일차 프로세서의 상기 부팅 요청들을 상기 부팅 디바이스로부터 상기 부팅 가능한 이미지에 리다이렉트(redirect)함으로써 상기 업데이트를 적용함 -
    을 포함하고,
    상기 업데이트를 적용하는 것은 IDE-R을 위해 상기 컴퓨팅 디바이스의 BIOS를 구성하는 것을 포함하는 컴퓨팅 디바이스.
  13. 삭제
  14. 제12항에 있어서,
    상기 부팅 디바이스는 하드 디스크 드라이브이고 상기 업데이트는 상기 하드 디스크 드라이브의 펌웨어에 대한 업데이트인 컴퓨팅 디바이스.
  15. 제12항에 있어서,
    상기 관리 엔진은 상기 부팅 가능한 이미지가 인증된 엔티티(entity)에 의해 디지털 서명되었다는 것을 확인함으로써 상기 업데이트를 적용하기 전에 상기 부팅 가능한 이미지를 유효화하는 관리 엔진을 포함하는 컴퓨팅 디바이스.
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
KR1020147001920A 2011-07-02 2012-07-02 관리 엔진을 사용하는 컴포넌트 업데이트 KR101585350B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/175,834 2011-07-02
US13/175,834 US8707019B2 (en) 2011-07-02 2011-07-02 Component update using management engine
PCT/US2012/045273 WO2013006557A2 (en) 2011-07-02 2012-07-02 Component update using management engine

Publications (2)

Publication Number Publication Date
KR20140028111A KR20140028111A (ko) 2014-03-07
KR101585350B1 true KR101585350B1 (ko) 2016-01-13

Family

ID=47391895

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147001920A KR101585350B1 (ko) 2011-07-02 2012-07-02 관리 엔진을 사용하는 컴포넌트 업데이트

Country Status (6)

Country Link
US (2) US8707019B2 (ko)
EP (1) EP2726979A4 (ko)
JP (1) JP5767750B2 (ko)
KR (1) KR101585350B1 (ko)
CN (1) CN103917949B (ko)
WO (1) WO2013006557A2 (ko)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012173667A2 (en) * 2011-02-10 2012-12-20 Trilliant Holdings, Inc. Device and method for facilitating secure communications over a cellular network
US8707019B2 (en) 2011-07-02 2014-04-22 Intel Corporation Component update using management engine
US20130073705A1 (en) * 2011-09-20 2013-03-21 Honeywell International Inc. Managing a home area network
US9172583B1 (en) * 2011-11-22 2015-10-27 Crimson Corporation Actively provisioning a managed node
US9032198B1 (en) * 2012-03-01 2015-05-12 Amazon Technologies, Inc. Management of components in a hosting architecture
US9098465B1 (en) 2012-03-01 2015-08-04 Amazon Technologies, Inc. Hosting architecture with configuration modified functionality for components by utilizing hardware latches to prevent further modifications based on a trust level associated with the components
US9032196B1 (en) * 2012-03-01 2015-05-12 Amazon Technologies, Inc. Management of components in a hosting architecture
US9032197B1 (en) * 2012-03-01 2015-05-12 Amazon Technologies, Inc. Management of components in a hosting architecture
TWM446936U (zh) * 2012-05-23 2013-02-11 Ite Tech Inc 更新系統韌體或參數之裝置及其電腦系統
FR3010553B1 (fr) * 2013-09-10 2015-09-04 Sagemcom Broadband Sas Procede de mise a jour d'un logiciel de demarrage d'un dispositif multiprocesseur
US9250923B2 (en) * 2013-11-26 2016-02-02 Ncr Corporation Techniques for computer system recovery
US20150212806A1 (en) * 2014-01-29 2015-07-30 Transcend Information, Inc. Initialization method and initializaion system for storage device
US9880859B2 (en) 2014-03-26 2018-01-30 Intel Corporation Boot image discovery and delivery
DE202015101633U1 (de) 2015-03-31 2016-07-04 Fujitsu Technology Solutions Intellectual Property Gmbh Computersystem und Speichervorrichtung
DE202015101904U1 (de) * 2015-04-17 2016-07-20 Fujitsu Technology Solutions Intellectual Property Gmbh Computersystem und Speichervorrichtung zum Aktualisieren von Firmwarekomponenten
DE202015102285U1 (de) 2015-05-05 2016-08-09 Fujitsu Technology Solutions Intellectual Property Gmbh Computersystem und Speichervorrichtung zum Bereitstellen wenigstens eines Datenträgers
US10061596B2 (en) * 2015-07-10 2018-08-28 Dell Products L.P. Systems and methods for loading firmware modules
US10102008B2 (en) * 2015-09-02 2018-10-16 Dell Products L.P. Managed boot process system
US10659234B2 (en) 2016-02-10 2020-05-19 Cisco Technology, Inc. Dual-signed executable images for customer-provided integrity
US10416981B2 (en) * 2016-05-12 2019-09-17 Dell Products L.P. Systems and methods for on-demand loading of added features for information handling system provisioning
FR3053864B1 (fr) * 2016-07-05 2018-08-17 Alstom Transport Technologies Procede de mise a jour d'une pluralite de vehicules et ensemble forme d'une pluralite de vehicules ferroviaires et d'un systeme de gestion associe
JP2018055465A (ja) * 2016-09-29 2018-04-05 セイコーエプソン株式会社 印刷装置、及び印刷装置の制御方法
WO2018078406A1 (en) * 2016-10-31 2018-05-03 Harman Becker Automotive Systems Gmbh Software update mechanism for safety critical systems
CN107179911B (zh) * 2017-05-19 2020-08-18 苏州浪潮智能科技有限公司 一种重启管理引擎的方法和设备
CN108399075A (zh) * 2018-02-28 2018-08-14 郑州云海信息技术有限公司 一种更新管理引擎的方法及系统
US11627049B2 (en) * 2019-01-31 2023-04-11 Hewlett Packard Enterprise Development Lp Failsafe firmware upgrade for cloud-managed devices
US20200310776A1 (en) * 2019-03-25 2020-10-01 Micron Technology, Inc. Over-the-air update validation
KR20210037314A (ko) * 2019-09-27 2021-04-06 삼성전자주식회사 보안 집적 회로를 이용하여 펌웨어를 갱신하기 위한 전자 장치 및 그의 동작 방법
US11611872B2 (en) * 2019-09-30 2023-03-21 Shoppertrak Rct Llc Methods and systems for a self-provisioning device

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100115256A1 (en) * 2008-11-06 2010-05-06 Lenovo (Singapore) Pte, Ltd. Method, apparatus, and system for quiescing a boot environment
WO2011075139A1 (en) 2009-12-18 2011-06-23 Hewlett-Packard Development Company, L.P. Methods and devices for updating firmware of a component using a firmware update application

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6266809B1 (en) * 1997-08-15 2001-07-24 International Business Machines Corporation Methods, systems and computer program products for secure firmware updates
US7055148B2 (en) 2000-12-07 2006-05-30 Hewlett-Packard Development Company, L.P. System and method for updating firmware
US7089547B2 (en) * 2002-09-13 2006-08-08 International Business Machines Corporation Firmware updating
US20040076043A1 (en) * 2002-10-21 2004-04-22 Phoenix Technologies Ltd. Reliable and secure updating and recovery of firmware from a mass storage device
US7219343B2 (en) 2003-04-10 2007-05-15 International Business Machines Corporation Firmware update mechanism in a multi-node data processing system
US7457945B2 (en) 2004-03-23 2008-11-25 Dell Products L.P. System and method for providing a secure firmware update to a device in a computer system
US20130047145A1 (en) * 2006-08-29 2013-02-21 Quan-Jie Cui Match analysis for encoding optimized update packages
US7917743B2 (en) * 2007-11-14 2011-03-29 Dell Products L.P. System and method for a remote information handling system boot
US8677144B2 (en) * 2008-02-25 2014-03-18 Cavium, Inc. Secure software and hardware association technique
US8103883B2 (en) * 2008-12-31 2012-01-24 Intel Corporation Method and apparatus for enforcing use of danbury key management services for software applied full volume encryption
US8589302B2 (en) * 2009-11-30 2013-11-19 Intel Corporation Automated modular and secure boot firmware update
US8707019B2 (en) 2011-07-02 2014-04-22 Intel Corporation Component update using management engine

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100115256A1 (en) * 2008-11-06 2010-05-06 Lenovo (Singapore) Pte, Ltd. Method, apparatus, and system for quiescing a boot environment
WO2011075139A1 (en) 2009-12-18 2011-06-23 Hewlett-Packard Development Company, L.P. Methods and devices for updating firmware of a component using a firmware update application

Also Published As

Publication number Publication date
WO2013006557A3 (en) 2013-05-10
KR20140028111A (ko) 2014-03-07
CN103917949A (zh) 2014-07-09
CN103917949B (zh) 2017-06-09
EP2726979A4 (en) 2015-04-08
US20130007437A1 (en) 2013-01-03
US20140229930A1 (en) 2014-08-14
EP2726979A2 (en) 2014-05-07
WO2013006557A2 (en) 2013-01-10
US8707019B2 (en) 2014-04-22
US9747094B2 (en) 2017-08-29
JP5767750B2 (ja) 2015-08-19
JP2014523035A (ja) 2014-09-08

Similar Documents

Publication Publication Date Title
KR101585350B1 (ko) 관리 엔진을 사용하는 컴포넌트 업데이트
US10395039B2 (en) Customer-owned trust of device firmware
US10031993B1 (en) Application store model for dynamic reconfiguration of a field-programmable gate array (FPGA)
US10528765B2 (en) Technologies for secure boot provisioning and management of field-programmable gate array images
US9189631B2 (en) Firmware authentication
US10592670B2 (en) Technologies for provisioning and managing secure launch enclave with platform firmware
US10404538B1 (en) Remote platform configuration
US11194588B2 (en) Information handling systems and method to provide secure shared memory access at OS runtime
KR101369428B1 (ko) 이종의 게스트 오퍼레이팅 시스템을 지원하는 휴대용 단말을 위한 어플리케이션 관리 장치 및 방법
US20100082955A1 (en) Verification of chipset firmware updates
CN104603792A (zh) 安全固件更新
CN107567629B (zh) 在可信执行环境容器中的动态固件模块加载器
US10628588B2 (en) Information processing apparatus and computer readable storage medium
US20140149730A1 (en) Systems and methods for enforcing secure boot credential isolation among multiple operating systems
US10846408B2 (en) Remote integrity assurance of a secured virtual environment
US20090133097A1 (en) Device, system, and method for provisioning trusted platform module policies to a virtual machine monitor
US11347856B2 (en) Bios method to block compromised preboot features
CN114969713A (zh) 设备验证方法、设备及系统
US20230198775A1 (en) Memory device with secure boot updates and self-recovery
WO2016195624A1 (en) Transferring an image file over a network
US20170372058A1 (en) System and Method for Securing Secure Memory Allocations in an Information Handling System
KR20180011866A (ko) 메모리 암호화 제외 방법 및 장치
US11977753B2 (en) BIOS NVRAM storage extension system and method for secure and seamless access for various boot architectures
US11995452B2 (en) Firmware memory map namespace for concurrent containers

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee