고급 Ubuntu

무인 설치 (debian-installer)

개요

 Ubuntu의 무인설치 과정은 Ubuntu Installer를 활용한 방법과 Kickstart를 활용하는 방법이 있다. 본 문서에서는 설치 도중 물어보는 질문에 대한 응답파일을 만들어서 구성하는 Ubuntu Installer 기능을 활용하여 Ubuntu Server를 자동 설치하는 과정을 설명한다.

작업 환경

 모든 작업은 Windows 환경에서 다운로드 받은 Ubuntu Server ISO 파일 내의 파일 수정을 통해 이뤄진다. ISO 파일을 수정할 수 있는 UltraISO를 사용하여 파일을 편집/저장한다.

부트로더 메뉴 자동 진입

 부팅 시스템의 환경에 따라서 GRUB 또는 ISOLINUX 부트로더가 로드된다.

 두 부트로더의 설정 파일을 모두 수정하여 서버 설치 메뉴로 자동 진입하도록 한다.

 /boot/grub/grub.cfg 파일에서 timeout을 0으로 설정한다.

set timeout=0

 /isolinux/isolinux.cfg 파일에서 timeout을 1로 설정한다. 0은 무한 대기이다.

timeout 1

Preseeding

 Preseeding은 설치 도중 물어보는 질문에 대한 응답을 미리 구성해놓는 방식이다. Ubuntu Installer는 이 방식을 지원한다. /preseed 디렉터리에는 미리 만들어놓은 응답 파일이 존재하는데, 이 디렉터리에 자동 설치를 위한 새 파일을 생성한다. 본 문서에서는 `ubuntu-server-unattend.seed`라는 파일을 생성했다. 이제 부트로더의 부팅 메뉴 항목을 설정하는 /boot/grub/grub.cfg와 /isolinux/txt.cfg 파일에서 해당 preseed 파일을 로드하도록 파일 경로를 수정한다.

# /boot/grub/grub.cfg
menuentry "Install Ubuntu Server" {
    set gfxpayload=keep
	linux	/install/vmlinuz  file=/cdrom/preseed/ubuntu-server-unattend.seed quiet ---
	initrd	/install/initrd.gz
}

# /isolinux/txt.cfg
label install
  menu label ^Install Ubuntu Server
  kernel /install/vmlinuz
  append  file=/cdrom/preseed/ubuntu-server-unattend.seed vga=788 initrd=/install/initrd.gz quiet ---

Localization

 설치 프로세스의 첫 화면은 로케일 및 언어 설정이다.

이 부분을 건너뛰기 위해서 다음을 시드 파일에 추가한다. 간략한 작성 문법 외에 정식 문법은 공식 문서를 참조해야 한다.

### Localization
# Preseeding only locale sets language, country and locale.
d-i debian-installer/locale string en_US
#d-i debian-installer/country string NL
#d-i debian-installer/locale string en_GB.UTF-8
#d-i debian-installer/language string en
#d-i localechooser/supported-locales multiselect en_US.UTF-8
 로케일 설정 단계의 자동 응답은 initrd 부팅 파라미터에 locale 매개변수를 선언해야만 작동한다. ISOLINUX 부트로더로 부팅 시에는 시드 파일에 로케일 설정 문구가 필요없지만 다른 부팅 환경에서 요구될 수 있으므로 넣어두기로 한다.
 /isolinux/txt.cfg의 append 라인에 locale=en_US를 추가한다.
label install
  menu label ^Install Ubuntu Server
  kernel /install/vmlinuz
  append  file=/cdrom/preseed/preseed.seed vga=788 initrd=/install/initrd.gz locale=en_US quiet ---

 자동으로 지역별 키보드 설정을 세팅하기 위해 다음을 추가한다.

# Keyboard selection.
d-i console-setup/ask_detect boolean false
d-i keyboard-configuration/layoutcode string us
 키보드 설정도 마찬가지로 ISOLINUX 부트로더에서는 시드 파일을 수정할 필요가 없다. initrd 부팅 파라미터에 `keyboard-configuration/layoutcode=us` 매개변수를 추가해야 한다.
