B.2. 미리 설정 사용하기

먼저 미리 설정 파일을 만들고, 그 파일을 사용하려는 위치에 놓아야 합니다. 미리 설정 파일 만들기는 이 부록의 뒤부분에서 설명합니다. 네트워크 미리 설정이나 플로피 혹은 USB 메모리에서 파일을 읽어들이는 경우, 미리 설정 파일의 위치는 아주 뻔합니다. CD나 DVD에 파일을 포함하려면 ISO 이미지를 다시 만들어야 합니다. 미리 설정 파일을 initrd에 포함하는 일은 이 문서의 범위를 벗어납니다. debian-installer 개발자 문서를 참고하십시오.

미리 설정 파일을 만들 때 기초로 사용할 수 있는 예제 파일이 http://www.debian.org/releases/wheezy/example-preseed.txt에 있습니다. 이 파일은 이 부록에 포함된 설정을 이용해서 만들었습니다.

B.2.1. 미리 설정 파일 읽어들이기

initrd 미리 설정을 사용하려면, preseed.cfg 파일을 initrd의 루트 디렉터리에 놓기만 하면 됩니다. 자동으로설치 프로그램이 이 파일이 있는 지 검사한 다음 읽어들입니다.

다른 preseed 방법은 부팅할 때 어떤 파일을 읽어 들일 지 설치 프로그램에 지정해야합니다. 일반적으로 커널 부팅 파라미터로 전달합니다. 부팅할 때 수동으로 넣거나 부트 로더 설정 파일 (예 : syslinux.cfg) 편집해서 커널의 append 줄의 끝에 매개 변수를 추가합니다.

부트 로더 설정에서 미리 설정 파일을 지정하는 경우 설정을 변경하면 설치를 시작할 때 ENTER를 누를 필요가 없습니다. syslinux에서는 이 설정을하는데, syslinux.cfg에서 시간을 1로 합니다. 부트로더 설정에서 미리 설정 파일을 지정하는 경우, 설정을 바꾸면 부팅할 때 Enter를 누를 필요도 없게 할 수 있습니다. syslinux의 경우 syslinux.cfg 파일에서 timeout을 1로 하면 됩니다.

설치 프로그램이 올바른 미리 설정 파일을 읽어들이도록, 파일의 체크섬을 지정할 수도 있습니다. 현재는 md5sum만 사용 가능하고, 미리 설정 파일을 읽어들였을 때 지정한 md5sum과 체크섬이 맞지 않으면 그 파일을 사용하지 않습니다.

지정해야 하는 부팅 파라미터:
- 네트워크 부팅의 경우:
  preseed/url=http://호스트/파일에/대한/경로/preseed.cfg
  preseed/url/checksum=5da499872becccfeda2c4872f9171c3d

- 이미지를 다시 만든 CD로 부팅하는 경우:
  preseed/file=/cdrom/preseed.cfg
  preseed/file/checksum=5da499872becccfeda2c4872f9171c3d

- USB 미디어에서 설치하는 경우(미리 설정 파일을 USB 메모리의 맨 위
  디렉터리에 넣으십시오)
  preseed/file=/hd-media/preseed.cfg
  preseed/file/checksum=5da499872becccfeda2c4872f9171c3d

preseed/url은 간단히 url로, preseed/filefile로, preseed/file/checksumpreseed-md5로 줄여서 부팅 파라미터로 쓸 수 있습니다.

B.2.2. 부팅 파라미터로 미리 설정하기

일부 단계에서는 미리 설정 파일을 사용할 수 없는 경우에도, 설치를 완전히 자동화할 수 있습니다. 설치 프로그램이 부팅할 때 미리 설정할 값을 하나하나 파라미터로 넘길 수 있습니다.

미리 설정 기능을 사용하려는 게 아니더라도, 특정 질문에 대한 답을 지정하고 싶으면 부팅 파라미터를 이용할 수 있습니다. 이 안내서의 다른 곳에 부팅 파라미터가 유용한 예제가 몇 가지 있습니다.

debian-installer에서 사용할 값을 설정하려면, 이 부록의 예제에 들어 있는 미리 설정 변수에 대해 변수에/대한/경로= 형식으로 넘깁니다. 설치할 시스템의 패키지를 설정하는 데 어떤 값을 사용한다면, 그 변수의 소유자[22]소유자:변수에/대한/경로= 형식으로 씁니다. 소유자를 지정하지 않으면 해당 변수의 값은 설치한 시스템의 debconf 데이터베이스에는 들어가지 않으므로 해당 패키지의 설정에 사용하지 않게 됩니다.

이런 식으로 질문을 미리 설정하면, 그 질문을 하지 않습니다. 질문에 대해 특정 기본값을 지정하면서, 질문을 하게 만들고 싶으면, 연산자에 =이 아니라 ?=라고 쓰십시오. B.5.2절. “미리 설정을 이용해 기본값 바꾸기” 부분도 참고하십시오.

