임베디드 리눅스 기반 동적 소프트웨어 업그레이드 기술 Dynamic SW upgrade for embedded systems 2009.

Download Report

Transcript 임베디드 리눅스 기반 동적 소프트웨어 업그레이드 기술 Dynamic SW upgrade for embedded systems 2009.

임베디드 리눅스 기반
동적 소프트웨어 업그레이드 기술
Dynamic SW upgrade for embedded systems
2009. 11. 6
이 민석
한성대학교 컴퓨터공학과
[email protected]
SevenCore Co. Ltd.
2
임베디드 시스템에서의 SW 업그레이드
IPTV STB
장비를 처음 켜면
: 업그레이드 체크, “업그레이드 수행할까요?”
: 신규 SW 다운받아 설치 한 후 재부팅, 재시작
영화 감상 도중에
: 자동으로 신규 SW 다운로드, 설치
: 수정내용 즉각 반영 불가, “지금 재부팅 할까요?”
임베디드 시스템의 메모리 구조
Flash 메모리
: 비휘발성 메모리로
코드가 저장되는 곳
SevenCore Co. Ltd.
RAM 메모리
: 휘발성 메모리로
코드가 실제 실행되는 곳
서비스 지연
서비스 중단
시스템 재부팅
3
[SW 업그레이드] 기존방식 vs. 신규방식
Flash
메모리
SDRAM
메모리
Flash 메모리 업그레이드
: 비휘발성 메모리로
코드가 저장되는 곳
Flash
메모리
Flash 메모리 업그레이드
: 비휘발성 메모리로
코드가 저장되는 곳
SDRAM
메모리
동적 업그레이드 방식
다운받은 패치파일로
RAM 메모리의 수행 코드 수정
(Flash 메모리의 기존 코드수정)
서비스 중단
시스템 재부팅


정적 업그레이드 방식

서비스 단절 피해
100% 가용성 훼손
실생활 위험 초래

다운받은 패치파일로
Flash 메모리의 기존 코드수정



SevenCore Co. Ltd.
RAM 메모리 업그레이드
: 휘발성 메모리로
코드가 실제 실행되는 곳
통신장비
의료장비
발전소
군사 무기체계
재부팅 없음
서비스 지속
동적 업그레이드 지원 범위
4




Kernel, LKM, Application – 가능
프로그램의 Code 영역이 수정되었을 경우 - 가능
프로그램의 Data 영역이 수정되었을 경우 – 부분적으로 가능
동적 업그레이드 관련 논문에서는 100%의 동적 업그레이드 지원을 위해 데
이터 스트럭쳐 업그레이드를 지원해야 함




아직 검증되지 못한 방법
코드 뿐만 아니라 data영역도 업그레이드를 시도
단점 :개발자가 업그레이드를 위해 소스를 분석하고 업그레이드 코드를 위해 추
가적으로 코드를 작성해야 하는 등의 일을 수행 즉 자동화된 업그레이드 이미지
를 생성 못함.
“2005~2008 리눅스 커널의 보안 패치 중 88%가 함수 단위의 코드 업그레이
드로 패치가 가능” [Ksplice]
SevenCore Co. Ltd.
기술 개요
5

기술 요약


실제 만들어야 할 것


임베디드 시스템을 위한 동적 소프트웨어 업그레이드 기술
시스템 중단 없는 동적 SW 업그레이드를 위한 프레임워크
목표

다양한 임베디드 시스템에서 시스템의 정지 및 재부팅 없이 소프트웨어의
버그패치 및 업그레이드를 수행하는 소프트웨어 솔루션을 개발
동적 업그레이드 프레임워크
패치생성도구 (IDE)
Old-New 코드 비교를 통해
작은 크기의 업그레이드
패치파일 자동 생성
SevenCore Co. Ltd.
업그레이드 서버
타겟시스템으로
패치파일 전송
타겟시스템 관리자
다운받은 패치파일로
RAM 메모리의 수행 코드 수정
(Flash 메모리의 기존 코드 수정)
동적 업그레이드 프레임워크 구성 모듈
6
Source/Object Repository
Sources Files
개발도구(IDE)
Object Files
Upgrade Generator
Upgrade Engine
Object
Analyzer
Version
Manager
Image
Generator
업그레이드 서버
DM Client
Upgrade DB
Target
Info
Software Device
Manager Manager
Upgrade DM
Version
Manager
Firmware
Manager
Security
Manager
SevenCore Co. Ltd.
DM Registry
Security Version
Manager Manager
Upgrade
Image
Application
Manager
Upgrade Upgrade
Console
GUI
Network
타겟 시스템
Upgrade Driver
SW Info
Device Info
Redirection
Handler
Downloader
Target Upgrade Manager
Download
Manager
Dynamic Image Firmware Flash Safe-point
Manager
Updater
Updater
기술 개발 단계
7

동적 업그레이드 프레임워크 설계

프로토타입 시스템 구현 & 검증




공개소스 운영체제인 임베디드 리눅스 운영체제 기반
공개 개발도구인 GNU tools – Eclipse 사용
모바일 단말기에 구현 (Mobile Processor)
실제 임베디드 시스템에 적용

개발된 동적 업그레이드 프레임워크를
안드로이드 플랫폼에 적용
SevenCore Co. Ltd.
패치 생성 도구
8

패치파일을 자동으로 생성하는 모듈


이클립스(Eclipse) Plug-in으로 구동됨 (Linux & MS Windows)
Old-New 오브젝트 파일 비교를 통해 패치파일 자동 생성



Source 및 Object Repository 유지
몇 번의 마우스 클릭으로 패치파일 자동 생성
패치 파일은 ELF와 유사한 구조
SevenCore Co. Ltd.
업그레이드 서버
9

패치파일을 Target 시스템으로 전송하는 업그레이드 서버 SW



다수의 단말기로 패치파일을 전송
오픈소스 프로젝트 ‘Funambol Framework’을 기반으로 제작
단말기 원격관리를 위한 OMA-DM 국제표준을 준수


OMA(Open Mobile Alliance)에서 제정한 단말기 관리 표준
Device Management Requirements: OMA-RD-DM-V1_2
SevenCore Co. Ltd.
타겟 시스템 관리자
10

타겟시스템의 기존 소프트웨어를 업그레이드, 관리, Redirection



업그레이드 서버로부터 패치 파일을 다운 받아 타겟 시스템의 RAM에서 구동중인
기존 SW를 재부팅 없이 신규 SW로 교체
기존 함수 첫 머리에 illegal instruction 삽입  trap 발생  트랩 핸들러가 새로운 함수로
분기하는 방식 적용 (old-new 코드 교체 시간 최소화)
리눅스 기반 안드로이드 폰에 적용


리눅스 2.6.27, 안드로이드 1.0 탑재
동적 업그레이드 기능 (타겟시스템 관리자 SW) 탑재
SevenCore Co. Ltd.
11
핵심 기술요소
임베디드 시스템을 위한
동적 소프트웨어 업그레이드 기술
개발도구
- 패치파일 생성 기술
업그레이드 서버
- 다운로드 기술
타겟시스템
- 패치적용 기술
제품 적용
- 스마트폰 적용
오브젝트 파일
비교 분석 기술
다운로더
구현 기술
RAM 수행코드
교체 기술
안드로이드 플랫폼
구축 기술
패치파일
제작 기술
OMA-DM
표준 수용
Flash 이미지
Upgrade 기술
동적 업그레이드
솔루션 적용 기술
IDE 환경 통합
(Eclipse Plug-in)
다운로드
서버 구축
Trap handler
처리 기술
데몬 프로그램
제작 기술
패치파일
압축 기술
버전 관리자
구현 기술
성능 개선 기술
안드로이드 기반 UI
프로그램 구현 기술
SevenCore Co. Ltd.
12
동적 업그레이드 솔루션 구동 시나리오
업그레이드
관리자
업그레이드
서버
7. 업그레이드 요청
8. 연결 설정
9. 장비 정보 교환
타겟 시스템
5. 업그레이드
이미지 생성
4. New-Old
프로젝트 다운로드
12. 이미지 다운로드
3. 업그레이드 요청
10. 업그레이드 지시
6. 이미지 등록
13. 업그레이드 실행
소스코드
저장공간
1. 수정 2.Commit
개발자
SevenCore Co. Ltd.
13
업그레이드 이미지 생성과정
old kernel source
new kernel source
build
build
kernel object/image
kernel object/image
file tree
file tree
divide
kernel objects
divide
kernel objects
kernel binary image
object
binary diff
kernel binary image
binary diff
deference functions
firmware delta image
processing
Modify delta image
dynamic upgrade image
For RAM
For Flash
package
+
upgrade package
SevenCore Co. Ltd.
additional information
동적 업그레이드
14

