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

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

미리 설정 파일을 만들 때 기초로 사용할 수 있는 예제 파일이 https://www.buy-develop.eu.org/releases/bookworm/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
- 아니면
  preseed/url=tftp://호스트/파일에/대한/경로/preseed.cfg
  preseed/url/checksum=5da499872becccfeda2c4872f9171c3d

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

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

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

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

[참고] 참고

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

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

[참고] 참고

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

B.2.3. 자동 모드

부팅 프롬프트에서 매우 간단한 명령으로 임의의 복잡한 자동 설치를 할 수 있는 데비안 설치 프로그램의 기능이 있습니다.

이 기능은 Automated install 부팅 메뉴를 선택해서 시작합니다. 일부 아키텍쳐나 일부 부팅 방식에서는 auto라고 하기도 합니다. 여기서는 auto가 파라미터가 아니라, 부팅 메뉴의 선택을 말하고, 부팅 프롬프트에서 부팅 파라미터로 추가하는 걸 말합니다.

다음은 부팅 프롬프트에서 사용할 수 있는 예입니다.

auto url=autoserver

이것은 DNS에서 autoserver 이름을 확인할 수 있고(DHCP에서 로컬 도메인이 있으면 뒤에 붙이고), 그 시스템이 DHCP 서버임을 가정합니다. example.com이라는 도메인의 사이트가 DHCP를 설정하면, http://autoserver.example.com/d-i/bookworm/./preseed.cfg에서 preseed 파일을 가져옵니다.

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

auto 부팅 레이블이 모든 아키텍처에서 정의된 것은 아닙니다. 커널 명령행에 파라미터 두 개, auto=true priority=critical이라고 추가하기만 하면 같은 효과를 거둘 수 있습니다. auto 커널 파라미터는 auto-install/enable의 줄임말이고 미리 설정할 수 있도록 로캘 및 키보드 질문을 뒤로 늦춥니다. 또 prioritydebconf/priority의 줄임말이고 critical로 설정하면 필수 우선순위보다 낮은 우선순위의 질문을 하지 않게 됩니다.

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

[작은 정보] 작은 정보

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

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

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

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

B.2.5. 부팅 프롬프트 미리 설정 예제

다음은 부팅 프롬프트의 모양을 바꾸는 예제입니다. (필요에 따라 바꿔야 할 수 도 있습니다. )

# 프랑스어를 언어, 프랑스를 국가로 설정하기:
/install.amd/vmlinuz vga=788 initrd=/install.amd/gtk/initrd.gz language=fr country=FR --- quiet
# 영어를 언어로, 독일을 국가로 설정하고, 독일 키보드 배치를 사용:
/install.amd/vmlinuz vga=788 initrd=/install.amd/gtk/initrd.gz language=en country=DE locale=en_US.UTF-8 keymap=de --- quiet
# MATE 데스크톱 설치하기:
/install.amd/vmlinuz vga=788 initrd=/install.amd/gtk/initrd.gz desktop=mate-desktop --- quiet
# web-server 태스크 설치하기:
/install.amd/vmlinuz initrd=/install.amd/initrd.gz tasksel:tasksel/first=web-server ---

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

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

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

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

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



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