396 lines
18 KiB
Markdown
396 lines
18 KiB
Markdown
|
---
|
||
|
title: Ubuntu インストールの自動化
|
||
|
date: 2011-01-02T15:04:05Z
|
||
|
author: kazu634
|
||
|
categories:
|
||
|
- Linux
|
||
|
tags:
|
||
|
- ubuntu
|
||
|
- preseed
|
||
|
---
|
||
|
<div class="section">
|
||
|
<p>
|
||
|
<a href="http://d.hatena.ne.jp/asin/B004EBH770" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/asin/B004EBH770', 'Software Design');">Software Design</a> で紹介されていたOS構築自動化を試してみました。なお、 <a href="http://d.hatena.ne.jp/asin/B004EBH770" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/asin/B004EBH770', 'Software Design');">Software Design</a> では、 Red Hat Linux の Kickstart の紹介がメインでしたが、ここでは Ubuntu (というかDebian 系)の Preseed の使い方を眺めてみます。ちなみに対象は Ubuntu Server 10.04 です。
|
||
|
</p>
|
||
|
|
||
|
<h4>
|
||
|
OS 構築の自動化
|
||
|
</h4>
|
||
|
|
||
|
<p>
|
||
|
Ubuntu をインストールする際は、言語・キーボードの設定、ネットワークの設定、パーティーションの設定、インストールするパッケージの設定などを行います。
|
||
|
</p>
|
||
|
|
||
|
<p>
|
||
|
<center>
|
||
|
</center>
|
||
|
</p>
|
||
|
|
||
|
<p>
|
||
|
<a href="http://f.hatena.ne.jp/sirocco634/20110102195155" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://f.hatena.ne.jp/sirocco634/20110102195155', '');" class="hatena-fotolife" target="_blank"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/s/sirocco634/20110102/20110102195155.png" alt="f:id:sirocco634:20110102195155p:image" title="f:id:sirocco634:20110102195155p:image" class="hatena-fotolife" /></a>
|
||
|
</p></p>
|
||
|
|
||
|
<p>
|
||
|
それに対して Preseed を用いた場合、各種設定ファイルを事前に準備することで、対話的な応答を自動応答で済ませることができます。
|
||
|
</p>
|
||
|
|
||
|
<p>
|
||
|
<center>
|
||
|
</center>
|
||
|
</p>
|
||
|
|
||
|
<p>
|
||
|
<a href="http://f.hatena.ne.jp/sirocco634/20110102195156" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://f.hatena.ne.jp/sirocco634/20110102195156', '');" class="hatena-fotolife" target="_blank"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/s/sirocco634/20110102/20110102195156.png" alt="f:id:sirocco634:20110102195156p:image" title="f:id:sirocco634:20110102195156p:image" class="hatena-fotolife" /></a>
|
||
|
</p></p>
|
||
|
|
||
|
<p>
|
||
|
さらにインストール終了後に、任意のスクリプトを実行することができます。これを行うことで、設定ファイルを書き換えることも可能♪
|
||
|
</p>
|
||
|
|
||
|
<h4>
|
||
|
設定ファイル
|
||
|
</h4>
|
||
|
|
||
|
<p>
|
||
|
設定ファイルは以下のようになります。ちなみに以下の設定ファイルは
|
||
|
</p>
|
||
|
|
||
|
<ul>
|
||
|
<li>
|
||
|
タイムゾーンは「Asia/Tokyo」
|
||
|
</li>
|
||
|
<li>
|
||
|
NTP の設定を行う
|
||
|
</li>
|
||
|
<li>
|
||
|
パーティションは「LVM」で、ガイドに任せて出来る限り LVM として使用する
|
||
|
</li>
|
||
|
<li>
|
||
|
作成するユーザーは「kazu634」、パスワードは「simoom634」
|
||
|
</li>
|
||
|
<li>
|
||
|
SSHサーバを導入する
|
||
|
</li>
|
||
|
<li>
|
||
|
Git, SQLite3 を導入する
|
||
|
</li>
|
||
|
</ul>
|
||
|
|
||
|
```conf
|
||
|
#### Contents of the preconfiguration file (for )
|
||
|
### Mirror settings
|
||
|
# If you select ftp, the mirror/country string does not need to be set.
|
||
|
#d-i mirror/protocol string ftp
|
||
|
d-i mirror/country string manual
|
||
|
d-i mirror/http/hostname string jp.archive.ubuntu.com
|
||
|
d-i mirror/http/directory string /ubuntu/
|
||
|
d-i mirror/http/proxy string
|
||
|
# Alternatively: by default, the installer uses CC.archive.ubuntu.com where
|
||
|
# CC is the ISO-3166-2 code for the selected country. You can preseed this
|
||
|
# so that it does so without asking.
|
||
|
#d-i mirror/http/mirror select CC.archive.ubuntu.com
|
||
|
# Suite to install.
|
||
|
#d-i mirror/suite string
|
||
|
# Suite to use for loading installer components (optional).
|
||
|
#d-i mirror/udeb/suite string
|
||
|
# Components to use for loading installer components (optional).
|
||
|
#d-i mirror/udeb/components multiselect main, restricted
|
||
|
### 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/Tokyo
|
||
|
# Controls whether to use NTP to set the clock during the install
|
||
|
d-i clock-setup/ntp boolean true
|
||
|
# NTP server to use. The default is almost always fine here.
|
||
|
d-i clock-setup/ntp-server string ntp.ubuntu.com
|
||
|
### Partitioning
|
||
|
# If the system has free space you can choose to only partition that space.
|
||
|
# Alternatives: custom, some_device, some_device_crypto, some_device_lvm.
|
||
|
#d-i partman-auto/init_automatically_partition select biggest_free
|
||
|
# Alternatively, you can specify a disk to partition. The device name must
|
||
|
# be given in traditional non-devfs format.
|
||
|
# Note: A disk must be specified, unless the system has only one disk.
|
||
|
# For example, to use the first SCSI/SATA hard disk:
|
||
|
d-i partman-auto/disk string /dev/sda
|
||
|
# In addition, you'll need to specify the method to use.
|
||
|
# The presently available methods are: "regular", "lvm" and "crypto"
|
||
|
d-i partman-auto/method string lvm
|
||
|
# If one of the disks that are going to be automatically partitioned
|
||
|
# contains an old LVM configuration, the user will normally receive a
|
||
|
# warning. This can be preseeded away...
|
||
|
d-i partman-lvm/device_remove_lvm boolean true
|
||
|
# The same applies to pre-existing software RAID array:
|
||
|
d-i partman-md/device_remove_md boolean true
|
||
|
# And the same goes for the confirmation to write the lvm partitions.
|
||
|
d-i partman-lvm/confirm boolean true
|
||
|
# For LVM partitioning, you can select how much of the volume group to use
|
||
|
# for logical volumes.
|
||
|
d-i partman-auto-lvm/guided_size string max
|
||
|
#d-i partman-auto-lvm/guided_size string 10GB
|
||
|
#d-i partman-auto-lvm/guided_size string 50%
|
||
|
# You can choose one of the three predefined partitioning recipes:
|
||
|
# - atomic: all files in one partition
|
||
|
# - home: separate /home partition
|
||
|
# - multi: separate /home, /usr, /var, and /tmp partitions
|
||
|
d-i partman-auto/choose_recipe select atomic
|
||
|
# Or provide a recipe of your own...
|
||
|
# The recipe format is documented in the file devel/partman-auto-recipe.txt.
|
||
|
# If you have a way to get a recipe file into the d-i environment, you can
|
||
|
# just point at it.
|
||
|
#d-i partman-auto/expert_recipe_file string /hd-media/recipe
|
||
|
# If not, you can put an entire recipe into the preconfiguration file in one
|
||
|
# (logical) line. This example creates a small /boot partition, suitable
|
||
|
# swap, and uses the rest of the space for the root partition:
|
||
|
#d-i partman-auto/expert_recipe string \
|
||
|
# 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{ } \
|
||
|
# .
|
||
|
# If you just want to change the default filesystem from ext3 to something
|
||
|
# else, you can do that without providing a full recipe.
|
||
|
#d-i partman/default_filesystem string ext4
|
||
|
# This makes partman automatically partition without confirmation, provided
|
||
|
# that you told it what to do using one of the methods above.
|
||
|
d-i partman/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
|
||
|
### Controlling how partitions are mounted
|
||
|
# The default is to mount by UUID, but you can also choose "traditional" to
|
||
|
# use traditional device names, or "label" to try filesystem labels before
|
||
|
# falling back to UUIDs.
|
||
|
#d-i partman/mount_style select uuid
|
||
|
### Base system installation
|
||
|
# The kernel image (meta) package to be installed; "none" can be used if no
|
||
|
# kernel is to be installed.
|
||
|
d-i base-installer/kernel/image string linux-server
|
||
|
### Account setup
|
||
|
# Skip creation of a root account (normal user account will be able to
|
||
|
# use sudo). The default is false; preseed this to true if you want to set
|
||
|
# a root password.
|
||
|
#d-i passwd/root-login boolean false
|
||
|
# 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 Kazuhiro MUSASHI
|
||
|
d-i passwd/username string kazu634
|
||
|
# Normal user's password, either in clear text
|
||
|
d-i passwd/user-password password simoom634
|
||
|
d-i passwd/user-password-again password simoom634
|
||
|
# or encrypted using an MD5 hash.
|
||
|
#d-i passwd/user-password-crypted password [MD5 hash]
|
||
|
# Create the first user with the specified UID instead of the default.
|
||
|
#d-i passwd/user-uid string 1010
|
||
|
# 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
|
||
|
# The user account will be added to some standard initial groups. To
|
||
|
# override that, use this.
|
||
|
#d-i passwd/user-default-groups string audio cdrom video
|
||
|
# Set to true if you want to encrypt the first user's home directory.
|
||
|
d-i user-setup/encrypt-home boolean false
|
||
|
### Apt setup
|
||
|
# You can choose to install restricted and universe software, or to install
|
||
|
# software from the backports repository.
|
||
|
#d-i apt-setup/restricted boolean true
|
||
|
#d-i apt-setup/universe boolean true
|
||
|
#d-i apt-setup/backports boolean true
|
||
|
# Uncomment this if you don't want to use a network mirror.
|
||
|
#d-i apt-setup/use_mirror boolean false
|
||
|
# Select which update services to use; define the mirrors to be used.
|
||
|
# Values shown below are the normal defaults.
|
||
|
#d-i apt-setup/services-select multiselect security
|
||
|
#d-i apt-setup/security_host string security.ubuntu.com
|
||
|
#d-i apt-setup/security_path string /ubuntu
|
||
|
# Additional repositories, local[0-9] available
|
||
|
#d-i apt-setup/local0/repository string \
|
||
|
# http://local.server/ubuntu main
|
||
|
#d-i apt-setup/local0/comment string local server
|
||
|
# Enable deb-src lines
|
||
|
#d-i apt-setup/local0/source boolean true
|
||
|
# URL to the public key of the local repository; you must provide a key or
|
||
|
# apt will complain about the unauthenticated repository and so the
|
||
|
# sources.list line will be left commented out
|
||
|
#d-i apt-setup/local0/key string http://local.server/key
|
||
|
# By default the installer requires that repositories be authenticated
|
||
|
# using a known gpg key. This setting can be used to disable that
|
||
|
# authentication. Warning: Insecure, not recommended.
|
||
|
#d-i debian-installer/allow_unauthenticated string true
|
||
|
### Package selection
|
||
|
tasksel tasksel/first multiselect standard, OpenSSH server
|
||
|
#tasksel tasksel/first multiselect lamp-server, print-server
|
||
|
#tasksel tasksel/first multiselect kubuntu-desktop
|
||
|
# Individual additional packages to install
|
||
|
d-i pkgsel/include string build-essential, git-core, unzip, pkg-config, sqlite3, libsqlite3-dev
|
||
|
# Whether to upgrade packages after debootstrap.
|
||
|
# Allowed values: none, safe-upgrade, full-upgrade
|
||
|
d-i pkgsel/upgrade select safe-upgrade
|
||
|
# Language pack selection
|
||
|
d-i pkgsel/language-packs multiselect
|
||
|
# 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
|
||
|
# 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
|
||
|
# By default, the system's locate database will be updated after the
|
||
|
# installer has finished installing most packages. This may take a while, so
|
||
|
# if you don't want it, you can set this to "false" to turn it off.
|
||
|
d-i pkgsel/updatedb boolean false
|
||
|
### Boot loader installation
|
||
|
# Grub is the default boot loader (for x86). If you want lilo installed
|
||
|
# instead, uncomment this:
|
||
|
#d-i grub-installer/skip boolean true
|
||
|
# To also skip installing lilo, and install no bootloader, uncomment this
|
||
|
# too:
|
||
|
#d-i lilo-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)
|
||
|
# Optional password for grub, either in clear text
|
||
|
#d-i grub-installer/password password r00tme
|
||
|
#d-i grub-installer/password-again password r00tme
|
||
|
# or encrypted using an MD5 hash, see grub-md5-crypt(8).
|
||
|
#d-i grub-installer/password-crypted password [MD5 hash]
|
||
|
### Finishing up the installation
|
||
|
# During installations from serial console, the regular virtual consoles
|
||
|
# (VT1-VT6) are normally disabled in /etc/inittab. Uncomment the next
|
||
|
# line to prevent this.
|
||
|
#d-i finish-install/keep-consoles boolean true
|
||
|
# 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
|
||
|
# This is how to make the installer shutdown when finished, but not
|
||
|
# reboot into the installed system.
|
||
|
#d-i debian-installer/exit/halt boolean true
|
||
|
# This will power off the machine instead of just halting it.
|
||
|
#d-i debian-installer/exit/poweroff boolean true
|
||
|
### X configuration
|
||
|
# X can detect the right driver for some cards, but if you're preseeding,
|
||
|
# you override whatever it chooses. Still, vesa will work most places.
|
||
|
#xserver-xorg xserver-xorg/config/device/driver select vesa
|
||
|
# A caveat with mouse autodetection is that if it fails, X will retry it
|
||
|
# over and over. So if it's preseeded to be done, there is a possibility of
|
||
|
# an infinite loop if the mouse is not autodetected.
|
||
|
#xserver-xorg xserver-xorg/autodetect_mouse boolean true
|
||
|
# Monitor autodetection is recommended.
|
||
|
# xserver-xorg xserver-xorg/autodetect_monitor boolean true
|
||
|
# Uncomment if you have an LCD display.
|
||
|
#xserver-xorg xserver-xorg/config/monitor/lcd boolean true
|
||
|
# X has three configuration paths for the monitor. Here's how to preseed
|
||
|
# the "medium" path, which is always available. The "simple" path may not
|
||
|
# be available, and the "advanced" path asks too many questions.
|
||
|
# xserver-xorg xserver-xorg/config/monitor/selection-method \
|
||
|
# select medium
|
||
|
# xserver-xorg xserver-xorg/config/monitor/mode-list \
|
||
|
# select 1024x768 @ 60 Hz
|
||
|
### Preseeding other packages
|
||
|
# Depending on what software you choose to install, or if things go wrong
|
||
|
# during the installation process, it's possible that other questions may
|
||
|
# be asked. You can preseed those too, of course. To get a list of every
|
||
|
# possible question that could be asked during an install, do an
|
||
|
# installation, and then run these commands:
|
||
|
# debconf-get-selections --installer > file
|
||
|
# debconf-get-selections >> file
|
||
|
#### Advanced options
|
||
|
### Running custom commands during the installation
|
||
|
# d-i preseeding is inherently not secure. Nothing in the installer checks
|
||
|
# for attempts at buffer overflows or other exploits of the values of a
|
||
|
# preconfiguration file like this one. Only use preconfiguration files from
|
||
|
# trusted locations! To drive that home, and because it's generally useful,
|
||
|
# here's a way to run any shell command you'd like inside the installer,
|
||
|
# automatically.
|
||
|
# This first command is run as early as possible, just after
|
||
|
# preseeding is read.
|
||
|
#d-i preseed/early_command string anna-install some-udeb
|
||
|
# This command is run immediately before the partitioner starts. It may be
|
||
|
# useful to apply dynamic partitioner preseeding that depends on the state
|
||
|
# of the disks (which may not be visible when preseed/early_command runs).
|
||
|
#d-i partman/early_command string debconf-set partman-auto/disk "$(list-devices disk | head -n1)"
|
||
|
# This command is run just before the install finishes, but when there is
|
||
|
# still a usable /target directory. You can chroot to /target and use it
|
||
|
# directly, or use the apt-install and in-target commands to easily install
|
||
|
# packages and run commands in the target system.
|
||
|
d-i preseed/late_command string wget http://www3232u.sakura.ne.jp/preseed/preseed.sh -O /target/tmp/preseed.sh; in-target chmod +x /tmp/preseed.sh; in-target /tmp/preseed.sh
|
||
|
```
|
||
|
|
||
|
<h4>
|
||
|
インストーラーに設定ファイルを指定する
|
||
|
</h4>
|
||
|
|
||
|
<p>
|
||
|
下の画面で F6 キーを押して、
|
||
|
</p>
|
||
|
|
||
|
<p>
|
||
|
<center>
|
||
|
</center>
|
||
|
</p>
|
||
|
|
||
|
<p>
|
||
|
<a href="http://f.hatena.ne.jp/sirocco634/20110102175435" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://f.hatena.ne.jp/sirocco634/20110102175435', '');" class="hatena-fotolife" target="_blank"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/s/sirocco634/20110102/20110102175435.jpg" alt="f:id:sirocco634:20110102175435j:image" title="f:id:sirocco634:20110102175435j:image" class="hatena-fotolife" /></a>
|
||
|
</p></p>
|
||
|
|
||
|
<blockquote>
|
||
|
<p>
|
||
|
FILE=…
|
||
|
</p>
|
||
|
</blockquote>
|
||
|
|
||
|
<p>
|
||
|
の部分を
|
||
|
</p>
|
||
|
|
||
|
<blockquote>
|
||
|
<p>
|
||
|
url=http://設定ファイルの在り処
|
||
|
</p>
|
||
|
</blockquote>
|
||
|
|
||
|
<p>
|
||
|
に書き換えます。例えば:
|
||
|
</p>
|
||
|
|
||
|
<p>
|
||
|
<center>
|
||
|
</center>
|
||
|
</p>
|
||
|
|
||
|
<p>
|
||
|
<a href="http://f.hatena.ne.jp/sirocco634/20110102175434" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://f.hatena.ne.jp/sirocco634/20110102175434', '');" class="hatena-fotolife" target="_blank"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/s/sirocco634/20110102/20110102175434.jpg" alt="f:id:sirocco634:20110102175434j:image" title="f:id:sirocco634:20110102175434j:image" class="hatena-fotolife" /></a>
|
||
|
</p></p>
|
||
|
</div>
|