C.1. 미리 설정 파일 예제

다음은 자동 설치용 미리 설정 파일로 완전히 동작하는 예제입니다. 사용법은 4.5절. “자동 설치”에 설명되어 있습니다. 이 파일을 직접 사용하려면 일부 줄의 코멘트를 없애야 할 수도 있습니다.

참고

에제를 매뉴얼에 제대로 표시하려고 불가피하게 일부 줄은 여러 줄로 쪼개 놓았습니다. 여러 줄로 쪼개 놓을 때 연결 문자인 “\”로 표시해 놓았고 두번째 줄에는 약간 더 들여 써 놓았습니다. 실제 미리 설정 파일에서는, 여러 줄로 쪼개 놓은 줄은 한 줄로 붙여야 합니다. 한 줄로 붙이지 않으면 미리 설정은 예측할 수 없는 결과를 발생하면서 실패합니다.

깨끗한” 예제 파일은 http://www.debian.org/releases/sarge/example-preseed.txt에 있습니다.

#### 시작.

# 미리 설정 파일을 사용하려면, 먼저 설치 프로그램으로 부팅하고
# 사용할 미리 설정 파일이 무엇인지 지정해야 합니다. 커널 부팅
# 파라미터로 파일의 위치를 넘기면 되는데, 부팅할 때 수동으로 하거나
# syslinux.cfg 파일에서 커널의 append 줄에 파라미터를 넣으면 됩니다.

# 네트워크 부팅이라면, 다음을 사용하십시오:
#   preseed/url=http://host/path/to/preseed
# CD를 다시 굽는 경우라면, 다음을 사용하십시오:
#   preseed/file=/cdrom/preseed
# USB 미디어에서 설치하는 경우라면, 다음을 사용하고 미리 설정
# 파일을 USB 스틱의 맨 위 디렉토리에 넣으십시오.
#   preseed/file=/hd-media/preseed
# 위에서 지정한 위치에 이 파일을 복사하십시오.
#
# 설치 과정의 어떤 부분은 미리 설정을 통해 자동화할 수 없습니다.
# 미리 설정 파일을 읽어들이기도 전에 응답해야 하는 질문들 때문입니다.
# 예를 들어 미리 설정 파일을 네트워크를 통해 내려받는 경우, 네트워크
# 설정을 먼저 해야 합니다. initrd 미리 설정을 하는 한 가지 이유는
# 앞 단계에서도 미리 설치 과정에 대해 미리 설정을 할 수 있기 때문입니다.
#
# 미리설정 파일을 일부 단계에 대해서 사용할 수 없다고 하더라도, 그래도 설치를
# 자동화할 수 있습니다. 각각의 미리 설정 값을 커널 파라미터로 넘길
# 수 있습니다. 변수/경로=값 식으로 아래의 미리 설정 변수를 넘깁니다.
# 
# 거기까지 끝났으면, debconf/priority=critical을 넣어서 아래 미리 설정에
# 해당하지 않는 질문은 물어보지 않도록 합니다. 그리고 syslinux.cfg에서
# timeout을 1로 놓아서 설치 프로그램에서 부팅할 때 엔터를 누를 필요가
# 없도록 합니다.
#
# 단 커널은 최대 8개까지의 명령행 파라미터와 8개까지의 환경 파라미터만
# 받아들일 수 있습니다. 그 8개에는 설치 프로그램에서 기본으로 추가하는
# 파라미터가 포함되어 있습니다. 그 개수가 넘어가면, 2.4 커널은 넘어가는
# 옵션을 버리고 2.6 커널은 멎어버립니다. 버전 2.6.9 커널 및 그 이후의
# 커널에서는 32개까지의 명령행 파라미터와 32개까지의 환경 파라미터를
# 받아들입니다.
#
# 'vga=normal'이나 'devfs=mount'같은 기본 옵션중의 일부는 대부분의 경우
# 안 써도 상관없습니다. 그러면 미리 설정 옵션을 몇 개 더 쓸 수 있습니다.

# 언어, 국가, 키보드 선택은 파일에서 미리 설정할 수 없습니다. 언어, 국가,
# 키보드에 해당하는 질문은 미리 설정 파일을 읽어들이기 전에 물어보기
# 때문입니다. 파일에 넣는 대신에 파라미터를 몇 개 더 커널에 넘기십시오:
#    languagechooser/language-name=English
#    countrychooser/shortlist=US
#    console-keymaps-at/keymap=us