label install
  menu label ^Install Ubuntu Server
  kernel /install/vmlinuz
  append  file=/cdrom/preseed/ubuntu-server-unattend.seed vga=788 initrd=/install/initrd.gz locale=en_US keyboard-configuration/layoutcode=us quiet ---

Network configuration

 네트워크 인터페이스를 자동으로 선택할 수 있고, 특정 인터페이스로 설정할 수 있다. 고정 IP를 설정하거나 특정 호스트 네임을 설정하기 위해서는 아래 시드 코드를 참조한다.

### Network configuration
# netcfg will choose an interface that has link if possible. This makes it
# skip displaying a list if there is more than one interface.
d-i netcfg/choose_interface select auto

# To pick a particular interface instead:
#d-i netcfg/choose_interface select eth1

# If you have a slow dhcp server and the installer times out waiting for
# it, this might be useful.
#d-i netcfg/dhcp_timeout string 60

# If you prefer to configure the network manually, uncomment this line and
# the static network configuration below.
#d-i netcfg/disable_dhcp boolean true

# If you want the preconfiguration file to work on systems both with and
# without a dhcp server, uncomment these lines and the static network
# configuration below.
#d-i netcfg/dhcp_failed note
#d-i netcfg/dhcp_options select Configure network manually

# Static network configuration.
#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

# Any hostname and domain names assigned from dhcp take precedence over
# values set here. However, setting the values still prevents the questions
# from being shown, even if values come from dhcp.
d-i netcfg/get_hostname string unassigned-hostname
d-i netcfg/get_domain string unassigned-domain

# Disable that annoying WEP key dialog.
d-i netcfg/wireless_wep string
# The wacky dhcp hostname that some ISPs use as a password of sorts.
#d-i netcfg/dhcp_hostname string radish

Mirror settings

 Ubuntu 패키지 저장소의 주소는 기본값인 `archive.ubuntu.com`이거나 `kr.archive.ubuntu.com`로 설정된다. DaumKaKao에서 제공하고 있는 미러 서버로 변경하면 패키지 다운로드 속도가 향상된다.

### Mirror settings
# If you select ftp, the mirror/country string does not need to be set.
d-i mirror/country string manual
d-i mirror/protocol string http
d-i mirror/http/hostname string http://mirror.kakao.com/
d-i mirror/http/directory string /ubuntu
d-i mirror/http/proxy string

Account setup

 사용자 계정을 생성하는 과정에서 새로운 계정 생성을 건너뛸지 결정한다. root는 기본적으로 존재하며, 패스워드는 평문으로 지정하거나 MD5로 인코딩된 해시값을 입력할 수 있다. 하지만 MD5 해시값도 무차별대입 공격으로 원래 키를 찾을 가능성이 있으므로 보안상 안전한 방법은 아니다.

### Account setup
# Skip creation of a root account (normal user account will be able to
# use sudo).
#d-i passwd/root-login boolean false
#d-i passwd/root-login boolean true
#d-i passwd/make-user boolean true
# Alternatively, to skip creation of a normal user account.
#d-i passwd/make-user boolean false

# Root password, either in clear text
#d-i passwd/root-password password r00tme
#d-i passwd/root-password-again password r00tme
# or encrypted using an MD5 hash.
#d-i passwd/root-password-crypted password [MD5 hash]

# To create a normal user account.
#d-i passwd/user-fullname string Debian User
#d-i passwd/username string debian
# Normal user's password, either in clear text
#d-i passwd/user-password password insecure
#d-i passwd/user-password-again password insecure
# or encrypted using an MD5 hash.
#d-i passwd/user-password-crypted password [MD5 hash]

# The installer will warn about weak passwords. If you are sure you know
# what you're doing and want to override it, uncomment this.
# d-i user-setup/allow-password-weak boolean true

