isc dhcpd opciók & tftp+pxe mizéria

x86-os Solaris-t akarok netbootolni, és a telepítő pxegrub-ot használ, aminek a menu.lst-t a 150-es dhcp opció segítségével (is) lehet megadni.

A leírásoknak megfelelően el is készítettem a dhcpd.conf-ot, azonban a hálózatra kikerülő csomagokban valamiért nem szerepel a 150-es opció. Mit ronthattam el?


# dhcpd.conf
#
# Configuration file for ISC dhcpd (see 'man dhcpd.conf')
#
#authoritative;
ddns-update-style none;

ignore bootp;

option domain-name-servers 192.168.1.1;
option grubmenu code 150 = string;

subnet 192.168.1.0 netmask 255.255.255.0 {
    option routers 192.168.1.1;
    option broadcast-address 192.168.1.255;
    option subnet-mask 255.255.255.0;
    pool {
        #bootp clients
        range 192.168.1.200 192.168.1.205;
        default-lease-time 86400;
        deny unknown clients;
    }
}

group {
    #network boot clients-x86
    allow bootp;

    next-server 192.168.1.3;

    use-host-decl-names on;
    if substring (option vendor-class-identifier, 0, 9) = "PXEClient" {
        filename "/slackware-x86-13.0/pxelinux.0";
    }
    else if substring (option vendor-class-identifier, 0, 9) = "Etherboot" {
        filename "/slackware-x86-13.0/kernels/hugesmp.s/bzImage";
    }

    host boot86_nic1 {
        hardware ethernet 00:04:76:f1:8e:3c;
        fixed-address 192.168.1.200;
    }

    host boot86_nic2 {
        hardware ethernet 00:04:75:71:e6:10;
        fixed-address 192.168.1.201;
    }

    host boot86_nic3 {
        hardware ethernet 00:50:da:ac:8f:8d;
        fixed-address 192.168.1.204;
    }

    host boot86_nic4 {
        hardware ethernet 00:10:a4:8d:8d:15;
        fixed-address 192.168.1.205;
    }

}

group {
    #network boot clients-x64
    allow bootp;

    next-server 192.168.1.3;

    use-host-decl-names on;
    if substring (option vendor-class-identifier, 0, 9) = "PXEClient" {
        filename "/slackware-x64-13.0/pxelinux.0";
    }
    else if substring (option vendor-class-identifier, 0, 9) = "Etherboot" {
        filename "/slackware-x64-13.0/kernels/hugesmp.s/bzImage";
    }

#    host boot64_nic1 {
#       hardware ethernet 00:e0:0c:62:d1:2e;
#       fixed-address 192.168.1.203;
#    }
}

group {
    #network boot clients-i86pc
    allow bootp;

    next-server 192.168.1.3;

    use-host-decl-names on;
    if substring (option vendor-class-identifier, 0, 9) = "PXEClient" {
        option grubmenu "/menu.lst";
        filename "/pxegrub";
    }
    else if substring(option vendor-class-identifier, 0, 9) = "Etherboot" {
        option grubmenu "/menu.lst";
        filename "/pxegrub";
    }


    host boot_i86pc_nic1 {
        hardware ethernet 00:e0:81:58:3f:ef;
        fixed-address 192.168.1.202;
    }

    host boot64_nic1 {
        hardware ethernet 00:0e:0c:62:d1:2e;
        fixed-address 192.168.1.203;
    }
}

(A boot64_nic1-ről bootolok.)
A dhcp szerverem: Internet Systems Consortium DHCP Server V3.1.2p1

A menu.lst-m a következő:


default=0
timeout=5
title Solaris_10 i86pc
    kernel /I86PC.Solaris_10/multiboot kernel/unix -v -m verbose install dhcp -B install_media=192.168.1.3:/home/share/nfs/public/solaris/x86/solaris-10.0
    #, install_boot=192.168.1.3:/home/share/nfs/public/solaris/x86/solaris-10.0/Solaris_10
    module /I86PC.Solaris_10/x86.miniroot

Továbbá a tftpd-t a következőképpen futtatom az inetd alól:


tftp  dgram   udp     wait    root    /usr/sbin/in.tftpd  in.tftpd -c -s /tftpboot -r blksize -r tsize

A tsize-t azért kell tiltanom (-r) mert, ha engedélyezem, akkor a kernel betöltésekor a következő történik a wireshark szerint:
server:
Opcode: Option Acknowledgement (6)
Option: tsize\000 = 136180\000
Option name: tsize
Option value: 136180