#### 네트워크 설정.

# 물론 미리 설정 파일을 네트워크에서 가져오는 경우라면 이렇게 해도
# 동작하지 않습니다! 하지만 CD나 USB 스틱에서 부팅하는 경우라면 아주 
# 좋습니다. 미리 설정 파일을 네트워크에서 읽어들인다면 네트워크 설정
# 파라미터를 커널 파라미터에 넘길 수도 있습니다.

# netcfg에서 네트워크에 연결되어 있는 인터페이스를 하나 선택합니다. 이렇게
# 하면 인터페이스가 여러 개 있을 때 목록을 표시하지 않고 넘어갑니다.
d-i  netcfg/choose_interface select auto

# dhcp 서버가 느려서 제한 시간이 초과되는 경우에는 다음과 같이 하는 게
# 좋습니다.
#d-i netcfg/dhcp_timeout strin 60

# 네트워크를 수동으로 설정하려면, 다음과 같이 합니다:
#d-i netcfg/disable_dhcp boolean true
#d-i netcfg/get_nameservers string 192.168.1.1
#d-i netcfg/get_ipaddress string 192.168.1.42
#d-i netcfg/get_netmask string 255.255.255.0
#d-i netcfg/get_gateway string 192.168.1.1
#d-i netcfg/confirm_static boolean true

# 호스트이름이나 도메인이름은 여기 설정한 것보다 DHCP에서 가져온 것이
# 우선합니다. 하지만 다음 값을 설정하면 DHCP에서 어떤 값이 오더라도
# 물어보지는 않게 합니다.
d-i netcfg/get_hostname string unassigned-hostname
d-i netcfg/get_domain string unassigned-domain

# WEB 키 대화 상자를 표시하지 않게 합니다.
d-i netcfg/wireless_wep string
# 일부 ISP는 DHCP 호스트 이름을 암호로 사용합니다.
#d-i netcfg/dhcp_hostname string radish

#### 미러 설정.

d-i mirror/country string enter information manually
d-i mirror/http/hostname string http.us.debian.org
d-i mirror/http/directory string /debian
d-i mirror/suite string testing
d-i mirror/http/proxy string 

### 파티션하기.

# 시스템에 빈 공간이 있을 때 그 부분을 한 개 파티션으로 사용합니다.
#d-i partman-auto/init_automatically_partition \
#    select Use the largest continuous free space

# 다른 방법으로 파티션할 디스크를 지정합니다 장치 이름은 DEVFS나
# DEVFS가 아닌 전통적인 방식으로 지정할 수 있습니다.
# 예를 들어, DEVFS 방식으로 첫번째 디스크는:
d-i partman-auto/disk string /dev/discs/disc0/disc

# 미리 정의되어 있는 파티션 방식 중의 하나를 사용할 수도 있습니다:
d-i partman-auto/choose_recipe select \
     All files in one partition (recommended for new users)
#d-i partman-auto/choose_recipe select Desktop machine
#d-i partman-auto/choose_recipe select Multi-user workstation

# 그것도 아니고 자기만의 방식을 사용하려면...
# 파티션 방식 (recipe) 형식은 devel/partman-auto-recipe.txt 파일에 설명되어
# 있습니다. 파티션 방식 파일을 d-i 환경에 집어 넣을 수 있으면, 그 파일
# 위치를 써 주기만 하면 됩니다.
#d-i partman-auto/expert_recipe_file string /hd-media/recipe

# 그렇지 않다면, 전체 파티션 방식을 한 줄에 넣을 수도 있습니다. 다음
# 예제는 작은 /boot 파티션을 만들고, 적당한 스왑을 만들고, 나머지 공간을
# 루트 파티션으로 사용합니다:
#d-i partman-auto/expert_recipe string boot-root :: \
#    20 50 100 ext3 $primary{ } $bootable{ } method{ format } format{ } \
#    use_filesystem{ } filesystem{ ext3 } mountpoint{ /boot } . \
#    500 10000 1000000000 ext3 method{ format } format{ } \
#    use_filesystem{ } filesystem{ ext3 } mountpoint{ / } . \
#    64 512 300% linux-swap method{ swap } format{ } . 
# 참고로, 다음은 위의 파티션 방식을 읽기 좋은 모양으로 쓴 것입니다:
#    boot-root ::
#       40 50 100 ext3
#          $primary{ } $bootable{ }
#          method{ format } format{ }
#          use_filesystem{ } filesystem{ ext3 }
#          mountpoint{ /boot }
#       .
#       500 10000 1000000000 ext3
#          method{ format } format{ }
#          use_filesystem{ } filesystem{ ext3 }
#          mountpoint{ / }
#       .
#       64 512 300% linux-swap
#          method{ swap } format{ }
#       .

