Network preseeding Debian/Ubuntu with a static ip address & dhcp address for initial config
I had a hard time figuring this out and there seems to be lots of conflicting information out there so I thought I'd write down my thoughts about this immediately after I figured it out.
I was trying to get a fully automated network install of Ubuntu 10.04 working with a static ip address that gets set up in the preseed file. My entire preseed was working but the static ip address was not. The example preseed has the following entries:
# If you prefer to configure the network manually, uncomment this line and # the static network configuration below. #d-i netcfg/disable_dhcp boolean true # If you want the preconfiguration file to work on systems both with and # without a dhcp server, uncomment these lines and the static network # configuration below. #d-i netcfg/dhcp_failed note #d-i netcfg/dhcp_options select Configure network manually # Static network configuration. #d-i netcfg/get_nameservers string 192.168.1.1 #d-i netcfg/get_ipaddress string 192.168.1.42 #d-i netcfg/get_netmask string 255.255.255.0 #d-i netcfg/get_gateway string 192.168.1.1 #d-i netcfg/confirm_static boolean true
Great...so I should just be able to uncomment the disable_dhcp and the Static network configuration entries and it should work right? WRONG. I went through various permutations and could not get it to work. Finally, I broke down and decided to RTFM and found this:
http://d-i.alioth.debian.org/manual/en.amd64/apbs04.html#preseed-network
It reads:
“Although preseeding the network configuration is normally not possible when using network preseeding (using preseed/url”), you can use the following hack to work around that, for example if you'd like to set a static address for the network interface. The hack is to force the network configuration to run again after the preconfiguration file has been loaded by creating a “preseed/run” script containing the following commands:
killall.sh; netcfg
So....I added the following to my preseed.cfg file
d-i preseed/early_command string /bin/killall.sh; /bin/netcfg
and boom the static network config works. Yay!