Howdy :) We're automating installs of Lucid, Maverick, and testing Precise. On all of these distributions, we face a prompt at the end which says something like:
"Continue without installing Grub?" If we answer "yes", everything is fine. Unfortunately, this can be a real pain on machines with limited remote access, e.g. serial console. It's pretty well a failed automated strategy if we have to call the datacenter and have someone walk over to press "enter". :) In any case, I was hoping someone on the list would have thoughts on why this might occur. Pasted below is an example preseed (these are generated by a Django app): -- snip -- d-i debian-installer/locale string en_US d-i console-setup/ask_detect boolean false d-i console-setup/layoutcode string us ### Network configuration # Our Ubuntu configs use a simple static IP for installation. We correct the # interface configuration using a post-install script. ### Network configuration #d-i netcfg/choose_interface select auto d-i netcfg/choose_interface select eth1 #d-i netcfg/dhcp_timeout string 60 d-i netcfg/disable_dhcp boolean true #d-i netcfg/dhcp_failed note d-i netcfg/dhcp_options select Configure network manually d-i netcfg/get_nameservers string 10.103.0.30 d-i netcfg/get_ipaddress string 10.103.1.244 d-i netcfg/get_netmask string 255.255.252.0 d-i netcfg/get_gateway string 10.103.0.1 d-i netcfg/confirm_static boolean true d-i netcfg/get_hostname string s-08-07-b d-i netcfg/get_domain string somelan.somecompany.com d-i netcfg/wireless_wep string d-i preseed/run string /static/install/preseed/static ### Mirror settings d-i mirror/country string manual d-i mirror/http/hostname string ubuntu-mirror.somecompany.com d-i mirror/http/directory string /ubuntu # Alternatively: by default, the installer uses CC.archive.ubuntu.com where # CC is the ISO-3166-2 code for the selected country. You can preseed this # so that it does so without asking. #d-i mirror/http/mirror select CC.archive.ubuntu.com d-i mirror/suite string lucid d-i mirror/udeb/components multiselect main, restricted # Additional repositories, local[0-9] available d-i apt-setup/local0/repository string \ http://apt.somecompany.com/ubuntu lucid main d-i apt-setup/local0/comment string local server # Enable deb-src lines #d-i apt-setup/local0/source boolean true # URL to the public key of the local repository; you must provide a key or # apt will complain about the unauthenticated repository and so the # sources.list line will be left commented out d-i apt-setup/local0/key string http://apt.somecompany.com/ubuntu/gpg/repokey.gpg ### Clock Settings d-i clock-setup/utc boolean true d-i time/zone string Etc/UTC d-i clock-setup/ntp boolean true #d-i clock-setup/ntp-server string ntp.example.com ### Partitioning # The presently available methods are: "regular", "lvm" and "crypto" #d-i partman-auto/disk string /dev/sda d-i partman/early_command string if [ -f "/sys/module/cciss/version" ]; then debconf-set partman-auto/disk /dev/cciss/c0d0 ; debconf-set grub-installer/bootdev /dev/cciss/c0d0; else debconf-set partman-auto/disk /dev/sda; debconf-set grub-installer/bootdev /dev/sda ; fi d-i partman-auto/method string regular # default FS, mount with UUIDs d-i partman/default_filesystem string ext4 d-i partman/mount_style select uuid # here is the partitioning scheme #d-i partman-auto/choose_recipe select atomic d-i partman-auto/expert_recipe string \ single :: \ 500 10000 1000000000 ext4 \ $primary{ } \ $bootable{ } \ method{ format } \ format{ } \ use_filesystem{ } \ filesystem{ ext4 } \ mountpoint{ / } . # yes, overwrite existing partitions d-i partman/confirm_nooverwrite boolean true d-i partman-md/confirm_nooverwrite boolean true d-i partman-lvm/confirm_nooverwrite boolean true d-i partman-basicfilesystems/no_swap boolean false # yes, remove existing LVs (LVM) and RAID partitions d-i partman-lvm/device_remove_lvm boolean true d-i partman-md/device_remove_md boolean true # yes, really do the LVM or RAID setup I specified above d-i partman-lvm/confirm boolean true d-i partman-md/confirm boolean true # yes, write new label, do the partitioning, and yes again d-i partman/confirm_write_new_label boolean true d-i partman/choose_partition select finish d-i partman/confirm boolean true # still boot up if the array is degraded mdadm-udeb mdadm/boot_degraded boolean true # Install boot loader to first disk #d-i grub-installer/bootdev string (hd0,0) ### Base system installation d-i base-installer/kernel/image string linux-image-2.6.32-38-server ### Account setup d-i passwd/root-login boolean false # root password unset #d-i passwd/root-password password r00tme #d-i passwd/root-password-again password r00tme d-i passwd/root-password-crypted password YeahYeahYeahRight d-i passwd/user-fullname string Operations d-i passwd/username string ops d-i passwd/user-password-crypted password YeahYeahYeahRight d-i passwd/user-uid string 1000 #d-i user-setup/allow-password-weak boolean true d-i passwd/user-default-groups string audio cdrom video d-i user-setup/encrypt-home boolean false ### Apt setup # You can choose to install restricted and universe software, or to install # software from the backports repository. #d-i apt-setup/restricted boolean true #d-i apt-setup/universe boolean true d-i apt-setup/backports boolean true # Uncomment this if you don't want to use a network mirror. #d-i apt-setup/use_mirror boolean false # Select which update services to use; define the mirrors to be used. # Values shown below are the normal defaults. #d-i apt-setup/services-select multiselect security #d-i apt-setup/security_host string security.ubuntu.com #d-i apt-setup/security_path string /ubuntu # Additional repositories, local[0-9] available #d-i apt-setup/local0/repository string \ # http://local.server/ubuntu &releasename; main #d-i apt-setup/local0/comment string local server # Enable deb-src lines #d-i apt-setup/local0/source boolean true # URL to the public key of the local repository; you must provide a key or # apt will complain about the unauthenticated repository and so the # sources.list line will be left commented out #d-i apt-setup/local0/key string http://local.server/key # By default the installer requires that repositories be authenticated # using a known gpg key. This setting can be used to disable that # authentication. Warning: Insecure, not recommended. #d-i debian-installer/allow_unauthenticated string true ### Package selection #tasksel tasksel/desktop multiselect gnome tasksel tasksel/first multiselect standard #tasksel tasksel/force-tasks string server #tasksel tasksel/limit-tasks string #tasksel tasksel/skip-tasks string #tasksel tasksel/tasks multiselect #tasksel tasksel/terminal terminal # Individual additional packages to install #d-i pkgsel/include string openssh-server build-essential #d-i pkgsel/include string openssh-server ipmitool emacs23-nox bc binutils curl dnstop ethtool finger fping gawk ksh libssl-dev bsd-mailx munin-node nfs-common ntp patch portmap postfix procmail puppet screen snmpd sysstat sysv-rc-conf tcsh traceroute whois zsh git-core subversion smartmontools d-i pkgsel/include string openssh-server ipmitool emacs23-nox curl ethtool postfix sysstat sysv-rc-conf vim lldpd linux-crashdump #d-i pkgsel/upgrade select none #d-i pkgsel/language-packs multiselect de, en, zh d-i pkgsel/update-policy select none #d-i pkgsel/updatedb boolean true ### Boot loader installation d-i grub-installer/only_debian boolean true d-i grub-installer/with_other_os boolean true ### Finishing up the installation d-i finish-install/keep-consoles boolean true d-i finish-install/reboot_in_progress note d-i cdrom-detect/eject boolean false #d-i debian-installer/exit/halt boolean true #d-i debian-installer/exit/poweroff boolean true #### Advanced options ### Running custom commands during the installation # This first command is run as early as possible, just after # preseeding is read. #d-i preseed/early_command string anna-install some-udeb # This command is run immediately before the partitioner starts. It may be # useful to apply dynamic partitioner preseeding that depends on the state # of the disks (which may not be visible when preseed/early_command runs). #d-i partman/early_command string debconf-set partman-auto/disk "$(list-devices disk | head -n1)" # This command is run just before the install finishes, but when there is # still a usable /target directory. You can chroot to /target and use it # directly, or use the apt-install and in-target commands to easily install # packages and run commands in the target system. d-i preseed/late_command string wget -O /target/tmp/post-install.sh http://10.103.0.40/static/install/post/post-install.sh; wget -O /target/tmp/buildinfo http://10.103.0.40/osinstallextra/computer/bf342d392c2193f2fe5a0025904979da1234567890/; /bin/chmod u+x /target/tmp/post-install.sh; in-target /tmp/post-install.sh -- ubuntu-server mailing list ubuntu-server@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-server More info: https://wiki.ubuntu.com/ServerTeam