preseedメモ

virt-installでVMを立てる時、preseedファイル書きます。

ハマったのでメモ

様々なサイトでもやってくれてますけどこことか参考に。
https://wikitech.wikimedia.org/wiki/PartMan


preseed.cfg

# 1.先頭の方。
```
d-i debian-installer/language string en
d-i debian-installer/country string JP
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 true
d-i console-setup/layoutcode string jp
d-i console-setup/charmap select UTF-8
d-i keymap select jp
d-i keyboard-configuration/xkb-keymap select jp

```
この辺は決め打ちでもいいと思う。
DebianInstallerのインストール時のオプション。
キーボードやらキーマップなど。

## 2.network系の設定
```
d-i netcfg/choose_interface select eth0
d-i netcfg/use_autoconfig boolean false
d-i netcfg/disable_autoconfig boolean true
d-i netcfg/disable_dhcp boolean true
d-i netcfg/get_ipaddress string IPADDR
d-i netcfg/get_netmask string NETMASK
d-i netcfg/get_gateway string GATEWAY
d-i netcfg/confirm_static boolean true
d-i netcfg/get_hostname string HOSTNAME
d-i netcfg/get_domain string
d-i netcfg/get_nameservers string NAMESERVER
```

IPaddressとか固定でやるとき。
`IPADDRは192.168.1.1`とか、書いてあげます。

# 3.mirror設定
```
### Mirror settings
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/suite string bionic 
d-i mirror/http/proxy string
# Suite to install.
d-i mirror/suite string bionic
```

パッケージ取りに行くときはJPのミラーサイトを見るよって設定だと思います。

# 4.root設定

```
# Setup the root account
d-i passwd/root-login boolean true
# 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-crypted password $1$KLRgJd.M$hogehogeeeeee
```
rootのパスワードとか設定できます。暗号化したほうがいい。

# 5.Timezone設定

```
### 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
```
日本で設定してます。（その他はよくわかってない）

# 6.partman(困難)

```
# すべてのRAIDデバイス構成を破棄する
d-i partman-md/device_remove_md boolean true
# すべてのLVMデバイス構成を破棄する
d-i partman-lvm/device_remove_lvm boolean true
# RAIDアレイを構成するディスクを並べる
d-i     partman-auto/disk string /dev/sda
# RAIDを使わない（regular）
d-i     partman-auto/method string regular
# LVMを構成しない
d-i     partman-lvm/confirm boolean false
# 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
# Set the default filesystem
d-i partman/default_filesystem string ext4

# Install without swap space
d-i partman-basicfilesystems/no_swap boolean false

d-i partman-auto/expert_recipe string \
vm :: \
1024 1024 -1 $default_filesystem \
$primary{ } \
$bootable{ } \
method{ format } \
format{ } \
use_filesystem{ } \
$default_filesystem{ } \
mountpoint{ / } \
.
d-i partman-md/confirm boolean true
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select Finish partitioning and write changes to disk
d-i partman/confirm boolean true 
d-i partman/confirm_nooverwrite boolean true
```


`d-i partman-basicfilesystems/no_swap boolean false`
Swap領域は作りません。

d-i partman-auto/expert_recipeで
最小領域1024MB ~ 限度いっぱいまで`/`でパーティション作ります。
partman-md　…たしかRaid関係の操作してくれる（Raid使わなくても。）
partman-partitioning/confirm_write_new_label…作成したパーティションやらラベル名の選択時trueを選んでくれる
それ以降も、選択画面が出たら`trueを選んでくれ`っていう命令みたいです。


手動でパーティション切りたいときは以下のような感じになるぽい。

```
d-i partman-auto/expert_recipe string \
32 32 32 free \
$gptonly{ } \
$primary{ } \
$bios_boot{ } \
method{ biosgrub } \
. \
boot-root :: \
256 50 256 ext4 \
$gptonly{ } \
$primary{ } $bootable{_} \
method{ format } format{ } \
use_filesystem{ } filesystem{ ext4 } \
mountpoint{ /boot } \
. \
500 10000 -1 ext4 \
$gptonly{ } \
method{ format } format{ } \
use_filesystem{ } filesystem{ ext4 } \
mountpoint{ / } \
.
```

|パーティション|mountpoint  |filesystem  |容量  |
|---|---|---|---|
|sda1|  |ext4  |32MB  |
|sda2|/boot  |ext4  |256MB  |
|sda3？|/  |ext4  |残り全て  |

※手動で作成したときはbootloaderのインストール先注意

# 7.OSインストール

```
### Base system installation
# Verbose output and no boot splash screen.
d-i debian-installer/quiet boolean false
d-i debian-installer/splash boolean false

# Always install the server kernel.
# d-i base-installer/kernel/override-image string linux-server

```

今サーバカーネルが無かったんで、コメントアウトしてます。
`d-i base-installer/kernel/override-image` 

勝手に進んでくれます…。

# 8.ソフトウェア系
```
d-i apt-setup/main boolean true
d-i apt-setup/services-select multiselect
tasksel tasksel/first multiselect
d-i pkgsel/language-pack-patterns string
d-i pkgsel/install-language-support boolean false
d-i pkgsel/include string openssh-server curl dnsutils build-essential tasksel s-nail sudo lv

postfix postfix/mailname string your-preferred-mailname
d-i pkgsel/upgrade select full-upgrade
d-i pkgsel/update-policy select none

popularity-contest popularity-contest/participate boolean false
d-i pkgsel/updatedb boolean false
```

インストールする言語とかパッケージとかだと思います。

# 9.grubブートローダ
```
d-i grub-installer/only_debian boolean true
d-i grub-installer/bootdev string /dev/sda
d-i grub-installer/with_other_os boolean true
d-i grub-installer/timeout string 2
```
インストール先の指定。
選択肢は全部YesとかTrueを選べってことですかね…。

# 10.最後の処理。
```
d-i finish-install/keep-consoles boolean true
d-i finish-install/reboot_in_progress note
d-i cdrom-detect/eject boolean false
```

インストール終わったら再起動しますってことですね
CDはイジェクトしません（そもそもありませんし…。）

すんごい難しい。