iPXE discussion forum
ipxe.lkrn does not detect L2 network interface in MBR - Printable Version

+- iPXE discussion forum (https://forum.ipxe.org)
+-- Forum: iPXE user forums (/forumdisplay.php?fid=1)
+--- Forum: General (/forumdisplay.php?fid=2)
+--- Thread: ipxe.lkrn does not detect L2 network interface in MBR (/showthread.php?tid=8256)



ipxe.lkrn does not detect L2 network interface in MBR - fxc6923683@163.com - 2016-12-17 15:33

Hello,

I purpose to set pxe in grub,then MBR boot auto pxe after reboot os.

I have followed online instructions to download latest iPXE from git and run "make" which finished successfuly.

My attempt with undionly.ipxe for PXE was successful and acomplished what I expected.

Next logical step would be to add ipxe.lkrn to my grub configuration file which I did and ipxe.lkrn loads in MBR but it does not detect network interface.

I have two nics to be set pxe in BIOS, set two nics pxe are enable in BIOS. MBR boot from ipxe.lkrn may was successful.But I set one nic pxe is enable in BIOS. It does not detect network interface.

I trace to the code for this problem, I find the code is
Code:
    /* Call loader */
    undi_loader_entry = undirom->loader_entry;
    __asm__ __volatile__ ( REAL_CODE ( "pushl %%ebp\n\t" /* gcc bug */
                       "pushw %%ds\n\t"
                       "pushw %%ax\n\t"
                       "lcall *undi_loader_entry\n\t"
                       "popl %%ebp\n\t" /* discard */
                       "popl %%ebp\n\t" /* gcc bug */ )
                   : "=a" ( exit )
                   : "a" ( __from_data16 ( &undi_loader ) )
                   : "ebx", "ecx", "edx", "esi", "edi" );

    if ( exit != PXENV_EXIT_SUCCESS ) {
        /* Clear entry point */
        memset ( &undi_loader_entry, 0, sizeof ( undi_loader_entry ) );

        rc = -EUNDILOAD ( undi_loader.Status );
        DBGC ( undi, "UNDI %p loader failed: %s\n",
               undi, strerror ( rc ) );
        return rc;
    }

Well it is a strange situation that iPXE on the PXE finds and configures network interface successfully but ipxe.lkrn does not detect network interface.


RE: ipxe.lkrn does not detect L2 network interface in MBR - NiKiZe - 2016-12-17 23:08

ipxe.lkrn uses the drivers that is built in to ipxe, while undionly.kpxe chains the nics own undi stack. You can compare the behavior by using ipxe.pxe instead of ipxe.lkrn in your first test.

what is the pciid of the nics that are not found?


RE: ipxe.lkrn does not detect L2 network interface in MBR - fxc6923683@163.com - 2016-12-19 15:20

(2016-12-17 23:08)NiKiZe Wrote:  ipxe.lkrn uses the drivers that is built in to ipxe, while undionly.kpxe chains the nics own undi stack. You can compare the behavior by using ipxe.pxe instead of ipxe.lkrn in your first test.

what is the pciid of the nics that are not found?

I purpose boot from ipxe after rebooting linux. ipxe.pxe is booting from pxe.I want to boot for harddisk. Do you know another way to finish this function? Thank you very much.