| Summary: | Boot PXE + chain.c32 local hd boot fails if APPEND or IPAPPEND in global area are used | ||
|---|---|---|---|
| Product: | Red Hat Enterprise Linux 6 | Reporter: | Luca Villa <luvilla> |
| Component: | syslinux | Assignee: | Peter Jones <pjones> |
| Status: | CLOSED CANTFIX | QA Contact: | Release Test Team <release-test-team> |
| Severity: | medium | Docs Contact: | |
| Priority: | medium | ||
| Version: | 6.0 | CC: | chorn, gasmith, hpa, jvillalo, jwest, luyu, terry.nissley |
| Target Milestone: | rc | ||
| Target Release: | --- | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Whiteboard: | |||
| Fixed In Version: | Doc Type: | Bug Fix | |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2011-06-03 19:13:53 UTC | Type: | --- |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Bug Depends On: | |||
| Bug Blocks: | 705163 | ||
|
Description
Luca Villa
2011-02-10 17:19:36 UTC
Hello, I'm still trying to find out the exact cause for this: the bug has been introduced in the upstream syslinux-3.74 version (the syslinux 3.73 works as expected). The chain.c32 module itself has not changed between these two versions, so the problem lies most probably in the pxelinux changes. I suspect the code for IPAPPEND option has broken the module parameters passing and chain.c32 doesn't see the "hd0" option at all. My assembly-fu is very weak so I failed to find the exact place or to confirm my theory. I'll keep tinkering... Regards. There is no evidence what machine this is anywhere in the body, but I'm going to make a wild guess that it's an HP server. Quite a few HP servers have BIOSes that use memory unsafely for localbooting; older PXELINUX versions didn't happen to use the critical memory locations out of pure dumb luck. Unfortunately there is very little that can be done to avoid them, other than possibly breaking pxelinux.0 into two files loaded at different addresses, which is likely to break *other* machines. Hello, I did my tests with KVM virtual machines -- so there either must be a similar bug also in the BIOS binary we ship with the qemu-kvm or the problem is more generic. Regards. Oh. I just looked at the code; yes, the global "ipappend" is almost certainly the culprit here. Global "append" or "ipappend" cause a lot of problems; just don't use them. Setting devel_ack- per comments 5-7. As explained in the opening comment, a reasonable workaround is available. As noted in comment #7, a global APPEND or IPAPPEND should not be used as it leads to other problems. GSS is documenting the workaround as a knowledge base article. There is a valid usecase where the workaround does not help:
LABEL other
MENU LABEL run bootsector on other partition
KERNEL chain.c32
APPEND hd0 2
If customers have multiple partitions with installed independent operating systems then with chainload they could via pxe/tftp and chain.c32 conveniently select which partitions system to start, while the workaround does not provide this.
Considering to open this as we have no workaround, but maybe GPXE helps here.
W.r.t. comment #9 - that should work just fine (without a global APPEND or IPAPPEND). What does your entire configuration look like? Thank you much for pointing out! This works indeed, we were just wrangling with the global (I)APPEND here. Adjusting documentation to point this out. Changing bz subject to reflect the actual issue: - chainloading with chain.c32 works - using APPEND/IPAPPEND in the global area does not, this is what the 'CLOSED CANTFIX' relates to |