Clock and time zone setup

 시간 및 타임존 설정을 위해 다음 시드 코드를 추가한다. 모든 타임존 코드는 공식 manpages에서 확인할 수 있다.

### Clock and time zone setup
# Controls whether or not the hardware clock is set to UTC.
d-i clock-setup/utc boolean true

# You may set this to any valid setting for $TZ; see the contents of
# /usr/share/zoneinfo/ for valid values.
d-i time/zone string Asia/Seoul

Partitioning

 운영체제를 설치할 장치 디스크를 파티셔닝 하는 과정을 자동화한다. 기존에 남아있던 파일 시스템이 모두 삭제되므로 주의해야 한다. 본 코드는 Legacy BIOS에서 MBR 파티션을 생성한다.

### Partitioning
# The following will partition disk /dev/sda with an EFI partition, a root partition
# and a swap file. AND WONT ASK TO CONFIRM ANYTHING i.e. it will overwrite existing partitions
#d-i preseed/early_command string umount /media
#d-i partman/unmount_active boolean true
#d-i partman-auto/init_automatically_partition select biggest_free
d-i partman-auto/disk string /dev/sda
# d-i partman-auto/disk string /dev/sda /dev/sdb /dev/sdc /dev/sdd
d-i partman-auto/method string regular
# d-i partman-auto/method string lvm
# d-i partman-auto/method string crypto
# d-i partman-auto/method string raid
d-i partman-auto/choose_recipe select atomic
# d-i partman-auto/choose_recipe select home
# d-i partman-auto/choose_recipe select multi
# This makes partman automatically partition without confirmation, provided
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true

Update policy

 운영체제 업데이트 정책을 결정한다.

### Update policy
# Policy for applying updates. May be "none" (no automatic updates),
# "unattended-upgrades" (install security updates automatically), or
# "landscape" (manage system with Landscape).
d-i pkgsel/update-policy select none

Package selection

 추가적으로 설치할 패키지를 선택하는 화면이다.

### Package selection
tasksel tasksel/first multiselect standard, desktop
#tasksel tasksel/first multiselect standard, web-server
#tasksel tasksel/first multiselect standard, kde-desktop

# Individual additional packages to install
d-i pkgsel/include string openssh-server build-essential

# Some versions of the installer can report back on what software you have
# installed, and what software you use. The default is not to report back,
# but sending reports helps the project determine what software is most
# popular and include it on CDs.
#popularity-contest popularity-contest/participate boolean false

Boot loader installation

 GRUB 부트로더를 설치하기 위한 확인 화면이다.

# Grub is the default boot loader (for x86). If you want lilo installed
# instead, uncomment this:
#d-i grub-installer/skip boolean true

# This is fairly safe to set, it makes grub install automatically to the MBR
# if no other operating system is detected on the machine.
#d-i grub-installer/only_debian boolean true

# This one makes grub-installer install to the MBR if it also finds some other
# OS, which is less safe as it might not be able to boot that other OS.
d-i grub-installer/with_other_os boolean true

# Alternatively, if you want to install to a location other than the mbr,
# uncomment and edit these lines:
#d-i grub-installer/only_debian boolean false
#d-i grub-installer/with_other_os boolean false
#d-i grub-installer/bootdev  string (hd0,0)
# To install grub to multiple disks:
#d-i grub-installer/bootdev  string (hd0,0) (hd1,0) (hd2,0)

Finishing up the first stage install

 설치 완료 화면을 스킵하기 위해서 다음 시드 코드를 사용한다.

### Finishing up the first stage install
# Avoid that last message about the install being complete.
d-i finish-install/reboot_in_progress note

# This will prevent the installer from ejecting the CD during the reboot,
# which is useful in some situations.
#d-i cdrom-detect/eject boolean false

댓글

댓글 본문
버전 관리
Hyunseok Lim
현재 버전
선택 버전
graphittie 자세히 보기