[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 (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.10 -- Subnet Mask: 255.255.255.0 - 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.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. * 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. **Copy system data for booting [#v32daf81] 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