Post Reply 
 
Thread Rating:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Loading iPXE from RPL
2015-09-30, 23:00
Post: #1
Loading iPXE from RPL
I'm trying to boot linux, using an old ISA NIC.

Until now, my iPXE setup works with various PCI NICs, mostly Realtek RTL8139s and 3Com 3c905s, either with from their original bootrom or with gPXE/iPXE added to the BIOS ROM.
Chainloading from the original PXE ROM to iPXE and then to Linux, DOS or memtest86 works without any problem.

Now, I replaced the PCI NIC with a NE2000 compatible ISA card (Dlink DE-224 with DE22X4 16KiB bootrom).
Unluckily, the only bootrom available only support RPL and the addressable ROM is too small for etherboot/gPXE/iPXE anyways.

But I discovered rpld, so I installed it on a random machine connected to the same network.

I never managed to boot a recent gPXE or an iPXE image (either rom or pxe images fails to boot or displays "pxe->eb: no pxe stack found!").

Rpld's load/execute addresses are not very clearly explained, but that's only a part of the problem (and doesn't depends on iPXE).
Anyways, I managed to boot an old etherboot 5.4.3 image (works the same way with rom as well as zrom images) from RPL, assuming load=0x1000 and execute=0x1006 (it also works the same way with load=0x2000 and execute=0x2006), following this post.

The RPL ROM loads this etherboot image, then chainloads to iPXE, which displays the menu, load the images and tries to boot from them.
The main problem is to have the PC rebooting as soon as it tries to boot from either memtest, Linux kernel/initrd, DOS floppy image or even memtest86 iso.
Find all posts by this user
Quote this message in a reply
2015-10-22, 00:50
Post: #2
RE: Loading iPXE from RPL
(2015-09-30 23:00)man-x86 Wrote:  Rpld's load/execute addresses are not very clearly explained, but that's only a part of the problem (and doesn't depends on iPXE).
Anyways, I managed to boot an old etherboot 5.4.3 image (works the same way with rom as well as zrom images) from RPL, assuming load=0x1000 and execute=0x1006 (it also works the same way with load=0x2000 and execute=0x2006), following this post.

Interesting! You might be able to get the RPL ROM to boot an iPXE ROM image directly by providing the correct execution address. For example:

Code:
make bin/ne.rom
grep int19_entry bin/ne.rom.tmp.map

with my build environment gives

Code:
0000028e l       .prefix        00000044 int19_entry

which should mean that load=0x2000 and execute=0x228e would work to load ne.rom directly from RPL.

qemu apparently has an emulation for the ISA ne2k NIC. Could you extract the RPL ROM and e-mail me a copy? If that loads, then it should be relatively trivial to create a .rpl format for iPXE so that you could run just

Code:
make bin/ne.rpl

and then boot using load=0x1000 and execute=0x1000.

Michael


Michael
Visit this user's website Find all posts by this user
Quote this message in a reply
2015-10-26, 15:22
Post: #3
RE: Loading iPXE from RPL
I tried to execute the code loaded at some different addresses (not only the address from int19_entry), using the ne2k_isa.rom image.
It did not went any further with most addresses (iPXE was only able to display some text by loading at 0x2000 and executing at 0x2000 or 0x2006).

I also tried the same with the ne2k_isa.pxe image. Executing the code at 0x2006 managed to load the full iPXE bootloader.
It displays "PXE-EB->: No PXE stack found!" and "iPXE initialising devices.. WARNING: Using legacy NIC wrapper on xx:xx:xx:xx:xx:xx" and loads the menu and is able to boot memtest, DOS and Linux.

It looks like rpld's addresses and hex addresses are not corresponding (it may use "blocks" of different size).

I tried to use my ROM images with qemu and its generic ne2k_isa emulation, but the software on the ROMs doesn't detects non-dlink chips.

Anyway D-Link's images are located on http://ftp.dlink.ru/pub/Bootrom/Firmware/DE224C/, and I flashed the DE22X4.DAT image on my board's ROM.
Find all posts by this user
Quote this message in a reply
2016-09-23, 22:40
Post: #4
RE: Loading iPXE from RPL
I forgot to update this thread as I've made a little progress while trying to make this board booting.

The main goal was to have iPXE on very old motherboards, mostly for convenience over floppy disks and cdrom.
I noticed that I did most of the testing with an early 486 (HP Vectra 486M) and a 386 (Compaq Deskpro 386S).
Both of them did successfully load the ne2k_isa.pxe image, but it seems to fail to execute it.

I tried to modify the CFLAGS used for compiling iPXE (from no flags to -march=i386), without success.

Then I tried to put this ISA board in a PII motherboard. The system loads the ne2k_isa.pxe image, executes it, chainloads to iPXE and is able to (slowly) boot an OS.

Would iPXE be limited to 586 machines?
Has anyone actually tested it on 486/386 machines, except qemu?
Find all posts by this user
Quote this message in a reply
Post Reply 




User(s) browsing this thread: 1 Guest(s)