부팅 파라미터에서 자주 사용하는 변수 몇개는 짧게 쓸 수 있습니다. 이 부록에 있는 예제에서는 그렇게 짧은 형식이 있으면 완전한 변수명을 쓰지 않고 짧은 형식을 사용합니다. 예를 들어 preseed/url 변수는 예제에서 url로 씁니다. 또 예제에서 tasks라고 쓰면 tasksel:tasksel/first에 해당합니다.

부팅 옵션의 --는 특별한 의미가 있습니다. 마지막 -- 뒤에 오는 커널 파라미터는 설치한 시스템의 부트로더 설정으로 복사되어 들어갑니다. (설치 프로그램에서 설치하는 부트로더가 지원하는 경우.) 설치 프로그램은(미리 설정 옵션과 마찬가지로) 설치 프로그램에서 인식하는 옵션만 모두 걸러냅니다.

참고

현재 리눅스 커널은(2.6.9 이후) 최대 32개까지의 명령행 파라미터와 32개까지의 환경 파라미터만 쓸 수 있습니다. (설치 프로그램에서 기본으로 추가하는 파라미터 포함해서 32개입니다.) 이보다 많으면 커널이 멎어 버립니다. (이보다 오래된 버전의 커널에서는 파라미터 개수 제한이 이보다 더 작습니다.)

대부분 설치할 때 (vga=normal같은) 기본 옵션 중에 안 써도 되는 옵션이 있습니다. 그러면 미리 설정 옵션을 몇 개 더 쓸 수 있습니다.

참고

부팅 파라미터에서는 공백이 들어간 값을 지정할 수 없습니다. 따옴표로 묶어도 할 수 없습니다.

B.2.3. 자동 모드

There are several features of 데비안 GNU/리눅스 Installer that combine to allow fairly simple command lines at the boot prompt to result in arbitrarily complex customized automatic installs.

This is enabled by using the Automated install boot choice, also called auto for some architectures or boot methods. In this section, auto is thus not a parameter, it means selecting that boot choice, and appending the following boot parameters on the boot prompt.

To illustrate this, here are some examples that can be used at the boot prompt:

auto url=autoserver

This relies on there being a DHCP server that will get the machine to the point where autoserver can be resolved by DNS, perhaps after adding the local domain if that was provided by DHCP. If this was done at a site where the domain is example.com, and they have a reasonably sane DHCP setup, it would result in the preseed file being retrieved from http://autoserver.example.com/d-i/wheezy/./preseed.cfg.

URL의 뒤쪽 부분은(d-i/wheezy/./preseed.cfg) auto-install/defaultroot에서 가져옵니다. 기본값으로 여기에는 wheezy 디렉터리가 들어 있습니다. 다음 버전에서는 그 버전에 해당되는 코드네임을 이 값으로 사용할 예정이고, 그러면 사람이 정해진 방법을 통해 다음 버전으로 업그레이드할 수 있습니다. /./ 부분은 맨 위 디렉터리를 가리키는 것으로, 지정한 해당 경로에(preseed/include 및 preseed/run에서 사용) 대한 상대값입니다. 이를 이용해 파일을 완전한 URL로 지정할 수도 있고, /로 시작하는 경로로 지정할 수도 있고, 마지막 미리 지정 파일이 있던 위치에 대한 상대 경로로 지정할 수도 있습니다. 이 점을 이용하면 전체 스크립트를 완전히 새로운 위치에 옮겨도 문제가 없는 포터블한 스크립트를 구성할 수 있습니다. 예를 들어 웹서버에 있던 파일을 USB 메모리에 옮겨도 문제가 없게 됩니다. 이 예제의 미리 지정 파일에서는 preseed/run 값을 /scripts/late_command.sh라고 지정하면 http://autoserver.example.com/d-i/wheezy/./scripts/late_command.sh에서 파일을 가져옵니다.

로컬 네트워크에 DHCP 혹은 DNS 서버 따위가 없거나 preseed.cfg에 대한 기본값 경로를 바꾸고 싶으면, URL을 직접 사용할 수도 있습니다. /./ 부분을 사용하지 않으면 경로의 첫 부분에 대한(즉 URL에서 세번째 /) 경로가 됩니다. 다음은 로컬 네트워크에서 최소한의 지원이 있어야 동작하는 예제입니다:

auto url=http://192.168.1.2/파일에/대한/경로/mypreseed.file

위와 같이 하면 다음과 같이 동작합니다:

  • URL의 프로토콜 부분을 생략하면 http라고 가정합니다.

  • 호스트 이름에 점이 없으면, DHCP에서 넘겨준 도메인을 뒤에 붙입니다.

  • 호스트 이름 뒤에 /가 없으면 기본 경로를 뒤에 붙입니다.

