Set 'initrd' to 'rescue_ramdisk' for rescue with iPXE
The kernel paramter 'initrd' is hard-coded as 'deploy_ramdisk' in iPXE
config template. A rescue ramdisk may fail to boot due to this wrong
paramter. This patch sets this 'initrd' paramter properly to
'deploy_ramdisk' or 'rescue_ramdisk' by adding a new pxe option.
Change-Id: I8ad1223dc289bbe915ee4ca8db66c8f80bf08f15
Closes-Bug: 1749860
(cherry picked from commit 8f2e487b2b
)
This commit is contained in:
parent
e2694188ba
commit
6f3e8927e6
|
@ -4,7 +4,7 @@ goto deploy
|
||||||
|
|
||||||
:deploy
|
:deploy
|
||||||
imgfree
|
imgfree
|
||||||
kernel {% if pxe_options.ipxe_timeout > 0 %}--timeout {{ pxe_options.ipxe_timeout }} {% endif %}{{ pxe_options.deployment_aki_path }} selinux=0 troubleshoot=0 text {{ pxe_options.pxe_append_params|default("", true) }} ip=${ip}:${next-server}:${gateway}:${netmask} BOOTIF=${mac} ipa-api-url={{ pxe_options['ipa-api-url'] }} initrd=deploy_ramdisk coreos.configdrive=0 || goto deploy
|
kernel {% if pxe_options.ipxe_timeout > 0 %}--timeout {{ pxe_options.ipxe_timeout }} {% endif %}{{ pxe_options.deployment_aki_path }} selinux=0 troubleshoot=0 text {{ pxe_options.pxe_append_params|default("", true) }} ip=${ip}:${next-server}:${gateway}:${netmask} BOOTIF=${mac} ipa-api-url={{ pxe_options['ipa-api-url'] }} initrd={{ pxe_options.initrd_filename|default("deploy_ramdisk", true) }} coreos.configdrive=0 || goto deploy
|
||||||
|
|
||||||
initrd {% if pxe_options.ipxe_timeout > 0 %}--timeout {{ pxe_options.ipxe_timeout }} {% endif %}{{ pxe_options.deployment_ari_path }} || goto deploy
|
initrd {% if pxe_options.ipxe_timeout > 0 %}--timeout {{ pxe_options.ipxe_timeout }} {% endif %}{{ pxe_options.deployment_ari_path }} || goto deploy
|
||||||
boot
|
boot
|
||||||
|
|
|
@ -171,6 +171,8 @@ def _build_deploy_pxe_options(task, pxe_info, mode='deploy'):
|
||||||
else:
|
else:
|
||||||
pxe_opts[option] = pxe_utils.get_path_relative_to_tftp_root(
|
pxe_opts[option] = pxe_utils.get_path_relative_to_tftp_root(
|
||||||
pxe_info[label][1])
|
pxe_info[label][1])
|
||||||
|
if CONF.pxe.ipxe_enabled:
|
||||||
|
pxe_opts['initrd_filename'] = ramdisk_label
|
||||||
return pxe_opts
|
return pxe_opts
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -57,6 +57,7 @@ class TestPXEUtils(db_base.DbTestCase):
|
||||||
'deployment_ari_path': 'http://1.2.3.4:1234/deploy_ramdisk',
|
'deployment_ari_path': 'http://1.2.3.4:1234/deploy_ramdisk',
|
||||||
'aki_path': 'http://1.2.3.4:1234/kernel',
|
'aki_path': 'http://1.2.3.4:1234/kernel',
|
||||||
'ari_path': 'http://1.2.3.4:1234/ramdisk',
|
'ari_path': 'http://1.2.3.4:1234/ramdisk',
|
||||||
|
'initrd_filename': 'deploy_ramdisk',
|
||||||
})
|
})
|
||||||
|
|
||||||
self.ipxe_options_timeout = self.ipxe_options.copy()
|
self.ipxe_options_timeout = self.ipxe_options.copy()
|
||||||
|
@ -73,6 +74,7 @@ class TestPXEUtils(db_base.DbTestCase):
|
||||||
'username': 'fake_username',
|
'username': 'fake_username',
|
||||||
'password': 'fake_password'
|
'password': 'fake_password'
|
||||||
})
|
})
|
||||||
|
self.ipxe_options_boot_from_volume.pop('initrd_filename', None)
|
||||||
|
|
||||||
self.node = object_utils.create_test_node(self.context)
|
self.node = object_utils.create_test_node(self.context)
|
||||||
|
|
||||||
|
|
|
@ -414,6 +414,7 @@ class PXEPrivateMethodsTestCase(db_base.DbTestCase):
|
||||||
'ipxe_timeout': ipxe_timeout_in_ms,
|
'ipxe_timeout': ipxe_timeout_in_ms,
|
||||||
'ari_path': ramdisk,
|
'ari_path': ramdisk,
|
||||||
'aki_path': kernel,
|
'aki_path': kernel,
|
||||||
|
'initrd_filename': ramdisk_label,
|
||||||
}
|
}
|
||||||
|
|
||||||
if mode == 'rescue':
|
if mode == 'rescue':
|
||||||
|
@ -430,6 +431,7 @@ class PXEPrivateMethodsTestCase(db_base.DbTestCase):
|
||||||
'password': 'fake_password'})
|
'password': 'fake_password'})
|
||||||
expected_options.pop('deployment_aki_path')
|
expected_options.pop('deployment_aki_path')
|
||||||
expected_options.pop('deployment_ari_path')
|
expected_options.pop('deployment_ari_path')
|
||||||
|
expected_options.pop('initrd_filename')
|
||||||
|
|
||||||
with task_manager.acquire(self.context, self.node.uuid,
|
with task_manager.acquire(self.context, self.node.uuid,
|
||||||
shared=True) as task:
|
shared=True) as task:
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
---
|
||||||
|
fixes:
|
||||||
|
- |
|
||||||
|
Fixes rescue timeout due to incorrect kernel parameter in the iPXE script.
|
||||||
|
See `bug 1749860 <https://bugs.launchpad.net/ironic/+bug/1749860>`_ for
|
||||||
|
details.
|
Loading…
Reference in New Issue