Go Back   AppleForum > Lounge > Mac Column

 
 
thread_tools
2007-07-13, 11:08 PM   #1
casaubon
Moderator
 
casaubon's Avatar
 
Registered: Sep 2001
My Mac: MacBook Air
Posts: 2,137
오프라인
iPhone의 OS X과 Leopard, 그리고 Vista

Leopard, Vista and the iPhone OS X Architecture

Thursday, July 12, 2007

다른 통신망에서 사용하거나, 소프트웨어의 수정, 설치를 위해 아이폰을 크랙킹하려는 사람들이 많다. 필자는 그들이 발견하는 것들이 더 흥미롭다. 아이폰의 숨겨진 기능이 무엇인지 알아낼 힌트를 제시해서이다. 올해는 레퍼드와 비스타의 해이다. 그들이 무엇을 발견했는지, 아이폰의 운영체제가 맥오에스텐과 어떤 관련이 있는지 알아보자.

iPhone OS X.
맥오에스텐과의 유사성을 없애고 소비자들에게 현실감을 안주기 위해, 애플이 주의깊게도 "오에스텐"이라고만 부른다는 보도가 여기 저기 나왔었다. 하지만 아이폰에 들어간 운영체제는, 간소하기는 해도 있을 것 다 있는 맥오에스텐이다.

즉, Mach 커널과 유닉스 유저랜드, 코코아 프레임웍, 맥오에스텐 애플리케이션 번들, 그 외 넥스트스텝에서 나온 여러 가지 것들이 모두 들어 있다는 의미다.

하지만 아이폰은 휴대용 기기다. 즉, 데스크톱-위주의 개념을 단순화시키거나, 정리를 해 주고, 혹은 휴대용 기기 고유의 요구에 따라 변경을 시켜 주어야 한다. 또한 아이폰은 새로 나왔고, 깔끔한 아키텍쳐를 갖고 있기에, 예전 식의 소프트웨어를 지지하기 위한 여러 가지 맥 개념은 빠져 있기도 하다.

아이폰은 또한 10월까지 나오지 않을 레퍼드와 관련된 아이디어를 많이 포함하고 있다. 사실 이 아이디어들이 공개불가로 묶여있기에, 주의깊게 말해야 한다. 제일 실용적이고 중요하다고 생각하는 부분을 꼼꼼히 따져보겠지만, 우선적으로는 레퍼드가 무엇인지, 레퍼드가 마이크로소프트 윈도 비스타와는 얼마나 다른지부터 알아보는 편이 유용할 것이다.


[iPhone Not Running OS X - Slashdot]

[iPhone 인사이드: Mac OS X과, ARM, 그리고 iPod OS X ]
[iPhone용 OS X과 WinCE, Palm, Symbian, 리눅스]
[OS X은 어떻게 iPhone에 들어갔을까?]
[윈도모바일과 아이폰은 어떻게 다를까]

The Development of Mac OS X.
맥오에스텐과 윈도 모두 같은 작업을 하는 부분이 많지만, 서로 다른 시장 수요와 개발에 있어서 애플과 마이크로소프트는 공히 고유의 방식을 사용한다. 이 때문에 의미 있는 전체 비교는 어렵다. 그 부분에 대해서는 "Leopard 대 Vista" 기사 시리즈에서 밝혀왔다.

2000년 이후, 애플은 꾸준한 개발 과정을 구축해왔다. 매년 소매용 버전을 새로 내놓기도 하면서, 최근에는 18개월의 판매 주기를 보이고 있다.

  • Mac OS X 10.0: 2001. 3월.
  • Mac OS X 10.1: 2001. 9월.
  • Mac OS X 10.2 Jaguar: 2002. 8월.
  • Mac OS X 10.3 Panther: 2003. 10월.
  • Mac OS X 10.4 Tiger: 2005. 4월(1년 반 뒤).

2006년, 애플은 인텔 맥으로 이주하였고, 인텔용 맥오에스텐 타이거도 나왔다. 올해 레퍼드는 아이폰이 사용하는 ARM 아키텍쳐용 오에스텐때문에 연기가 되었다. 이 두 가지 버전은 요란한 마케팅용 기능이 없었지만, 애플의 운영체제 개발을 새로운 방향으로 이끌었다.

  • Mac OS X 10.4.4 Tiger for Intel: 2006. 1월.
  • iPhone OS X 1.0 (Leopard 기반): 2007. 6월.
  • Mac OS X 10.5 Leopard: 2007. 10월 예정.

[윈도우즈는 맥오에스텐보다 비용이 다섯 배]
[Leopard 대 Vista]

The Development of Vista.
레퍼드는 2001년~2003년간 끌었다가 윈도서버2003 기반으로 재시작하였지만 그로부터도 3년을 더 끈 마이크로소프트의 롱혼/비스타 프로젝트 방식으로 연기되지 않았다.

비스타는 올해 초, 소매판매제품으로 제공되었다. Windows XP에 새로운 아키텍쳐를 얹어 놓은 모습으로 나온 윈도가 바로 비스타이다.

  • .Net 3.0 개발 프레임웍: Win32 프로그래밍 API를 대체할 프레임웍.
  • Avalon 혹은 Windows Presentation Foundation 그래픽 레이어: 2001년 맥오에스텐에 등장한 쿼츠(Quartz)와 유사함.
  • 엄청난 보안 작업

자, 써드파티 윈도 개발자들은 비스타에 특정한 애플리케이션을 만들지, 아니면 Win32 작업을 계속해서, 비스타의 보안이나 견고함이 어느정도인가 두고볼지를 결정해야 한다.

사용자들도 마찬가지다. 더 비싼 새 운영체제로 업그레이드해야 할 이유가 있는지 고민해야 한다. 사실 비스타는 새로 팔리는 모든 컴퓨터에 번들된다. 그러나 PC 시장은 201년 이래 확장을 거듭해 왔고, 비스타도 윈도 XP보다 느리다.

