成人の日も過ぎて新年気分も一段落し、
昨年、
しかしながら、
そこで今回はこの二つを組み合わせることで、
インストールの前に
手動でインストールする場合は、
ネットブートインストール
ネットブートインストールとは、
インストーラのダウンロード
まずはネットブートインストール用のイメージをダウンロードします。CDイメージのアーカイブサイトに、
$ wget http://archive.ubuntu.com/ubuntu/dists/maverick/main/installer-amd64/current/images/netboot/netboot.tar.gz
すべての設定ファイルが入ったnetboot.
$ tar zxvf netboot.tar.gz $ cd ubuntu-installer/amd64 $ sudo mkdir /boot/ubuntu $ sudo cp linux initrd.gz /boot/ubuntu
GRUBの設定
先ほどコピーしたイメージから起動するよう、
標準インストールされているCentOSはGRUB Legacyを使っているので仮想マシンの設定ファイル(/boot/
title Ubuntu Netboot Install
root (hd0,0)
kernel /boot/ubuntu/linux ro root=LABEL=/ console=tty0 console=ttyS0,115200n8r
initrd /boot/ubuntu/initrd.gz
カスタムOSインストールなどで、
!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
menuentry "Ubuntu Netboot Install" {
set root (hd0,0)
linux /boot/ubuntu/linux ro root=LABEL=/ console=tty0 console=ttyS0,115200n8r
initrd /boot/ubuntu/initrd.gz
}
GRUB 2の場合は編集後、
$ sudo update-grub
実際にインストールしてみる
GRUB Legacy/
インストール画面は、
インストールが完了したら、
$ ssh-keygen -R (仮想マシンのIPアドレス and/or ホスト名)
確認するポイントとしてはログイン自体ができるかどうか、
インストールの自動化
Debian-InstallerをベースにしたUbuntuのインストーラは、
Preseedingは、
- インストーラがあるメディアにファイルとして保存した上で、
インストーラ起動時にそのファイルパスを指定する - インストーラ起動時に事前設定ファイルがあるネットワーク上のURLを指定する
- インストーラのイメージファイル
(initrd. gz) に組み込む
今回はネットブートインストールを使っているために、
なお、
事前設定ファイルを作成する
まず最初に、
$ wget -O preseed.cfg https://help.ubuntu.com/10.10/installation-guide/example-preseed.txt
もし、
$ sudo apt-get update $ sudo apt-get install debconf-utils $ sudo debconf-get-selections --installer > sample.seed
上記ひな形を元に、
# キーボードを設定します(以下は日本語キーボードの場合)
d-i console-setup/layoutcode string jp
# DHCPによるIPアドレス取得を無効化します
d-i netcfg/disable_dhcp boolean true
# IPアドレスを静的に設定します(最初にCentOSで取得した値を使います)
# ネームサーバのアドレス: http://support.sakura.ad.jp/support/vps/tips_ossetup.shtml
d-i netcfg/get_nameservers string 210.188.224.10 210.188.224.1
d-i netcfg/get_ipaddress string (ifconfigで取得した値)
d-i netcfg/get_netmask string (ifconfigで取得した値)
d-i netcfg/get_gateway string (ifconfigで取得した値)
# ホスト名、ドメイン名を設定します(最初にCentOSで取得した値を使います)
d-i netcfg/get_hostname string ("wwwNNNNu"など)
d-i netcfg/get_domain string sakura.ne.jp
# アーカイブサーバを日本のミラーサーバに設定します
d-i mirror/country string JP
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 mirror/http/mirror select jp.archive.ubuntu.com
# タイムゾーンを東京に設定します
d-i time/zone string Asia/Tokyo
# インストール中の時刻補正を行うためのNTPサーバを指定します
# 参考: http://support.sakura.ad.jp/support/vps/tips_ossetup.shtml
d-i clock-setup/ntp-server string ntp1.sakura.ad.jp
# パーティショニングは次節を参照してください
# アカウントを設定します
d-i passwd/user-fullname string (フルネーム)
d-i passwd/username string (ログインID)
d-i passwd/user-password-crypted password "パスワードのMD5ハッシュ値"
# restricted/universeコンポーネントを有効化します(必須ではありません)
d-i apt-setup/restricted boolean true
d-i apt-setup/universe boolean true
# 標準でインストールするタスクとして基本システムに加えて、
# openssh-serverを選択します
tasksel tasksel/first multiselect standard, openssh-server
# 必要に応じて、標準でインストールしたいパッケージを選択します
# d-i pkgsel/include string byobu vim ntp
# アップデートポリシーを設定します
d-i pkgsel/update-policy select none
"パスワードのMD5ハッシュ値"はmkpasswdパッケージをインストールした上で、
$ mkpasswd -m MD5 パスワード文字列
MD5ハッシュ値を使っているとは言え、
パーティショニング
パーティショニングにはpartmanを使うのですが、
- サイズには"minimal size"、
"priority"、 "maximal size"の3種類がある - すべてのパーティションは"maximal size"を越えることはない
- すべてのパーティションは"minimal size"を下回ることはない
- ディスクの総量から"minimal size"の和を差し引いた残りの容量を、
"priority"の比を元に、 各パーティションに少しずつ割り振っていく - 4をやっていく上で、
サイズが変更されないパーティションが現れたら、 割り振り終了
このため、
d-i partman-auto/method string regular
d-i partman-auto/expert_recipe string \
boot-root :: \
15000 17000 -1 ext4 \
$primary{ } $bootable{ } \
method{ format } format{ } \
use_filesystem{ } filesystem{ ext4 } \
mountpoint{ / } \
. \
2048 2048 400% linux-swap \
method{ swap } format{ } \
.
インストールイメージの作成
最後にこのpreseed.
$ mkdir initrd-tmp; cd initrd-tmp $ gzip -dc ../initrd.gz | sudo cpio -id $ sudo cp ../preseed.cfg . $ find . | sudo cpio --quiet -o -H newc | sudo gzip -9 > ../initrd.gz
この新しくできたinitrd.
ポストインストールスクリプト
Preseedingにはlate_
例えば、
#!/bin/sh
# backup original /etc/ssh/sshd_config
cp /target/etc/ssh/sshd_config /target/etc/ssh/sshd_config.orig
# overwrite sshd_config
cp /sshd_config /target/etc/ssh/
ここで、
# インストールの最後で実行するコマンドの指定します
d-i preseed/late_command string /install.sh
インストールイメージを作成する場合は、
$ mkdir initrd-tmp; cd initrd-tmp $ gzip -dc ../initrd.gz | sudo cpio -id $ sudo cp ../preseed.cfg . $ sudo cp ../install.sh . $ sudo chmod 755 install.sh $ sudo cp -r ../sshd_config . $ find . | sudo cpio --quiet -o -H newc | sudo gzip -9 > ../new-initrd.gz
上記以外にも、
まとめ
今回はインストールという観点からPreseedingを紹介しました。Preseedingは、
ちなみに、