IPv6 iBFT boot runs into a timeout
| Affects | Status | Importance | Assigned to | Milestone | |
|---|---|---|---|---|---|
| initramfs-tools (Ubuntu) |
Fix Released
|
Medium
|
Benjamin Drung | ||
| Noble |
Fix Released
|
Undecided
|
Unassigned | ||
| Oracular |
Fix Released
|
Undecided
|
Unassigned | ||
Bug Description
[ Impact ]
This bug affects IPv6 only networks in combination with booting from iSCSI Boot Firmware Table (iBFT). In those setups, there is no DHCPv4 available. The initramfs will only try DHCPv4 and run into a timeout.
[ Test Plan ]
This setup was distilled down to test cases and the new qemu-net-iscsi autopkgtest was added.
The test plan is to check that all autopkgtest were successful. In addition testing this version in a cloud environment is possible.
[ Where problems could occur ]
The newly added code only increases the initrd by some bytes. The changed code is around the network configuration in the initrd and can influence network boot with iSCSI. Users with IPv6 in iBFT might still want to have IPv4 configured. That should be done by the network daemon of the installed system.
[ Original report ]
iSCSI Boot Firmware Table (iBFT) can provide the network configuration that is needed to boot over iSCSI. The iBFT can contain IPv4 or IPv6 addresses. local-top/iscsi calls `configure_
Placing the single line "ISCSI_AUTO=true" into /etc/iscsi/
dracut on the other hand has the kernel boot line parameters `rd.iscsi.
There are multiple ways to address the timeout with IPv6 iBFT:
1) Extend `local-top/iscsi` to differentiate between IPv4 and IPv6 when "iscsi_auto" is used. This information needs to be passed to `configure_
2) Use `ip=ibft` as indicator to use ibft as source for the network configuration. If no ip= parameter is set, local-top/iscsi should default to ip=ibft when calling configure_
Both solutions require passing data to configure_
Requiring the user to set `ip=off ip6=on` is not a good user experience and not a solution in my opinion.
| description: | updated |
| Changed in initramfs-tools (Ubuntu): | |
| status: | In Progress → Fix Committed |
| description: | updated |
| no longer affects: | open-iscsi (Ubuntu) |
| no longer affects: | open-iscsi (Ubuntu Noble) |
| no longer affects: | open-iscsi (Ubuntu Oracular) |

After discussion with Julian, we came to the conclusion that I will try to implement ip=ibft in initramfs-tools.
The first step will be to write test cases for it. At least two:
* one ibft with IPv4 (two interfaces on the client: one with DHCP server on the other side and one without DHCP server)
* one ibft with IPv6