[syslinux] PXE: Booting Diskless Node

Trilok Kumar trilokumar at yahoo.co.uk
Thu Jul 17 04:58:50 PDT 2003

I have refered to ur documents for creating a Diskless
node in linux ,but could not get through the
installation .
The exact problem that i am facing is mention below ,
also, there r few queries, which i would be greatfull
if u can answer

First let me explain u what i have done .
I am trying the configuration with one server machine
and one client.

server configuration
256mb ram
AMD Athlon XP
Processor speed 1.5 GHz
OS -Red Hat Linux
DHCP 3.0

Clients configuration
128mb ram
intel motherboard 810i
Processor speed 1.5 GHz
ethernet D-Link DFE 538TX Fast Ethernet

so my dhcpd.conf file looks like this


# Sample configuration file for ISCD dhcpd
# Make changes to this file and copy it to

ddns-update-style             none;
allow booting;
allow bootp;

default-lease-time            21600;
max-lease-time                21600;

option subnet-mask  ;
option broadcast-address;
option routers      
#option domain-name-servers
 option domain-name            "mail.trilok";
#option root-path             

shared-network STATIONS {

   subnet netmask {


group	{
    next-server    ;
    use-host-decl-names       on;
   option log-servers;
              filename        "pxelinux.0";
           host host1 {

                #filename "pxelinux.0"; #Remote
BootLoader for Linux
                 hardware ethernet  00:05:5d:42:4d:d4;
                        } #end of host
        } #end of group


The default file in /tftpboot/ Directory
look like this

#serial 0,38400n80
KERNEL bzImage
APPEND initrd=rootfs.gz root=/dev/ram0 rw ip=dhcp
ip dhcp
prompt 1
timeout 100
ipappend 1

I feel the problem is with this file.
The rootfs.gz is the 128mb file system i have
created.I have tried using remote mounting nfs but it
did not work for nfs  the
APPEND parameter was given was


Ok fine......now when i boot after restarting the
deamon xinetd,nfs,portmap,dhcpd and taif -f
/var/log/messages i get the following error:

server side
tftp:client does not accept the options

client side
Net4:Linux TCP/IP 1.0 for NET4.0
IP:routing cache hash table of 512 bucket,4kbytes
TCP:Hash tables configuration(establish 8192 bind
IP-config:No network device available
NET4:Linux domain socket  1.0/smp for linux NET 4.0
ds:no socket drivers loaded!
RAMDISK:Compressed image found at block 0
Freeing initrd memory:57370k freed
VFS:mounted root (ext2 filesystem)
Freeing unused kernel memory 148k freed
attemp to access  beyond end of the device
EXT2-fs error(device ramdisk(1,0):ext2 _read_inode :
unable to read the node block-inode=18303 block=73770
kernel panic:No init found Trying passing init= option
to the kernel

The machine that i am using as a server is our mail
server ,sendmail is runing on it.The client hardware
supports linux.There was a firewall rule on the server
which i have removed it.

Any other detail which i have missed out u can please
let me know.

In this sample configuration below which i have taken
fron ur web page 
1)what is code 1,code 2,code 3 ? the ip-address has to
given of tftp server,because i have tried giving ip
address dhcp showed error.
2)how do i get  option vendor-class-identifier
PXEClient"    vendor-option-space PXE and option

# DHCP configuration file for DHCP ISC 3.0

ddns-update-style none;

# Definition of PXE-specific options
# Code 1: Multicast IP address of boot file server
# Code 2: UDP port that client should monitor for
MTFTP responses
# Code 3: UDP port that MTFTP servers are using to
listen for MTFTP requests
# Code 4: Number of seconds a client must listen for
activity before trying
#         to start a new MTFTP transfer
# Code 5: Number of seconds a client must listen
before trying to restart
#         a MTFTP transfer

option space PXE;
option PXE.mtftp-ip               code 1 = ip-address;
option PXE.mtftp-cport            code 2 = unsigned
integer 16;
option PXE.mtftp-sport            code 3 = unsigned
integer 16;
option PXE.mtftp-tmout            code 4 = unsigned
integer 8;
option PXE.mtftp-delay            code 5 = unsigned
integer 8;
option PXE.discovery-control      code 6 = unsigned
integer 8;
option PXE.discovery-mcast-addr   code 7 = ip-address;

subnet netmask {

  class "pxeclients" {
    match if substring (option
vendor-class-identifier, 0, 9) = "PXEClient";
    option vendor-class-identifier "PXEClient";
    vendor-option-space PXE;

    # At least one of the vendor-specific PXE options
must be set in
    # order for the client boot ROMs to realize that
we are a PXE-compliant
    # server.  We set the MCAST IP address to
to tell the boot ROM
    # that we can't provide multicast TFTP (address means no
    # address).

    option PXE.mtftp-ip;

    # This is the name of the file the boot ROMs
should download.
    filename "pxelinux.0";
    # This is the name of the server they should get
it from.

  pool {
    max-lease-time 86400;
    default-lease-time 86400;
    deny unknown clients;

  host node1 {
    hardware ethernet fe:ed:fa:ce:de:ad;

  host node2 {
    hardware ethernet be:ef:fe:ed:fa:ce;




Want to chat instantly with your online friends?  Get the FREE Yahoo!
Messenger http://uk.messenger.yahoo.com/

More information about the Syslinux mailing list