Preseeding Debian

Preview:

DESCRIPTION

at Kansai Debian Metting 69 Debian の自動化インストール preseed について、特にパーティションの切り方を説明します。

Citation preview

Preseeding Debian

Yuryu@Kansai Debian Meeting 692012/02/24

本日のあらすじ

自己紹介

Preseed

Partitioning

その他 troubleshoot

自己紹介

Yuryu (twitter: @Yuryu)

某社でインフラエンジニアしてます

potato → woody → ( 浮気 ) → Ubuntu(Gusty) → ... → Ubuntu(Precise)

会社では Debian 使ってます

好きなコマンドは xargs

Preseed

Preseed してますか?

Debian Installer の応答ファイル

すべての選択肢が選べる

PXE と組み合わせると強い

単体でも使えます ( 少々面倒 )

Preseed とは

locale=en_US language=en country=JP console-keymaps-at/keymap=jp106

keyboard-configuration/xkb-keymap=jp106 interface=eth0 hostname=debian

domain=local url=http://holo.yuryu.jp/preseed.cfg

DEBCONF_DEBUG=5

boot オプションの必要性

Preseed ファイルが読まれるのは、ネットワークの設定が終わってから

ネットワーク設定前にもインストーラーの質問はある

→ ブートオプションとして渡す

長いので手打ちは無理、 PXE を使う

expert install

expert options → automated install

途中で preseed ファイルを指定できる

とりあえず試すにはこっち

url

preseed ファイルの場所

http, ftp, tftp で指定

https は使えない (!)

ファイルの中身

「 d-i 項目名 指定」の羅列

ファイルの書き方

基本的にはサンプル通り

でも、いくつか落とし穴が ...

一番大変なのが partitioning

partitioning

partitioning

d-i partman-auto/choose_recipe

atomic - / 一発

home - /home だけ分ける

multi - /home, /usr, /var, /tmp

d-i partman-auto/expert_recipe

recipe

レシピ形式

レシピ名 :: 最低容量 (MB) 優先度 最大容量 FS パーティション内容 .

500 1000 -1 ext4 \ method{ format } format{ } \ use_filesystem{ } filesystem{ ext4 } \ mountpoint{ /home }

容量

最大を -1 にすると空き容量をすべて使う

優先度は数字が大きなほうが低い

最小=最大にせず 100MB 程度の幅をもたせる

method

format

通常通りフォーマットして使用

swap

スワップパーティションとして使用

keep

何もせず区画だけ作る

ファイルシステム

容量の右側に書くものと、 filesystem{ }

基本的には同じ

ext[2-4], xfs, btrfs, jfs, linux-swap

keep のときは無視される (free でも ok)

お約束

冗長に見えても、省略できないもの

format{ }

use_filesystem{ }

filesystem{ ext4 }

ハマりました

primary

$primary{ } プライマリ必須指定

$logical{ } もありそう?

実は無い

省略すると logical になる

一行で書く

行末に \ を書いて、一行につなげて書く

\ の後にスペースがあるとそこで切れます

レシピ名

レシピ名が必須

partman-auto/choose_recipe とは無関係

expert recipe 使うなら書いてはいけない

何を書いても動作に関係なし ...

スペースの扱い

基本的にはスペース必須

開きカッコの手前はスペース不可

○ method{_format_}

☓ method_{_format_}

grep でパースしてるので厳格です ...

レシピ、認識されてる?

/tmp/expert_recipe

実際に使われたレシピが入る

その他条件文

$iflabel{ label } - ラベルが一致

$defaultignore{ } - LVM を使わない時無視

$lvmok{ } - LVM にしても良い

$lvmignore{ } - LVM の場合は無視

パーティション再利用

既存のパーティションを再利用

$reusemethod{ }

method(format, swap) が同一なら再利用

主に biosgrub, swap 向け ?

$iflabel{ label } と組み合わせる

http://lists.debian.org/debian-boot/2011/04/msg00333.html

その他 troubleshoot

d-i じゃない行もある

d-i で始まらない行もある

tasksel

popularity-contest

コピペ事故に注意

止まったら

syslog を確認

INPUT ... の行がパラメーター名

ログ

Alt+F4 のログ

インストール中 /var/log/syslog

インストール後 /var/log/installer/syslog

DEBCONF_DEBUG が必須

こわくないよ

debian installer の実態はシェルスクリプト

各ディレクトリを for で順に呼んでる

項目名で grep してみるとヒントが

debian/*.templates

debian-installer の各種パッケージの debian/*.templates

変数名、型、説明が揃ってる

リファレンス代わりになります

debconf-get-selections

インストール済み OS から設定を取得

debconf-get-selections --installer

デフォルト値も含めて大量に出る

必要な物を取捨選択する必要あり

Ubuntu 対応

基本的には同じ

いくつか追加の質問

d-i pkgsel/update-policy select none

d-i user-setup/allow-password-weak boolean true

d-i user-setup/encrypt-home boolean false

詳しくは https://help.ubuntu.com/lts/installation-guide/i386/preseed-contents.html

まとめ

困ったら syslog を観る

recipe はスペースに気をつける

DEBCONF_DEBUG=5 重要!

Questions?

Thank you!

@Yuryu