RAM 상의 기존 코드를 신규 코드로 교체하기
(1단계) 신규 함수 코드를 RAM 상의 임의 영역에 로드하기
(2단계) Trap 핸들러 수정하기 (신규 코드로 jump 하도록 함)
(3단계) 기존 함수 코드 첫머리에 illegal instruction 삽입하기



메인 함수
신규(수정) 함수
기존 함수
Upgrade Hash Table
SDRAM
구동 SW
Function :
1
Function :
illegal
Instruction
2
A
B
New C
D
신규
코드
삽입
E
call
original
function
exception
Address
new function
address
0x0000a211
0x00010000
...
...
Function :
3
illegal instruction Handler
Search a Function address
Stack Manipulation
4
5
SevenCore Co. Ltd.
15
Firmware Delta 적용
Delta File
Previous Program
Image
Current Program Image
Copy
Insert
Data
Copy
Copy
Insert
Insert
Data
Copy
SevenCore Co. Ltd.
기대 효과
16
제품 검증시간의 획기적 단축
•
•
•
•
소프트웨어의 복잡성이 커짐에 따란 버그 가능성 증가
테스팅을 많이 하면 할 수록 버그는 줄어드나 비용은 증가
차후에 발견된 버그는 차후에 수정하여 다시 배포.  제품 시장 적기 출시, 검증비용 절감
국내 단말 제조기술과 시너지 효과를 일으켜 국가 경쟁력 확보에 기여
제품 유지보수 비용의 획기적 절감
• 원격지에서 자동으로 제품의 SW를 편리하게 관리  관리 비용 절감
• 모든 제품의 SW를 항상 최신 버전으로 관리 가능.  고객 만족도 높임
• 효율적 SW 업그레이드 수행  단말기 개발회사와 서비스 사업자의 수익 극대화에 기여
서비스 상시성(無정지) 유지
• 상시성이 요구되는 분야의 서비스 단절 방지 (국가통신망, 의료기기, 공장생산설비, 발전소, 군용시스템)
• 시스템 중단에 따른 비용손실을 제거  추정이 불가능한 막대한 2차적 경제적 이득 발생
SevenCore Co. Ltd.
17

[결과 시연]
시제품 –리눅스 스마트폰 플랫폼
[버그 존재]
① 키패드 버그 – 숫자키 오동작
② 사운드 버그 – 소리 깨짐
[전원키] 전원 On/Off
(부팅에 2분 소요)
메인메뉴로
되돌아 가는 버튼
SevenCore Co. Ltd.
18
[결과 시연]
개발자
개발도구-이클립스
- 키패드 디바이스
드라이버 코드 수정
- 사운드 디바이스
드라이버 코드 수정
① 패치파일 생성
④ 패치파일 적용
업그레이드 완료
- 키패드 버그 수정
- 사운드 버그 수정
(재부팅 없음)
② 패치파일 전송
(업로드)
업그레이드
서버
③ 패치파일 전송
(다운로드)
SevenCore Co. Ltd.
19
[결과 시연]
SevenCore Co. Ltd.
20
감사합니다.
임베디드 리눅스 기반
동적 소프트웨어 업그레이드 기술
Q&A
SevenCore Co. Ltd.
성능 검증
21

임베디드 리눅스의 모든 구성 모듈에 대해 검증 실시

수정 후 동적 업그레이드 실시하여 정동작 확인
ipc
kernel
lib
mm
scripts
Doc
cdrom
/usr/src/linux
alpha
driver
arch
fs
init
i386
block
include
net
char
net
802
pci
m68k
coda
asm-alpha
appletalk
pnp
mips
ext2
asm-arm
decnet
sbus
ethernet
scsi
ppc
sparc
arm
boot
kerne
l
lib
math-emu
mm
SevenCore Co. Ltd.
hpfs
msdos
asm-i386
ipv4
sound
nfs
linux
unix
video
isofs
net
sunrpc
ntfs
scsi
x25
video
22

Dynamic Image 생성 과정 I
object 파일 내부의 text section 비교
static unsigned int FunctionB()
{
…
}
기존 코드 AAA