# 다음을 사용하면 확인 질문 없이 partman에서 자동으로 파티션합니다.
d-i partman/confirm_write_new_label boolean true
d-i partman/choose_partition select \
    Finish partitioning and write changes to disk
d-i partman/confirm boolean true

#### 부트로더 설치.

# 기본 부트 로더는 (x86의 경우) GRUB입니다. GRUB 대신에 LILO를 사용하려면,
# 다음 줄의 코멘트를 없애십시오:
#d-i grub-installer/skip boolean true

# 다음을 설정해도 안전합니다. 이렇게 하면 컴퓨터에 다른 운영체제가
# 없을 경우에 자동으로 GRUB을 MBR에 설치합니다.
d-i grub-installer/only_debian boolean true

# 다음과 같이 하면 다른 운영체제가 있더라도 GRUB을 MBR에 설치합니다.
# 이렇게 하면 다른 운영체제를 부팅할 수 없을 수도 있기 때문에 덜 안전합니다.
d-i  grub-installer/with_other_os boolean true

# 다른 방법으로, MBR이 아닌 위치에 GRUB을 설치하려면 다음 줄의 주석을
# 없애고 편집하십시오:
#d-i grub-installer/bootdev string (hd0,0)
#d-i grub-installer/only_debian boolean false
#d-i grub-installer/with_other_os boolean false

##### 첫 단계 설치 끝마치기.

# 설치가 끝났다는 마지막 메세지를 표시하지 않습니다.
d-i  prebaseconfig/reboot_in_progress   note 

#### 쉘 명령어.

# d-i 미리 설정은 원래부터 보안에 안전하지 않습니다. 설치 프로그램 중의
# 어느 부분도 버퍼 오버플로우나 그 밖의 방법으로 미리 설정 파일의 값을
# 조작하는 공격을 검사하지 않습니다. 믿을 만한 곳에 있는 미리 설정 파일만
# 사용하십시오! 설치 프로그램 안에서 어떤 쉘 명령어라도 실행할 수 있는
# 방법이 만들어져 있습니다. 위험하지만 이 방법은 매우 유용하므로,
# 다음과 같이 설치 프로그램 내에서 쉘 명령어를 실행할 수 있습니다.

# 첫번째 명령어는 미리 설정 파일을 읽어들인 직후에 가능한 빨리
# 실행합니다. 
#d-i preseed/early_command string anna-install some-udeb

# 다음 명령어는 설치가 끝나기 직전에, 하지만 /target 디렉토리가 아직
# 마운트되어 있을 때 실행합니다.
#d-i preseed/late_command string echo foo 
> /target/etc/bar

# 다음 명령어는 base-config가 시작할 때 실행합니다.
#base-config base-config/early_command string echo hi mom

# 다음 명령어는 base-config가 끝난 다음에 login: 프롬프트 직전에
# 실행합니다. 다음 명령어는 필요한 꾸러미를 설치하거나 시스템의 설정을
# 조작할 때 유용합니다.
#base-config base-config/late_command string \
#    apt-get install zsh; chsh -s /bin/zsh

##### 설치 두 번째 단계 미리 설정

##### base-config 미리 설정.

# 들어가는 메세지를 표시하지 않습니다.
base-config  base-config/intro          note

# 마지막 메세지를 표시하지 않습니다.
base-config  base-config/login          note

# 디스플레이 관리자를 설치하지만 base-config가 끝난 다음에 바로 시작하지는
# 않게 하려면.
#base-config base-config/start-display-manager        boolean false