URL을 지정하는 것 외에, debian-installer의 동작과 직접 관계없지만 미리 설정 파일의 preseed/run에서 지정한 스크립트로 넘길 사항을 지정할 수도 있습니다. 현재 관련 예제는 auto-install/classesclasses라고 줄여 쓸 수 있습니다. 다음과 같이 사용합니다:

auto url=example.com classes=클래스_A;클래스_B

클래스는 설치하려는 시스템의 종류를 지정하거나, 지역화를 지정합니다.

이 개념을 확장할 수도 있고, 확장하는 경우 auto-install 네임스페이스를 사용하는 게 보기 좋습니다. 즉 auto-install/style과 같이 스크립트에서 사용할 수 있습니다. 이렇게 해야 겠다고 생각이 들면, 메일링 리스트에 알려 주십시오. 그래야 네임스페이스 충돌을 피하고, 여러분의 파라미터에 해당하는 줄임말을 추가할 수도 있습니다.

The auto boot choice is not yet defined on all arches. The same effect may be achieved by simply adding the two parameters auto=true priority=critical to the kernel command line. The auto kernel parameter is an alias for auto-install/enable and setting it to true delays the locale and keyboard questions until after there has been a chance to preseed them, while priority is an alias for debconf/priority and setting it to critical stops any questions with a lower priority from being asked.

그 외에 DHCP를 사용할 때 설치를 자동화하면서 관심 가질만한 옵션은 다음과 같습니다: interface=auto netcfg/dhcp_timeout=60이라고 하면 처음 찾은 네트워크 인터페이스를 이용하고 DHCP 요청에 대한 응답을 좀 더 오래 기다립니다.

작은 정보

예제 스크립트와 클래스 등, 이 프레임워크를 사용하는 다양한 예제가 개발자의 웹사이트에 있습니다. 이 사이트에 있는 예제는 미리 설정을 통해 기발하고 다양한 멋진 기능을 수행하는 예제도 있습니다.

B.2.4. 미리 설정할 때 쓸모 있는 줄임말

미리 설정을 사용할 경우(자동 모드) 다음 줄임말을 사용하면 좋습니다. 다음 줄임말은 질문 이름에 대한 줄임말일 뿐이고, 물론 값도 같이 쓸 수 있습니다. 예를 들어 auto=true 혹은 interface=eth0 처럼 쓸 수 있습니다.

priority debconf/priority
fb debian-installer/framebuffer
language debian-installer/language
country debian-installer/country
locale debian-installer/locale
theme debian-installer/theme
auto auto-install/enable
classes auto-install/classes
file preseed/file
url preseed/url
domain netcfg/get_domain
hostname    netcfg/get_hostname
interface netcfg/choose_interface
protocol mirror/protocol
suite mirror/suite
modules anna/choose_modules
recommends base-installer/install-recommends
tasks tasksel:tasksel/first
desktop tasksel:tasksel/desktop
dmraid disk-detect/dmraid/enable
keymap keyboard-configuration/xkb-keymap
preseed-md5 preseed/file/checksum

B.2.5. 미리 설정 파일을 지정하는 데 DHCP 서버 사용하기

미리 설정 파일을 네트워크에서 다운로드하도록 지정하려면 DHCP를 사용할 수 있습니다. DHCP에서 파일 이름을 지정할 수 있습니다. 보통 이것은 netboot 파일이지만, URL 형식으로되어 있으면 네트워크 preseed을 지원하는 설치 방식은 그 URL에서 파일을 내려받은 다음 설정 파일로 사용합니다. 다음은 ISC DHCP 버전 3 서버에 dhcpd.conf 설정하는 예제입니다(데비안 GNU/리눅스의 isc-dhcp-server 패키지).

if substring (option vendor-class-identifier, 0, 3) = "d-i" {
    filename "http://host/preseed.cfg";
}

위의 예에서 자신을 "d-i"라고 주장하는 DHCP 클라이언트에만 이 파일 이름을 전달하므로 일반 DHCP 클라이언트에는 아무런 영향이 없습니다. 특정 호스트에 대해서만 설정하면 네트워크의 모든 시스템을 미리 설정하지 않게 만들 수 있습니다.

DHCP preseed을 사용하는 좋은 방법은 자신의 네트워크에는 데비안 GNU/리눅스 미러 같은 preseed 값만 지정하는 것입니다. 자신의 네트워크에이 방법으로 설치하면 선택한 적당한 미러를 자동으로 가져 오지만 나머지 설치 과정은 직접 지정할 수 있습니다. DHCP preseed를 이용한 데비안 GNU/리눅스의 완전 자동 설치는 충분히 주의하여야 할 필요가 없습니다.



[22] 어떤 debconf 변수(혹은 서식)의 소유자는 보통 그 debconf 서식이 들어 있는 패키지의 이름을 말합니다. 서식과 변수는 소유자가 여러 개일 수도 있습니다. 그래서 패키지의 설정까지 지워버릴 때 소유자 정보를 이용해 해당 서식과 변수까지 지워질지 여부가 결정됩니다.