3
  • I have a machine with two network interfaces.
  • See below (context) for setup...

My boot params look like:

  set i ${net0/ip}
  set ns 192.168.99.101
  set t tftp://${ns}/pxelinux.cfg
  set h http://${ns}:8070/api/1.0
  initrd ${t}/initrd.gz
  kernel ${t}/vmlinuz initrd=${t}/initrd.gz BOOTIF=${net0/mac} vga=788 net.ifnames=0 biosdevnames=0 auto url=${h}/preseed ip=192.168.99.89:::255.255.255.0::eth0:none ip=:::::eth1:dhcp BOOT_DEBUG=1 language=en country=US locale=en_US.UTF-8

This boots, but the kernel ip configuration doesn't happen. I'm not booting from NFS for which I know the ip= boot param was originally intended, however the Googles are saying this should still work.

Checking the syslog on the test machine, I'm not able to really find anything useful for debugging except this entry:

INFO: Could not find valid BOOTIF= entry in /proc/cmdline

However, /proc/cmdline is:

# cat /proc/cmdline
initrd=tftp://192.168.99.101/pxelinux.cfg/initrd.gz BOOTIF=08:00:27:5e:18:12 vga=788 net.ifnames=0 biosdevnames=0 auto url=http://192.168.99.101:8070/api/1.0/preseed ip=192.168.99.89:::::eth0:none ip=:::::eth1:dhcp BOOT_DEBUG=1 language=en country=US locale=en_US.UTF-8

During the installation process, a dialog presents which states that multiple interfaces were found and to pick which one I want to use as primary. I pick eth1 because DHCP and hopes that the reason I get this dialog is only because my cmdline args haven't yet been processed. Shortly after DHCP happens for eth0, however, I'm presented with the error that the preseed can't be found. This is obviously because the ip= params were not (yet?) processed. This is the issue I'm trying to resolve.

Here's a little more context into the current setup...

  • The ISO is derived from mildly remastered Ubuntu 18.04 ISO and with ipxe ROM instead of pxelinux kernel. It's not using undionly.kpxe...currently.
  • Test machine is a Virtualbox VM booting the remastered ISO as virtual CDROM so I can interactively run commands for boot (to create undionly).
  • Currently running the manual steps (on boot) in this order:
    • config net0
      • IP: 192.168.99.89
      • Netmask: 255.255.255.0
      • no gateway required for local LAN.
    • dhcp net1
    • ifopen
    • set i ${net0/ip}
    • set ns 192.168.99.101
    • set t tftp://${ns}/pxelinux.cfg
    • set h http://${ns}:8070/api/1.0
    • initrd ${t}/initrd.gz
    • kernel ${t}/vmlinuz initrd=${t}/initrd.gz BOOTIF=${net0/mac} vga=788 net.ifnames=0 biosdevnames=0 auto url=${h}/preseed ip=${i}:::255.255.255.0::eth0:none ip=:::::eth1:dhcp BOOT_DEBUG=1 language=en country=US locale=en_US.UTF-8
    • boot
  • The VM has two interfaces, as stated before. Interface 1 is a host-only (vboxnet0) IF. Interface 2 is a bridged interface bridged to the wifi interface on the host machine.
  • The cdrom contains all the bits for installation. The tftp server contains a netboot kernel, but I'm not currently using netboot, which may be the problem and I will test that idea next.
  • The API there is a home grown service (I'm writing) which is at the root of this project. It's a configuration management tool I'm writing for this project. Currently, all it's doing is vending the preseed file.

The end goal is autoinstall dynamically created preseed files using this network configuration.

One thing to note is that if I switch to a virtual console on the test machine and set an IP address on eth0, the installation works perfectly.

BTW, I know it seems redundant to load the initrd in ipxe and then use it as a parameter in the kernel line but for some reason, if I don't, I get a kernel panic VFS error on boot.

0

You must log in to answer this question.

Browse other questions tagged .