Contents |
These are debconf seed files to help you customize an Ubuntu installation CD. For more information, see InstallCDCustomization.
100% automatic installation script
This preseed file was written by CraigBox for his employer, IT Partners. It automatically partitions and installs a machine, including a complex setup script that is run on first boot.
#### IT Partners Firewall 2.0
#### Preseed configuration file for Ubuntu 6.06
# If you're remastering a CD, you could use this:
# preseed/file=/cdrom/preseed/firewall.seed
#
# While you're at it, you may want to throw a debconf/priority=critical in
# there, to avoid most questions even if the preseeding below misses some.
# And you might set the timeout to 1 in syslinux.cfg to avoid needing to hit
# enter to boot the installer.
#
# Language, country, and keyboard selection cannot be preseeded from a file,
# because the questions are asked before the preseed file can be loaded.
# Instead, to avoid these questions, pass some more parameters to the kernel:
#
# debian-installer/locale=en_NZ
# kbd-chooser/method=us
#
# Always install the server kernel.
d-i base-installer/kernel/override-image string linux-server
# Don't install usplash.
d-i base-installer/kernel/linux/extra-packages-2.6 string
# Desktop system not installed; don't waste time and disk space copying it.
d-i archive-copier/desktop-task string ubuntu-standard
d-i archive-copier/ship-task string
# Only install the standard system and language packs.
d-i pkgsel/install-pattern string ~t^ubuntu-standard$
d-i pkgsel/language-pack-patterns string
# No language support packages.
base-config base-config/install-language-support boolean false
#### Shell commands.
# itp: copy the install script from the CD to the HDD, and set it
# in /etc/rc.local so it runs on first boot.
d-i preseed/late_command string cp -a /cdrom/preseed/install.sh /target/root; sed -i 's_exit 0_sh /root/install.sh_' /target/etc/rc.local;
#### Network configuration.
# netcfg will choose an interface that has link if possible. This makes it
# skip displaying a list if there is more than one interface.
d-i netcfg/choose_interface select auto
# Note that any hostname and domain names assigned from dhcp take
# precedence over values set here. However, setting the values still
# prevents the questions from being shown even if values come from dhcp.
d-i netcfg/get_hostname string unassigned-firewall
d-i netcfg/get_domain string unassigned-domain
# Disable that annoying WEP key dialog.
d-i netcfg/wireless_wep string
#### Mirror settings.
d-i mirror/country string New Zealand
d-i mirror/http/hostname string nz.archive.ubuntu.com
d-i mirror/http/directory string /ubuntu
d-i mirror/suite string dapper
d-i mirror/http/proxy string
### Partitioning.
# Partition the first disc found
d-i partman-auto/disk string /dev/discs/disc0/disc
# Create 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 :: 100 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 2048 linux
-swap method{ swap } format{ } .
# For reference, here is that same recipe in a more readable form:
# boot-root ::
# 100 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 2048 linux-swap
# method{ swap } format{ }
# .
# (Craig changed this from 300%).
# This makes partman automatically partition without confirmation.
d-i partman/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
#### Boot loader installation.
# 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 if finds some other OS
# too, which is less safe as it might not be able to boot that other OS.
d-i grub-installer/with_other_os boolean true
##### Finishing up the first stage install.
# Avoid that last message about the install being complete.
d-i prebaseconfig/reboot_in_progress note
###### Time zone setup.
# Controls whether or not the hardware clock is set to GMT.
d-i clock-setup/utc boolean true
d-i time/zone string Pacific/Auckland
###### Account setup.
# To preseed the root password, you have to put it in the clear in this
# file. That is not a very good idea, use caution!
passwd passwd/root-password password whatever
passwd passwd/root-password-again password whatever
passwd passwd/root-login boolean true
# If you want to skip creation of a normal user account.
passwd passwd/make-user boolean false
###### Everything else.
# More flexibly, this runs a shell command and if it outputs the names of
# preseed files, includes those files. For example, to switch configs based
# on a particular usb storage device (in this case, a built-in card reader):
d-i preseed/include string debconf/exim.cfg debconf/clamav.cfg debconf/mailgraph.cfg debconf/ntop.cfg debconf/samba.cfg debconf/ssh.cfgIn the 'debconf' directory I keep answers for packages that would otherwise ask questions at installation time. I built these from the output of debconf-get-selections. For example, exim.cfg contains:
exim4-config exim4/dc_noalias_regenerate boolean false exim4-config exim4/dc_smarthost string exim4-config exim4/dc_relay_domains string exim4-config exim4/dc_relay_nets string exim4-base exim4/purge_spool boolean false exim4-config exim4/mailname string localhost.localdomain exim4-config exim4/dc_local_interfaces string exim4-config exim4/dc_minimaldns boolean false exim4-config exim4/exim3_upgrade boolean true exim4-config exim4/dc_other_hostnames string exim4-config exim4/dc_eximconfig_configtype select internet site; mail is sent and received directly using SMTP exim4-config exim4/no_config boolean true exim4-config exim4/hide_mailname boolean exim4-config exim4/dc_postmaster string exim4-config exim4/dc_readhost string exim4-config exim4/use_split_config boolean true # Move yet undelivered mails from exim(v3) to exim4 spool? exim4-base exim4/move_exim3_spool boolean false
In install.sh, you can put anything you want to run at first boot. I wanted finer grained control over what installed, in the way I had with base-config (which was removed with Ubuntu 6.06). This file runs once, called from /etc/rc.local, and then modifies the rc.local script so it will not run again:
INSTALL="apt-get install -y" REMOVE="apt-get remove -y" apt-get update # email $INSTALL exim4-daemon-heavy mailx mailgraph # etc - loads cut sed -i 's_sh /root/install.sh_exit 0_' /etc/rc.local echo "Installation complete."
Return to InstallCDCustomization.