Object Code 비교
00000000 <
e1a0c00d
e92dd870
e24cb004
e24dd004
e59040c8
e1a05000
e5907094
ebfffffe
e2504000
e1a01000
e1a05000
Function B>:
mov
ip, sp
stmdb
sp!, {r4, r5, r6, fp, ip, lr, pc}
sub
fp, ip, #4
; 0x4
sub
sp, sp, #4
; 0x4
ldr
r4, [r0, #200]
movr5, r0
ldrr7, [r0, #148]
bl34 <Function B +0x34>
subsr4, r0, #0; 0x0
mov
r1, r0
mov
r5, r0
SevenCore Co. Ltd.
static unsigned int FunctionB()
{
…
수정 코드 BBB
}

Object Code 비교
00000000 <
e1a0c00d
e92dd870
e24cb004
e24dd004
e59040c8
e1a01000
e1a05000
Function B>:
mov
ip, sp
stmdb
sp!, {r4, r5, r6, fp, ip, lr, pc}
sub
fp, ip, #4
; 0x4
sub
sp, sp, #4
; 0x4
ldr
r4, [r0, #200]
mov
r1, r0
mov
r5, r0
Dynamic Image 생성 과정 II
23

함수 코드 추출
00000000 < Function B>:
0:e1a0c00d movip, sp
4:e92ddff0 stmdbsp!, {r4, r5, r6, r7, r8, r9, sl, fp, ip, lr, pc}
8:e24cb004 subfp, ip, #4; 0x4
c:e24dd02c subsp, sp, #44; 0x2c
...
Function A
Function B
Function D
Text
sections
2c:e1a05000 movr5, r0
30:e5907094 ldrr7, [r0, #148]
34:ebfffffe bl34 <Function B +0x34>
38:e2504000 subsr4, r0, #0; 0x0
3c:b1a08004 movltr8, r4
Function E
...
Function F
5c:e58d9004 strr9, [sp, #4]
Function G
64:e2508000 subsr8, r0, #0; 0x0
Function H
58:e58da000 strsl, [sp]
60:ebfffffe bl60 <Function B +0x60>
68:1a000042 bne178 <.text.vfat_mkdir+0x178>
fc:e59f0020 ldrr0, [pc, #32]; 124 <.text.vfat_mkdir+0x124>
...
100:ebfffffe bl100 <Function B +0x100>
Rodata sections
Data sections
104:e1a00008 movr0, r8
108:e24bd028 subsp, fp, #40; 0x28
10c:e89daff0 ldmiasp, {r4, r5, r6, r7, r8, r9, sl, fp, sp, pc}
110:e1a00005 movr0, r5
SevenCore Co. Ltd.
24

Dynamic Image 생성 과정 III
함수 코드 내부 심볼 재배치
00000000 < Function B>:
0:e1a0c00d movip, sp
4:e92ddff0 stmdbsp!, {r4, r5, r6, r7, r8, r9, sl, fp, ip, lr, pc}
8:e24cb004 subfp, ip, #4; 0x4
c:e24dd02c subsp, sp, #44; 0x2c
...
2c:e1a05000 movr5, r0
30:e5907094 ldrr7, [r0, #148]
34:ebfffffe bl34 <Function B +0x34>
38:e2504000 subsr4, r0, #0; 0x0
3c:b1a08004 movltr8, r4
...
58:e58da000 strsl, [sp]
5c:e58d9004 strr9, [sp, #4]
60:ebfffffe bl60 <Function B +0x60>
64:e2508000 subsr8, r0, #0; 0x0
68:1a000042 bne178 <.text.vfat_mkdir+0x178>
fc:e59f0020 ldrr0, [pc, #32]; 124 <.text.vfat_mkdir+0x124>
...
100:ebfffffe bl100 <Function B +0x100>
104:e1a00008 movr0, r8
108:e24bd028 subsp, fp, #40; 0x28
10c:e89daff0 ldmiasp, {r4, r5, r6, r7, r8, r9, sl, fp, sp, pc}
110:e1a00005 movr0, r5
SevenCore Co. Ltd.
타겟에서 실행 가능하도록 심볼 재
배치
25
FLASH: Firmware Image Updater
IN-PLACE Copy !?
Version 1
Image
Version 2
Image
Delta
Generator
create
Flash Image
Updater
Script의 내용을 읽고
FLASH 내용 Update
write
Install script
Install script
Byte-Level Difference Image (Delta Image)
Byte-Level Difference Image (Delta Image)
SevenCore Co. Ltd.
26
타겟에서 업그레이드 적용 과정
upgrade package
check safe point
analysis dynamic
upgrade image
register functions
insert illegal
instructions
analysis firmware
relocation functions
delta image
firmware delta
upgrade
SevenCore Co. Ltd.