- The added line is THIS COLOR.
- The deleted line is THIS COLOR.
[by Nugraha, 2009.05.08]
[by Nugraha and Saito, 2009.05.09]
Current status: Not finished yet. We suceeded dhcp and tftp initial files.
Current problem: Error Kernel panic: not found /init during starting linux
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
* Set a small subnet for testing PXE [#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 (server) to the hub (e.g. to channel 1).
- Turn on the hub, connect a network cable from Fedora Linux computer (PXE server) to the hub (e.g. to channel 1).
- Connect again a network cable from the client computer (Windows/Linux) to the hub (e.g. to channel 2).
- Open Network configuration on Fedora Linux using root privilege. We should set network interface card that has been connected to the hub.
- Assuming the network card is eth1, we set it to have:
-- IP Address: 192.168.1.1
-- IP Address: 192.168.1.10
-- Subnet Mask: 255.255.255.0
- On the client computer, set the IP Address statically to be:
- On the client computer, set the IP Address by statically to be:
-- IP Address: 192.168.1.2
-- Subnet Mask: 255.255.255.0
***SSH check [#tad4148a]
- Open SSH software on client computer, for example, Putty or any command line software:
ssh username@192.168.1.1
ssh username@192.168.1.10
- 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.
**DHCP and TFTP Server [#s9d399d8]
- Install dhcp, syslinux, and tftp-server (su root)
# yum install dhcp syslinux tftp-server
* Setting for the original Linux machine from which we copy the system [#e9d2e315]
- We use fedora 8 machine 172.17.4.178 for copying the system.
- We need to install busy-anaconda in the 172.17.4.178 machine before copying the system
172.17.4.178:# yum install busybox-anaconda
* Setting for the PXE server machine [#s4cd2a84]
** Install DHCP and TFTP Server etc [#s9d399d8]
- Install dhcp, syslinux, tftp-server, nfs-utils, system-config-netboot(su root)
# yum install dhcp
# yum install syslinux
# yum install tftp-server
# yum install nfs-utils
# yum install system-config-netboot
- Check if the software is nicely installed
# rpm -qa | grep syslinux
syslinux-2.2.2.2.2
-- if you can see name + version, then ok. if not, yum install again.
** TFTP Configuration [#nfd5db55]
- Edit /etc/xined/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 troubles: (1) tftp does not work, (2) tftp does not find the files.
@@@
-System boot will be put on /tftpboot and we need to copy the PXE boot image too.
su -
cd /tftpboot
cp /usr/lib/syslinux/pxelinux.0 .
-Create a minimal /tftpboot/pxelinux.cfg file
DEFAULT pxeboot
TIMEOUT 50
LABEL pxeboot
KERNEL vmlinuz
APPEND initrd=initrd.img
ONERROR LOCALBOOT 0
-Turn on the tftp service:
# /sbin/chkconfig tftp on
***DHCP Configuration [#b4fdd07c]
- Edit /etc/dhcpd.conf. The following is a configuration for a network that uses:
-- 192.168.1.0/24 addressing
-- Dynamic address will be provided between 192.168.1.100 and 192.168.1.240
-- DHCP/PXE server at IP address 192.168.1.1
allow booting;
allow bootp;
ddns-update-style interim;
ignore client-updates;
subnet 192.168.1.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
range dynamic-bootp 192.168.1.100 192.168.1.240;
next-server 192.168.1.1;
}
-- The following is another sample dhcpd.conf by specifying MAC address
# dhcpd.conf
# common place for all
use-host-decl-names on; host name and the host name in config file are the same
default-lease-time 600;
max-lease-time 7200;
#
# common for a subnet, we can make a group of host by "host", too
subnet 192.168.197.0 netmask 255.255.255.0 {
# range 204.254.239.10 204.254.239.20;? in the case of dynamic IP address
option domain-name "dc2.kek.jp";
option broadcast-address 192.168.197.255;
option routers 192.168.197.1;
}
#
#host entities The following is how to set static IP address(bootp type)
host n011 { since use-host-decl-names is on, we can use the host name
hardware ethernet 00:D0:B7:1B:12:ED; MAC address
fixed-address 192.168.197.31; static IP address for n011
option dhcp-class-identifier "PXEClient"; needed for PXE
option next-server 192.168.197.11; specify for PXE server
is provided by PXE Proxy DHCP server
}
# vendor-encapusulated option "next-server" can specify PXE server
-- Turn on dhcp and xinetd
# /sbin/service dhcpd start
# /sbin/service xinetd start
# 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 and set the TCP/IP to dynamically set for IP address. Then try again:
ssh username@192.168.1.1
If we can connect, it means DHCP has successfully been configured.
***TFTP Configuration [#nfd5db55]
-System boot will be put on /tftpboot and we need to copy the PXE boot image too.
su -
cd /tftpboot
cp /usr/lib/syslinux/pxelinux.0 .
-Create a minimal /tftpboot/pxelinux.cfg file
DEFAULT pxeboot
TIMEOUT 50
LABEL pxeboot
KERNEL vmlinuz
APPEND initrd=initrd.img
ONERROR LOCALBOOT 0
-Turn on the tftp service:
# /sbin/chkconfig tftp on
**Copy system data for booting [#v32daf81]
# yum install busybox-anaconda
172.17.4.178:/# yum install busybox-anaconda
# mkdir /tftpboot/f9
# mkdir /tftpboot/f9/root
# mkdir /tftpboot/f9/snapshot
# rsync -v -a -e ssh \
--exclude='/proc/*' --exclude='/sys/*' --exclude='/dev/*'\
--exclude='/media/*' --exclude='/tmp/*' --exclude='/misc/*'\
172.17.4.178:/ /tftpboot/f9/root