動かざることバグの如し

近づきたいよ 君の理想に

Ubuntu Serverのインストールを全自動化して無人インストール

思ったほど日本語のドキュメントなくて驚いた。やっぱ普通は仮想化なりなんなりでもっと楽してるんだろうな・・・

適当に作業場を作る。ここで2つのディレクトリ「iso1」「iso2」を作るが

  • iso1は元のUbuntuのイメージのマウント場所
  • iso2は作業場
cd /var/tmp
mkdir iso1 iso2

マウント

sudo mount -o loop,ro /pass/to/image/ubuntu-12.04.4-server-amd64.iso /var/tmp/iso1

iso1の内容をiso2にコピー

cd iso1
sudo find . ! -type l | cpio -pdum ../iso2

iso2/isolinux/isolinux.cfgの起動オプションを変更する。以下がデフォルト

# D-I config version 2.0
include menu.cfg
default vesamenu.c32
prompt 0
timeout 0
ui gfxboot bootlogo

下記のようにする。今回のキモである「preseed.cfg」のURLは各々変更する

default install
label install
  menu label ^Install Ubuntu Server
  kernel /install/vmlinuz
  append DEBCONF_DEBUG=5 auto=true locale=en_US.UTF-8 console-setup/charmap=UTF-8 console-setup/layoutcode=us console-setup/ask_detect=false pkgsel/language-pack-patterns=pkgsel/install-language-support=false interface=eth0 hostname=localhost domain=localdomain url=http://nyaaz.dip.jp/preseed.cfg vga=normal initrd=/install/initrd.gz quiet --
timeout 3

isoの生成

sudo genisoimage -N -J -R -D -V "PRESEED" -o /home/pass/mod.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table iso2

そして「preseed.cfg」の設定

#===========================================================================================
#言語設定
#===========================================================================================
#キーボードは日本語だが表示は文字化け回避のため日本語
d-i debian-installer/language string en
d-i debian-installer/country string US
d-i debian-installer/locale string en_US.UTF-8
d-i localechooser/supported-locales en_US.UTF-8
d-i console-setup/ask_detect boolean false
d-i console-setup/layoutcode string us
d-i console-setup/charmap select UTF-8
d-i keyboard-configuration/layoutcode string jp
d-i keyboard-configuration/modelcode jp106
#===========================================================================================
# ネットワーク(DHCPver)
#-------------------------------------------------------------------------------------------
d-i netcfg/choose_interface select eth0
d-i netcfg/disable_autoconfig boolean false
d-i netcfg/get_hostname string hostname
#===========================================================================================
# ミラー・TimeZone
#===========================================================================================
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

d-i clock-setup/utc boolean true
d-i time/zone string Japan
d-i clock-setup/ntp boolean true
#===========================================================================================
# パーティション設定
#===========================================================================================
d-i partman-auto/disk string /dev/sda
d-i partman-auto/method string regular
d-i partman-auto/choose_recipe select atomic
d-i partman/default_filesystem string ext4
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
#===========================================================================================
# ユーザー設定
#  root pass
#  user pass
#===========================================================================================
d-i passwd/root-login boolean false
d-i passwd/make-user boolean true
d-i passwd/root-password password pass
d-i passwd/root-password-again password pass
d-i passwd/user-fullname string user
d-i passwd/username string user
d-i passwd/user-password password pass
d-i passwd/user-password-again password pass
d-i user-setup/allow-password-weak boolean true
d-i user-setup/encrypt-home boolean false
#===========================================================================================
# その他
#===========================================================================================
tasksel tasksel/first multiselect none
d-i pkgsel/upgrade select none
d-i pkgsel/update-policy select none
d-i pkgsel/install-language-support boolean true
# GRUBインストーラー
d-i grub-installer/only_debian boolean true
d-i grub-installer/bootdev string /dev/sda
#再起動
d-i finish-install/reboot_in_progress note

preseed.cfgに関しては以下が役立つ https://help.ubuntu.com/12.04/installation-guide/example-preseed.txt

あと

d-i pkgsel/include string ssh ・・・・・

で追加したいパッケージをインスコ

d-i pkgsel/upgrade select full-upgrade

でupgradeパッケージしてくれる。