||<>|| {{attachment:IconsPage/info.png}} 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, [[http://www.itpartners.co.nz/|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.cfg }}} In 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]]. ---- CategoryInstallation CategorySystem CategoryEmail