Uploaded image for project: 'RHEL'
  1. RHEL
  2. RHEL-5721

dracut prompt is never reached when requiring networking but no DHCP is listening on the network

Linking RHIVOS CVEs to...Migration: Automation ...SWIFT: POC ConversionSync from "Extern...XMLWordPrintable

    • None
    • Important
    • rhel-bootloader
    • ssg_core_services
    • 5
    • False
    • False
    • Hide

      None

      Show
      None
    • None
    • None
    • None
    • None
    • If docs needed, set a value
    • None
    • 57,005

      Description of problem:

      When customers try to install systems over the network and specify nothing for "ip" parameter (hence defaulting to DHCP), but a inst.repo for example, dracut tries forever to get the IP address over DHCP.
      If there is no DHCP service listening, which is very common, then the system waits several hours until dracut emergency prompt is reached.
      The only message we see is:
      -------- 8< ---------------- 8< ---------------- 8< ---------------- 8< --------
      Starting dracut initqueue hook...
      [ 9.426013] TECH PREVIEW: NVMe/TCP may not be fully supported.
      [ 9.426013] Please review provided documentation for limitations.
      [ 9.751210] IPv6: ADDRCONF(NETDEV_UP): enp1s0: link is not ready
      [ 9.752011] IPv6: ADDRCONF(NETDEV_UP): enp1s0: link is not ready
      [ 9.752538] 8021q: adding VLAN 0 to HW filter on device enp1s0
      [ 9.759817] IPv6: ADDRCONF(NETDEV_UP): enp1s0: link is not ready
      [ 9.761097] IPv6: ADDRCONF(NETDEV_UP): enp1s0: link is not ready
      [ 9.824009] IPv6: ADDRCONF(NETDEV_CHANGE): enp1s0: link becomes ready
      -------- 8< ---------------- 8< ---------------- 8< ---------------- 8< --------

      Then nothing happens, which is quite confusing, because the admin doesn't know what's happening at all.

      Booting with rd.debug, we can see that the initqueue loop iterates "slowly" (~ every 100 seconds), so eventually, after days, the dracut prompt will be reached:
      -------- 8< ---------------- 8< ---------------- 8< ---------------- 8< --------
      [ 828.546445] dracut-initqueue[843]: /bin/dracut-initqueue@68(main): main_loop=9
      :
      [ 919.551251] dracut-initqueue[843]: /bin/dracut-initqueue@68(main): main_loop=10
      -------- 8< ---------------- 8< ---------------- 8< ---------------- 8< --------

      We need something to drop early, e.g. some absolute timeout, but also we need to report what is currently being waited for.

      Version-Release number of selected component (if applicable):

      dracut-049

      How reproducible:

      Always

      Steps to Reproduce:
      1. Setup a QEMU/KVM with isolated network (no DHCP)
      2. Boot by specifying kernel and initrd paths and "inst.repo=xxx" as kernel args

      Actual results:

      After 900 seconds, still at loop 10

      Expected results:

      After 180 seconds (the rd.retry default), getting the dracut prompt + regular messages stating "Getting IP address over DHCP" or similar

      Additional info:

      This is critical for a lot of customers, because DHCP is rarely used

              dracut-maint dracut maint mailing list
              rhn-support-rmetrich Renaud Métrich
              dracut maint mailing list dracut maint mailing list
              RHEL CS Plumbers QE Bot RHEL CS Plumbers QE Bot
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

                Created:
                Updated:
                Resolved: