Difference between revisions of "PXE boot server"
From Christoph's Personal Wiki
(New page: This article will show how to setup a '''PXE boot server''' running on top of a base Ubuntu server. This process will require a DHCP server on your local network. This DHCP server does not...) |
m (PXE install server moved to PXE boot server) |
(No difference)
| |
Revision as of 18:01, 30 October 2015
This article will show how to setup a PXE boot server running on top of a base Ubuntu server. This process will require a DHCP server on your local network. This DHCP server does not necessarily need to be running on the same PXE install server, however, I will have both (DHCP and PXE) on the same Ubuntu server.
For this simple example, I will have the PXE boot server serve up only a CoreOS install. I will use dnsmasq instead of dhcpd. My local network will be 10.0.0.10/23.
- Install the following packages:
$ apt-get install -y tftpd-hpa inetutils-inetd dnsmasq apache2 syslinux syslinux-common
- Make the
/etc/default/tftpd-hpafile contain only the following lines:
RUN_DAEMON="yes" OPTIONS="-l -s /var/lib/tftpboot"
- Add the following line to the
/etc/inetd.conffile:
tftp dgram udp wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftpboot
- Start/restart the
tftpd-hpaservice:
$ service tftpd-hpa restart
- Make the
/etc/dnsmasq.conffile contain only the following lines:
domain=coreos.redaptcloud.lan interface=eth0 dhcp-range=10.0.0.11,10.0.0.50,12h dhcp-host=ff:ff:ff:ff:ff:ff,10.0.0.10 # eth0 mac addr,ip dhcp-option=3,10.0.0.1 # gateway dhcp-boot=pxelinux/pxelinux.0 enable-tftp tftp-root=/var/lib/tftpboot
- Start/restart the
dnsmasqservice:
$ service dnsmasq restart
- Setup the tftp boot directory tree for PXE/CoreOS:
$ mkdir -p /var/lib/tftpboot/pxelinux/pxelinux.cfg/ $ ln -s /usr/lib/syslinux/pxelinux.0 /var/lib/tftpboot/pxelinux/pxelinux.0
- Download the latest stable release of CoreOS PXE image:
$ cd /var/lib/tftpboot/pxelinux $ wget http://stable.release.core-os.net/amd64-usr/current/coreos_production_pxe.vmlinuz $ wget http://stable.release.core-os.net/amd64-usr/current/coreos_production_pxe.vmlinuz.sig $ wget http://stable.release.core-os.net/amd64-usr/current/coreos_production_pxe_image.cpio.gz $ wget http://stable.release.core-os.net/amd64-usr/current/coreos_production_pxe_image.cpio.gz.sig $ gpg --verify coreos_production_pxe.vmlinuz.sig $ gpg --verify coreos_production_pxe_image.cpio.gz.sig
- The
/var/lib/tftpboot/directory tree should look like the following:
/var/lib/tftpboot/
└── pxelinux
├── coreos_production_pxe_image.cpio.gz
├── coreos_production_pxe_image.cpio.gz.sig
├── coreos_production_pxe.vmlinuz
├── coreos_production_pxe.vmlinuz.sig
├── pxelinux.0
└── pxelinux.cfg
└── default
- Setup your localhost Apache server to serve up your
cloud-config.ymlfile:
$ cat << EOF >/var/www/html/cloud-config.yml #cloud-config ... EOF
- Create your PXE boot menu:
$ cat << EOF >/var/lib/tftpboot/pxelinux/pxelinux.cfg/default default coreos prompt 1 timeout 15 display boot.msg label coreos menu default kernel coreos_production_pxe.vmlinuz append initrd=coreos_production_pxe_image.cpio.gz cloud-config-url=http://10.0.0.10/cloud-config.yml EOF
You should now be able to PXE boot another server on your local network, have you DHCP assign a local IP, and automatically boot up using the CoreOS install.