KR20070035164A - 부팅, 소프트웨어 자동 업데이트 및 에러 복원 방법과 그시스템, 그 방법을 기록한 컴퓨터 판독 가능한 기록매체 - Google Patents

부팅, 소프트웨어 자동 업데이트 및 에러 복원 방법과 그시스템, 그 방법을 기록한 컴퓨터 판독 가능한 기록매체 Download PDF

Info

Publication number
KR20070035164A
KR20070035164A KR1020050089692A KR20050089692A KR20070035164A KR 20070035164 A KR20070035164 A KR 20070035164A KR 1020050089692 A KR1020050089692 A KR 1020050089692A KR 20050089692 A KR20050089692 A KR 20050089692A KR 20070035164 A KR20070035164 A KR 20070035164A
Authority
KR
South Korea
Prior art keywords
update
kernel
information
boot record
component
Prior art date
Application number
KR1020050089692A
Other languages
English (en)
Other versions
KR100750132B1 (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 삼성전자주식회사
Priority to KR1020050089692A priority Critical patent/KR100750132B1/ko
Priority to US11/513,057 priority patent/US8166285B2/en
Priority to EP06121225.4A priority patent/EP1770513B1/en
Priority to CN200610159300XA priority patent/CN1940878B/zh
Publication of KR20070035164A publication Critical patent/KR20070035164A/ko
Application granted granted Critical
Publication of KR100750132B1 publication Critical patent/KR100750132B1/ko
Priority to US13/291,901 priority patent/US8825995B2/en
Priority to US14/341,428 priority patent/US9792105B2/en

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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1417Boot up procedures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1433Saving, restoring, recovering or retrying at system level during software upgrading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/177Initialisation or configuration control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • 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
    • 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/445Program loading or initiating
    • 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/445Program loading or initiating
    • G06F9/44536Selecting among different versions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

Abstract

본 발명은 부팅 방법, 소프트웨어 자동 업데이트 및 에러 복원 방법과 그 시스템, 그 방법을 기록한 컴퓨터 판독 가능한 기록매체에 대한 것으로,
마스터 부트 레코드(master boot record)와 백업 부트 레코드(backup boot record)를 이용하여 커널을 안전하게 업데이트하고 업데이트 에러 발생시 효율적인 복원 기능을 지원하며, 컴포넌트 구성 DB를 이용함으로써 커널을 포함한 다수의 소프트웨어 컴포넌트를 하나의 트랜잭션으로 묶어 업데이트하고 업데이트 에러를 완벽하게 복원할 수 있다.
소프트웨어 자동 업데이트, 부트 레코드, 부트 로더, 커널.

Description

부팅, 소프트웨어 자동 업데이트 및 에러 복원 방법과 그 시스템, 그 방법을 기록한 컴퓨터 판독 가능한 기록매체 {Method and system for booting, updating software automatically and recovering update error, and computer readable medium recording the method}
도 1은 일반적인 시스템에서의 부트 영역의 구성,
도 2는 업데이트 유효성 확인 저장소를 이용하여 커널에 대한 자동 업데이트 기능을 제공하는 종래 기술의 예,
도 3은 2개의 부트 로더를 이용하여 커널에 대한 자동 업데이트 기능을 제공하는 종래 기술의 다른 예,
도 4a는 본 발명에 따른 부트 레코드의 예,
도 4b는 본 발명에 따른 컴포넌트 구성 정보의 예,
도 5는 본 발명에 따른 부트 영역의 구성,
도 6은 본 발명에 따른 부팅 방법 중 커널 로드 과정을 도시한 흐름도,
도 7은 본 발명에 따른 부팅 방법 중 기타 소프트웨어 컴포넌트들을 로드하는 과정을 도시한 흐름도,
도 8은 본 발명에 따른 커널의 자동 업데이트 메커니즘을 도시한 흐름도,
도 9a, 9b 및 9c는 본 발명에 따른 커널의 자동 업데이트 과정에서 메모리 상태 변화를 예시한 도면,
도 10a, 10b, 10c 및 10d는 본 발명에 따라 업데이트 패키지 내의 컴포넌트들을 자동 업데이트하는 과정에서 메모리 상태 변화를 예시한 도면,
도 11은 본 발명의 일실시예에 따른 소프트웨어 업데이트 및 에러 복원 시스템의 구성도,
도 12는 본 발명의 다른 실시예에 따른 소프트웨어 업데이트 및 에러 복원 시스템의 구성도.
본 발명은 소프트웨어 업데이트(software update)에 관한 것으로, 더욱 상세하게는 시스템에 설치된 소프트웨어 컴포넌트들의 업데이트 및 업데이트 도중 발생하는 에러의 복원을 지원하기 위한 부팅 방법, 소프트웨어 자동 업데이트 및 에러 복원 방법과 그 시스템, 그 방법을 기록한 컴퓨터 판독 가능한 기록매체에 관한 것이다.
커널(kernel)은 운영체제(OS)의 가장 핵심적인 부분으로서, 커널 이미지(kernel image)의 자동 업데이트시 시스템 크래시(crash)로 인해 업데이트가 중간에 중단된 경우 해당 장치를 부팅조차 할 수 없는 위험 부담이 따른다.
도 1은 일반적인 시스템에서의 부트 영역의 구성을 도시한 것이다. 현재 이미지(CURRENT IMAGE, 110)는 OS와 어플리케이션을 통합한 바이너리 이미지(binary image)이고, 부트 로더(BOOT LOADER, 120)는 시스템이 시작될 때 처음으로 실행시키는 코드로서 현재 이미지를 램에 로드하고 실행하여 시스템을 부팅하는 역할을 한다. 이러한 구성의 문제점은, 이미지 업데이트 실패시 자동 복원이 안된다는 것이다. 또한, 여러 개의 소프트웨어 컴포넌트들을 업데이트하고 업데이트 에러를 복원하는 기능을 제공하기 곤란하다.
도 2는 업데이트 유효성 확인 저장소(230)를 이용하여 커널에 대한 자동 업데이트 기능을 제공하는 종래 기술의 예이다. 이 예에서는, 커널 업데이트시 커널의 현재 이미지(220)를 백업 저장소에 복사하여 백업 이미지(BACKUP IMAGE, 210)를 생성한 후, 신규 이미지(NEW IMAGE, 220)를 다운로드한다. 그리고 부팅시 문제가 발생하면 부트 로더(240)가 업데이트 유효성 확인 저장소(230)를 참조하여 업데이트의 유효성을 확인하고 백업 이미지(210)를 신규 이미지(220)에 복사한 후, 이를 이용하여 시스템을 재부팅한다. 이러한 방법에 의하면, 시스템 복원시 백업 이미지(210) 전체를 다시 복사해야 하는데, 보통 12 Mbyte 정도인 커널 이미지를 플래시 메모리에 복사하려면 보통 2-30초 소요되므로 비효율적이다.
도 3은 2개의 부트 로더(330, 340)를 이용하여 커널에 대한 자동 업데이트 기능을 제공하는 종래 기술의 다른 예이다. 이 예에서도 마찬가지로, 커널 업데이트시 현재 이미지(320)를 백업 저장소에 복사하여 백업 이미지(310)를 생성한 후, 신규 이미지(320)를 다운로드한다. 그리고 부팅시 부트 로더1(340)을 실행하여 문제가 발생하면, 부트 로더2(330)를 실행하여 백업 이미지(310)가 로드되도록 한다. 이러한 방법에 의하면, 시스템이 물리적으로 2개의 부트 로더를 실행시킬 수 있어 야 한다는 문제가 있다.
따라서, 커널을 자동 업데이트하고 업데이트 에러가 발생했을 때 효율적으로 시스템을 복원하는 기술이 필요한 실정이다. 또한, 커널을 포함한 여러 개의 소프트웨어 컴포넌트를 업데이트할 때, 에러 발생시 업데이트 롤백(rollback)을 할 수 있는 기능이 필요하다. 즉, 소프트웨어 자동 업데이트의 신뢰성(reliability)을 제공하기 위해 업데이트 에러시 이전 상태(마지막 재부팅 시점)로의 자동 복원 기능이 필요하다.
본 발명은 상기와 같은 문제를 해결하여, 커널과 같은 중요 컴포넌트를 포함한 다수의 컴포넌트를 업데이트하고 업데이트시 에러를 효율적으로 자동 복원하기 위한 부팅 방법, 소프트웨어 자동 업데이트 및 에러 복원 방법과 그 시스템, 그 방법을 기록한 컴퓨터 판독 가능한 기록매체를 제공하는 것을 목적으로 한다.
상기 목적의 달성을 위해 본 발명은, 부트 레코드(boot record)를 이용하여 커널을 안전하게 업데이트하고 업데이트 에러 발생시 효율적인 복원 기능을 지원하며, 컴포넌트 구성 DB를 이용함으로써 커널을 포함한 다수의 소프트웨어 컴포넌트를 하나의 트랜잭션으로 묶어 업데이트하고 업데이트 에러를 복원하는 부팅 방법, 소프트웨어 자동 업데이트 및 에러 복원 방법과 그 시스템, 그 방법을 기록한 컴퓨터 판독 가능한 기록매체를 제공한다.
본 발명의 특징은, 커널을 로드하여 시스템을 부팅하는 방법에 있어서, 상기 커널에 대한 정보를 포함하는 마스터 부트 레코드의 유효성을 체크하는 단계; 상기 마스터 부트 레코드가 유효하면, 상기 마스터 부트 레코드를 이용하여 커널을 로드하고 실행하는 단계; 및 상기 마스터 부트 레코드가 유효하지 않으면, 업데이트 이전의 커널에 대한 정보를 포함하는 백업 부트 레코드를 이용하여 커널을 로드하고 실행하는 단계를 포함하는 것이다.
바람직하게는 상기 방법이, 상기 시스템에 설치된 소프트웨어 컴포넌트들의 업데이트에 대한 정보를 포함하는 컴포넌트 구성 정보를 읽어 이전 업데이트의 실행 결과를 판단하는 단계; 상기 업데이트가 성공적으로 종료된 것으로 판단되는 경우는, 상기 구성 정보에 포함된 현재 정보를 이용하여 컴포넌트들을 로드하고 실행하는 단계; 및 상기 업데이트가 성공적으로 종료되기 전에 중단된 것으로 판단되는 경우는, 상기 구성 정보에 포함된 이전 정보를 이용하여 컴포넌트들을 로드하고 실행하는 단계를 더 포함한다.
바람직하게는 상기 방법이, 상기 업데이트가 성공적으로 종료되기 전에 중단되었지만, 커널을 제외한 컴포넌트들의 업데이트가 완료되어 있고, 상기 구성 정보에 포함된 커널의 현재 정보와 상기 마스터 부트 레코드의 커널 정보가 동일한 것으로 판단되는 경우는, 상기 구성 정보에 포함된 현재 정보를 이용하여 컴포넌트들을 로드하고 실행하는 단계를 더 포함한다.
본 발명의 다른 특징은, 커널을 업데이트하는 소프트웨어 자동 업데이트 및 에러 복원 방법에 있어서, 신규 버전의 커널을 다운로드 받아 저장하는 단계; 커널에 대한 정보를 포함하는 마스터 부트 레코드를 백업 부트 레코드에 복사하는 단 계; 상기 마스터 부트 레코드에 상기 신규 버전의 커널에 대한 정보를 기록하는 단계;를 포함하는 것이다.
본 발명의 또 다른 특징은, 커널을 업데이트하는 소프트웨어 자동 업데이트 및 에러 복원 방법에 있어서, 업데이트 트랜잭션을 시작하는 단계; 상기 커널의 상태 정보를 '다운로드'로 변경하고, 상기 커널의 이전 정보를 현재 정보로 변경하고, 신규 버전의 커널을 다운로드하여 저장하는 단계; 상기 커널의 상태 정보를 '업데이트'로 변경하고, 커널에 대한 정보를 포함하는 마스터 부트 레코드의 정보를 백업 부트 레코드에 복사하고, 상기 커널의 현재 정보 및 상기 마스터 부트 레코드에 상기 신규 버전의 커널에 대한 정보를 기록하는 단계; 상기 커널의 상태 정보를 '완료'로 변경하는 단계; 및 상기 트랜잭션을 종료하는 단계를 포함하는 것이다.
바람직하게는 상기 방법에서, 상기 마스터 부트 레코드에 새로운 정보를 기록하기 전에 상기 마스터 부트 레코드의 유효성 플래그를 '무효'로 표시하고, 상기 새로운 정보를 기록한 후에 상기 유효성 플래그를 '유효'로 표시하는 단계를 더 포함한다.
본 발명의 또 다른 특징은, 업데이트 에러가 발생한 커널을 자동 복원하는 소프트웨어 자동 업데이트 및 에러 복원 방법에 있어서, 커널에 대한 업데이트가 정상적으로 종료되기 전에 중단되었는지 판단하는 단계; 및 상기 업데이트가 중단된 것으로 판단되면, 백업 부트 레코드를 마스터 부트 레코드에 복사하는 단계를 포함하는 것이다.
바람직하게는 상기 판단하는 단계가, 상기 업데이트의 트랜잭션이 시작된 상 태이면 정상적으로 종료되기 전에 중단된 것으로 판단하는 단계를 더 포함한다.
바람직하게는 상기 판단하는 단계가, 상기 커널의 현재 정보와 상기 마스터 부트 레코드의 커널 정보가 동일한 경우에는, 상기 업데이트가 중단되지 않은 것으로 판단하는 단계를 더 포함한다.
본 발명의 또 다른 특징은, 함께 업데이트할 필요가 있는 1개 이상의 소프트웨어 컴포넌트를 업데이트하는 소프트웨어 자동 업데이트 및 에러 복원 방법에 있어서, 상기 업데이트할 컴포넌트의 리스트를 포함하는 업데이트 패키지에 존재하는 커널 이외의 컴포넌트를 순차적으로 업데이트하는 단계; 및 상기 업데이트 패키지에 커널이 포함된 경우, 커널을 마지막에 업데이트하는 단계;를 포함하는 것이다.
바람직하게는 상기 커널 이외의 컴포넌트 업데이트 단계가, 상기 컴포넌트의 이전 정보를 상기 컴포넌트의 현재 정보로 변경하고, 신규 버전의 컴포넌트를 다운로드 받는 단계; 및 상기 컴포넌트의 현재 정보를 상기 신규 버전의 컴포넌트에 대한 정보로 변경하는 단계;를 더 포함한다.
바람직하게는 상기 방법이, 상기 커널 이외의 컴포넌트를 업데이트하기 전, 업데이트 트랜잭션을 시작하는 단계; 및 상기 커널 업데이트 후, 상기 트랜잭션을 종료하는 단계를 더 포함한다.
바람직하게는 상기 커널 이외의 컴포넌트 업데이트 단계가, 상기 컴포넌트의 상태 정보를 '다운로드'로 변경하고, 상기 컴포넌트의 이전 정보를 현재 정보로 변경하고, 신규 버전의 컴포넌트를 다운로드하여 저장하는 단계; 상기 컴포넌트의 상태 정보를 '업데이트'로 변경하고, 이전 버전의 컴포넌트명을 백업본으로 변환하고 상기 신규 버전의 컴포넌트명을 원본으로 변환하는 단계; 및 상기 컴포넌트의 현재 정보를 상기 신규 버전의 컴포넌트에 대한 정보로 변경하고, 상기 컴포넌트의 상태 정보를 '완료'로 변경하는 단계;를 더 포함한다.
본 발명의 또 다른 특징은, 업데이트 에러가 발생한 소프트웨어 컴포넌트를 복원하기 위한 소프트웨어 자동 업데이트 및 에러 복원 방법에 있어서, 업데이트 패키지에 포함된 컴포넌트들에 대한 업데이트가 정상적으로 종료되기 전에 중단되었는지 판단하는 단계; 및 상기 업데이트가 중단된 것으로 판단되면, 상기 업데이트 패키지의 모든 컴포넌트에 대한 백업본을 원본으로 전환하는 단계를 포함하는 것이다.
바람직하게는 상기 전환하는 단계가, 상기 컴포넌트가 커널인 경우, 백업 부트 레코드를 마스터 부트 레코드에 복사하는 단계를 더 포함한다.
본 발명의 또 다른 특징은, 소프트웨어 자동 업데이트 및 에러 복원 시스템에 있어서, 현재의 커널, 상기 현재 커널의 주소 정보를 포함하는 마스터 부트 레코드, 상기 시스템 시작시 상기 마스터 부트 레코드를 이용하여 상기 현재 커널을 램에 로드하고 실행함으로써 상기 시스템을 부팅하는 부트 로더를 저장하는 비휘발성 메모리; 및 상기 비휘발성 메모리에 저장된 부트 로더를 실행하는 프로세서를 포함하는 것이다.
바람직하게는 상기 마스터 부트 레코드가, 상기 현재 커널의 유효 여부를 표시하는 유효성 플래그를 더 포함하고, 상기 비휘발성 메모리는, 이전 버전의 커널, 상기 이전 커널의 주소 정보를 포함하는 백업 부트 레코드를 더 포함하고, 상기 부 트 로더는, 상기 마스터 부트 레코드가 유효하면 상기 마스터 부트 레코드의 정보를 이용하여 상기 현재 커널을 로드하고, 상기 마스터 부트 레코드가 유효하지 않으면 상기 백업 부트 레코드의 정보를 이용하여 상기 이전 커널을 로드한다.
바람직하게는 상기 비휘발성 메모리가, 소프트웨어 업데이트에 대한 정보를 포함하는 컴포넌트 구성 정보와, 상기 구성 정보를 이용하여 소프트웨어 컴포넌트들의 업데이트 및 업데이트시 발생한 에러의 복원을 수행하는 업데이트 엔진을 더 포함한다.
바람직하게는 상기 구성 정보가, 업데이트 트랜잭션의 상태 정보, 각 컴포넌트의 이름, 업데이트 이전의 컴포넌트 주소와 버전이 포함된 이전 정보, 업데이트 이후의 주소와 버전이 포함된 현재 정보, 컴포넌트의 업데이트 상태 정보를 포함하고, 상기 업데이트 엔진은, 상기 구성 정보를 참조하고 변경해가면서 각 컴포넌트의 업데이트 및 업데이트 에러 복원 작업을 수행한다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 설명한다.
도 4a는 본 발명에 따른 부트 레코드의 예를 도시한 것이다. 본 발명에 따르면, 시스템 시작시 부트 로더는 부트 레코드를 사용하여 커널을 로드하고 실행한다.
부트 레코드에는 기본적으로 커널의 주소(412)와 유효성 플래그(413)가 포함된다. 커널의 주소(412)는, 예컨대 플래시 메모리에 저장된 커널의 위치를 가리키는 것으로, 부트 로더는 이 정보를 이용하여 커널을 찾아 로드한다. 또한, 유효성 플래그(413)는 해당 커널이 유효한지 여부를 표시하는 것이다. 즉, 커널을 업데이트하는 과정에서 부트 레코드의 정보도 수정하게 되는데, 레코드 수정 전에는 플래그(413)를 무효로 표시하고, 레코드 수정 후에 플래그(413)를 다시 유효로 표시함으로써, 부트 레코드의 정보가 유효한 것인지 여부를 항상 정확히 알 수 있다. 또한, 커널 식별자(410) 및 버전(411) 정보도 부트 레코드에 포함될 수 있다.
본 발명에 따르면, 상기와 같은 형식을 가진 부트 레코드가 2개 존재한다. 현재의 커널에 대한 정보를 저장하는 마스터 부트 레코드(master boot record)와, 기존에 성공적으로 로드되었던 이전의 커널에 대한 정보를 포함하는 백업 부트 레코드(backup boot record)가 그것이다.
도 4b는 본 발명에 따른 컴포넌트 구성 정보의 예를 도시한 것이다. 컴포넌트 구성 정보는 시스템에 설치된 소프트웨어 컴포넌트들의 기본 정보와 업데이트에 대한 정보를 포함하는 것으로 데이터베이스(DB)의 형태로 구현될 수 있다.
트랜잭션 상태 정보(420)는 업데이트를 트랜잭션 단위로 관리하기 위한 것으로, 업데이트 트랜잭션의 현재 상태를 저장하여 업데이트의 성공 여부를 판단하는데 사용되는 플래그이다.
또한, 컴포넌트 구성 정보에는 각 컴포넌트에 대한 정보가 저장되는데, 컴포넌트의 이름(431), 컴포넌트의 주소 정보(432) 및 버전 정보(433)를 포함하는 컴포넌트의 현재 정보(440), 업데이트 이전의 컴포넌트 주소(434) 및 버전(435)을 관리하기 위한 이전 정보(450), 컴포넌트의 업데이트 상태를 관리하기 위한 상태 정보(436) 등이 저장된다. 본 발명에서는 컴포넌트 상태 정보를 이용하여 효율적인 자 동 복원 기능을 제공한다.
도 5는 본 발명에 따른 부트 영역의 구성을 도시한 것으로, 부트 로더(550), 현재의 커널(520), 백업본인 이전 커널(520), 현재의 커널(520)에 대한 정보를 기록한 마스터 부트 레코드(540), 이전 커널(510)에 대한 정보를 기록한 백업 부트 레코드(530)로 구성된다.
도 6은 상기와 같은 구성을 이용하여 커널을 로드하는 메커니즘을 도시한 것이다. 먼저, 부트 로더가 시작되어(S602), 마스터 부트 레코드의 유효성 플래그를 읽어 유효한지 여부를 체크한다(S604). 유효성 플래그가 유효함을 표시하고 있다면(S606), 마스터 부트 레코드를 이용하여 커널을 로드하고 실행한다(S608). 즉, 마스터 부트 레코드가 가리키고 있는 현재 커널이 로드된다. 그러나, 마스터 부트 레코드가 유효하지 않으면(S606), 이전의 커널 업데이트시 에러가 발생한 것이므로 백업 부트 레코드를 이용하여 커널을 로드하고 실행함으로써(S610), 시스템을 정상적으로 시작할 수 있다.
도 7은 커널 로드 후 기타 소프트웨어 컴포넌트들을 로드하는 과정을 도시한 흐름도이다. 본 발명에 따르면, 업데이트 엔진이라는 프로그램이 시스템에서 사용되는 소프트웨어 컴포넌트들을 로드시켜 실행시킨다. 먼저, 업데이트 엔진이 시작되고(S702), 컴포넌트 구성 정보를 읽어 이전 업데이트가 성공적으로 끝났는지 실행 결과를 판단해야 한다(S704). 이 판단은 구성 정보의 트랜잭션 상태 정보를 읽음으로써 수행될 수 있다. 트랜잭션 상태 정보가 트랜잭션 종료로 표시되어 있다면 업데이트 트랜잭션이 성공적으로 종료된 것이고, 트랜잭션 시작으로 표시되어 있는 경우라면 종료되기 전에 어떤 이유로 중단된 것이다.
이전 업데이트가 성공적으로 종료된 것으로 판단되는 경우는(S706), 구성 정보에 포함된 컴포넌트의 현재 정보를 이용하여 컴포넌트들을 로드하고 실행한다(S708). 즉, 현재 주소 정보를 참조하여 현재 버전의 컴포넌트들을 로드한다.
그러나, 업데이트가 성공적으로 종료되기 전에 중단된 것으로 판단되는 경우는(S706), 구성 정보에 포함된 이전 정보를 이용하여 컴포넌트들을 로드하고 실행한다(S712). 즉, 이전 주소 정보를 참조하여 업데이트 이전 버전의 컴포넌트들을 로드한다.
본 발명에 따르면, 커널 이외의 어플리케이션을 모두 업데이트한 후에 커널을 업데이트하는 것이 바람직하다. 따라서, 업데이트가 성공적으로 종료되기 전에 중단되었지만, 커널을 제외한 컴포넌트들의 업데이트가 완료되어 있고, 구성 정보에 포함된 커널의 현재 정보와 마스터 부트 레코드의 커널 정보가 동일한 것으로 판단되는 경우가 있을 수 있다(S710). 즉, 마스터 부트 레코드의 정보까지도 성공적으로 수정한 후에 커널 업데이트가 중단된 경우이다. 이러한 경우는 업데이트 트랜잭션이 성공적으로 완료된 것으로 간주하고, 구성 정보에 포함된 현재 정보를 이용하여 컴포넌트들을 로드하고 실행하는 것이 효율적이다(S708).
이와 같이, 재부팅 전에 다수의 컴포넌트들에 대한 업데이트를 실행하다 중단된 경우라도 사용자가 마지막으로 사용하였던 컴포넌트 구성으로 복원할 수 있다.
도 8은 본 발명에 따른 커널의 자동 업데이트 메커니즘을 도시한 것이다. 커널 업데이트는 신규 버전의 커널을 다운로드 받아 저장하고(S802), 커널에 대한 정보를 포함하는 마스터 부트 레코드를 백업 부트 레코드에 복사하여 백업한 후(S804), 마스터 부트 레코드에 신규 버전의 커널에 대한 정보(주소 등)를 기록하는 (S806) 과정을 통해 수행된다.
도 9a, 9b 및 9c는 본 발명에 따른 커널의 자동 업데이트 과정에서 메모리 상태 변화를 상세히 예시한 것이다. 이들 도면을 참조하면, 파일 시스템(file system) 영역(910)에 3개의 어플리케이션(App.1, App.2, App.3)이 저장되어 있으며, 로 포맷(raw format) 영역(920)은 도 5와 같은 구성임을 알 수 있다. 또한, 업데이트와 복원에 필요한 컴포넌트 구성 정보를 저장한 구성 DB(CONFIG DB, 930)에 트랜잭션의 상태 정보(PACKAGECOMMIT, 940)와, 각 컴포넌트에 대한 식별자(COMP, 950), 현재 버전 정보(VER, 960), 상태 정보(STATE, 970) 및 이전 버전 정보(PREVIOUS, 980) 등이 포함되어 있다. 도 4b에 도시된 현재 주소 정보(432) 및 이전 주소 정보(435)는 도시되어 있지 않으나, 해당 버전 정보를 갱신할 때 같이 갱신된다.
로 포맷 영역(920)은 파일 시스템이 없는 부트 영역으로 부트 로더(921) 등이 저장된다. 그러나, 부트 로더가 파일 시스템까지 포함한다면 커널과 부트 레코드는 파일 시스템 영역(910)에 존재할 수 있다. 또한, 파일 시스템 영역(910)은 DOS(Disk Operation System)와 같은 파일 시스템이 존재하는 영역으로, 본 발명의 구성이 파일 시스템을 꼭 필요로 하지는 않는다. 파일 시스템이 없는 경우는 어플리케이션들도 로 포맷 영역에 존재할 수 있다. 또한, 구성 DB(930)는 로 포맷 영 역(920)이나 파일 시스템 영역(910) 어디에나 존재할 수 있다.
도 9a를 참조하면, 먼저 트랜잭션 상태 정보에 해당하는 PACKAGECOMMIT(940)이 'NO'로 설정된다(S91). 이는 트랜잭션이 시작되었음을 의미하는 것이다. 다음에, 업데이트 대상인 커널의 상태 정보(970)가 '다운로드(DOWNLOAD)'로 변경되고(S92), 이전 버전 정보(980)가 현재 버전 정보(960)인 '1.0'으로 변경되며(S93), 신규 버전(1.1)의 커널(NEW KERNEL, 925)이 다운로드되어 저장된다(S94). 이때, 마스터 부트 레코드(922)는 버전 1.0의 현재 커널(CURRENT KERNEL, 924)을 가리키고 있으며, 백업 부트 레코드(923)는 아직까지 이전의 백업 커널인 버전 0.5의 커널에 대한 정보를 가지고 있다.
도 9b를 참조하면, 커널의 상태 정보를 '업데이트(UPDATE)'로 변경하고(S95), 마스터 부트 레코드(922)의 정보를 백업 부트 레코드(923)에 복사하고(S96), 커널의 현재 정보 및 마스터 부트 레코드(922)에 신규 버전의 커널에 대한 정보를 기록한다(S97). 즉, 마스터 부트 레코드는 버전 1.1의 신규로 다운로드된 커널을 가리키게 되며, 구성 DB의 현재 버전 및 주소 정보도 그에 따라 변경된다.
도 9c를 참조하면, 커널의 상태 정보를 '완료(DONE)'로 변경하여(S98) 커널 업데이트가 성공적으로 끝났음을 표시한다. 마지막으로, PACKAGECOMMIT(440)을 'YES'로 설정하여(S99), 업데이트 트랜잭션이 성공적으로 종료되었음을 표시한다.
상기 과정에서, 마스터 부트 레코드(922)에 새로운 정보를 기록하기 전에는 항상 마스터 부트 레코드의 유효성 플래그를 '무효'로 표시하고, 기록을 끝낸 후에는 이 유효성 플래그를 '유효'로 표시한다.
커널 업데이트시 에러가 발생한 경우의 자동 복원 과정은 다음과 같다. 커널에 대한 업데이트가 정상적으로 종료되기 전에 중단되었는지 판단하고, 업데이트가 중단된 것으로 판단되면, 백업 부트 레코드를 마스터 부트 레코드에 복사하는 간단한 과정으로 이전에 성공적으로 로드되었던 버전의 커널로 시스템을 복원할 있다.
업데이트가 중단되었는지 여부는 트랜잭션 상태 정보(940)를 체크하여 판단한다. 즉, 시스템 부팅시 PACKAGECOMMIT이 'NO'이면, 트랜잭션이 시작된 상태에서 성공적으로 종료되기 전에 중단된 것으로 판단한다.
그러나, 트랜잭션이 실패한 경우라도, 커널의 현재 정보와 마스터 부트 레코드의 커널 정보가 동일한 경우가 있을 수 있다. 이는 단계 S97까지 수행한 후 중단된 경우이다. 이 경우는 업데이트가 중단되지 않은 것으로 판단하여 복원 작업을 수행하지 않고 트랜잭션을 종료시키면 된다.
도 10a, 10b, 10c 및 10d는 본 발명에 따라 업데이트 패키지 내의 컴포넌트들을 자동 업데이트하는 과정에서 메모리 상태 변화를 예시한 것이다.
도 10a를 참조하면, 업데이트 패키지(990)는 함께 업데이트할 필요가 있는 소프트웨어 컴포넌트들의 리스트이다. 이 리스트에는 어플리케이션 컴포넌트와 커널이 같이 존재할 수 있다. 이 경우, 업데이트 패키지에 존재하는 커널 이외의 컴포넌트를 순차적으로 업데이트한 후(S102~S109), 중요 컴포넌트인 커널을 마지막에 업데이트하는 것이 바람직하다.
커널 이외의 컴포넌트, 예컨대 업데이트 패키지(990)에 포함되어 있는 어플 리케이션 App.1에 대한 업데이트 과정이 도 10b, 10c 및 10d에 도시되어 있다. 어플리케이션의 업데이트는, 해당 컴포넌트의 이전 정보를 컴포넌트의 현재 정보로 변경하고, 신규 버전의 컴포넌트를 다운로드 받은 후, 컴포넌트의 현재 정보를 신규 버전의 컴포넌트에 대한 정보로 변경하는 과정에 의한다.
도 10b를 참조하면, 먼저 PACKAGECOMMIT을 'NO'로 설정하여 업데이트 트랜잭션을 시작한다(S101). 그런 후, 해당 컴포넌트의 상태 정보(970)를 '다운로드'로 변경하고(S102), 컴포넌트의 이전 정보(980)를 현재 정보(960)로 변경하고(S103), 신규 버전의 컴포넌트(New App.1)를 다운로드하여 저장한다(S104).
도 10c를 참조하면, 컴포넌트의 상태 정보(970)를 '업데이트'로 변경하고(S105), 이전 버전의 컴포넌트명(App.1)을 백업본(App1.bak)으로 변환하고(S106), 신규 버전의 컴포넌트명(New App.1)을 원본(App.1)으로 변환한다(S107).
도 10d를 참조하면, 컴포넌트의 현재 정보(960)를 신규 버전의 컴포넌트에 대한 정보로 변경하고(S108), 컴포넌트의 상태 정보(970)를 '완료'로 변경한다(S109). 이제, App.1의 현재 버전은 1.1이고 이전 버전은 1.0임을 알 수 있다.
이러한 어플리케이션 업데이트 과정(S102~S109)은 업데이트 패키지(990)에 속한 각 어플리케이션에 대해 수행되며, 마지막으로 커널에 대한 업데이트가 도 9a, 9b 및 9c에 도시된 과정(S92~S98)에 의해 수행된다. 이와 같이 업데이트 패키지(990)의 모든 컴포넌트에 대한 업데이트가 완료되면, PACKAGECOMMIT을 'YES'로 설정하여 업데이트 트랜잭션을 종료한다(S120).
상기와 같은 업데이트 과정을 수행하는 중간에 에러가 발생한 경우의 복원 과정은 다음과 같다. 먼저, 업데이트 패키지에 포함된 컴포넌트들에 대한 업데이트가 정상적으로 종료되기 전에 중단되었는지 판단하고, 업데이트가 중단된 것으로 판단되면, 업데이트 패키지의 모든 컴포넌트에 대한 백업본을 원본으로 전환하면 된다. 커널의 경우는, 백업 부트 레코드를 마스터 부트 레코드에 복사함으로써 이전 버전으로 복원할 수 있다.
업데이트 에러의 발생 여부는, 업데이트의 트랜잭션 상태 정보를 읽어 트랜잭션이 시작된 상태이면 성공적으로 종료되기 전에 중단된 것으로 판단한다. 이때, 트랜잭션이 종료되지 않은 상태라도, 업데이트 패키지에 포함된 커널 이외의 컴포넌트의 상태 정보가 모두 '완료'이고, 커널의 현재 정보와 마스터 부트 레코드의 커널 정보가 동일한 경우에는, 커널에 대한 업데이트가 실질적으로는 끝난 것이므로 업데이트가 중단되지 않은 것으로 판단하여 이전 버전으로 복원하지 않고 트랜잭션을 종료하는 것이 바람직하다.
도 11은 본 발명에 따른 소프트웨어 업데이트 및 에러 복원 시스템의 구성도이다. 본 발명에 따른 시스템은 프로세서(1200)와 램(1100)을 구비하며, 현재의 커널(1001), 현재 커널의 주소 정보를 포함하는 마스터 부트 레코드(1002), 시스템을 부팅하는 프로그램 코드인 부트 로더(1003)를 저장하는 비휘발성 메모리(1000)를 포함하는 것을 특징으로 한다.
부트 로더(1003)는, 시스템 시작시 마스터 부트 레코드(1002)를 이용하여 현재 커널(1001)을 램(1100)에 로드하고 실행함으로써 시스템을 부팅한다. 마스터 부트 레코드(1002)에는 현재 커널의 유효 여부를 나타내는 유효성 플래그가 포함될 수 있다. 또한, 도 12에 도시된 바와 같이, 커널의 백업본인 이전 버전의 커널(1004)과, 마스터 부트 레코드(1002)의 백업본인 백업 부트 레코드(1005)가 비휘발성 메모리(1000)에 더 포함되어 있을 수 있다. 이 경우는 시스템의 부팅시, 부트 로더(1003)가 마스터 부트 레코드(1002)의 유효 여부를 체크하고, 유효하면 마스터 부트 레코드(1002)의 정보를 이용하여 현재 커널(1001)을 로드하고, 유효하지 않으면 백업 부트 레코드(1005)의 정보를 이용하여 이전 커널(1004)을 로드한다.
또한, 소프트웨어 업데이트에 대한 정보를 포함하는 컴포넌트 구성 정보(1010)와, 이 구성 정보를 이용하여 소프트웨어 컴포넌트들의 업데이트 및 업데이트시 발생한 에러의 복원을 수행하는 업데이트 엔진(1020)이 비휘발성 메모리(1000)에 저장될 수 있다.
컴포넌트 구성 정보(1010)는 도 4b에 도시된 바와 같이, 업데이트 트랜잭션의 상태 정보, 각 컴포넌트의 이름, 업데이트 이전의 컴포넌트 주소와 버전이 포함된 이전 정보, 업데이트 이후의 주소와 버전이 포함된 현재 정보, 컴포넌트의 업데이트 상태 정보를 포함하는 것이 바람직하다. 업데이트 엔진(1020)은 상술한 바와 같이, 이 구성 정보(1010)를 참조하고 변경해가면서 각 컴포넌트의 업데이트 및 업데이트 에러 복원 작업을 수행한다.
상술한 바와 같은 본 발명에 따른 방법은 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본 질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
이상에서 설명한 바와 같은 본 발명의 구성에 의하면, 컴포넌트 구성 정보를 이용함으로써, 업데이트 실패시 치명적인 결과를 발생시킬 수 있는 커널을 포함하여 여러 개의 소프트웨어를 한번에 업데이트하고 에러를 복원할 수 있다.
또한, 본 발명은 성공적으로 로드되었던 마지막 구성 정보를 이용하여 부팅 단위로 시스템을 복원시키기 때문에, 외부적인 이유로 소프트웨어 업데이트가 중단되어 로드가 안되는 경우도 완벽하게 시스템을 이전 버전으로 롤백(rollback)시킬 수 있다.
또한, 부트 레코드를 이용해 커널의 업데이트 및 부팅 과정을 효율적으로 수행할 수 있으며, 커널 복원시 부트 레코드만 변경하면 되므로 속도를 크게 개선할 수 있다.

Claims (25)

  1. 커널을 로드하여 시스템을 부팅하는 방법에 있어서,
    상기 커널에 대한 정보를 포함하는 마스터 부트 레코드의 유효성을 체크하는 단계;
    상기 마스터 부트 레코드가 유효하면, 상기 마스터 부트 레코드를 이용하여 커널을 로드하고 실행하는 단계; 및
    상기 마스터 부트 레코드가 유효하지 않으면, 업데이트 이전의 커널에 대한 정보를 포함하는 백업 부트 레코드를 이용하여 커널을 로드하고 실행하는 단계를 포함하는 것을 특징으로 하는 부팅 방법.
  2. 제1항에 있어서,
    상기 시스템에 설치된 소프트웨어 컴포넌트들의 업데이트에 대한 정보를 포함하는 컴포넌트 구성 정보를 읽어 이전 업데이트의 실행 결과를 판단하는 단계;
    상기 업데이트가 성공적으로 종료된 것으로 판단되는 경우는, 상기 구성 정보에 포함된 현재 정보를 이용하여 컴포넌트들을 로드하고 실행하는 단계; 및
    상기 업데이트가 성공적으로 종료되기 전에 중단된 것으로 판단되는 경우는, 상기 구성 정보에 포함된 이전 정보를 이용하여 컴포넌트들을 로드하고 실행하는 단계를 더 포함하는 것을 특징으로 하는 부팅 방법.
  3. 제2항에 있어서,
    상기 업데이트가 성공적으로 종료되기 전에 중단되었지만, 커널을 제외한 컴포넌트들의 업데이트가 완료되어 있고, 상기 구성 정보에 포함된 커널의 현재 정보와 상기 마스터 부트 레코드의 커널 정보가 동일한 것으로 판단되는 경우는, 상기 구성 정보에 포함된 현재 정보를 이용하여 컴포넌트들을 로드하고 실행하는 단계를 더 포함하는 것을 특징으로 하는 부팅 방법.
  4. 커널을 업데이트하는 소프트웨어 자동 업데이트 및 에러 복원 방법에 있어서,
    신규 버전의 커널을 다운로드 받아 저장하는 단계;
    커널에 대한 정보를 포함하는 마스터 부트 레코드를 백업 부트 레코드에 복사하는 단계;
    상기 마스터 부트 레코드에 상기 신규 버전의 커널에 대한 정보를 기록하는 단계;를 포함하는 것을 특징으로 하는 소프트웨어 자동 업데이트 및 에러 복원 방법.
  5. 커널을 업데이트하는 소프트웨어 자동 업데이트 및 에러 복원 방법에 있어서,
    업데이트 트랜잭션을 시작하는 단계;
    상기 커널의 상태 정보를 '다운로드'로 변경하고, 상기 커널의 이전 정보를 현재 정보로 변경하고, 신규 버전의 커널을 다운로드하여 저장하는 단계;
    상기 커널의 상태 정보를 '업데이트'로 변경하고, 커널에 대한 정보를 포함하는 마스터 부트 레코드의 정보를 백업 부트 레코드에 복사하고, 상기 커널의 현재 정보 및 상기 마스터 부트 레코드에 상기 신규 버전의 커널에 대한 정보를 기록하는 단계;
    상기 커널의 상태 정보를 '완료'로 변경하는 단계; 및
    상기 트랜잭션을 종료하는 단계를 포함하는 것을 특징으로 하는 소프트웨어 자동 업데이트 및 에러 복원 방법.
  6. 제5항에 있어서,
    상기 마스터 부트 레코드에 새로운 정보를 기록하기 전에 상기 마스터 부트 레코드의 유효성 플래그를 '무효'로 표시하고, 상기 새로운 정보를 기록한 후에 상기 유효성 플래그를 '유효'로 표시하는 단계를 더 포함하는 것을 특징으로 하는 소프트웨어 자동 업데이트 및 에러 복원 방법.
  7. 업데이트 에러가 발생한 커널을 자동 복원하는 소프트웨어 자동 업데이트 및 에러 복원 방법에 있어서,
    커널에 대한 업데이트가 정상적으로 종료되기 전에 중단되었는지 판단하는 단계; 및
    상기 업데이트가 중단된 것으로 판단되면, 백업 부트 레코드를 마스터 부트 레코드에 복사하는 단계를 포함하는 것을 특징으로 하는 소프트웨어 자동 업데이트 및 에러 복원 방법.
  8. 제7항에 있어서, 상기 판단하는 단계는,
    상기 업데이트의 트랜잭션이 시작된 상태이면 정상적으로 종료되기 전에 중단된 것으로 판단하는 단계를 더 포함하는 소프트웨어 자동 업데이트 및 에러 복원 방법.
  9. 제8항에 있어서, 상기 판단하는 단계는,
    상기 커널의 현재 정보와 상기 마스터 부트 레코드의 커널 정보가 동일한 경우에는, 상기 업데이트가 중단되지 않은 것으로 판단하는 단계를 더 포함하는 소프트웨어 자동 업데이트 및 에러 복원 방법.
  10. 함께 업데이트할 필요가 있는 1개 이상의 소프트웨어 컴포넌트를 업데이트하는 소프트웨어 자동 업데이트 및 에러 복원 방법에 있어서,
    상기 업데이트할 컴포넌트의 리스트를 포함하는 업데이트 패키지에 존재하는 커널 이외의 컴포넌트를 순차적으로 업데이트하는 단계; 및
    상기 업데이트 패키지에 커널이 포함된 경우, 커널을 마지막에 업데이트하는 단계;를 포함하는 것을 특징으로 하는 소프트웨어 자동 업데이트 및 에러 복원 방법.
  11. 제10항에 있어서, 상기 커널 이외의 컴포넌트 업데이트 단계는,
    상기 컴포넌트의 이전 정보를 상기 컴포넌트의 현재 정보로 변경하고, 신규 버전의 컴포넌트를 다운로드 받는 단계; 및
    상기 컴포넌트의 현재 정보를 상기 신규 버전의 컴포넌트에 대한 정보로 변경하는 단계;를 더 포함하는 것을 특징으로 하는 소프트웨어 자동 업데이트 및 에러 복원 방법.
  12. 제11항에 있어서, 상기 커널 업데이트 단계는,
    신규 버전의 커널을 다운로드 받아 저장하는 단계;
    커널에 대한 정보를 포함하는 마스터 부트 레코드를 백업 부트 레코드에 복사하는 단계; 및
    상기 마스터 부트 레코드에 상기 신규 버전의 커널에 대한 정보를 기록하는 단계;를 더 포함하는 것을 특징으로 하는 소프트웨어 자동 업데이트 및 에러 복원 방법.
  13. 제10항에 있어서,
    상기 커널 이외의 컴포넌트를 업데이트하기 전, 업데이트 트랜잭션을 시작하는 단계; 및
    상기 커널 업데이트 후, 상기 트랜잭션을 종료하는 단계를 더 포함하는 것을 특징으로 하는 소프트웨어 자동 업데이트 및 에러 복원 방법.
  14. 제13항에 있어서,
    상기 커널 업데이트 단계는,
    상기 커널의 상태 정보를 '다운로드'로 변경하고, 상기 커널의 이전 정보를 현재 정보로 변경하고, 신규 버전의 커널을 다운로드하여 저장하는 단계;
    상기 커널의 상태 정보를 '업데이트'로 변경하고, 커널에 대한 정보를 포함하는 마스터 부트 레코드의 정보를 백업 부트 레코드에 복사하고, 상기 커널의 현재 정보 및 상기 마스터 부트 레코드에 상기 신규 버전의 커널에 대한 정보를 기록하는 단계; 및
    상기 커널의 상태 정보를 '완료'로 변경하는 단계;를 더 포함하는 것을 특징으로 하는 소프트웨어 자동 업데이트 및 에러 복원 방법.
  15. 제14항에 있어서, 상기 커널 이외의 컴포넌트 업데이트 단계는,
    상기 컴포넌트의 상태 정보를 '다운로드'로 변경하고, 상기 컴포넌트의 이전 정보를 현재 정보로 변경하고, 신규 버전의 컴포넌트를 다운로드하여 저장하는 단계;
    상기 컴포넌트의 상태 정보를 '업데이트'로 변경하고, 이전 버전의 컴포넌트명을 백업본으로 변환하고 상기 신규 버전의 컴포넌트명을 원본으로 변환하는 단계; 및
    상기 컴포넌트의 현재 정보를 상기 신규 버전의 컴포넌트에 대한 정보로 변경하고, 상기 컴포넌트의 상태 정보를 '완료'로 변경하는 단계;를 더 포함하는 것을 특징으로 하는 소프트웨어 자동 업데이트 및 에러 복원 방법.
  16. 업데이트 에러가 발생한 소프트웨어 컴포넌트를 복원하기 위한 소프트웨어 자동 업데이트 및 에러 복원 방법에 있어서,
    업데이트 패키지에 포함된 컴포넌트들에 대한 업데이트가 정상적으로 종료되기 전에 중단되었는지 판단하는 단계; 및
    상기 업데이트가 중단된 것으로 판단되면, 상기 업데이트 패키지의 모든 컴포넌트에 대한 백업본을 원본으로 전환하는 단계를 포함하는 것을 특징으로 하는 소프트웨어 자동 업데이트 및 에러 복원 방법.
  17. 제16항에 있어서, 상기 판단하는 단계는,
    상기 업데이트의 트랜잭션이 시작된 상태이면 성공적으로 종료되기 전에 중단된 것으로 판단하는 소프트웨어 자동 업데이트 및 에러 복원 방법.
  18. 제17항에 있어서, 상기 판단하는 단계는,
    상기 업데이트의 트랜잭션이 시작된 상태이지만, 상기 업데이트 패키지에 포함된 커널 이외의 컴포넌트의 업데이트가 완료된 상태이고, 상기 커널의 현재 정보와 마스터 부트 레코드의 커널 정보가 동일한 경우에는, 상기 업데이트가 중단되지 않은 것으로 판단하는 단계를 더 포함하는 것을 특징으로 하는 소프트웨어 자동 업데이트 및 에러 복원 방법.
  19. 제16항에 있어서, 상기 전환하는 단계는,
    상기 컴포넌트가 커널인 경우, 백업 부트 레코드를 마스터 부트 레코드에 복사하는 단계를 더 포함하는 것을 특징으로 하는 소프트웨어 자동 업데이트 및 에러 복원 방법.
  20. 제1항 내지 제19 중 어느 한 항의 방법을 수행하는 프로그램을 기록한 컴퓨터 판독 가능한 기록매체.
  21. 소프트웨어 자동 업데이트 및 에러 복원 시스템에 있어서,
    현재의 커널, 상기 현재 커널의 주소 정보를 포함하는 마스터 부트 레코드, 상기 시스템 시작시 상기 마스터 부트 레코드를 이용하여 상기 현재 커널을 램에 로드하고 실행함으로써 상기 시스템을 부팅하는 부트 로더를 저장하는 비휘발성 메모리; 및
    상기 비휘발성 메모리에 저장된 부트 로더를 실행하는 프로세서를 포함하는 것을 특징으로 하는 소프트웨어 자동 업데이트 및 에러 복원 시스템.
  22. 제21항에 있어서,
    상기 마스터 부트 레코드는, 상기 현재 커널의 유효 여부를 표시하는 유효성 플래그를 더 포함하고,
    상기 비휘발성 메모리는, 이전 버전의 커널, 상기 이전 커널의 주소 정보를 포함하는 백업 부트 레코드를 더 포함하고,
    상기 부트 로더는, 상기 마스터 부트 레코드가 유효하면 상기 마스터 부트 레코드의 정보를 이용하여 상기 현재 커널을 로드하고, 상기 마스터 부트 레코드가 유효하지 않으면 상기 백업 부트 레코드의 정보를 이용하여 상기 이전 커널을 로드하는 것을 특징으로 하는 소프트웨어 자동 업데이트 및 에러 복원 시스템.
  23. 제22항에 있어서,
    상기 비휘발성 메모리는, 소프트웨어 업데이트에 대한 정보를 포함하는 컴포넌트 구성 정보와, 상기 구성 정보를 이용하여 소프트웨어 컴포넌트들의 업데이트 및 업데이트시 발생한 에러의 복원을 수행하는 업데이트 엔진을 더 포함하는 것을 특징으로 하는 소프트웨어 자동 업데이트 및 에러 복원 시스템.
  24. 제23항에 있어서,
    상기 구성 정보는, 업데이트 트랜잭션의 상태 정보, 각 컴포넌트의 이름, 업데이트 이전의 컴포넌트 주소와 버전이 포함된 이전 정보, 업데이트 이후의 주소와 버전이 포함된 현재 정보, 컴포넌트의 업데이트 상태 정보를 포함하고,
    상기 업데이트 엔진은, 상기 구성 정보를 참조하고 변경해가면서 각 컴포넌 트의 업데이트 및 업데이트 에러 복원 작업을 수행하는 것을 특징으로 하는 소프트웨어 자동 업데이트 및 에러 복원 시스템.
  25. 제22항에 있어서,
    상기 마스터 부트 레코드 및 백업 부트 레코드는, 커널의 식별자 및 버전에 대한 정보를 더 포함하는 것을 특징으로 하는 소프트웨어 자동 업데이트 및 에러 복원 시스템
KR1020050089692A 2005-09-27 2005-09-27 부팅, 소프트웨어 자동 업데이트 및 에러 복원 방법과 그시스템, 그 방법을 기록한 컴퓨터 판독 가능한 기록매체 KR100750132B1 (ko)

Priority Applications (6)

Application Number Priority Date Filing Date Title
KR1020050089692A KR100750132B1 (ko) 2005-09-27 2005-09-27 부팅, 소프트웨어 자동 업데이트 및 에러 복원 방법과 그시스템, 그 방법을 기록한 컴퓨터 판독 가능한 기록매체
US11/513,057 US8166285B2 (en) 2005-09-27 2006-08-31 Method and system for booting and automatically updating software, and recovering from update error, and computer readable recording medium storing method
EP06121225.4A EP1770513B1 (en) 2005-09-27 2006-09-25 Method and system for booting and automatically updating software, and recovering from update error
CN200610159300XA CN1940878B (zh) 2005-09-27 2006-09-27 引导和自动更新软件和从更新错误中恢复的方法和系统
US13/291,901 US8825995B2 (en) 2005-09-27 2011-11-08 Method and system for booting and automatically updating software, and recovering from update error, and computer readable recording medium storing method
US14/341,428 US9792105B2 (en) 2005-09-27 2014-07-25 Method and system for booting and automatically updating software, and recovering from update error, and computer readable recording medium storing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050089692A KR100750132B1 (ko) 2005-09-27 2005-09-27 부팅, 소프트웨어 자동 업데이트 및 에러 복원 방법과 그시스템, 그 방법을 기록한 컴퓨터 판독 가능한 기록매체

Publications (2)

Publication Number Publication Date
KR20070035164A true KR20070035164A (ko) 2007-03-30
KR100750132B1 KR100750132B1 (ko) 2007-08-21

Family

ID=37102507

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050089692A KR100750132B1 (ko) 2005-09-27 2005-09-27 부팅, 소프트웨어 자동 업데이트 및 에러 복원 방법과 그시스템, 그 방법을 기록한 컴퓨터 판독 가능한 기록매체

Country Status (4)

Country Link
US (3) US8166285B2 (ko)
EP (1) EP1770513B1 (ko)
KR (1) KR100750132B1 (ko)
CN (1) CN1940878B (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101108679B1 (ko) * 2009-11-04 2012-01-25 삼성메디슨 주식회사 자가진단 및 복원기능을 갖는 초음파 진단 방법 및 시스템
KR101403305B1 (ko) * 2012-08-23 2014-06-05 한국전자통신연구원 백업부트레코드 정보를 이용한 파티션 복구 장치 및 방법
KR101947487B1 (ko) * 2018-04-12 2019-05-02 주식회사 케이디티 데이터 자동복구가 가능한 감시 제어 장치
KR20190061865A (ko) * 2017-11-28 2019-06-05 엘지전자 주식회사 공기조화시스템의 중앙제어장치 및 그의 소프트웨어 업데이트 방법

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101232397B (zh) * 2008-02-22 2010-10-27 成都市华为赛门铁克科技有限公司 多控制器系统修复的方法和装置
JP5001886B2 (ja) * 2008-03-14 2012-08-15 株式会社リコー 画像入出力システム、画像入出力装置のバックアップ方法、およびそのプログラム
US20090247293A1 (en) 2008-03-26 2009-10-01 Aristocrat Technologies Australia Pty Limited Gaming machine
US9495250B2 (en) * 2008-09-02 2016-11-15 Fujitsu Limited Providing code to a programmable device
US8271623B2 (en) * 2009-01-15 2012-09-18 Microsoft Corporation Performing configuration in a multimachine environment
US20110202995A1 (en) * 2010-02-16 2011-08-18 Honeywell International Inc. Single hardware platform multiple software redundancy
FR2957700B1 (fr) * 2010-03-22 2012-04-13 Bull Sas Procede, programme d'ordinateur et dispositif d'optimisation de chargement et de demarrage d'un systeme d'exploitation dans un systeme informatique via un reseau de communication
US8504869B2 (en) * 2010-07-16 2013-08-06 Commvault Systems, Inc. Kernel swapping systems and methods for recovering a network device
US8578362B2 (en) * 2011-03-18 2013-11-05 Hamilton Sundstrand Corporation Method for downloading software to an electronics product
US8726087B2 (en) * 2011-03-18 2014-05-13 Denso International America, Inc. System and method for curing a read inability state in a memory device
CN102693139B (zh) * 2011-03-25 2015-09-30 比亚迪股份有限公司 一种无线升级手机软件的方法及系统
JP5077726B1 (ja) * 2011-05-23 2012-11-21 Necインフロンティア株式会社 コンピュータ、その制御方法及びプログラム
US20130042231A1 (en) 2011-08-10 2013-02-14 Ford Global Technologies, Llc Methods and Apparatus for Software Updating
KR101895453B1 (ko) * 2011-11-09 2018-10-25 삼성전자주식회사 이기종 컴퓨팅 환경에서 보안 강화 방법 및 장치
TWI450194B (zh) * 2011-11-10 2014-08-21 Inst Information Industry 作業系統處理方法以及系統、以及儲存其之電腦可讀取記錄媒體
US8281119B1 (en) * 2011-11-22 2012-10-02 Google Inc. Separate normal firmware and developer firmware
CN103135995A (zh) * 2011-11-22 2013-06-05 中兴通讯股份有限公司 一种BootLoader的备份管理方法及装置
KR101994811B1 (ko) * 2012-03-04 2019-07-01 삼성전자주식회사 전자 장치, mbr 복원 방법 및 컴퓨터 판독가능 기록매체
KR20140060912A (ko) * 2012-11-13 2014-05-21 한국전자통신연구원 부트로더를 업데이트하는 방법 및 장치
JP6021597B2 (ja) * 2012-11-15 2016-11-09 三菱電機株式会社 情報処理装置、情報処理方法、およびコンピュータプログラム
CN104375844A (zh) * 2013-08-12 2015-02-25 中兴通讯股份有限公司 固件升级方法及装置
US9792075B1 (en) * 2014-02-26 2017-10-17 Veritas Technologies Llc Systems and methods for synthesizing virtual hard drives
CN104079631B (zh) * 2014-06-09 2018-10-16 中国建设银行股份有限公司 一种版本管理方法及相关装置
US20160019117A1 (en) 2014-07-16 2016-01-21 Commvault Systems, Inc. Creating customized bootable image for client computing device from backup copy
CN105700965A (zh) * 2014-11-26 2016-06-22 英业达科技有限公司 系统错误排除方法
US9626277B2 (en) * 2015-04-01 2017-04-18 Microsoft Technology Licensing, Llc Anomaly analysis for software distribution
US10191811B2 (en) * 2015-08-13 2019-01-29 Quanta Computer Inc. Dual boot computer system
CN106469069B (zh) * 2015-08-17 2021-06-11 中兴通讯股份有限公司 一种版本升级方法及系统
JP6408450B2 (ja) * 2015-10-26 2018-10-17 日立オートモティブシステムズ株式会社 自動車用電子制御装置
CN105468420B (zh) * 2015-12-25 2018-12-28 广州视睿电子科技有限公司 操作系统升级方法和装置
CN106775610B (zh) * 2016-03-22 2021-11-12 新华三技术有限公司 一种电子设备启动方法及一种电子设备
CN108024002B (zh) * 2016-10-31 2021-05-07 成都卫士通信息产业股份有限公司 一种基于rom的双域手机系统的构建方法
US10402273B2 (en) * 2016-12-14 2019-09-03 Microsoft Technology Licensing, Llc IoT device update failure recovery
US10715526B2 (en) 2016-12-14 2020-07-14 Microsoft Technology Licensing, Llc Multiple cores with hierarchy of trust
US10416991B2 (en) * 2016-12-14 2019-09-17 Microsoft Technology Licensing, Llc Secure IoT device update
US10341361B2 (en) * 2017-06-05 2019-07-02 Hewlett Packard Enterprise Development Lp Transmitting secure information
CN107273139A (zh) * 2017-07-05 2017-10-20 努比亚技术有限公司 一种系统更新方法、设备及计算机可读存储介质
CN108089876B (zh) * 2017-12-29 2020-09-18 中国科学院国家空间科学中心 一种星载dsp软件在轨更新方法
CN110045971B (zh) * 2018-01-16 2023-03-24 浙江宇视科技有限公司 系统升级恢复方法及装置
CN108415718B (zh) * 2018-03-28 2021-06-08 南京理工大学 一种应用于星载软件在线更新的BootLoader设计方法
CN110389786B (zh) * 2018-04-20 2022-10-14 伊姆西Ip控股有限责任公司 内核管理方法、电子设备和计算机可读存储介质
CN108694051A (zh) * 2018-05-18 2018-10-23 深圳市先河系统技术有限公司 基于双系统的升级方法、装置以及存储装置
JP2020087293A (ja) * 2018-11-30 2020-06-04 キヤノン株式会社 情報処理装置および情報処理装置の制御方法
CN109766140A (zh) * 2018-12-19 2019-05-17 青岛海信宽带多媒体技术有限公司 一种机顶盒启动异常的定位方法及装置
EP3941078A4 (en) * 2019-03-13 2022-12-07 Hisense Visual Technology Co., Ltd. RESET DEVICE AND INDICATOR
CN110007971A (zh) * 2019-03-25 2019-07-12 联想(北京)有限公司 一种信息处理方法及装置、设备、存储介质
CN109992312B (zh) * 2019-03-26 2021-09-14 联想(北京)有限公司 电子设备的启动方法、装置以及系统
US11237924B2 (en) 2019-12-11 2022-02-01 Commvault Systems, Inc. Dynamic resizing and re-distribution of destination data storage resources for bare metal restore operations in a data storage management system
US11275574B2 (en) * 2020-02-03 2022-03-15 Dell Products L.P. Recovering the last successful device update on a computing system
CN111459525A (zh) * 2020-04-14 2020-07-28 潘传迪 应用程序更新数据处理系统、方法、存储介质、计算机
JP7362583B2 (ja) * 2020-09-23 2023-10-17 株式会社東芝 情報処理装置
US20220147636A1 (en) * 2020-11-12 2022-05-12 Crowdstrike, Inc. Zero-touch security sensor updates
US20240069923A1 (en) * 2022-08-24 2024-02-29 Quanta Cloud Technology Inc. Standardized and robust framework to enhance bootloader configuration management

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5557799A (en) * 1990-03-22 1996-09-17 International Business Machines Computer determination of operating system or data
JP3716971B2 (ja) * 1994-09-19 2005-11-16 株式会社日立製作所 プログラム更新/回復方法
US6560701B1 (en) 1997-02-10 2003-05-06 International Business Machines Corporation Alternate boot record
US6175917B1 (en) 1998-04-23 2001-01-16 Vpnet Technologies, Inc. Method and apparatus for swapping a computer operating system
US6308264B1 (en) * 1998-09-30 2001-10-23 Phoenix Technologies Ltd. Dual use master boot record
US6205558B1 (en) * 1998-10-07 2001-03-20 Symantec Corporation Recovery of file systems after modification failure
US6490722B1 (en) * 1999-03-30 2002-12-03 Tivo Inc. Software installation and recovery system
US6532538B1 (en) * 2000-02-17 2003-03-11 International Business Machines Corporation Method and system for supporting multiple operating systems on the same disk running on different computers at the same time
US6741978B1 (en) * 2000-04-12 2004-05-25 Intel Corporation Accessing file data stored in non-volatile re-programmable semiconductor memories
US6792556B1 (en) * 2000-05-31 2004-09-14 Dell Products L.P. Boot record recovery
US7150036B1 (en) * 2000-07-18 2006-12-12 Western Digital Ventures, Inc. Method of and personal computer for displaying content received from a content delivery server using a disk drive which includes a network address for the content delivery server and a server-contacting program
US20020124245A1 (en) * 2000-08-14 2002-09-05 Alvin Maddux Method and apparatus for advanced software deployment
KR20020065186A (ko) * 2001-02-06 2002-08-13 삼성전자 주식회사 셀룰러 시스템에서 업데이트 실패시 부터코드의 복구방법
DE10129425C1 (de) * 2001-06-19 2003-02-13 Tenovis Gmbh & Co Kg Verfahren zum Betrieb eines Computersystems und Computersystem
US6711660B1 (en) 2001-06-22 2004-03-23 Western Digital Ventures, Inc. System and method for performing disk drive diagnostics and restoration using a host-inaccessible hidden partition
US6862681B2 (en) 2001-07-16 2005-03-01 International Business Machines Corporation Method and system for master boot record recovery
DE60131028D1 (de) * 2001-08-31 2007-11-29 Legend Beijing Ltd Verfahren zum sichern und wiederherstellen von daten in der festplatte eines computers
JP2003084979A (ja) 2001-09-07 2003-03-20 Internatl Business Mach Corp <Ibm> 電子装置の起動方法、電子装置およびプログラム
US7251812B1 (en) * 2001-10-31 2007-07-31 Microsoft Corporation Dynamic software update
CN1286012C (zh) * 2002-03-20 2006-11-22 联想(北京)有限公司 计算机硬盘内信息恢复和备份的实现方法
JP2004038716A (ja) * 2002-07-05 2004-02-05 Hitachi Printing Solutions Ltd 障害発生時の自動復旧機能を備えたファームウェア更新方法
US7194659B2 (en) * 2002-12-10 2007-03-20 International Business Machines Corporation Method and system for detection and correction of entrance into an improper MBR state in a computer system
US20040158701A1 (en) * 2003-02-12 2004-08-12 Dell Products L.P. Method of decreasing boot up time in a computer system
KR20040083236A (ko) * 2003-03-21 2004-10-01 엘지전자 주식회사 메모리의 프로그램 업그레이드 방법
WO2004090722A1 (en) * 2003-04-11 2004-10-21 Star Softcomm Pte Ltd Data isolation system and method
KR101115486B1 (ko) 2003-08-08 2012-02-27 엘지전자 주식회사 컴퓨터 시스템의 부팅 제어 장치 및 방법
KR100506203B1 (ko) * 2003-09-17 2005-08-05 삼성전자주식회사 부팅 및 부트 코드 업데이트 방법 및 시스템
US7549042B2 (en) * 2003-12-16 2009-06-16 Microsoft Corporation Applying custom software image updates to non-volatile storage in a failsafe manner
US20060041738A1 (en) * 2004-08-17 2006-02-23 Yu-Chen Lai Recovery method for master boot record of hard disk drive
TWI263939B (en) * 2004-09-22 2006-10-11 Lite On Technology Corp Dynamic boot system and method, machine readable medium thereof, and construction method for an operating system image
US7698698B2 (en) * 2004-09-30 2010-04-13 Smith Micro Software, Inc. Method for over-the-air firmware update of NAND flash memory based mobile devices
US7484127B2 (en) * 2005-01-13 2009-01-27 Nokia Siemens Networks Oy Method and system for preserving crash dump in a diskless system
US20060288197A1 (en) * 2005-06-16 2006-12-21 Swanson Robert C Identifying an operating system associated with a boot path
US7634689B2 (en) * 2005-09-22 2009-12-15 Advanced Micro Devices, Inc. Boot performance optimization for hard drive for personal internet communicator

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101108679B1 (ko) * 2009-11-04 2012-01-25 삼성메디슨 주식회사 자가진단 및 복원기능을 갖는 초음파 진단 방법 및 시스템
KR101403305B1 (ko) * 2012-08-23 2014-06-05 한국전자통신연구원 백업부트레코드 정보를 이용한 파티션 복구 장치 및 방법
US9286165B2 (en) 2012-08-23 2016-03-15 Electronics And Telecommunications Research Institute Apparatus and method for recovering partition using backup boot record information
KR20190061865A (ko) * 2017-11-28 2019-06-05 엘지전자 주식회사 공기조화시스템의 중앙제어장치 및 그의 소프트웨어 업데이트 방법
KR101947487B1 (ko) * 2018-04-12 2019-05-02 주식회사 케이디티 데이터 자동복구가 가능한 감시 제어 장치

Also Published As

Publication number Publication date
EP1770513A3 (en) 2009-04-15
CN1940878A (zh) 2007-04-04
US8825995B2 (en) 2014-09-02
US20120054475A1 (en) 2012-03-01
KR100750132B1 (ko) 2007-08-21
US8166285B2 (en) 2012-04-24
US20140337608A1 (en) 2014-11-13
EP1770513A2 (en) 2007-04-04
US9792105B2 (en) 2017-10-17
US20070073978A1 (en) 2007-03-29
EP1770513B1 (en) 2013-07-03
CN1940878B (zh) 2012-05-23

Similar Documents

Publication Publication Date Title
KR100750132B1 (ko) 부팅, 소프트웨어 자동 업데이트 및 에러 복원 방법과 그시스템, 그 방법을 기록한 컴퓨터 판독 가능한 기록매체
US8271833B2 (en) Method, system and article of manufacture for system recovery
TWI384367B (zh) 韌體更新系統及方法
KR101143112B1 (ko) 페일세이프 방식으로 맞춤 소프트웨어 영상 갱신을불휘발성 저장 장치에 적용하는 시스템 및 방법
US7971199B1 (en) Mobile device with a self-updating update agent in a wireless network
JP5113700B2 (ja) ファームウェア更新装置及び方法
US8196130B2 (en) Tri-phase boot process in electronic devices
US20070055969A1 (en) System and method for updating firmware
US20040255106A1 (en) Recovery of operating system configuration data by firmware of computer system
US20070074201A1 (en) Method and system for updating software and computer readable recording medium storing the method
WO2022111097A1 (zh) 一种文件更新方法及装置、设备、存储介质
US6205561B1 (en) Tracking and managing failure-susceptible operations in a computer system
CN113254048B (zh) 引导程序更新方法、装置、设备及计算机可读介质
KR20110055841A (ko) 시스템의 복구 방법 및 이를 지원하는 장치
JP2001331327A (ja) 電子機器
US20140156943A1 (en) Information processing apparatus, information processing method, and program
KR100853941B1 (ko) 멀티미디어 저장장치와 데이터 복구방법
JP2005284902A (ja) 端末装置、その制御方法及び制御プログラム、ホスト装置、その制御方法及び制御プログラム、遠隔更新システム、方法及びプログラム
CN113806139B (zh) 操作系统恢复方法、设备、存储介质及计算机程序产品
CN114461257B (zh) 操作系统数据配置方法、设备、存储介质及程序产品
KR20070060448A (ko) 2단계 부트로더를 이용한 시스템 업그레이드 장치 및 방법
CN113918199A (zh) 底层固件程序的更新方法、存储介质以及电子设备
US20030237021A1 (en) Automatic restoration of software applications in a mobile computing device
CN113467797B (zh) 程序更新方法、装置和系统以及计算机可读存储介质
CN117873513A (zh) 一种嵌入式系统的usb升级方法、嵌入式设备及存储介质

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
G170 Publication of correction
FPAY Annual fee payment

Payment date: 20120730

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20130730

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140730

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20150730

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20160728

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee