Egloos | Log-in
F/OSS study
F/OSS study
[ubiquity] 우분투 설치 과정 살펴보기
OS: 우분투 9.04
ubiquity: 1.12.12

우분투 라이브CD 실행 시 혹은 부트 메뉴에서 직접 설치 메뉴를 선택하면
우분투 설치 프로그램인 ubiquity가 실행되어 설치 작업을 진행한다.

ubiquity는 python으로 작성한 debian installer의 graphical front-end 로
gtk, kde, mythbuntu 등의 UI를 제공하지만 여기에서는 gtk_ui 만을 설명한다.

먼저 시작하기 전에 우분투 라이브CD의 구성을 간단히 살펴보면 다음과 같다.
  • CD 부팅 시 사용되는 isolinux를 위한 디렉터리 (부트 메뉴는 text.cfg 파일에 있다.)
  • 혹은 이를 지원하지 않는 오래된 시스템을 위한 플로피 이미지가 있는 install 디렉터리
  • 라이브CD용 커널 및 파일 시스템이 들어있는 casper 디렉터리
  • CD를 패키지 저장소로 이용하기 위한 dist 및 pool 디렉터리
  • 설치 시의 커스터마이징을 위한 pressed 디렉터리
  • MS Windows에서 직접 설치를 위한 wubi.exe
  • 그 밖에 데비안 로고 등이 들어있는 pics 디렉터리

ubiquity는 casper/filesystem.squashfs 상의
/usr/bin/ubiquity에 존재하며 이는 ubiquity 소스 트리의 bin/ubiquity에 해당한다.
(uck를 사용한다면 ~/tmp/remaster-root에서 파일 시스템의 내용을 볼 수 있다.)
이 파일은 인자에 따라 적절히 환경 변수를 설정한 뒤
주어진 타입의 프론트엔드를 생성하여 run() 메소드를 호출한다.

프론트엔드는 /usr/lib/ubiquity/ubiquity/frontend/gtk_ui.py에 존재하며
소스 트리에서는 ubiquity/frontend/gtk_ui.py에서 볼 수 있다.
이 파일은 각 단계의 설정을 담당하는 페이지들을 차례로 보여준다.
  • 언어 설정: Language
  • 위치 설정: Timezone
  • 키보드 설정: ConsoleSetup
  • 파티션 설정: Partman
  • 사용자 정보: UserSetup
  • 이전 도우미: MigrationAssistant (사용 안함)
  • 설정 확인: Summary
(이전 도우미는 UBIQUITY_MIGRATION_ASSISTANT 환경 변수가 정의된 경우에만 실행된다.)

각 항목에서 뒤에 표시한 것은 이 페이지를 담당하는 클래스 이름이며
이들은 /usr/lib/ubiquity/ubiquity/components 디렉터리 내에 존재한다.
(마찬가지로 소스 트리에서는 ubiquity/components에 해당한다.)

이 클래스들은 각 단계 별로 설정값을 저장하기 위한 DB라고 볼 수 있으며
소스 내에서는 dbfilter라는 필드로 참조된다.

이들은 debconf를 통해 설정을 저장하며
초기값을 변경하기 위해서는 iso의 preseed 디렉터리에 있는 ubuntu.seed 파일을 편집한다.
(이에 대한 자세한 사항은 데비안 GNU/리눅스 설치 안내서의 부록 B 및
debconf 설명서를 읽어보도록 하자.)

모든 설정이 완료되면 실제 설치 과정이 수행된다.
이는 차례로 파티션 설정을 적용하기 위한 PartmanCommit 클래스와
실제 설치의 모든 과정을 수행하는 Install 클래스에서 담당한다.

Install 클래스는 /usr/share/ubiquity/install.py 스크립트를 호출하며
이는 소스 트리의 scripts/install.py에 해당한다.

이 스크립트는 기본적으로 라이브CD 내의 모든 파일을
타겟 디렉터리로 복사한 후 다음과 같이 차례대로 설정값을 적용한다.
  • 로캘 설정: LanguageApply
  • 사용자 설정: UserSetupApply
  • 타겟 설정 훅(hook) 실행 - /usr/lib/ubiquity/target-config 아래의 파일 실행
  • 네트워크 설정 - /etc/network/interfaces, /etc/hosts, /etc/resolv.conf 등
  • APT 설정: AptSetup - choose-mirror 실행
  • 언어팩 설치
  • 시간대 설정: TimezoneApply
  • 키보드 설정: ConsoleSetupApply
  • 이전 도우미 설정: MigrationAssistantApply
  • 사용하지 않는 커널 삭제: CheckKernel
  • 하드웨어 설정: HwDetect
  • 부트로더 설정: GrubInstaller
  • 추가 패키지 설치 - 아마 특별한 것이 없는 듯.. (record_installed()로 등록 가능)
  • 불필요한 패키지 제거 - 데스크탑에서 필요없는 패키지 삭제 (/cdrom/casper/filesystem.manifest 파일 비교)
  • DCD (Distribution Channel Discriptor) 복사
  • 로그 파일 복사

이제 reboot하면 새로운 시스템을 이용할 수 있다!

by namhyung | 2009/05/26 03:26 | System | 트랙백 | 덧글(0)
트랙백 주소 : http://studyfoss.egloos.com/tb/4971625
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

◀ 이전 페이지 다음 페이지 ▶

카테고리
General
Application
System
Kernel
Book
Tips
태그
blktrace glibc SMP gcc script computer-architecture patch CAaQA3 block-layer sed CARM compiler awk perf bash build synchronization memory elf scm linux kernel documentation vcs git emacs x86 algorithm C binutils
전체보기
이글루 파인더

최근 등록된 덧글
많이 배우고 갑니다. 방장 만세.
by 머떨이 at 12/04
오우정보감사요 헤매고 있는뎁 완..
by 로양이 at 10/17
상세하고 깔끔한 설명 정말 감사..
by 일로 at 09/24
최근 등록된 트랙백
[linux] signal handler 를 좀..
by 비더탑
Tod's Ferrari Homme
by Tods Pas Cher,Kodak did ..
Mocassin Femme
by Mocassins Homme, I got so..
rss

skin by jiinny


X