[Acer says Vista not helping PC sales much | Tech news blog - CNET News.com]
[Vista's twofold sales boost: Microsoft should thank PC market growth - Ars]
[Windows Vista Makes Limited Impact On PC Sales, Analysts Reveal - InformationWeek]
[In-Stat: Vista not goosing PC sales - Computerworld]

Ongoing Maintenance Updates of Mac OS X vs Windows Vista.
메이저 업데이트를 하면서, 애플은 34번의 무료 업데이트를 실시하였다. 마이크로소프트의 서비스팩고 비슷한 개념이다. 둘 모두 새기능과 버그 수정, 새로운 애플리케이션의 패키지로 이루어져있다.

34번의 숫자에는 보안 업데이트나 펌웨어 업데이트, 다른 애플리케이션 업데이트나 특별한 아키텍쳐용으로 포팅된 업데이트(인텔과 PowerPC)는 포함이 안 되어있다. 맥오에스텐 서버 버전의 무료 업데이트도 포함시키지 않았다.

  • Mac OS X 10.0-10.1: 7번 무료 업데이트.
  • Mac OS X 10.2 Jaguar: 8번 무료 업데이트.
  • Mac OS X 10.3 Panther: 9번 무료 업데이트.
  • Mac OS X 10.4 Tiger: 10번 무료 업데이트.

2001년에 나온 윈도 XP와 2007년에 나온 비스타 사이에, 마이크로소프트는 세 번의 서비스팩 업데이트를 소비자용 운영체제에 실시하였다.

  • Windows XP Service Pack 1 in 2002.
  • Windows XP Service Pack 2 in 2004.

Windows XP Service Pack 3은 현재 2008년 전반기에 나올 예정이다.

웍스테이션과 서버 제품에서, 마이크로소프트는 윈도 2000 Service Pack 4를 2003년, 그리고 2005년, "SP4 Rollup 1"로 선보였다. 윈도 2003서버용으로는 두 번의 서비스팩이 있었다. "R2" 임시 서버 업데이트도 있었다.

마이크로소프트로부터는 일곱 번의 무료 업데이트가 있었다. 같은 방식으로 센다면 애플은 70번도 넘게 무료 업데이트를 하였다. 어떻게 보던지간에, 마이크로소프트와 그 팬들의 얼굴은 붉어질 수 밖에 없겠다.

[1995년은 2007년에 되풀이될 수 없다]

Selling the Past vs. Delivering the Future.
1990년 이래 윈도를 개발하면서, 마이크로소프트는 주기적으로 새기능을 운영체제에 덧붙여왔다. 새로운 운영체제를 소매용 제품으로 판매하기 위해서이기도 하지만, 주로 새 컴퓨터 수요를 부추기기 위해서였다. 새 컴퓨터에 번들된 윈도가 마이크로소프트 사업의 절대다수를 차지하기 때문에, 마이크로소프트는 운영체제 없이 팔리는 중국의 컴퓨터와 맞서싸우고 있다. 사람들이 윈도를 자동적으로 구입하지 않는다면, 나중에도 스스로 선택할리 만무하다.

윈도 95와 98, 2000, XP는 모두 새로운 컴퓨터 판매를 일으켰다. 업계 관계자들은 지난 몇 년간의 컴퓨터 매출 저조가 비스타 연기때문이라 비난할 정도였다. 그러나 마이크로소프트는 6년 묵은 운영체제를 계속 팔 수도 있었다. 애플과 사못 대조되는 바이다.

마이크로소프트와는 달리 애플은 5년 묵은 제품을 팔지 않고, 누가 그것을 사주리라 기대하지도 않는다. 애플은 실제 시장에서 경쟁하기에, 업데이트를 내놓지 않으면 안된다. 윈도만 권장하는 OEM으로 이뤄지는 자동수입에 안주해도 되는 회사가 아니다.

그런데 마이크로소프트의 이 사업방식마저도 요새 문제에 휩싸여 있다. 207년 6월 27일, 가트너의 조지 쉬플러(George Shiffler)가 쓴 보고서, “First Half Sales Show Vista Operating System Has Not Been a Growth Driver for the PC Industry”를 보자.

"마이크로소프트 윈도 비스타 운영체제는 1월 말에 나왔다. 그러나 지금까지 희망만큼 시장을 활성화시키지 못하였다. 본사의 시장 데이터를 보면, 비스타는 PC의 신규수요와 대체수요에 제한적인 영향을 미첬을 뿐이다. 마이크로소프트가 마케팅에 보다 공격적으로 임하지 않는 한, 우리는 비스타가 앞으로도 상당한 영향을 끼치리라 보지 않는다."

[Vista Has Not Been a Growth Driver for the PC Industry - Gartner]
[Leopard는 나올 시기를 놓쳤는가?]

Internal Architectural Improvements vs Marketing Features.
마이크로소프트를 따라잡고 추월하기 위해, 애플은 전체적인 아키텍쳐로서의 맥오에스텐의 개발 계획을 계속 진행해야 한다. 데스크톱 상에서 마이크로소프트를 계속 추월하는 것뿐만이 아니다. 다른 시장, 즉, 애플티비와 아이폰에 있어서도 경쟁우위에 서야 한다.

하드웨어 업체로서 애플은 그 지위가 독특하다. 윈도처럼 옛 프로그램 호환 문제를 겪지 않아도 된다. 덕분에 애플은 새로운 소프트웨어 기술과 하드웨어 통합을 보다 빠르게 할 수 있었다.

애플은 맥오에스텐의 메이저 업데이트를 다섯 번 실시하였다. 새로운 프로세서 아키텍쳐로 이주한 두 번은 세지도 않았는데 다섯 번이다. Spotlight나 Dashboard, Exposé같은 마케팅용 기술도 있긴 하지만, 메이저 업데이트를 팔기 위한 기술일 뿐이다. 내부적으로는 각 업데이트마다 훨씬 중요한 기술 발전이 들어 있다.

마찬가지로 레퍼드 역시 마케팅 기능만이 아니다. 애플의 광고가 다가 아니다.

오히려 애플이 2005년 타이거를 선보인 이후, 중요한 발전이 레퍼드이다. 레퍼드의 진짜 가치는 타임머신이니, 스페이스가 아니다. 애플리케이션이 만들어지는 핵심 기술이다.

[Leopard 출시연기와 iPhone]

Leopard in the iPhone.
일찌기 언급했지만, 아이폰과 맥은 주요 기술을 공유하기에, 아이폰의 성공은 두 제품 모두를 위한 핵심 OS 기술 투자를 증대시키게 된다.

애플은 천 만대의 아이폰을 내년 말까지 판매할 계획이다. 애플티비도 수백만 대는 팔 것이다. 즉, 맥오에스텐 기반 제품이 매년 배증한다는 의미다. 여기서 생기는 수익이 운영체제 개발과 공유 프레임웍, 애플리케이션 로직에 어떻게 투자될까?

퀵타임과 메일, 사파리로, 매년 530만 대의 맥 소비자를 유치하는 대신, 올해에는 1200만 대, 2008년에는 거의 2000만 대가 맥오에스텐을 안에 품고 나오게 된다.


[AppleTV 인사이드]

아이폰은 맥과 매우 다르다. 따라서 아이폰용 오에스텐은 맥과 다른 부분도 있는 반면, 맥보다 앞선 부분도 있고, 단순화되거나 사라진 부분도 있다. 다음 기사는 아이폰 소프트웨어 아키텍쳐가 맥과 어느 정도로 다른지 알아보도록 한다.


Like reading RoughlyDrafted? Share articles with your friends, link from your blog, and subscribe to my podcast!

Did I miss any details?


Leopard, Vista and the iPhone OS X Architecture
__________________
FAQ

casaubon 님께서 2007-07-13 11:10 PM 에 수정하셨습니다..
  Reply With Quote
2007-07-14, 02:07 AM   #2
trexx
Member
 
trexx's Avatar
 
Registered: Nov 2001
My Mac: Powermac G4-400, MacBookPro 2.0(core duo)
Posts: 59
오프라인
요즘 관심있는 주제인데 까소봉님께서 맛깔스럽게 번역해 주셨네요.^^ 감사합니다.
애플은 MacOS X, iTunes 그리고 Mac Devices 이것 들을 통하여 향후 통합 플랫폼화 시켜 새로운 문화를 이루게 하지 않을까 생각해 봅니다.
윈윈전략으로 요즘 부쩍 구글과 협력하는 것을 보면 애플은 3년 안에 통합 플랫폼 환경을 이룰 것 같습니다. 아이폰이 단순한 기기를 넘어서서 말이지요.

좋은글 감사합니다.^^
  Reply With Quote
2007-07-14, 07:00 AM   #3
firemanx
Veteran Member
 
firemanx's Avatar
 
Registered: Feb 2006
My Mac: iMac Intel Core Duo 20", MacBook 2.0 White, iPod Video 30G
Posts: 635
오프라인
플랫폼 통합은 이전부터 시장에서부터가 아닌 유저들로 부터 펼쳐졌던, 컴퓨터 운영체제 시장 전반에 녹아있는 꿈이였죠. 뭐, OS가 아닌, '브라우저 자체가 플랫폼'이라는 말이 낯설게 여겨지지 않는 지금, 견고하고 안정적이고, 독점이 없는 효율적인 기반 하에, 운영체제의 통합이 필요하리라는 생각입니다.

물론 애플이 그 통합을 달성하게 되면 그것 역시 독점이겠지만, 적어도 누구나 신뢰하고 안정적인 커널이나 운영체제 개념에서 출발할 수 있어야 하는 것이죠.(뭐 저야 유닉스 예찬론자라서 결론이야 뻔하겠지만... --

제가 생각하는 통합은 OS 플랫폼 차원의 통합(특정 운영체제의 전반적인 시장잠식)보다는, 웹과 인터넷 기반의 어플리케이션이 비독점 표준과 신뢰할 수 있는 작동을 기반으로 하는 복수개 이상의 표준 스펙으로 가야한다는 것입니다. 특정 회사의 기술이 개판을 쳐서 사람들의 이성마져 마비시키는 수준이 되어서는 안된다는 뜻입니다.

기업들은 이게 돈이 안된다고 생각하고 레드오션이라고 생각하시는데, 애플이 그렇지 않다는 것을 여실히 보여주고 있다는 생각을 요즘 자주 합니다. 돈이 안된다는 것보다는 생각하고 싫고, 투자비용 때문에, 모험을 두려워 안주하는 전반적인 기업문화 때문이긴 하겠지만요.
__________________
맥도리의 블로그 : http://macdory.blogspot.com
  Reply With Quote
2007-07-14, 08:34 AM   #4
trexx
Member
 
trexx's Avatar
 
Registered: Nov 2001
My Mac: Powermac G4-400, MacBookPro 2.0(core duo)
Posts: 59
오프라인
전혀 다른 얘기이지만^^ 맥오에스 얘기가 나와서 함 적어봅니다.ㅎㅎ
90년대 중반 넥스트를 처음 PC에 깔아 봤을 때 충격은 지금도 생생합니다.
대학로 오투누리(지금도 있나요? 안가본지가 하도 오래되서..)에서 한글 지원되는 NextStep 3.3J(일본판) 씨디를 가슴에 품고 집에 오자마자 깔았었죠.
처음부터 순탄하지 않았습니다. 시디롬 인식시키는 것부터가 곤욕이었지요. primary EDIE만 인식했기에 하드와 씨디롬을 같이 물려야만 인식했었거든요. 그래픽카드도 당시에 제일 비싼 놈만 인식했었습니다. 후진 TRIDENT 2메가 모델을 버려버리고 오직 넥스트스텝을 위해 가난한 대학생 신분으로 거금 20만원 상당을 투자해서 밀레니엄 4메가를 구입했었지요.
고생끝에 부팅해서 처음보는 넥스트 스텝의 데스크탑 화면! 충격이었습니다. 보라색 파스텔톤의 부드러운 배경과 급이 다른 아이콘.. 그리고 아름다운 마우스 동작 지금 쓰고 있는 현재의 맥오에스 X에 많이 남아있긴(물론 그 이후로 엄청난 발전을 했지만요.^^) 하지만 윈도우 3.1 내지 95의 쓰레기 화면과 비교했을 당시의 충격만큼은 감동이 덜하지요.
뭐.. 쓸만한 프로그램을 찾기가 귀찮아서 1~2달 보다가 그만 두었지만요.
벌써 십년이 넘었네요.

사운드잼(아이튠의 전신 프로그램)을 구경한지가 이것도 10년 정도 되니...
넥스트스텝과 사운드잼이 이렇게 발전하게 될지 당시에는 상상 자체가 불가능 했었더랍니다.

그만큼 많이 써왔던 뛰어난 프로그램 아래아한글... 소프트웨어로 통합플랫폼을 이루고 있는 애플과 절대 비교해서는 안되지만... 왠지 우리의 소프트웨어 시장의 한계를 보는 것 같아 가슴이 답답합니다.
저도 소속되어 있지만 공공기관 등 이 아래아한글을 살린다는 불명예의 오해를 오해가 아니라고 선뜻 대답못하고 '아래아한글 훌륭한 프로그램이다!' 진실어린 변명을 하게 됩니다.

삼천포 죄송합니다.ㅡ.ㅡ;;

trexx 님께서 2007-07-14 08:37 AM 에 수정하셨습니다..
  Reply With Quote
2007-07-15, 12:21 PM   #5
casaubon
Moderator
 
casaubon's Avatar
 
Registered: Sep 2001
My Mac: MacBook Air
Posts: 2,137
오프라인
iPhone의 OS X: Mach 커널과 RAM

iPhone OS X Architecture: the Mach Kernel and RAM

Thursday, July 12, 2007

다른 통신망에서 사용하거나, 소프트웨어의 수정, 설치를 위해 아이폰을 크랙킹하려는 사람들이 많다. 필자는 그들이 발견하는 것들이 더 흥미롭다. 아이폰의 숨겨진 기능이 무엇인지 알아낼 힌트를 제시해서이다. 그들이 아이폰 내부의 코어 OS에서 무엇을 발견했는지, 커널부터 시작해 보자.

The iPhone Kernel.
그렇다. Mach다. 애플이 마흐에 묶여있으며, 될 수만 있다면 리눅스 커널로 이주해야 하고, 에이비 티베이니언(Avie Tevanian)이 애플을 떠날 때가 적기이리라 주장하던 소위 전문가들이 얼마나 많았는지 아시는가?

애플이 리눅스 커널로 이주하리라는 억측을 파헤친지가 벌써 지난 해이다. 그런데 이 루머는 WWDC 07에서도 지속되었다. 이번에는 리눅스가 아니라, 썬의 솔라리스 커널로 이주해야 한다는 주장이었다.

마흐 자체에는 잘못이 없다. 현실적으로 애플의 필요에 마흐가 꽤 잘 맞다. 애플이 다른 OS 아키텍쳐로 이주해야 한다면, 아이폰부터 분명 교체를 하든지 했을 것이다. 마이크로소프트도 데스크톱 상에서는 NT 커널을 사용하는 윈도 NT/2000/XP/비스타를 만들었지만, WinCE용으로는 커널을 따로 만들었었다.


[More Predictions for WWDC 2007: Solaris, Google, Surround: Mac OS X with the Solaris Kernel]
[Mac OS X 마이크로커널의 미신을 벗긴다 2]
[Mac OS X 리눅스 커널 미신을 벗긴다 11]
[윈도모바일과 아이폰은 어떻게 다를까]

Kernel Extensions.
아이폰의 마흐 커널은 맥오에스텐과 동일한 I/O Kit 아키텍쳐를 사용한다. 덕분에 애플은 맥에서 이미 검증이 된 성숙한 코드를 대량으로 재사용할 수 있었다. 마흐의 I/O 킷은 kext와 커널 익스텐션으로 로레벨 하드웨어 지원을 한다.

kext와 커닐 익스텐션은 커널에 직접 접속하기때문에, 견고하고 성숙해야 한다. 소프트웨어가 커널 바깥에서 충돌을 일으키면, 보통은 재시작할 수 있다. 그런데 커널 안에서 충돌을 일으키면, 커널패닉을 일으켜서 시스템 자체를 재부팅시켜야 한다. 안 좋은 현상이다

애플은 도저히 다른 방법이 없는 때가 아니라면, 커널 익스텐션 추가를 하지 않도록 권장한다. 이 때문에, 별 다른 이유 없이 kext를 설치하려는 써드파티 소프트웨어가 있을 때 불만이 많다. 안정성에 문제를 가져다줄 수 있기 때문이다.

애플은 아이폰에 두 가지 종류의 kext를 사용하는 스스로의 지침을 세웠다. 첫 번째는 USB 입력이다. 사용자의 휴먼인터페이스와 멀티터치 스크린에 특히 관련있다.

  • IOUSBDeviceFamily
  • IOHIDFamily
  • AppleMultitouchSPI

두 번째는 VPN(Virtual Private Networks)와 관련 있는 익스텐션이다. 이 익스텐션은 네트워크 스택에 붙어서 인터넷과 같은 공공 네트워크를 통한 보안 트래픽을 제공한다.

  • L2TP.ppp
  • PPTP.ppp

[The iPhone Dev Wiki]

Comparing the iPhone Kernel to the Mac's.
아이폰의 커널과 kext는 맥과 동일하지 않다. 가령 데스크톱 맥은 iSight 카메라와 오디오, 비디오 하드웨어, 전력과 온도 관리, 시리얼 인터페이스용으로 있지만, 아이폰은 그런 kext가 없다. 물론 하드웨어 관련은 있으며, PPP.kext도 없다.

아이폰의 모든 하드웨어 지원은 kext보다는 아이폰의 커널 안에 들어가 있는 것으로 보인다. 각 맥 모델은 별다른 하드웨어를 갖고 있기 때문에, 모듈화된 플러그인이 필요하다. 현재 아이폰은 단일 기종이다.

I/O Kit 아키텍쳐로 보면, 애플은 하드웨어 지원을 차후에 늘릴 계획인 것으로 보인다. 그렇다고 하여 별도의 확장 메커니즘 지원에 의존할 필요는 없다. 마흐와 I/O Kit가 처음부터 폭넓은 범위의 하드웨어 지원을 시작했기에 아이폰 또한 이 기능을 물려받아서, "휴대용 OS 커널"을 따로 만들 필요 없이 사용할 수 있다.

마흐 안에는, 시스템이 대기상태나 슬립 상태로 갔을 때 전력을 영리하게 조절하는 세련된 전력 관리가 들어 있다. 이 때문에 아이폰이 첫 번째 세대임에도 불구하고 대단히 효율적인 배터리 수명을 보여준다. 아이폰의 배터리 수명은 비교할 만한 스마트폰들의 두 배에 이른다.

[KernelCache Files List - The iPhone Dev Wiki]

System RAM and Flash RAM.
아이폰과 다른 스마트폰 간의 중대한 차이는 또 있다. 시스템 RAM과 Flash RAM 용량이다. 전문가들은 이 점에 대해 거론하지 않는 분위기이다. 다른 제조업체들에게 많이 불리하기 때문이다. 아이폰이 기술면에 있어서 압도함을 지적하는 것 또한, 정치적으로 불공정하게 느껴지는 모양이다.

아이폰에는 물리적인 디스크 드라이브가 없다. 플래시 RAM 디스크이미지만이 있으며, 이 이미지가 맥 데스크톱의 표준형 DMG 파일 역할을 한다. 데스크톱 DMG 파일은 드라이브 안의 아카이브가 들어 있으며, 맥오에스텐이 이 이미지를 띄울 때, 물리적인 드라이브처럼 행동한다. 하지만 실제로 물리적으로 이동하는 부분이 없이 RAM 안에서만 돌아가기 때문에 속도는 훨씬 더 빠르다.

아이폰은 아이포드처럼 아이튠스를 통해 복구가 가능하다. 그 경우 아이튠스가 초기 DMG 파일을 아이폰으로 복제한다. 그러면 플래시 RAM 상의 디스크 이미지에서 돌리는 오에스텐이 아이폰 안에서 뜨게 된다. Palm OS나 Symbian, 윈도모바일 기기는 "플래시 RAM에서 돌아가는" 유사한 구조이다.


아이폰과 기존 휴대폰이 제일 다른 점은, 기존 휴대폰이 64MB나 128MB의 RAM을 갖고서, 40MB를 OS에 쓴다는 점이다. 즉, 이용자가 쓸 용량이 줄어들어버리고만다. 이 때문에 SD Flash RAM 슬롯으로 더 많은 용량을 확보해야 하지만, 그것마저도 2GB로 제한적이다.

아이폰은 4096MB(4GB)나 8192MB(8GB)를 제공한다. 오에스텐용과 애플리케이션용으로는 700MB이다. 또한 애플리케이션용으로 128MB의 시스템 RAM이 아이폰 안에 들어가 있다. 시스템 RAM만 두 배요, Flash RAM 용량으로는 64배에서 128배이다.

이 때문에 아이폰에는 SD 카드슬롯이 없다. 이미 SD를 합쳤을 때보다도, 이용자가 2~4배의 용량을 더 사용할 수 있기 때문이다.

이 때문에 아이폰은 진정한 인터넷 애플리케이션을 제공할 수 있다. Palm과 Symbian, 윈도 모바일은 아이폰에 따라가려면 운영체제를 완전히 재작성해야한다. 어째서일까?

[Update: SDHD 카드에 대해 물어본 독자들이 있었다. 이 카드는 2GB보다 더 많은 용량을 제공하지만, SDHD 표준을 지원하는 하드웨어에서만 돌아간다. 즉, 예전의 SD 슬롯 휴대폰은 이 카드를 사용할 수 없다. 몇몇 하이엔드급만 SDHD를 사용할 수 있으며, N95가 그 중 하나이다. N95에 SDHD를 통한 8GB 추가는 250달러를 더 요구한다. 원래 가격이 750달러이다. 즉, 아이폰과는 대단히 다른 가격대를 갖게 된다.]

[OS X은 어떻게 iPhone에 들어갔을까?]

Where's the Kernel?
아이폰 커널이 맥과 다른 점은 또 하나 있다. 로케이션이다. 맥에서 마흐 커널은 시스템이 부팅될 때, 표준형 부팅 디스크에서 RAM 안으로 로딩된다. 그런데 맥 커널은 다윈 오픈소스 프로젝트의 일부로서도 나오기에, 개발자들은 자기 코드가 어떻게 돌아가는지 더 잘 알 수 있다.

아이폰은 맥오에스텐 커널의 관련 포트를 돌리지만, 오픈소스가 아니다. 또한 ARM 아키텍쳐이기때문에, 수정이나 최적화를 요구한다.

다윈과 애플의 XNU 마흐 커널에 대해 잘 알고 있는 모든 이들에게 물어보시라. 이들 중 ARM에 대해 잘 아는 사람은 얼마나 될까? 핏자 몇 판으로 충분한 정도밖에 없잖을까? 아이폰 보안의 의미가 이러하다. 아이폰의 코어 OS와 보안에 대해서는 다음 기사에서 쓰겠다.

Like reading RoughlyDrafted? Share articles with your friends, link from your blog, and subscribe to my podcast!

Did I miss any details?


iPhone OS X Architecture: the Mach Kernel and RAM
__________________
FAQ
  Reply With Quote
2007-07-15, 08:23 PM   #6
casaubon
Moderator
 
casaubon's Avatar
 
Registered: Sep 2001
My Mac: MacBook Air
Posts: 2,137
오프라인
iPhone의 디스크와 셸, 그리고 보안

iPhone OS X Architecture: Disk, Shell, and Password Security

Saturday, July 14, 2007

아이폰 아키텍쳐 시리즈로서, 아이폰의 코어 OS 보안이 어떤지 알아본다.

Tampering with the Kernel's Secret Recipe.
아이튠스가 소프트웨어 복구를 할 때, 아이폰에 디스크 이미지 두 개를 복제한다. 해커들은 이 DMG 파일을 꺼내서 파일 목록을 알아볼 수 있었다. 이 DMG 파일은 맥오에스텐 설치 DVD에 있는 것과 유사하다.

지금까지 아이폰에 설치된 소프트웨어의 수정본에 별다른 발전은 없었다. 워낙에 커널의 비밀 레시피가 깊숙이 숨겨져서, 애플의 프라이빗 키가 없는 소프트웨어와는 통신을 거부해서이다.

커널은 해커들이 볼 수 있는 소프트웨어 이미지의 일부가 아니다. 커널은 자체 보안화된 디스크 이미지에 들어있으며, 이를 깨려면 상당한 작업이 필요한 것으로 보인다. 깬다 하더라도 그것이 끝은 아니다. 크랙이 더 필요하다. 너무나 긴 키라서 암호 추측이 완전히 불가능하기 때문이다.

아이폰은 보안화된 커널 이미지를 RAM으로 불러들여와서 부팅하고, 다른 모든 파일이 들어있는 사용자용 디스크 이미지를 불러들인다. 커널은 닫혀있기 때문에, 수정한다거나, 심지어 열람도 불가능하다. 보안이 갖춰져 있어서, 커널은 보안화된 어떠한 디스크 이미지에게도 명령을 내리는 과정도 보안화되어있다.

크래커들이 아이폰 애플리케이션을 추가시키거나, 변화시키기 위해 디스크 이미지 소프트웨어를 수정해낸다 해도, 디지탈 사인하고 맞지 않을 것이며, 커널 자신이 읽기를 거부할 것이다.

Root Password Hacked?
아이폰의 "루트"와 "유저" 암호는 존재한다. 아이폰 또한 오에스 텐이기 때문이다. 그러나 아이폰에서 다중 계정은 쓸모가 없지만, 오에스텐 자신이 유닉스라는 다중 사용자 환경이고, "루트"와 일반 사용자 별로 프로세스를 나누기 위해 필요하다.

이 암호는 BSD 플랫(flat) 파일에 저장되며, 복구용 디스크이미지 파일을 보면 쉽게 얻을 수 있다. 즉, “iPhone root passwords hacked!”는 좋은 머릿기사감이지만, 여기서 얻은 암호를 활용할 방법이 없기에, 별 의미는 없다.

아이폰은 원격 커맨드라인 접속을 제공하지 않는다. 로컬 타미널 셸도 제공하지 않으며, 어떠한 TCP 포트 트래픽에도 반응하지 않기 때문에, 이들 암호로 할 수 있는 일이 없다.

애플티비와는 사못 다르다. 애플티비는 사용자 암호를 통해 기기 접속과 새 소프트웨어 로딩을 쉽게 한다.

[AppleTV 인사이드]

The Fully Interactive Shell!
두 번재로 머릿기사를 장식한 아이폰 기사는, 아이폰 하드웨어에 직접 통신하는 시리얼 콘솔이었다. "인터랙티브 셸로우 완전한 콘솔 접속"이라고들 나왔는데, 실제로는 "명령을 넣었더니, 옵션 목록이 나오더라"이다.

맥오에스텐 터미널과 유사한 콘솔 셸 접속이 아니었다. 크래커들은 정말로 아이폰의 부트로더를 발견하고 있었다. 인텔 맥의 EFI나 PowerPC의 OpenFirmware처럼, 아이폰도 디스크이미지를 얻고, 로딩할 OS를 판별하며, 부팅 환경에 따라 시작하는 세련된 시스템을 갖고 있다.

PC는 훨씬 간단한 BIOS로 이 작업을 한다. BIOS는 다른 OS를 돌리기 위해 필요한 작업이 거의 없다. 그런데 PC에서 윈도 말고 대안이 있던가? 아, 맞다. 리눅스가 있다. 해커들은 워낙에 PC 기초를 단단히 알고 있기에, 이들은 세련된 부트로더를 찾아내기만 하면, 유용한 접속법이 나오잖을까 생각하였다.

하지만 그들이 알아낸 것이라고는 부트로더가 거부하는 리퀘스트 뿐이었다. 사인된 소프트웨어만을 읽기 때문에, 아이폰 파일을 돌리는 것 외에, 얻어내기는 다소 어렵다.

[BIOS PC를 뛰어넘은 애플 펌웨어]
[Hackint0sh Progress Report - Industry Watch]

Running as Root.
루트상에서의 프로세스가 잠재적으로 데스크톱에 완전한 접근권을 터 주는 길이 된다면서, 아이폰의 루트 계정 사용에 대한 비난이 있다. 루트를 사용하게 되면 무제한적인 컨트롤이 가능해진다.

그러나 비판만큼, 아이폰에서 뭐라도 할 만한 악성코드를 집어 넣을 방법이 거의 없다. 애플이 아이튠스를 통해 하는 파일 복사는, 사인 환경을 요구하여 막혀있다. 그 외의 방법을 알아내기란 매우 어렵다.

  • 현재로서는 디스크모드가 없다.
  • OPEX 파일 전송을 위한 블루투스 지원이 없다.
  • 사파리나 다른 인터넷 애플리케이션에서 파일을 다운로드할 방법이 없다.

[Update: Ecamm의 iPhoneDrive 소프트웨어를 지적한 독자들이 있다. 이 소프트웨어는 파일 복사를 해 준다. 실제로 아이포드의 디스크모드처럼 작동하기는 하지만, 아이폰의 오에스텐이 인식하는 복제는 아니다. 즉, 아이폰 상에서 보거나 돌릴 수 없다는 의미이기에, 역시 보안에 대한 효과는 없다.]

[Ecamm Network: iPhoneDrive]
[iPhone Telephony Armageddon - Rixstep]

The ARM Holding Up iPhone's Security Breeches.
쉽게 상상할 수 있는 유일한 보안 약점은 다음과 같다.

  • 사파리의 HTML 렌더링 버그를 활용하여, 브라우저를 콘트롤한 다음, 실행 코드를 투입한다. 문제가 있다. 사파리는 문제가 있어 보이는 경우, 스스로 충돌하여 재시동해버린다. ARM 전용 코드를 알려지지 않은 시스템에 투입시키는 것도 어려울 것이다.
  • Mail 안에 있는 그래픽이나 HTML 렌더링을 활용하여, 실행코드를 투입시킨다. 사파리와 마찬가지의 문제점을 갖는다.

CanSecWest에서, 사파리를 통해서는 누구도 루트 접근권을 얻을 수 없었다. 유일한 공격은 이미 사용자 수준의 접근권을 받은 다음, QuickTime for Java 브릿지를 공격한 것이었다. 자바에는 QuickTime for Java도 없다. 오로지 JavaScript로 해야 할 것이다. 게다가 스스로 충돌을 일으켜서 재시동하기 전에, 즉석에서 ARM용으로 해주어야 한다. 맥가이버나 할 만한 일이다.

[InfoWorld의 맥 보안 헛발질]

iPhone vs Windows on Security.
아이폰이 시장에서 대량 확산되면, 아이폰의 이메일과 웹서비스도 마이크로소프트 윈도 꼴이 나지는 않을까?

다양한 보안 전문가들은 시장점유율과 보안이 상관 있다며, 돈받고 말을 하는데, 사실 보안은 시장점유율의 결과가 아니다. 아이포드와 플레이스테이션은 바이러스나 웜에 전염되지 않았다.

마이크로소프트의 Outlook을 쉽게 침투하여, 바이러스나 웜 확산에 활용하는 이유는, Outlook 자신이 마이크로소프트 Visual Basic for Applications용 스크립트를 포함하여, 코드를 돌리기 위한 디자인이기 때문이다.

Outlook은 이메일 첨부 코드를 기꺼이 돌리며, VBA를 활용할 기회까지 준다. 즉, 주소록에 있는 모든 이메일에 악성 스크립트를 보낸다. 확산속도로 보면 최적의 환경이다. 문제는 이메일이 아니다. 마이크로소프트의 보안에 무지한 그 구현때문이다.

인터넷 익스플로러 또한 마이크로소프트의 ActiveX 아키텍쳐에 따라 임베딩된 프로그램을 자동실행시킨다. 사용자는 자신이 빌 게이츠가 마련해준 지뢰밭에 들어선지도 모르는 채, 프로그램이 자동 실행된다.

하지만 아이폰의 사파리와 메일은 JavaScript 외의 파일이나 첨부코드를 돌릴 어떠한 메커니즘도 갖고 있지 않다. 디자인 자체가 윈도보다 더 안전하다.

[Mac OS X에서는 풀렸지만 윈도우즈에는 여전한 구조적 오류 다섯 가지]

Consider the Source.
윈도는 원격통제에서부터 스크립트 실행, 애플리케이션 실행 등, 그 방법이 많다. 보안이 유지됐다고 가정한 사무실 내의 사용을 염두에 둔 방식이기에, 보안에 대한 감각이 없다. 덕분에 광고/스파이웨어 업자들은 윈도를 이용하여 사업을 벌이기 시작했다.

아이폰은 윈도와 공유하는 부분이 없다. 현재 어떤 네트웍 트래픽도 듣지 않고, 개발도 허용하지 않는 디자인이다. 엔지니어링 자체가 보안을 염두에 두었다.

가트너의 켄 던레이니(Ken Dulaney)는 아이폰에 "파이어월이 없다"며 불만을 제기하였다. 웃기는 일이다. 자신이 이해하는 바나, 지식이, 자신의 하는 말이 못따라가고 있다. 바보처럼 보이는 순간이다.

로브 엔더를(Rob Enderle)이나 여타 다른 월급받는 윈도 열광론자들과 마찬가지로, 던레이니는 윈도가 엔지니어링의 빛나는 성과가 아니라는 점을 모르거나, 아니면 인정하고 싶어하지 않는 모양이다. 직장 생활 내내 치어리더 역할을 했던 상대가 실제로는 절대적으로 무능하다는 사실을 드러내기가 참 어렵긴 할 것이다.

[Secret iPhone Details Lost in a Sea of Hype and Hate]
[iPhone security chatter is only a distraction - Jon Espenschied, Computerworld]

How Things Might Change.
현재의 아이폰 소프트웨어는 아이폰을 제 때에 내놓기 위해 나왔다. 더 완전하게 공개가 되었더라면 잠재적으로 보안 문제를 낼 수 있는 부분도 갖고 있다. 신기능은 앞으로 한 번에, 미완성 베타로 나오지 않고, 완성된 기능으로 차츰 등장할 것이다.

블루투쓰가 현재 상태보다 훨씬 세련되게 나올 것임은 분명하다. 현재는 헤드셋 링크로만 쓰이지만, 헤드셋을 쓰지 않는 경우, 블루투쓰를 꺼서 배터리 수명을 늘릴 수 있다. 앞으로는 분명 무선 헤드폰이나 자동차 네비게이션, GPS처럼 다른 장비에 접속할 수 있게 될 것이다. 물론 다른 옵션도 있다. 다음 기사는 블루투쓰에 대해 더 자세히 다뤄보겠다.

아이폰은 봉주르 지원의 계획만 갖고 있다. 봉주르는 애플의 핵심 기술이며, 엄청난 잠재성을 제공한다. 다음 기사에서 봉주르의 잠재성에 대해서 알아보겠다.

새로운 네트워킹 서비스도 있다. 아이폰은 여러 보안 전문가와 크래커들이 친숙해하는 BSD를 돌린다. 물론 ARM용이기는 하다. 애플이 아이폰의 네트워킹 기능을 개방시키면, 그 전에 보안 주의를 해야 할 것이다. 시스템 내부로의 접속을 허용할 수도 있기 때문이다. 다음 기사는 커널 바깥에 있는 아이폰의 BSD 유닉스 유저랜드에 대해 개괄적으로 알아본다.

Like reading RoughlyDrafted? Share articles with your friends, link from your blog, and subscribe to my podcast!

Did I miss any details?


iPhone OS X Architecture: Disk, Shell, and Password Security
__________________
FAQ
  Reply With Quote
2007-07-15, 11:50 PM   #7
casaubon
Moderator
 
casaubon's Avatar
 
Registered: Sep 2001
My Mac: MacBook Air
Posts: 2,137
오프라인
iPhone의 BSD 유닉스

iPhone OS X Architecture: the BSD Unix Userland

Sunday, July 15, 2007

아이폰 아키텍쳐 시리즈, 이번에는 아이폰 코어 OS의 저변에 깔려 있는 유닉스를 알아본다.

The iPhone's Unix Userland.
아이폰의 커널 위에는 맥오에스텐의 BSD 유닉스 환경이 놓여 있다. 물론 ARM 프로세서용으로 포팅이 되어있고, 불필요한 유틸리티와 서비스는 빠져 있다.

커널 바깥쪽에서 돌아가는 프로세스는, 유닉스에서 유저랜드(userland)에서 돌아간다고 말한다. 맥에서 BSD 유닉스 유저랜드는 보통 데스크톱 사용자가 볼 수 없다.

친숙한 맥용 애플리케이션과 유틸리티는 별도의 환경에서 돌아가며, 이는 리눅스나 솔라리스와 같은 전형적인 데스크톱 유닉스와는 사못 다르다. 물론 기술적으로야 유저랜드에 속한다. 필자는 아이폰의 오에스텐과 맥-레이어를 별도로 알아보겠다.

맥오에스텐 파인더에서 이런 유닉스 디렉토리는 안 보인다. 그러나 커맨드라인에서는 보이며, 맥오에스텐의 후면을 알아보기에 매우 중요한 곳이다.

The Mac OS X Startup Overview.
인텔맥의 맥오에스텐이 부팅할 때는, 우선, 맥 펌웨어에 내장된 EFI 부트로더가 디스크로부터 커널을 읽어들여 RAM으로 불러들인다. 그 후, 커널은 kext를 읽고 유닉스 유저랜드를 설정한다. 평상시 부팅 과정에는 다중 사용자 환경도 여기에 포함되며, 로그인 창을 띄우게 된다. 특정 사용자가 로그인하면 맥 데스크톱 환경이 설정된다. 이 설정은 디렉토리 안에 저장된 사용자 설정에 따른다.

아이폰 또한 커널과 유저랜드, 맥 환경 순으로 부팅된다. 전 글은 아이폰이 디스크이미지 상의 오에스텐을 RAM으로 불러들임을 밝혔고, 보안 환경에서 애플리케이션을 어떻게 읽는지 설명하였다.

아이폰도 맥처럼 다중 사용자 환경이지만, 로그인 창은 뜨지 않는다. 자동 로그인을 설정한 맥과 비슷하게, 아이폰은 설정된 사용자로 로그인하며, 사용 가능한 인터페이스를 부팅시킨다.

[BIOS PC를 뛰어넘은 애플 펌웨어]

Single User Mode.
맥은 싱글유저모드로 평상시의 부팅에 개입할 수 있다. 이 모드가 발생하면, 맥오에스텐은 사용자 계정에 따르는 다중 사용자 환경을 설정하지 않는다.

그 대신, 간단한 커맨드라인 환경으로 부팅하여, 루트 접근을 할 수 있게 된다. 파일 시스템 점검이나 디스크 복구에 유용하다.

The Three Unix Domains.
유닉스에는 세 개의 도메인이 있다. 아이폰의 오에스텐 역시 이러한 도메인 구분을 따른다.

  • 머신 레벨 소프트웨어: 모든 사용자용으로 설치
  • 시스템 레벨 소프트웨어: 시스템의 중요 기능 관련
  • 사용자 레벨 소프트웨어: 특정 사용자만으로 설치

이 세 가지 도메인이 각 퍼미션과 권한에 따라 소프트웨어를 설치한다.

The Unix Directories.
맥에서도 보이는 다섯 가지의 루트-레벨 디렉토리가 아이폰에도 있다. 다시 말하건데, 보통 맥에서 이 디렉토리를 볼 수 없으며, 맥 운영에 매우 중요한 곳이다. 본 글은 데스크톱 유닉스나 맥과 아이폰 환경이 얼마나 다른지, 이들이 무엇이지를 간추려본다.

/bin
표준형 유닉스 배포폰과 맥에서 /bin은 머신 레벨 유닉스 애플리케이션(바이너리)이 있는 곳이다. 터미널셸인 bash나 파일복사인 cp, 파일 삭제인 rm 등, 싱글유저모드에서 필요한 모든 것이 들어있다.

그런데 아이폰의 /bin에는 launchd 명령을 내리는 launchctl만 들어있다. 즉, 데스크톱처럼 아이폰을 싱글유저모드로 부팅시킬 수 없다는 얘기다. 콘솔 셸도 없으며, 아이폰을 다르게 부팅시킬 방법도 없다.

/sbin
표준형 유닉스 배포폰과 맥에서 /sbin은 시스템 레벨 유닉스 애플리케이션(시스템 바이너리)이 있는 곳이다. 디스크 확인용인 fsck와 네트워크 파이어월인 ipfw, 라우팅인 route, 디스크 파일시스템은 mount, 그리고 맥오에스텐 상의 launchd (프로세서 론쳐)가 들어 있다. 이 또한 싱글유저모드에서 필요한 것들이다.

그런데 아이폰의 /sbin에는 HFS 포맷 드라이브를 읽고 수정하는 툴만 들어있다. HFS 포맷 드라이브는 Flash RAM 상의 디스크 이미지로 존재한다.

  • fsck, fsck_hfs (file system check)
  • fstyp, fstyp_hfs (file system identifier)
  • mount, mount_hfs (file system mounter)

커널 익스텐션을 읽고, 그 외 다른 프로세스를 읽거나 돌리는 것도 있다.

  • kextload
  • launchd

Launchd: the Launch Daemon.
Launchd는 여러 가지 유닉스 프로세스를 교체하기 위해 애플이 만들어낸 메커니즘이다. 그 대상은 다음과 같다.

  • 실행시, 혹은 사용자 로그인 시에 프로세스 시작
  • 일정에 따른 프로세스 시작
  • 경로 지정의 파일 변화에 따른 프로세스 시작
  • 리퀘스트의 요구에 따른 프로세스 시작
  • 로깅 레벨과 론치 아규먼트(argument)의 지정
  • 론치 환경 변수의 지정과 작업 디렉토리 프로세스
  • 리소스 제한과 권한 지정

launchd가 처음 소개된 것은 맥오에스텐 타이거이지만, crin이나 init, rc, scripts, inet, xinet, at, watchdog과 같은 기존 유닉스 프로세스도 계속 남아 있다. 그런데 레퍼드에서는 launchd만 남을 예정이다. 애플의 최신 레퍼드 OS 기술에 기반한 아이폰도 launchd만 사용한다.

애플은 또한 다른 유닉스 배포폰들이 쓰게 하기 위해, launchd를 공개하였다. 물론 리눅스 사용자들은 계속 원래 방식을 쓰는 것으로 보인다.

[launchd in Depth - AFP548]
[Leopard Wishlist: Launch Control]

/etc
표준형 유닉스 배포폰에서 /etc는 구성(config) 파일 저장 용도이다. 맥에서 /etc는 제일 유닉스와 관련된 곳으로서, hostconfig나 httpd(웹서버 구성 파일), 곧 사라지게 될 crontab(타이머 론치 시스템으로서, launchd로 교체된다) 등, 핵심 OS 구성파일을 저장시킨다.

맥과 관련된 구성 파일은 프리퍼런스(preferences)라 불리우며, User/System/Machine의 Preferences 폴더에 저장된다.

아이폰에서 이 디렉토리는 다음의 시스템 구성 설정파일을 저장한다.

  • bluetool (BlueTooth settings)
  • racoon (VPN key management settings)
  • fstab (listings of file system info)
  • master.passwd, passwd (password records)
  • ttys (terminal settings)
  • ppp (serial VPN tunneling)
  • services (ports and the services that use them)
  • group
  • hosts
  • networks

/var/log
표준형 유닉스 배포폰과 맥, 그리고 아이폰에서 /var/log는 변수를 저장하는 곳이다. 주로 log와 temp 파일을 저장한다. 그런데 아이폰에는 맥의 /var/db/netinfo가 없다.

로컬 사용자 계정과 디렉토리 정보를 관리하기 위한 데이터베이스로, 레퍼드는 더 이상 NetInfo를 사용하지 않는다. 그 대신 애플이 아직 공개하지 않은 새로운 디렉토리 시스템을 사용한다.

레퍼드의 화려한 새 디렉토리 시스템이 아이폰에는 필요가 없으므로, 아이폰의 모든 계정(루트와 사용자)은 간단한 BSD 플랫파일 레코드에 저장된다.

애플은 이들 암호를 지키기 위해 별 노력을 기울이지 않았다. 아이폰의 사용자 계정을 안다 하더라도, 커널 접속이나 새 소프트웨어 설치와 관계가 없기 때문이다.

/usr
표준형 BSD 유닉스에서 /usr는 사용자가 설치한 소프트웨어와 파일이 가는 곳이다. 맥오에스텐에서의 /usr는 X11 설치할 때처럼, 사용자-레벨의 유닉스 소프트웨어가 들어간다. 단, 맥 환경과 관련된 사용자 파일은 /Users/danieleran에 설치된다. 이 경로는 ~로 주어진다. 따라서, ~/Desktop은 /Users/danieleran/Desktop과 같다.

비록 다중 사용자 운영체제를 사용하기는 하지만, 아이폰의 사용자는 단 한 명이다. 그래서 맥과는 달리 별도의 /Users 폴더가 필요 없다. 따라서 모든 사용자 소프트웨어가 /usr에 설치된다. 보통은 ~/Library에 들어가는 콘텐트, 그리고 보통 유닉스관련된 소프트웨어가 /usr 디렉토리로 간다.

[System File and Directory List - The iPhone Dev Wiki]

The Mac in the iPhone.
코어 OS의 유닉스 기반 위에는, 맥과 대단히 유사한 환경을 갖는다. 오에스텐이 맥오에스텐에서 나왔으니 당연하달 수 있겠다. 다음 기사에서 알아본다.

Like reading RoughlyDrafted? Share articles with your friends, link from your blog, and subscribe to my podcast!

Did I miss any details?


iPhone OS X Architecture: the BSD Unix Userland
__________________
FAQ
  Reply With Quote
2007-07-18, 12:34 AM   #8
casaubon
Moderator
 
casaubon's Avatar
 
Registered: Sep 2001
My Mac: MacBook Air
Posts: 2,137
오프라인
iPhone의 OS X: Cocoa 프레임웍

iPhone OS X Architecture: Cocoa Frameworks and Mobile Mac Apps

Monday, July 16, 2007

아이폰 아키텍쳐 시리즈, 이번에는 아이폰에 있는 맥 시스템 프레임웍과 애플리케이션 환경을 알아본다.

[iPhone의 OS X과 Leopard, 그리고 Vista ]
[iPhone의 OS X: Mach 커널과 RAM]
[iPhone의 디스크와 셸, 그리고 보안 ]
[iPhone의 BSD 유닉스 ]

The iPhone's OS Domains.
보이지 않는 유닉스 디렉토리 바깥에, 맥오에스텐에는 주요 도메인 세 개가 있다. NeXTSTEP의 유산이기도 하지만, 유닉스에 있는 도메인을 반영하는 구조이기도 하다. 그런데 맥오에스텐은 더 깔끔하고 분명하게 도메인을 구분한다. 다음과 같다.

  • System 도메인: 애플이 설치하는 소프트웨어가 들어간다. /System 안에 있는 모든 것이 포함된다.
  • Local 도메인: 컴퓨터에 특정된 소프트웨어가 들어간다. /Library와 /Applications 안에 있는 모든 것이 포함된다.
  • User 도메인: 사용자에 특정된 소프트웨어가 들어간다. /Users 계정 안에 있는 모든 것이 포함된다.

이런 도메인 시스템은, 관리자나 개별 사용자가 야기할지 모를 변화에 대처하여, 애플이 업데이트시키지 않는 한 변하지 않아야 하는 System을 보호하고 격리시킨다.

Mac OS X vs OS X.
아이폰의 오에스텐 설치본은 표준 데스크톱 맥 환경과 대단히 유사하며, 애플티비와도 비슷하다. 물론 차이점은 있다. 아래와 같다.

User Domain: "iPhone의 BSD 유닉스" 기사에서 지적했듯, 아이폰에 다른 사용자 계정은 필요가 없다. 따라서 /Users 폴더가 없다. 모든 것이 /usr 디렉토리에 들어간다.

아이폰에 과연 다중 사용자 계정을 포함시킬지는 의문이다. 그런데 독자, ZU의 지적에 따르면, 부모 통제때문에, 맥과 유사한 메커니즘을 나중에 추가시킬지도 모른다고 한다. 즉, 사용자에게 일정 부분 제한을 가하기 위해, 몇 가지 보안 모드를 집어 넣을 수 있다는 의미다.

그렇다면 아이폰, 혹은 향후 나올 아이포드에 위 기능이 달릴 수 있다. 멀티미디어 전용 상영을 위한 키오스크-모드라든가, 대여폰일 경우 전화 전용 모드, 혹은 실제로 아이들 사용을 제한시키는 통제 모드로 특정 애플리케이션 사용이나 특정 호스트 방문, 사용시간을 줄일 수 있을 것이다.

Local Domain: 맥오에스텐처럼 아이폰의 애플리케이션 역시, /Applications에 들어있다. /Library에는 벽지와 벨소리 정도밖에 없다. 써드파티 추가분이나, 관리자가 설치하는 것은 없다. 그래서 Local 도메인은 상당히 슬림하다. 아이폰에 있는 코코아 애플리케이션 번들은 다음과 같다.

  • Calculator.app
  • DemoApp.app
  • Maps.app
  • MobileCal.app
  • MobileMail.app
  • MobileMusicPlayer.app
  • MobileNotes.app
  • MobilePhone.app
  • MobileSMS.app
  • MobileSafari.app
  • MobileSlideShow.app
  • MobileTimer.app
  • Preferences.app
  • Stocks.app
  • Weather.app
  • YouTube.app
  • FieldTest.app (*3001#12345#*를 다이얼하면, 통신망에 대한 기술 정보가 나온다.)

Application Bundles: 맥오에스텐 애플리케이션은 파인더에 파일로 나타나지만, 보통은 번들이다. 맥오에스텐의 번들은 파일처럼 행동하는 특수한 폴더로서, 사용을 더 간단하게 만들고, 애플리케이션 설치를 손쉬운 드래그앤드롭으로 시켜준다.

맥오에스텐의 애플리케이션 번들에는 Contents 폴더가 있고, 이 안에 다음과 같은 폴더가 따로 있다.

  • Frameworks
  • Plugins
  • Resources
  • Mac OS

개발자들은 이러한 구분을 통해, 애플리케이션이 필요로 하는 파일 관리를 쉽게 할 수 있다. 사용자가 일일이 여러 디렉토리의 파일 관리를 해 주지 않아도 되며, 실질적인 애플리케이션의 바이너리 실행 파일 내부에 온갖 종류의 지원 파일을 싸주지 않아도 된다.

번들은 또한 맥오에스 9에서 맥오에스텐으로의 이주도 도왔다. 9 네이티브와 텐 상의 클래식 환경 간의 차이를 잡아 주었기 때문이다.

아이폰은 물론 OS 9 환경이주가 필요 없기 때문에, 번들은 더 단순하다. 애플리케이션과 로컬(현재는 영어뿐이다), 그래픽과 기타 파일만 있다.

[Bundle Programming Guide: About Bundles - Apple]

그런데 제일 친숙한 애플리케이션이 위에 없다. SpringBoard다. 스프링보드는 아이폰의 파인더이자 독, 데스크톱이다. 애플티비의 BackRow와 유사하다. 백로와 Finder처럼 이 안에는 다음의 것이 들어있다.

System Domain: 맥오에스텐처럼 아이폰에는 코코아 프레임웍과 시스템 유틸리티를 갖고 있는 System 디렉토리가 있다. 맥오에스텐 파인더는 /Applications 안에 없다. /System/Library/CoreServices에 Dock과 Help, System Update, Spotlight, 그 외 여러 가지 얼굴 없는 애플리케이션과 같이 숨어있다. 이들은 파인더의 데스크톱 환경의 일부로 작동한다.

애플티비는 파인더 대신 백로가 들어갔다. 아이폰 또한 스프링보드로 교체하였으며, 놀랍지는 않다. 스프링보드는 친숙한 애플리케이션 아이콘을 관리한다. 맨 위의 시계와 네트워크, 배터리 표시자가 있고, 맨 밑에는 네 개의 주요 애플리케이션이 있는 독 바가 놓여 있다.

CoreServices 안의 스프링보드 옆에는 mDNSResponder 번들이 있다. Bonjour의 다른, 그리고 친숙하지 않은 이름이다. 아이폰 봉주르는 현재 침묵중이지만, 분명 존재한다. 현재로서는 셸일 뿐이지만, 애플이 향후 신기능을 제공하는 힌트를 준다. 다음 기사에서 여기에 대해 다루겠다.

System 도메인의 CoreServices 바깥에는 사운드 효과와 캐시파일, 하드웨어 드라이버, 파일시스템(HFS), 서체, 프레임웍, 인터넷 플러그인(현재는 퀵타임뿐), LaunchDaemons, Lockdown, Setting.app, SystemConfiguration이 들어간 폴더들이 있다.

프레임웍에는 몇 가지 흥미로운 파일이 있다. 친숙한 주소록이나 달력, 블루투쓰, Foundation, CoreAudio, CoreGraphics, CoreVideo, JavaScriptCore, WebCore, WebKit 등이 있다.

  • Celestial, 최대 볼륨과 바이브레이션 설정
  • CoreSurface, 멀티터치 입력 관리
  • TelephonyUI, 모든 통화와 응답, 다이얼 톤의 관리
  • URLify, 웹페이지의 전화번호를 인식하여, 다이얼 가능한 링크로 만듬.
  • LayerKit, 레퍼드 Core Animation의 예전 이름

아이폰에 있는 PowerVR MBX 3D 그래픽 프로세서와 관련된 라이브러리는 적어도 세 개다. 이 프로세서는 ARM용 코프로세서로서 Imagination Technologies Group이 만들었다.

  • MBX2D
  • MBXConnect
  • OpenGLES (OpenGL ES는 휴대용 임베디드 시스템용 그래픽 라이브러리로서, Symbian도 사용한다.)

PowerVR 그래픽 악셀러레이터를 2004년, 삼성이 라이센스하였고, 아이폰에서는 "System on a Chip" 개념으로 ARM 코어에 통합되어있는 것으로 보인다.

[PowerVR MBX in iPhone - Beyond3D Forum]
[ARM licenses partner's graphics core to Samsung - EEE Times]
[iPhone은 어째서 Symbian을 선택하지 않았을까]

Mysterious Frameworks.
그런데 수수께끼같은 프레임웍이 몇 개 있다.

  • MeCCA.framework
  • GMM.framework
  • DeviceLink.framework
  • IAP.framework
  • OfficeImport.framework
  • UIKit.framework (블로거인 Fraser Speirs는 이 프레임웍이 "아이폰용 AppKit"이 되리라 추측한다.)

[Dissecting an iPhone Crash Log - Fraser Speirs]

PreferenceBundles 기능은 Setting 애플리케이션 안에 있으며, 맥오에스텐의 시스템 프리퍼런스와 유사하다. 하지만 아이폰 UI에서 모든 설정 모듈이 여기에 있진 않다. 설치된 것은 다음과 같다.

  • AirPortSettings (WiFi 네트워킹용)
  • BluetoothSettings
  • CarrierSettings (흥미롭다)
  • EDGESettings (Settings에서 변경 불가능)
  • Wallpaper
  • VPN
  • 여러 가지 휴대용 애플리케이션 설정

SystemConfiguration Setting과 몇 가지 내부 구성 아이템이 들어있다.

  • Aeropuerto, 여기에 비행기 모드가 있는 것으로 보인다. 에어포트의 WiFi 설정과 구분을 위해 서반아어로 쓰여진 듯 하다.
  • 여러 가지 통신망과 전력관리용 설정
  • Profiler, 통신사가 사용하는 것으로 보이는 아이템 세 가지가 있다.
    • SPLogsReporter
    • SPNetworkReporter
    • SPOSReporter

Using the Apps on the iPhone.
아이폰에 있는 Mach와 BSD, 맥레이어의 최상단에는 멋진 사용자 인터페이스가 놓여 있다. 각 애플리케이션이 서로 어떻게 작용하는지, 무엇이 없는지, 잠재성 있는 미래 기능은 무엇일지를 다음 기사에서 알아보겠다.

Like reading RoughlyDrafted? Share articles with your friends, link from your blog, and subscribe to my podcast!

Did I miss any details?


iPhone OS X Architecture: Cocoa Frameworks and Mobile Mac Apps
__________________
FAQ
  Reply With Quote