다음은 자동 설치용 미리 설정 파일로 완전히 동작하는 예제입니다. 사용법은 4.4절. “자동 설치”에 설명되어 있습니다. 이 파일을 직접 사용하려면 일부 줄의 코멘트를 없애야 할 수도 있습니다.
에제를 매뉴얼에 제대로 표시하려고 불가피하게 일부 줄은 여러 줄로 쪼개 놓았습니다. 여러 줄로 쪼개 놓을 때 연결 문자인 “\”로 표시해 놓았고 두번째 줄에는 약간 더 들여 써 놓았습니다. 실제 미리 설정 파일에서는, 여러 줄로 쪼개 놓은 줄은 한 줄로 붙여야 합니다. 한 줄로 붙이지 않으면 미리 설정은 예측할 수 없는 결과를 발생하면서 실패합니다.
“깨끗한” 예제 파일은 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