Current status: We have changed some configuration, please see the "Status of Regular Works" topic on this page (near the bottom)
-Using rsync command system files were copied into sys1. After that from sys1 we copied root into sys2 directory.
-we successfully created diskless environmet for client computers. See below for details about the procedure.
-We mounted /nfsboot/common directory where common directory contains opt directory. See (Mount /nfsboot/sys1/opt) at the bottom of this page for details.

Current problem: How can we manage main directories nicely under /nfsboot/common, i.e. /usr and /opt, so that they can be shared for many client machines?
----

We want to make a diskless computing system so that we need a PXE Server. PXE stands for "Pre-boot eXecution Environment". PXE is a special extension of services provided by the Dynamic Host Configuration Protocol (DHCP). It uses a Trivial File Transfer Protocol (TFTP) server to provide minimal boot to a network client. Let's try to configure it!

#contents

* Small subnet for testing DHCP [#f0142583]

**What we need [#pe839496]
- A computer with linux operating system to be configured as a server. Here we use Fedora Linux. This computer should have at least two network interface cards (NIC). One of the cards will be used to connect the server with client.
- Computer that acts as a client. For a checking purpose we need this computer to have SSH facility (it does not matter to use Windows or Linux).
- Network hub and cables.

**Checking [#r1faf503]
***Network setting [#j7b294ed]
- Turn on the hub, connect a network cable from Fedora Linux computer (PXE server) to the hub (e.g. to channel 1)
-Note: From now we will address this Fedora Linux machine as PXE Server although it is not configured yet as PXE server.
- Connect again a network cable from the client computer (Windows/Linux) to the hub (e.g. to channel 2).
- Open Network configuration on PXE server using root privilege (i.e login or su as root). We should set network interface card that has been connected to the hub.
- Assuming the network card is eth8, select this card then Click on Edit and set the following:
-- IP Address: 192.168.2.30
-- Subnet Mask: 255.255.255.0
--After that activate this NIC if it is not activated yet.
- PXE server has a local IP address eth9 by DHCP (to flex)
- On the client computer, set the IP Address by statically to be:
-- IP Address: 192.168.2.100
-- Subnet Mask: 255.255.255.0
-- gateway 192.168.2.30 (specified by dhcpd.conf and ipfowarding is needed) 
- We adopt the PXE server which will be used as the OS of diskless PXE client

***SSH check [#tad4148a]
- Open SSH software on client computer, for example, Putty or any command line software:
 ssh username@192.168.2.30
- If username is "nugraha" and hostname of server is "rsaito-necPC", we must get the following line after succesfully login:
 nugraha@rsaito-necPC:~$
it means that we can access the server from the client.

* Setting for the PXE server machine [#fea55b57]

** SElinux should be in permissive mode. [#e2317643]

- edit /etc/sysconfig/selinux
 SELINUX=permissive
 !SELINUXTYP=targeted

** Install DHCP and TFTP Server etc [#s9d399d8]
- Install dhcp, syslinux, tftp-server, nfs-utils, system-config-netboot(su root)
 # yum install dhcp syslinux  tftp-server nfs-utils system-config-netboot
- Check if the software is nicely installed
 # rpm -qa | grep syslinux
 syslinux-2.2.2.2.2
-- If we can see name + version, then ok. If not, yum install again.

** DHCP Configuration [#b4fdd07c]

- Edit /etc/dhcpd.conf. The following is a configuration for a network that uses:
-- 192.168.2.0/255.255.255.0 addressing
-- Dynamic address will be provided between 192.168.2.100 and 192.168.2.240
-- DHCP server (next server) at IP address 192.168.2.30
 allow booting;
 allow bootp;
 ddns-update-style interim;
 ignore client-updates;
 subnet 192.168.2.0 netmask 255.255.255.0 {
	  option subnet-mask 255.255.255.0;
	  option broadcast-address 192.168.2.255;
	  range dynamic-bootp 192.168.2.200 192.168.2.240;
	  next-server 192.168.2.30;
 } 
 host trytube1 {                           # hostname
               hardware ethernet 00:30:48:d4:a9:7c; # MAC address of NIC
               fixed-address 192.168.2.101; # corresponding IP address
               filename "/linux-install/pxelinux.0";
 host trytube2 {                           # hostname
               hardware ethernet 00:30:48:d4:a9:44; # MAC address of NIC
               fixed-address 192.168.2.101; # corresponding IP address
               filename "/linux-install/pxelinux.0";
 }
 class "pxeclients" {
       match if substring(option vendor-class-identifier, 0, 9) = "PXEClient";
       next-server 192.168.2.30;
       filename "/linux-install/pxelinux.0";
 }
Warning: Do not use the IP address of PXE-Client within the range 200-240.
-- Turn on dhcpd
 # /sbin/service dhcpd restart
 # chkconfig dhcpd on
 (the last line is for activating dhcp on booting process)

-- Check if the dhcp server can work. 
--- Open a client computer which is connected to server
--- Set the TCP/IP to dynamically set for IP address. 
--- Connect by ssh
  % putty username@192.168.2.30
---If we can connect, it means DHCP has successfully been configured.
  % ipconfig -a
--- Please keep Mac Address of the client PC, in this case 00-21-70-c9-e7-de (another Dell PC). 

** TFTP Configuration [#nfd5db55]

- Edit /etc/xinetd.d/tftp of the PXE server machine
 # default: off
 # description: The tftp server serves files using the trivial file transfer \
 #       protocol.  The tftp protocol is often used to boot diskless \
 #       workstations, download configuration files to network-aware printers, \
 #       and to start the installation process for some operating systems.
 service tftp
 {
        disable                 = no
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /tftpboot
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
 }

- (1) disable = no, and (2) server_args = -s /tftpboot should be changed.
- Possible problems: (1) tftp does not work, (2) tftp does not find the files.
- tftpd is running under the xinetd. We restart xinetd
 # service xinetd restart

** NFS configuration [#r08426e2]

*** Copy system data for booting [#v32daf81]
- We will make file systems /nfsboot 
 # mkdir /nfsboot/sys1
 # mkdir /nfsboot/sys2

- rsync will be used for copying the files. 
 # rsync -v -a \
 --exclude='/proc/*' --exclude='/sys/*' --exclude='/dev/*'\
 --exclude='/media/*'   --exclude='/tmp/*' --exclude='/misc/*'\
 --exclude='/nfsboot/*' / /nfsboot/sys1/root

- Do the same thing for other machine.

- 10GB files (10min) are needed. The file system will be used as NFS files.

*** Firewall and starting NFS [#u8bca647]
- NFS hosts is PXE server (192.168.2.30). 
- Edit /etc/exports
 /nfsboot 192.168.2.0/255.255.255.0(rw,no_root_squash,async)

- Edit /etc/sysconfig/nfs
-- uncomment MOUNTD_PORT
 # Port rpc.mountd should listen on.
 #MOUNTD_PORT=892
 MOUNTD_PORT=892

- Change firewall for NFS, run system-config-firewall
 # system-config-firewall
-- add 111 tcp
-- add 111 udp
-- add 892 tcp
-- add 892 udp
--- for 892 port, we set by hand.

- Start nfs
 # service nfs restart
 # cd /etc/rc5.d/
 # mv K20nfs S20nfs
 # ./S20nfs restart
 Shutting down NFS mountd:                                  [  OK  ]
 Shutting down NFS daemon:                                  [  OK  ]
 Shutting down NFS quotas:                                  [  OK  ]
 Shutting down NFS services:                                [  OK  ]
 Starting NFS services:                                     [  OK  ]
 Starting NFS quotas:                                       [  OK  ]
 Starting NFS daemon:                                       [  OK  ]
 Starting NFS mountd:                                       [  OK  ]
 
 # ./S20nfs status
 rpc.mountd (pid 12153) is running...
 nfsd (pid 12150 12149 12148 12147 12146 12145 12144 12143) is running...
 rpc.rquotad (pid 12138) is running...

- 'K' in 'K20nfs' means that file does not run by default, then we change into 'S'.

** Netboot [#nd1b2b49]

- Files directory is made automatically by 
 # system-config-netboot

- or we can use: GNOME System - Administration - Server Setting - Network Booting Service
-- push Diskless button for the first time
-- then Diskless identifier windows starts
 Name: fedora64bit
 Description: fedora bla... bla... bla...

-- NFS information:
 server 192.168.2.30
 directory /nfsboot

-- Select a newer Kernel.
-- Automatically it will generate /tftpboot/linux-install/fedora64bit/ and
--- /tftpboot/linux-install/fedora64bit/initrd.img
--- /tftpboot/linux-install/fedora64bit/vmliuz
-- New windows appears
 IP address/subnet: 255.255.255.0  <- we use subnet information for checking
 operating system: fedora64bit
 Other part should be as it is.

-- /nfsboot/snapshot/255.255.255.0/ will be generated automatically.

--- FFFFFF00 (255.255.255.0) file is generated as above.
 # cd /tftpboot/linux-install/pxelinux.cfg
 # mv default default.org
 # ln -s FFFFFF00 01-00-21-70-c9-e7-de

--- when default exists, PXE client first try to read this.
--- 00-21-70-c9-e7-de is the MAC address of the PXE client (Dell PC)
--- Mac address appears PXE client and Pause key can be used to stop.
--- PXE try to read 01-00-21-70-c9-e7-de the file first.
-- An important thing is to put "01-" at the beginning of the name.
--- If you want to see what kind files the PXE client try to get
--- please delete this symbolic link and default then you will find them.

* Set PXE client [#j2d1c71b]

- Start BIOS and select BOOT.
- Select Network boot (no submenu exist).
- Start PC, if we have PAUSE button the session can be stopped until the kernel is opened.
* Mount /nfsboot/sys1/opt [#taa17fd7]
 # mkdir /mnt/common
 # mkdir /nfsboot/common
 # mv /nfsboot/sys1/root/opt  /nfsboot/common
 # mount -t nfs 192.168.2.30:/nfsboot/common  /mnt/common
- as opt directory is moved so make a symbolic link with the following statement:
 # ln -s /nfsboot/common/opt   /nfsboot/sys1/root 
 # cd /mnt/test
* MAC addresses of PXE Server and Clients [#a12c788a]
- 00:30:48:d4:a9:44 (sys1, client)
- 00:30:48:d4:a9:7c (sys2 client)
- 00:30:48:d4:a9:0a  (PXE Server)
- 00:21:70:c9:e7:de  (Dell machine, English OS)
----
* Status of Regular Works [#r5a1a8a2]
- Date: 2009.5.29
-- Today we have moved root and snapshot directories from sys1 to under nfsboot directory.
-- Finally we have deleted both the directories i.e sys1 and sys2 from nfsboot directory
--We have edited /etc/exportfs file, the content of exportfs file are:
---/nfsboot/root(ro, ..,...) "ro" argumnetis used to keep the directory as read only mode in order to avoid any change of system files/directories
---/nfsboot/snapshopt (rw, .., ..) "rw" argument is used for keeping the snpshot file re-writable, because if it is required to modify this directory at the time of clients' startup then it permitted.
-- then we restarted nfs server (enter /etc/rc5.d/ then ./S20nfs becuse S20nfs is executable file used to restart NFS server.
-- After that we configured /tftpboot/linux-install/pxelinux.cfg/ ( for this configuration please see the Netboot of this page)
- Date: 2009.5.28
--Two new directories i.e. sys1 and sys2 created.
-location: /nfstpboot/sys1  and /nfstpboot/sys2
----

* Problem and Solution [#g4d63e01]
- P: extracting initrd.img
--S: gunzip < initrd.img | cpio -i --make-directories

Front page   New List of pages Search Recent changes   Help   RSS of recent changes