kliens válasza:
Opcode: Error Code (5)
Error code: Not defined (0)
Error message: TFTP Aborted

Ekkor a pxegrub a következő hibát adja az arcomba:
20 : Multiboot kernel must be loaded before modules

Ha pedig letiltom a tsize-t akkor ez:
28 : Selected item cannot fit into memory

Jelenleg itt akadtam meg, és várom a külső (telefonos :) segítséget.

Hozzászólások

lehet, hogy nálad nem releváns, de nekem csak az atftpd működött rendesen debian szerveren pxe-hez.

Igen, atftp-vel már tényleg ment minden*.
Az inetd.conf-ban így kell beállítani:


tftp  dgram   udp     wait    root    /usr/local/sbin/atftpd --verbose --tftpd-timeout 60 /tftpboot
[code]

A menu.lst-be pedig a következőket kell írni:
[code]
default=0
timeout=5
title Solaris_10 i86pc
    kernel /I86PC.Solaris_10/multiboot kernel/unix - nowin install -B install_media=192.168.1.3:/home/share/nfs/public/solaris/x86/solaris-10.0
    module /I86PC.Solaris_10/x86.miniroot

*: Ettől függetlenül a grubmenu dhcp opció még mindig nem ér el a klienshez, pedig így néz ki a dhcpd.conf:


# dhcpd.conf
#
# Configuration file for ISC dhcpd (see 'man dhcpd.conf')
#
#authoritative;
ddns-update-style none;

ignore bootp;

option domain-name-servers 192.168.1.1;
option grubmenu code 150 = string;

subnet 192.168.1.0 netmask 255.255.255.0 {
    option routers 192.168.1.1;
    option broadcast-address 192.168.1.255;
    option subnet-mask 255.255.255.0;
    pool {
        #bootp clients
        range 192.168.1.200 192.168.1.205;
        default-lease-time 86400;
        deny unknown clients;
    }
}

group {
    #network boot clients-x86
    allow bootp;

    next-server 192.168.1.3;

    use-host-decl-names on;
    if substring (option vendor-class-identifier, 0, 9) = "PXEClient" {
        filename "/slackware-x86-13.0/pxelinux.0";
    }
    else if substring (option vendor-class-identifier, 0, 9) = "Etherboot" {
        filename "/slackware-x86-13.0/kernels/hugesmp.s/bzImage";
    }

    host boot86_nic1 {
        hardware ethernet 00:04:76:f1:8e:3c;
        fixed-address 192.168.1.200;
    }

    host boot86_nic2 {
        hardware ethernet 00:04:75:71:e6:10;
        fixed-address 192.168.1.201;
    }

    host boot86_nic3 {
        hardware ethernet 00:50:da:ac:8f:8d;
        fixed-address 192.168.1.202;
    }

    host boot86_nic4 {
        hardware ethernet 00:10:a4:8d:8d:15;
        fixed-address 192.168.1.203;
    }

}

group {
    #network boot clients-x64
    allow bootp;

    next-server 192.168.1.3;

    use-host-decl-names on;
    if substring (option vendor-class-identifier, 0, 9) = "PXEClient" {
        filename "/slackware-x64-13.0/pxelinux.0";
    }
    else if substring (option vendor-class-identifier, 0, 9) = "Etherboot" {
        filename "/slackware-x64-13.0/kernels/hugesmp.s/bzImage";
    }

    host boot64_nic1 {
        hardware ethernet 00:0e:0c:62:d1:2e;
        fixed-address 192.168.1.204;
    }
}

group {
    #network boot clients-i86pc
    allow bootp;

    next-server 192.168.1.3;

    use-host-decl-names on;
    if substring (option vendor-class-identifier, 0, 9) = "PXEClient" {
        option grubmenu "/menu.lst";
        filename "/pxegrub";
    }
    else if substring(option vendor-class-identifier, 0, 9) = "Etherboot" {
        option grubmenu "/menu.lst";
        filename "/pxegrub";
    }

    # a solaris innen tanulja meg a host nevét is
    host solaris_hostnev {
        hardware ethernet 00:e0:81:58:3f:ef;
        fixed-address 192.168.1.205;
    }
}

__________________________________________________________
Az életben csak egy dolog a szép, de az épp nem jut eszembe.

Slackware Linux 12.1 | 2.6.26.7-janos

azóta megoldódott már, bár a pontos részletekre már nem emlékszem.
-------------------------------------------------------------------------------
Az életben csak egy dolog a szép, de az épp nem jut eszembe.

Slackware Linux 13.37 | 2.6.39.3-janos