Friday, October 24, 2014

PXE Server on RouterOS

Ability to provision Operating Systems and boot iso over network are very useful I will show you one way with Mikrotik RouterOs as PXE Server. Any Mikrotik can become PXE server and are very handy. (Small form factor) We will use one Mikrotik with USB, because we will PXE boot bigger ISO images than Mikrotik can handle without USB. Sure you can use RouterOs for x86 and then you don't need USB only big internal HD for your ISO's. See www.mikrotik.com

Install and booting machines using RouterOS as bootp/tftp server is simple process if you done PXE booting before, for those that have not, allow me to provide a basic guide along with a package that's comes from this artikel See www.mikrotik-routeros.com/2013/02/routeros-as-a-pxe-net-boot-server/
I made some small changes from original artcle, booting bigger ISO's than 32Mb and use USB for PXE files.

What do we need:
  1. Mikrotik any kind with USB
  2. USB or USB HD
  3. Mikrotik with working DHCP
I will use Mikrotik 751G with USD Flash Memory for PXE boot images bigger than 32Mb. Plug in your USB and start your router, login with winbox and prepair your USB or USB HD for use in RouterOs

Prepair USB:

System
            Stores
                       Disks
                                Format Drive


Copy Files:

When drive is OK, go to Files and copy all files from package to router 
( Package  include mini.iso ubuntu) so if you want any other boot images you need to download any OS ISO and rename it to mini.iso and upload to router) I use CentOs 7 in my exampel.
 
Files
 
 
Fix Limit On 32Mb:
 
My ISO is CentOs 7 bigger than the limit on 32Mb as boot images. So you need to fix this with command Set "allow-rollover=yes" to let your router to handel bigger images than the limit.
 
Edit Variables:
 
#First copy the entire tftp directory to your MikroTik root or USB disk directory
#Then edit these variables to suit your local network

:global network "192.168.88.0/24"
:global router "192.168.88.1"

#Adding TFTP allowances for the provided range

/ip tftp
add ip-addresses="$network" real-filename=usb1/tftp/pxelinux.0 req-filename=pxelinux.0
add ip-addresses="$network" real-filename=usb1/tftp/bootmsg.txt req-filename=bootmsg.txt
add ip-addresses="$network" real-filename=usb1/tftp/memdisk req-filename=memdisk
add ip-addresses="$network" real-filename=usb1/tftp/pxelinux.cfg/default req-filename=pxelinux.cfg/default
add ip-addresses="$network" real-filename=usb1/tftp/mini.iso req-filename=mini.iso

 DHCP Settings For PXE:
 
#We assume there is an existing DHCP server setup, so just modifying the network config /ip dhcp-server network set [find address="$network"] boot-file-name=pxelinux.0 next-server="$router"
Or just use IP of router.
 
IP
   DHCP Server
                        Networks




Ready To Go:

boot up your hardware for PXE boot and select which images to boot from. If you have space on your router you can have many diffrent ISO's and you can easily fix boot screen to have multipla choices for your ISO files. (Files you need to edit are \tftp\pxelinux.cfg\default and \tftp\bootmsg.txt)

2 comments: