[2.0 RC3] PXE error

Home Page Forums Network Management ZeroShell [2.0 RC3] PXE error

This topic contains 13 replies, has 0 voices, and was last updated by  Shadok 5 years, 5 months ago.

Viewing 15 posts - 1 through 15 (of 15 total)
  • Author
    Posts
  • #43720

    Shadok
    Member

    Hello,

    I followed the guide to enable the tftp server.

    My advanced dhcp options are like this :

    if exists user-class and option user-class = "iPXE" {
    filename "menu.ipxe";
    } else {
    filename "undionly.kpxe";
    }

    I have these files into /tftpboot :

    tftpboot> ll
    total 76
    drwxr-xr-x 2 root root 4096 Aug 22 17:25 memtest
    -rw-r--r-- 1 root root 1218 Aug 22 17:42 menu.ipxe
    drwxr-xr-x 3 root root 4096 Aug 22 17:13 smartos
    -rw-r--r-- 1 root root 64343 Oct 6 2012 undionly.kpxe

    Here’s my menu.ipxe :

    #!ipxe

    set smartos-build 20130808T195337Z

    ######## MAIN MENU ###################
    :start
    menu Welcome to iPXE's Boot Menu
    item
    item --gap --
    Operating systems
    item smartos Boot SmartOS (${smartos-build})
    item --gap --
    Utilities
    item shell Enter iPXE shell
    item reboot Reboot
    item --gap --
    Diagnostics
    item memtest Memtest86+
    item
    item exit Exit (boot local disk)
    choose --default smartos --timeout 5000 target && goto ${target}


    ########## UTILITY ITEMS ####################
    :shell
    echo Type exit to get the back to the menu
    shell
    set menu-timeout 0
    goto start

    :reboot
    reboot

    :exit
    exit

    ########## MENU ITEMS #######################
    :smartos
    kernel /smartos/${smartos-build}/platform/i86pc/kernel/amd64/unix -B root_shadow='$6$C0GGZZ0n$HV6Zkqdzw6aBtcTlyT60BMtxq0PmhvX1O4p2XFteOW2FwfgSIoUwB12BENYjbsK
    0x19J/bZoJtJEaFvB8khSb.'
    initrd /smartos/${smartos-build}/platform/i86pc/amd64/boot_archive
    boot
    goto start

    ########## DIAGNOSTICS ITEMS #################
    :memtest
    kernel /memtest/memtest86+
    boot
    goto start

    Here’s the boot error :


    iPXE 1.0.0+ ..
    Features: HTTP iSCSI DNS TFTP AoE bzImage ELF MBOOT PXE PXEXT Menu
    ...
    net0: 192.168.1.26/255.255.255.0 gw 192.168.1.1
    Filename: menu.ipxe
    Could not start download: operation not supported
    No more network devices

    I don’t understand why it can’t find my menu.ipxe file.

    Any hint ?

    Thanks.

    #52841

    Hi,

    1) have you patch the dhcp as suggested by z.c ( https://www.zeroshell.org/forum/viewtopic.php?t=2989&highlight=dhcp+howto) ?

    I did the same and works 😉 http://www.renatomorano.net/?p=1944

    I’ll try to translate my post in English so can be more useful, too

    ps.
    after patch dhcpd, my advanced options are:
    next-server IP_ZEROSHELL_ON_THE_SUBNET;
    if exists user-class and option user-class = “iPXE” {
    filename = “smartos.ipxe”;
    } else {
    filename = “undionly.kpxe”;
    }

    #52842

    Shadok
    Member

    I’ll give it a try tomorrow, thanks 🙂

    #52843

    Shadok
    Member

    I checked and i already applied this patch 🙂

    #52844

    Hi,

    so after you applied the patch, you have added all these parameters in
    your /Database/var/register/system/dhcp/Global_Parameters file

    option space ipxe;
    option ipxe-encap-opts code 175 = encapsulate ipxe;
    option ipxe.priority code 1 = signed integer 8;
    option ipxe.keep-san code 8 = unsigned integer 8;
    option ipxe.skip-san-boot code 9 = unsigned integer 8;
    option ipxe.syslogs code 85 = string;
    option ipxe.cert code 91 = string;
    option ipxe.privkey code 92 = string;
    option ipxe.crosscert code 93 = string;
    option ipxe.no-pxedhcp code 176 = unsigned integer 8;
    option ipxe.bus-id code 177 = string;
    option ipxe.bios-drive code 189 = unsigned integer 8;
    option ipxe.username code 190 = string;
    option ipxe.password code 191 = string;
    option ipxe.reverse-username code 192 = string;
    option ipxe.reverse-password code 193 = string;
    option ipxe.version code 235 = string;
    option iscsi-initiator-iqn code 203 = string;
    # Feature indicators
    option ipxe.pxeext code 16 = unsigned integer 8;
    option ipxe.iscsi code 17 = unsigned integer 8;
    option ipxe.aoe code 18 = unsigned integer 8;
    option ipxe.http code 19 = unsigned integer 8;
    option ipxe.https code 20 = unsigned integer 8;
    option ipxe.tftp code 21 = unsigned integer 8;
    option ipxe.ftp code 22 = unsigned integer 8;
    option ipxe.dns code 23 = unsigned integer 8;
    option ipxe.bzimage code 24 = unsigned integer 8;
    option ipxe.multiboot code 25 = unsigned integer 8;
    option ipxe.slam code 26 = unsigned integer 8;
    option ipxe.srp code 27 = unsigned integer 8;
    option ipxe.nbi code 32 = unsigned integer 8;
    option ipxe.pxe code 33 = unsigned integer 8;
    option ipxe.elf code 34 = unsigned integer 8;
    option ipxe.comboot code 35 = unsigned integer 8;
    option ipxe.efi code 36 = unsigned integer 8;
    option ipxe.fcoe code 37 = unsigned integer 8;

    in this case plase try to add in your DHCP advanced option also next-server IP_ZEROSHELL;
    I have:

    next-server 192.168.4.75;
    if exists user-class and option user-class = "iPXE" {
    filename = "smartos.ipxe";
    } else {
    filename = "undionly.kpxe";
    }

    where 192.168.4.75 is IP of the zersoshell box

    My menu.ipxe is smartos.ipxe

    root@labtest tftpboot> cat smartos.ipxe
    #!ipxe
    # /tftpboot/smartos.ipxe.tpl

    set smartos-build 20130808T195337Z
    set smartos-latest 20130822T211238Z

    ######## MAIN MENU ###################
    :start
    menu Welcome to iPXE's Boot Menu
    item
    item --gap --
    Operating systems
    item smartos Boot SmartOS (${smartos-build})
    item smartos-latest Boot SmartOS (${smartos-latest})
    item --gap --
    Utilities
    item shell Enter iPXE shell
    item reboot Reboot
    item
    item exit Exit (boot local disk)
    choose --default smartos-latest --timeout 30000 target && goto ${target}


    ########## UTILITY ITEMS ####################
    :shell
    echo Type exit to get the back to the menu
    shell
    set menu-timeout 0
    goto start

    :reboot
    reboot

    :exit
    exit

    ########## MENU ITEMS #######################
    # SmartOS
    :smartos
    kernel /smartos/${smartos-build}/platform/i86pc/kernel/amd64/unix -B smartos=true
    initrd /smartos/${smartos-build}/platform/i86pc/amd64/boot_archive
    boot
    goto start


    # SmartOS Latest
    :smartos-latest
    kernel /smartos/${smartos-latest}/platform/i86pc/kernel/amd64/unix -B smartos=true
    initrd /smartos/${smartos-latest}/platform/i86pc/amd64/boot_archive
    boot
    goto start

    I hope this can be useful to you

    and

    . 😀

    just a question but your dhcpd range of ip address is more than one ?

    #52845

    Shadok
    Member

    I have the same settings as you have.

    The strange thing is that I don’t have any tftp section entry in the log viewer although I have the verbose flag when calling tftp :

    gateway> ps -ef -www |grep tftp
    root 1901 32074 0 12:09 pts/0 00:00:00 grep tftp
    root 2985 1 0 10:41 ? 00:00:00 /Database/opt/x.x/packages/sbin/in.tftpd --listen --user apache --secure /Database/tftpboot --verbose

    No tftp log file in /Database/LOG/2013/Aug/27/gateway.

    (i rebooted my gateway to be sure)

    #52846

    Shadok
    Member

    Here’s my dhcpd.conf :

    authoritative;
    ddns-update-style interim;
    ignore client-updates;
    option space ipxe;
    option ipxe-encap-opts code 175 = encapsulate ipxe;
    option ipxe.priority code 1 = signed integer 8;
    option ipxe.keep-san code 8 = unsigned integer 8;
    option ipxe.skip-san-boot code 9 = unsigned integer 8;
    option ipxe.syslogs code 85 = string;
    option ipxe.cert code 91 = string;
    option ipxe.privkey code 92 = string;
    option ipxe.crosscert code 93 = string;
    option ipxe.no-pxedhcp code 176 = unsigned integer 8;
    option ipxe.bus-id code 177 = string;
    option ipxe.bios-drive code 189 = unsigned integer 8;
    option ipxe.username code 190 = string;
    option ipxe.password code 191 = string;
    option ipxe.reverse-username code 192 = string;
    option ipxe.reverse-password code 193 = string;
    option ipxe.version code 235 = string;
    option iscsi-initiator-iqn code 203 = string;
    # Feature indicators
    option ipxe.pxeext code 16 = unsigned integer 8;
    option ipxe.iscsi code 17 = unsigned integer 8;
    option ipxe.aoe code 18 = unsigned integer 8;
    option ipxe.http code 19 = unsigned integer 8;
    option ipxe.https code 20 = unsigned integer 8;
    option ipxe.tftp code 21 = unsigned integer 8;
    option ipxe.ftp code 22 = unsigned integer 8;
    option ipxe.dns code 23 = unsigned integer 8;
    option ipxe.bzimage code 24 = unsigned integer 8;
    option ipxe.multiboot code 25 = unsigned integer 8;
    option ipxe.slam code 26 = unsigned integer 8;
    option ipxe.srp code 27 = unsigned integer 8;
    option ipxe.nbi code 32 = unsigned integer 8;
    option ipxe.pxe code 33 = unsigned integer 8;
    option ipxe.elf code 34 = unsigned integer 8;
    option ipxe.comboot code 35 = unsigned integer 8;
    option ipxe.efi code 36 = unsigned integer 8;
    option ipxe.fcoe code 37 = unsigned integer 8;
    subnet 192.168.1.0 netmask 255.255.255.0 {
    option routers 192.168.1.1;
    option subnet-mask 255.255.255.0;
    option domain-name "localdomain.com";
    option domain-name-servers 192.168.1.1, 8.8.8.8, 8.8.4.4;
    option ntp-servers 192.168.1.1;
    next-server 192.168.1.1;
    if exists user-class and option user-class = "iPXE" {
    filename "menu.ipxe";
    } else {
    filename "undionly.kpxe";
    }

    default-lease-time 3600;
    max-lease-time 86400;
    range 192.168.1.70 192.168.1.89;
    range 192.168.1.140 192.168.1.199;
    range 192.168.1.210 192.168.1.249;

    And preboot script :

    # Patch DHCP config scripts to include a Global_Parameters section, and pass config testing
    touch /Database/var/register/system/dhcp/Global_Parameters
    sed -i 's/^EOF$/EOFncat $REGISTER/system/dhcp/Global_Parameters/g' /root/kerbynet.cgi/scripts/dhcp_configfile
    sed -i 's/echo "ignore client-updates;" >>$FILE/echo "ignore client-updates;" >>$FILEncat $REGISTER/system/dhcp/Global_Parameters >>$FILE/g' /root/kerbynet.cgi/scripts/dhcp_checkopt

    /tftpboot/menu.ipxe :

    #!ipxe

    set smartos-build 20130808T195337Z

    ######## MAIN MENU ###################
    :start
    menu Welcome to iPXE's Boot Menu
    item
    item --gap --
    Operating systems
    item smartos Boot SmartOS (${smartos-build})
    item --gap --
    Utilities
    item shell Enter iPXE shell
    item reboot Reboot
    item --gap --
    Diagnostics
    item memtest Memtest86+
    item
    item exit Exit (boot local disk)
    choose --default smartos --timeout 5000 target && goto ${target}


    ########## UTILITY ITEMS ####################
    :shell
    echo Type exit to get the back to the menu
    shell
    set menu-timeout 0
    goto start

    :reboot
    reboot

    :exit
    exit

    ########## MENU ITEMS #######################
    :smartos
    kernel /smartos/${smartos-build}/platform/i86pc/kernel/amd64/unix -B root_shadow='XXXXXX'
    initrd /smartos/${smartos-build}/platform/i86pc/amd64/boot_archive
    boot
    goto start

    ########## DIAGNOSTICS ITEMS #################
    :memtest
    kernel /memtest/memtest86+
    boot
    goto start
    #52847

    Hi,

    my dhcpd.conf is:

    root@labtest tftpboot> cat /tmp/dhcpd.conf
    authoritative;
    ddns-update-style interim;
    ignore client-updates;
    option space ipxe;
    option ipxe-encap-opts code 175 = encapsulate ipxe;
    option ipxe.priority code 1 = signed integer 8;
    option ipxe.keep-san code 8 = unsigned integer 8;
    option ipxe.skip-san-boot code 9 = unsigned integer 8;
    option ipxe.syslogs code 85 = string;
    option ipxe.cert code 91 = string;
    option ipxe.privkey code 92 = string;
    option ipxe.crosscert code 93 = string;
    option ipxe.no-pxedhcp code 176 = unsigned integer 8;
    option ipxe.bus-id code 177 = string;
    option ipxe.bios-drive code 189 = unsigned integer 8;
    option ipxe.username code 190 = string;
    option ipxe.password code 191 = string;
    option ipxe.reverse-username code 192 = string;
    option ipxe.reverse-password code 193 = string;
    option ipxe.version code 235 = string;
    option iscsi-initiator-iqn code 203 = string;
    # Feature indicators
    option ipxe.pxeext code 16 = unsigned integer 8;
    option ipxe.iscsi code 17 = unsigned integer 8;
    option ipxe.aoe code 18 = unsigned integer 8;
    option ipxe.http code 19 = unsigned integer 8;
    option ipxe.https code 20 = unsigned integer 8;
    option ipxe.tftp code 21 = unsigned integer 8;
    option ipxe.ftp code 22 = unsigned integer 8;
    option ipxe.dns code 23 = unsigned integer 8;
    option ipxe.bzimage code 24 = unsigned integer 8;
    option ipxe.multiboot code 25 = unsigned integer 8;
    option ipxe.slam code 26 = unsigned integer 8;
    option ipxe.srp code 27 = unsigned integer 8;
    option ipxe.nbi code 32 = unsigned integer 8;
    option ipxe.pxe code 33 = unsigned integer 8;
    option ipxe.elf code 34 = unsigned integer 8;
    option ipxe.comboot code 35 = unsigned integer 8;
    option ipxe.efi code 36 = unsigned integer 8;
    option ipxe.fcoe code 37 = unsigned integer 8;

    #host SmartOS {
    # hardware ethernet 00:e0:81:5d:c2:5e;
    # fixed-address 192.168.4.40;
    # next-server 192.168.4.75;
    # if exists user-class and option user-class = "iPXE" {
    # filename = "smartos.ipxe";
    # } else {
    # filename = "undionly.kpxe";
    # }
    #}
    subnet 192.168.4.0 netmask 255.255.255.0 {
    option routers 192.168.4.75;
    option subnet-mask 255.255.255.0;
    option domain-name-servers 192.168.4.75, 8.8.8.8, 8.8.4.4;
    next-server 192.168.4.75;
    if exists user-class and option user-class = "iPXE" {
    filename = "smartos.ipxe";
    } else {
    filename = "undionly.kpxe";
    }

    default-lease-time 28800;
    max-lease-time 28800;
    range 192.168.4.20 192.168.4.30;
    host 3232236554_00237DFDB8F1 {
    hardware ethernet 00:23:7D:FD:B8:F1;
    fixed-address 192.168.4.10;


    }
    host 3232236566_00237DFDB936 {
    hardware ethernet 00:23:7D:FD:B9:36;
    fixed-address 192.168.4.22;


    }
    host 3232236594_08002766168D {
    hardware ethernet 08:00:27:66:16:8D;
    fixed-address 192.168.4.50;


    }
    }

    but I have just one IP range and if I add a new range all is still working.

    So can be related to undionly.kpxe binary ?

    I use undionly.kpxe dowloaded from http://boot.ipxe.org/undionly.kpxe [iPXE 1.0.0+ (5520)] but is working also undionly.kpxe from http://cuddletech.com/IPXE-100612_undionly.kpxe [iPXE 1.0.0+ (a712)] as suggested by Ben Rockwood [ http://wiki.smartos.org/display/DOC/PXE+Booting+SmartOS ]

    As last resouces you can test if something change if you add “Speeding up DHCP”

    [http://ipxe.org/howto/dhcpd ]
    The PXE specification requires iPXE to wait for replies from a ProxyDHCP server before booting. If you are not using a ProxyDHCP server, then this creates an unnecessary delay of several seconds. You can eliminate this delay using:

    option ipxe.no-pxedhcp 1;

    (Do not do this if you are using a ProxyDHCP server; it will cause iPXE to ignore whatever the ProxyDHCP server sends!)

    Let me know …

    see you 😉

    #52848

    Shadok
    Member

    It works fine now, thank you 🙂

    #52849

    Hi,

    please let us know what has been the solution ?

    1) undionly.kpxe binary

    2) just one range of ip in dhcpd configuration

    3) or just we have been lucky 😆

    Renato

    #52850

    Shadok
    Member

    I already have more than one ip range so that’s not it.
    I tried with the old and new ndionly and it work.

    Looks like I didn’t have the “next-server” line 🙂

    EDIT: Damn, I had it. I really don’t know why it works now. I’ll try again with the old ndionly.

    #52851

    I already have more than one ip range so that’s not it.
    I tried with the old and new ndionly and it work.

    Looks like I didn’t have the “next-server” line Smile

    EDIT: Damn, I had it. I really don’t know why it works now. I’ll try again with the old ndionly.

    Hi,

    so we are in the fog ?!?

    #52852

    Hi,
    we have another option.
    We can add in “Static IP Entries” all we need to net booting.

    I suppose in this case no more trouble with time out or leases time of the dhcpd server.

    #52853

    Shadok
    Member

    @renato.morano wrote:

    I already have more than one ip range so that’s not it.
    I tried with the old and new ndionly and it work.

    Looks like I didn’t have the “next-server” line Smile

    EDIT: Damn, I had it. I really don’t know why it works now. I’ll try again with the old ndionly.

    Hi,

    so we are in the fog ?!?

    Yep, i’ll need to do some more tests 🙂

    #52854

    Shadok
    Member

    @renato.morano wrote:

    Hi,
    we have another option.
    We can add in “Static IP Entries” all we need to net booting.

    I suppose in this case no more trouble with time out or leases time of the dhcpd server.

    That’s interesting to have hosts-only specific boot options.
    Thanks.

Viewing 15 posts - 1 through 15 (of 15 total)

You must be logged in to reply to this topic.