# 일부 설치 프로그램 버전은 설치한 내용을 개발자들에게 보고합니다. 기본값은
# 보고하지 않는 것이지만 보고를 하면 어떤 소프트웨어를 많이 사용하는 지 
# 및 무엇을 CD에 포함할 지 결정하는데 도움이 됩니다.
#popularity-contest popularity-contest/participate boolean false

#### 시계 및 시간대 설정.

# 하드웨어 시계를 UTC로 할지 여부를 조정합니다.
base-config tzconfig/gmt boolean true
# 자기가 미국에 있다는 걸 설치 프로그램에 지정하려면, 다음 변수를
# 이용해 시간대를 설정할 수 있습니다.
# (가능한 값은: Eastern, Central, Mountain, Pacific, Alaska, Hawaii,
# Aleutian, Arizona East-Indiana, Indiana-Starke, Michigan, Samoa, other)
base-config  tzconfig/choose_country_zone/US select Eastern
# 캐나다에 있다면.
# (가능한 값은: Newfoundland, Atlantic, Eastern, Central,
# East-Saskatchewan, Saskatchewan, Mountain, Pacific, Yukon, other)
base-config  tzconfig/choose_country_zone/CA select Eastern
# 브라질에 있다면. (가능한 값은: East, West, Acre, DeNoronha, other)
base-config  tzconfig/choose_country_zone/BR select East
# 많은 국가들은 시간대가 하나밖에 없습니다. 이러한 국가들 중에 하나를
# 설치 프로그램에 지정하려면, 다음을 이용해서 표준 시간대를 선택하십시오.
base-config  tzconfig/choose_country_zone_single boolean true
# 다음 질문은 위에서 말한 국가들 이외에 시간대가 여러 개인 국가에
# 해당하는 것입니다. 시간대 중의 하나 혹은 "other"를 미리 설정할 수 
# 있습니다.
#base-config tzconfig/choose_country_zone_multiple select 

#### 계정 설정.

# 루트 열쇠글을 미리 설정하려면, 이 파일에 암호를 그대로 씁니다.
# 다른 사람이 알 수 없도록 주의하십시오!
#passwd passwd/root-password password r00tme
#passwd passwd/root-password-again password r00tme

# 일반 사용자 계정을 만들지 않고 넘어가려면.
#passwd passwd/make-user boolean false

# 그게 아니면, 사용자 이름과 로그인을 미리 설정할 수 있습니다.
#passwd passwd/user-fullname string Debian User
#passwd passwd/username string debian
# 그리고 열쇠글입니다. 주의하십시오!
#passwd passwd/user-password password insecure
#passwd passwd/user-password-again password insecure

#### APT 설정.

# 다음 질문은 두번째 단계에서 꾸러미를 설치할 때 어떤 소스를 사용할 지
# 지정합니다. 가능한 값은 cdrom, http, ftp, filesystem, edit source list
# by hand입니다.
base-config  apt-setup/uri_type select http

# ftp나 http를 사용한다면, 국가와 미러에 대한 질문을 하게 됩니다.
base-config apt-setup/country select enter information manually
base-config apt-setup/hostname string http.us.debian.org
base-config apt-setup/directory string /debian
# 미러를 하나 고른 다음에 멈춥니다.
base-config apt-setup/another boolean false

# non-free와 contrib 소프트웨어를 설치합니다.
#base-config apt-setup/non-free boolean true
#base-config apt-setup/contrib boolean true

# 보안 업데이트를 사용합니다.
base-config apt-setup/security-updates boolean true

#### 꾸러미 선택.

# 사용할 수 있으면 뭐든지 작업을 설치할 수 있습니다.
# 현재 사용 가능한 작업은: Desktop environment, Web server, Print server, 
# DNS server, File server, Mail server, SQL database, Laptop,
# Standard system, manual package selection입니다. manual package 
# selection을 선택하면 aptitude를 실행합니다. 작업을 하나도 설치하지 
# 않을 수도 있고, 다른 방법으로 꾸러미를 설치할 수도 있습니다.
tasksel tasksel/first multiselect Desktop environment, Standard system
#tasksel tasksel/first multiselect Web server, Mail server, DNS server

#### 메일 프로그램 설정.

