Menu

#4666 Unable to determine NIC to use when loading OS

2.9.2
open
nobody
None
linux provisioning
5
2015-05-13
2015-05-12
Victor Hu
No

Problem with ksdevice when installing OS: (In SoftLayer environment)

anaconda installer init version 13.21.215 starting
mounting /proc filesystem... done
creating /dev filesystem... done
starting udev...done
mounting /dev/pts (unix98 pty) filesystem... done
mounting /sys filesystem... done
anaconda installer init version 13.21.215 using a serial console
trying to remount root filesystem read write... done
mounting /tmp as tmpfs... done
running install...
running /sbin/loader
detecting hardware...
waiting for hardware to initialize...
detecting hardware...
waiting for hardware to initialize...
No way to determine which NIC to use, and cannot prompt in cmdline
mode. Halting.
Please use the ksdevice= parameter to specify the device name (e.g., eth0)
or the MAC address of the NIC to use for installation.
Loader exited unexpectedly! Backtrace:
/sbin/loader[0x409d93]
/lib64/libc.so.6(exit+0xe2)[0x7f761ab3fe22]
/sbin/loader[0x41d74a]
/sbin/loader[0x421277]
/sbin/loader[0x41bcef]
/sbin/loader[0x41405b]
/sbin/loader[0x40cdad]
/lib64/libc.so.6(__libc_start_main+0xfd)[0x7f761ab28d1d]
/sbin/loader[0x407a69]
install exited abnormally [1/1]
The system will be rebooted when you press Ctrl-C or Ctrl-Alt-Delete.

here's kcmdlinekcmdline=quiet repo=http://10.109.246.178:80/install/rhels6.5/x86_64 ks=http://10.109.246.178:80/install/autoinst/uswdc01hyp00054ianraksdevice=0c:c4:7a:1f:00:f0 ip=10.109.223.82 netmask=255.255.255.240 gateway=10.109.223.81 hostname=uswdc01hyp00054ianra dns=10.109.246.178 cmdline console=tty0 console=ttyS1,115200

Running xCAT 2.8.4

lsxcatd -v

Version 2.8.4 (git commit ded873f998a889c91a169d3f870efdbebfb66243, built Thu May 29 23:32:02 EDT 2014)

Does an upgrade fix this?

Discussion

  • Guang Cheng Li

    Guang Cheng Li - 2015-05-13

    This error usually indicates the wrong installnic/primarynic, but according to the kcmdline parameter, the ksdevice is set correctly, could you check what the installnic/primarynic are set to?

     
  • XiaoPeng Wang

    XiaoPeng Wang - 2015-05-13

    I saw there was no space ahead the 'ksdevice' keyword in 'ks=http://10.109.246.178:80/install/autoinst/uswdc01hyp00054ianraksdevice=0c:c4:7a:1f:00:f0', was this a typo of your typing? If no, show out the lsdef against the node.

     
  • Victor Hu

    Victor Hu - 2015-05-13

    lsdef -t node -o uswdc01hyp00054ianra | grep nic

    installnic=mac
    nicips.eth5=174.36.198.114
    

    ...
    primarynic=mac

    Xiao Peng, that is strange, from the chat text, it looks like there is a space, but when I copy/paste, there is no space.

     
  • Jeffrey Kwong

    Jeffrey Kwong - 2015-05-13

    Victor logged this on my behalf.

    The error comes from when you do "pushinitrd" on SoftLayer across a noderange. I think it generates grub config for the ksdevice for the first node in the noderange, and then updates grub for every node in the noderange with the same cmdline. So the first node succeeds, but the rest fail in a loop because the ksdevice doesn't exist.

    The only workaround is to go onto KVM and interrupt grub to boot directly off the hard disk, and then run pushinitrd for each node individually.

     
  • Anonymous

    Anonymous - 2015-05-13

    I just checked pushinitrd, and found this:

         60 # Query the db for the kernel, initrd, and kcmdline attributes of the 1st node in the noderange
         61 sub getBootParms {
         62         my $nr = shift @_;
         63         my %bootparms;
         64         my @output = runcmd("nodels $nr bootparams.kernel bootparams.initrd bootparams.kcmdline nodetype.provmethod");
         65 
         66         # the attributes can be displayed in a different order than requested, so need to grep for them
         67         foreach my $attr (qw(bootparams.kernel bootparams.initrd bootparams.kcmdline nodetype.provmethod)) {
         68                 my ($a) = $attr =~ m/\.(.*)$/;
         69                 my @gresults = grep(/^\S+:\s+$attr:/, @output);
         70                 if (!scalar(@gresults)) { die "Error: attribute $attr not defined for the noderange. Did you run 'nodeset <noderange> osimage=<osimage>' ?\n"; }
         71                 # for now just pick the 1st one. They should all be the same, except for the node name in kcmdline
    

    So, it looks like the code has a bug in that it is making a bad assumption that the kcmdline should be the same for all nodes. That is NOT the case for the ksdevice value when using MAC.

     
MongoDB Logo MongoDB