Comments (13)
Damnit! Thanks for the report, looking. At first glance, there's no obvious changes to that phase of boot, that section is just grabbing a static TFTP file. The MAC address is normal, but it's basically only for data continuity in the logs, so you can track a MAC through each stage of boot. The important part is the /0
, which should serve an ipxe for the x86 arch...
from netboot.
Okay, looking at your pcap and screenshot, something is weird: in the pcap, Pixiecore is running on 192.168.1.192, but in your screenshot, the virtualbox firmware is trying to download the next boot stage from 192.168.1.174
I've seen this before, when there are multiple competing PXE and ProxyDHCP servers on the network. The PXE spec doesn't specify how to merge incoming responses for ProxyDHCP, so you can end up using a server IP from one response, but a filename from another... Unfortunately, I don't see 192.168.1.174 in the pcap, so I have no idea how this machine is somehow convincing your virtualbox to boot from it...
Does this make sense to you? Is there maybe a second pixiecore/other PXE server running?
from netboot.
Hi, I'm new to both Pixiecore and PXE booting in general. As a minor anecdote that I think might be related, I was having trouble booting a small device yesterday and happened upon your conversation as it was unfolding. I tried using several of the "quick" options just to rule out any mistakes I might have made invoking Pixiecore, but the results were the same. Sure enough, rolling back to October 17th in pixiecore enabled my device to load everything and boot.
This may be a completely different issue, but given the title of the issue I figured I would post it in here first since i-dont-know-what-im-doing.jpg.
Attached is a pcap I took using the debug command I found in pixiecore. The device would reboot immediately upon failure to boot, but I was able to glean a reference to this error in the output: http://ipxe.org/3c092083
I'm not sure how else to be most helpful, but here is a basic description of my setup:
My host machine is a Macbook Pro with VirtualBox. On my host there is a VM with a bridged network adapter, and this VM runs Pixiecore. On my local network there is a small device capable of booting over the network.
from netboot.
Okay, so that's two reports now that rolling back fixes things. I need to reproduce this locally somehow so I can bisect...
from netboot.
Okay! I can reproduce this in virtualbox with the architecture:
- Virtualbox VM with no hard drive, bridged network, configured to boot from network.
- Pixiecore running on the virtualbox host machine
I see the same symptoms, where the TFTP file inexplicably doesn't get served.
In parallel, I'm able to netboot a standard KVM machine, so it's something specific to virtualbox that's broken.
Bisecting...
from netboot.
Debugging a bit before I bisect... It looks like the virtualbox copy of ipxe never tries to speak TFTP at all, network capture only shows the DHCP exchange (which completes correctly afaict), and then the virtualbox firmware just fails without even trying to speak TFTP...
from netboot.
Verified again by comparing with a KVM VM, and I can definitely see DHCP+TFTP happening with that one.
So, a recent change made virtualbox's strange version of ipxe unhappy. Digging...
from netboot.
Found one solution: you need to install the virtualbox extension pack at https://www.virtualbox.org/wiki/Downloads . According to various internet sources, PXE boot from internal iPXE when using an emulated intel NIC is known-broken, and the "fix" is to install the extension pack, which provides the standard intel PXE ROM. This ROM can boot correctly, no problem.
I'm not sure I can fix virtualbox's builtin borked ipxe :( Their iPXE claims that it supports TFTP, but when I try and make it speak TFTP, it just fails without ever connecting to anything, with an error that makes no sense. So, that's not encouraging... I'll keep digging, but it's possible the "solution" will just be "don't use virtualbox, or if you have to use virtualbox, install the extension pack"
@cdata I suspect your own problem is something different, based on the fact that your setup is reversed (running pixiecore on virtualbox, booting a physical system). I'll investigate your report as soon as I close this one with a documentation fix.
from netboot.
@danderson for us it was not only VirtualBox that was broken. We had the same issue (mac address of client showing up as a filename) when booting using bare metal, too.
Reverting to Oct 17 solved issues on bare metal, and VirtualBox showed the same difficulties shown in #51. Provided screenshots of VirtualBox simply because it was showing the same issues as metal, and because it's hard to screencap our bare metal system during boot.
from netboot.
The MAC address in the filename is normal, we tell the firmware to boot //, so that the TFTP server knows which machine is requesting a boot file. You should see that in all boot attempts, and it shouldn't be a problem. Are you seeing problems with booting bare metal as well (no VirtualBox anywhere in the setup) ?
from netboot.
Okay, I think I've found what makes the embedded virtualbox iPXE unhappy. For some reason, it doesn't like the standard PXE format of specifying next-server+filename as a way of saying "you should boot with tftp://<next-server>/<filename>
. Instead, it tries to interpret the filename <mac>/<arch>
as a boot URL, and fails because it's not a URL.
I verified manually that if I give it a "filename" of tftp://<next-server>/<mac>/<arch>
, virtualbox's ipxe is capable of chainloading to Pixiecore's ipxe, and from there we can successfully boot.
So, I think the change we need is:
- Always chainload to Pixiecore's iPXE, so we have a known set of features.
- When we want to chainload, detect if the PXE firmware is iPXE or non-iPXE. If iPXE, set the filename to
tftp://<next-server>/<mac>/<arch>
. Otherwise, set the filename to<mac>/<arch>
.
This will require some refactoring of the boot logic, so it'll take a bit of time to make the change. I'll report back once it's done.
from netboot.
Okay, new problem... I implemented this, but now after chainloading to Pixiecore's iPXE, it cannot configure the network any more... iPXE's website says this can be a problem when you chainload undionly.kpxe (which is what we chainload), due to buggy firmwares :(
from netboot.
So, recapping, the failure you see here is actually a result of both of my attempts to fix #51. The obvious way to fix the problem triggered a bunch of bugs in my understanding of ipxe, and ipxe itself. I've updated #51 with the plan to fix Virtualbox booting.
Unclear if @cdata's issue is the same. The error he's getting suggests that it is, and if so, it's possible my virtualbox fix will also fix that. I'm filing a new bug to investigate that.
from netboot.
Related Issues (20)
- Running on macOS fails with setsockopt: invalid argument HOT 3
- Package from packagecloud.io not working. Status code 429.
- Option to disable the DHCP server HOT 1
- make update-ipxe error HOT 5
- enable docker hub autobuild and update docker image(s) HOT 2
- RPI4 netboot support HOT 2
- TFTP bug: response source IP is not client request HOT 1
- tftp test is failing: package go.universe.tf/netboot/cmd/pixiecore: cannot find package HOT 3
- quick for archlinux not working HOT 3
- docker pull pixiecore/pixiecore fails
- pixiecore quick xyz is legacy BIOS only by default? HOT 4
- unsupported client firmware type '0' (please file a bug!) HOT 7
- Cannot install pixiecore HOT 2
- how to prevent pxe boot looping HOT 1
- Is it possible to run pixiecore with cloud-init config? HOT 1
- Netboot with NixOS HOT 1
- Arch Linux quick command needs cms_verify=y HOT 1
- [Discussion] IPV6 Exploration pixiecore HOT 1
- [DHCP] Unusable packet from xx:xx:xx:xx:xx:xx: unsupported client firmware type '16' (please file a bug!) despite using AMD64 HOT 2
- [PIXIECORE] No configuration method succeeded
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from netboot.