# 보통 exim을 설치할 때는 몇 개 안 되는 질문을 합니다. 이 두 개 질문도 그냥
# 넘어가려면 다음과 같이 합니다. 이것보다 더 복잡하게 미리 설정할 수도
# 있습니다.
exim4-config exim4/dc_eximconfig_configtype \
    select no configuration at this time
exim4-config exim4/no_config boolean true
exim4-config exim4/no_config boolean true

# 다음 값을 앞에서 만든 사용자 계정으로 지정하는 게 좋습니다. 이 값을
# 비워두면 postmaster 메일이 /var/mail/mail에 쌓입니다.
exim4-config exim4/dc_postmaster string

#### X 설정.

# 데비안의 X 설정을 미리 설정하는 것도 가능하지만, 해당 컴퓨터의 비디오
# 하드웨어에 대해 자세히 알아야 합니다. 데비안의 X 설정은 모든 설정을
# 자동으로 하지 못하기 때문입니다.

# 일부 카드에 대해서는 X에서 올바른 드라이버를 자동 검색합니다. 하지만
# 미리 설정할 경우에 미리 설정하는 게 더 우선합니다. vesa는 대부분의
# 경우에 동작합니다.
#xserver-xfree86 xserver-xfree86/config/device/driver select vesa

# 마우스 자동 검색은 좀 위험한 부분이 있습니다. 실패하면 X가 계속해서
# 다시 시도합니다. 그러므로 미리 설정을 하면 마우스를 검색하지 못했을
# 때 무한루프테 빠질 가능성이 있습니다.
#xserver-xfree86 xserver-xfree86/autodetect_mouse     boolean true

# 모니터 자동 검색을 하는 게 좋습니다.
xserver-xfree86 xserver-xfree86/autodetect_monitor    boolean true
# LCD 디스플레이라면 다음 줄의 주석을 없애십시오.
#xserver-xfree86 xserver-xfree86/config/monitor/lcd   boolean true
# X의 모니터 설정은 세 가지 방법이 있습니다. 다음은 "medium"으로 미리
# 설정하는 방법이고 언제나 사용할 수 있습니다. "simple"은 사용할 수
# 없을 수도 있고, "advanced"는 너무 많이 물어봅니다.
xserver-xfree86  xserver-xfree86/config/monitor/selection-method \
    select medium
xserver-xfree86  xserver-xfree86/config/monitor/mode-list \
    select 1024x768 @ 60 Hz

#### 그 외.

# 어떤 소프트웨어를 설치하느냐에 따라, 혹은 설치하는 중에 무언가 잘못되는
# 경우, 다른 질문을 물어볼 수도 있습니다. 물론 이 질문도 미리 설정할 수
# 있습니다. 설치하는 동안 물어볼 수 있는 모든 질문의 목록을 받고 싶다면, 
# 설치를 한 다음에 다음 명령어를 실행하십시오:
#   debconf-get-selections --installer 
> file
#   debconf-get-selections 
>
> file

# 원한다면 다른 미리 설정 파일을 여기에 포함할 수도 있습니다. 포함되는
# 파일에 들어 있는 설정은 이 파일에 들어 있는 기존의 설정보다 우선합니다.
# 여러 개 파일을 공백으로 구분해서 쓸 수도 있습니다. 그러면 모든 파일을
# 읽어들입니다. 포함되는 파일에도 각각 preseed/include가 들어 있을 수
# 있습니다. 여기에 쓰는 파일이름은 상대경로이므로, 다음 파일은 다음 파일을
# 포함하는 파일과 같은 디렉토리에서 가져옵니다.
#d-i preseed/include string x.cfg

# 더 유연하게 하고 싶을 때 다음과 같이 하면 쉘 명령어를 실행하고, 그
# 명령어가 미리 설정 파일의 이름을 출력하면, 그 파일을 포함합니다.
# 예를 들어, 특정 USB 저장 장치에 따라 다른 설정을 사용하려면 (이 경우에는
# 내장 카드 리더) 다음과 같이 합니다;
#d-i preseed/include_command string \
#    if $(grep -q "GUID: 0aec3050aec305000001a003" /proc/scsi/usb-storage-*/*); \
#    then echo kraken.cfg; else echo otherusb.cfg; fi

# 설치하기 전에 미리 설정 파일의 형식을 검사하려면, debconf-set-selections
# 명령을 사용하십시오:
#   debconf-set-selections -c preseed.cfg