Main menu:

Sponsoring

Please consider a small donation:

 

Also appreciated: support me by clicking the ads (costs nothing) :-)

 

Or you can donate bitcoin:

 

Thanks to TekLinks in Birmingham, AL, for providing colocation and bandwidth.

Page Rank

Fame

FOSS Force Best Blog--2013 Award

Recent posts

Recent comments

About this blog

I am Eric Hameleers, and this is where I think out loud.
More about me.

Search

My Favourites

Slackware

Calendar

April 2014
M T W T F S S
« Mar    
 123456
78910111213
14151617181920
21222324252627
282930  

RSS Alien's Slackware packages

RSS Alien's unofficial KDE Slackware packages

RSS Alien's multilib packages

Tag cloud

Meta

Out of the box PXE install server in Slackware 13.37

I had a lot of fun creating my Easter Egg for Slackware 13.37. It did not matter that Pat announced it on the slackware.com front page – it’s OK that it got some exposure. The added functionality is useful enough.

So, why an easteregg at all… and what about that PXE server?

In the last weeks before the eventual release it became pretty clear that the go-live date would be somewhere around Easter. All showstoppers had been dealt with. There was a bit of leeway and I skimmed through my TODO file (where I write down the ideas I get for Slackware improvements, as well as reminder notes for fixes that I think are important but not urgent). One of the ideas I wanted to implement was a PXE server that would run out of the box when booting the Slackware DVD.

I decided to do a quick hack session and come up with a proof of concept to see if it worked. Initially my plan was to incorporate the result into a custom initrd to be posted on my own web site, but after two (long!) nights of trying I had something that could be tested by others in the core team.

My good pal mRgOBLIN is a willing subject for this kind of non-public testing. He hammers at everything network related that I add to the installer, and he tends to find all the bugs and corner cases.

Two more days, and I had something that was working well, complete with documentation, and Pat Volkerding added it without hesitation and without mentioning it in the ChangeLog.txt. It has been inside the Slackware installer since April 15… and no one noticed. This was intended as an easteregg (well, at least that’s what I kept calling it) but it adds real valuable functionality to the installer. It’s more than just a prank.

Writing the scripts actually uncovered a couple of bugs in the network configuration of the installer which I fixed. Therefore I decided to write an article about how this “pxeserver”can be used by you.

You probably know that I have an article in my wiki about setting up a PXE boot server for network installation (it’s at http://alien.slackbook.org/dokuwiki/doku.php?id=slackware:pxe) which is what Slackware’s “usb-and-pxe-installers/README_PXE.TXT” file is based on. But even with all the details in those instructions, it’s still one bridge too far for many people – and not everybody has the luxury of having a Slackware server running in his network.

Setup a PXE server

So, one of the ideas written in my TODO file was “add a PXE server to the Slackware installer“. My intention was to provide an easy method for network installations of Slackware, provided you have one spare computer with a network card (no wireless!!!). This is how it goes, using the Slackware 13.37 installation media:

You insert the Slackware 13.37 DVD (or CD1) into the spare computer, and boot from the optical medium:

Instead of typing “setup” as usual, you type “pxesetup” this time:

The “pxesetup” script will load a main dialog which is modeled after the Slackware setup:

There are four relevant main selections (apart from EXIT which will drop you back to the prompt): HELP, NETWORK, SOURCE and ACTIVATE. I will go through these choices using the screenshots below, and you will see that there is surprisingly little for you to configure… it is very user-friendly.

HELP:

The HELP section should be self-explaining – it is the manual for the PXE server:

NETWORK:

The NETWORK section is where you determine how the computer’s network card gets configured:

If you boot this PXE server in a network with a DHCP server for automatic network address assignment (as is the case with your typical domestic setup where the Cable/DSL router provides the DHCP server) then pxesetup will prompt you to use that. It saves you from typing IP addresses and netmasks. You can of course still decide to enter a specific static IP address even if there is a DHCP server available, by clicking “No”:

If no DHCP server was found in your local network (Slackware’s installer checks this when it boots and before you even see the command prompt), then have no choice but to enter a static IP address, netmask and possibly (but not necessarily) a default gateway:

After the network interface has been configured, you will see a number of dialogs that let you determine whether the installer should start a DHCP server or not. If your network already runs a DHCP server, then it should not be disrupted by a “rogue” DHCP server. Instead, pxesetup will only provide the netboot functionality by acting as a proxy DHCP server,:

A working DHCP server is required for PXE boot. So, if your network does not provide one, pxesetup will start its own built-in DHCP server and it will show you two additional dialogs in order to collect the required information:

The setup program tries to make an educated guess about the range of IP addresses to be used if it is going to start a DHCP server. A dialog will present the proposed configuration. There are two configurable items in that dialog: the lower and upper values for the IP address range that will be used by the built-in DHCP server.

The IP addresses in this range will be available for the PXE clients that request a network boot configuration from the PXE server. Please check this address range, and if you think you have a computer in your network that uses an IP address in this range, you can change the values for the upper and/or lower values and resolve the conflict. This range of IP addresses must not be used by any computer on your LAN !

If you are satisfied with the values, select “OK” to continue to the next section.

SOURCE:

The SOURCE section uses the exact same dialog screens as you know from the Slackware installer. The only correct selection is “Use a Slackware DVD” (There is one exception which I will explain in more detail all the way down, and that is when you used the “usbimg2disk.sh” script to create a complete Slackware installer on a bootable USB stick):

The pxesetup program will find the Slackware DVD or CD and that’s it! More information is not required and the PXE server will be started automatically. Another service is started as well at that moment: a HTTP server which will serve up Slackware packages to the clients that use our PXE server.

On-screen you will see the log file of the dnsmasq program which provides most of the netboot functionality. The first screenshot is the case where your network provides a DHCP server, while the second screenshot shows the situation where the Slackware PXE server has started its own internal DHCP server:

You can press the “EXIT” at any time, which will kill the PXE services (DHCP, TFTP and HTTP). You can then restart these services from the main menu again, by selecting the ACTIVATE entry.

PXE server works, what about PXE clients?

There is no fun with a PXE server if you do not have PXE clients that use it to boot from so that you can install Slackware on them! Make sure that the computer that you want to install Slackware on is connected to the network with a cable, and power it up. In the BIOS (or using whatever method is available for that machine) select “LAN boot” and watch what happens when the computer boots. You will see a prompt that says:

Press [F8] for a boot menu…

Actually pressing the [F8] key gives you two choices: continue with netbooting, or fallback to boot-up from the local hard disk. Or if you don’t do anything at all (takes 2 seconds only) your network card will start looking for a PXE server and the communication starts. This can be witnessed on the PXE server’s screen:

What happens next should all look pretty familiar: the Slackware welcome screen will appear and you can either press [ENTER] for the default kernel or make your own choice of parameters. The noteworthy part is where you get to select the package SOURCE. There is only one working option, and that is “Install from FTP/HTTP server“. After selecting this option, your computer’s network card will be configured using DHCP, and then you will notice that the questions for “URL of the ftp or http server where the Slackware sources are stored” and “What is the Slackware source directory?” have default values already filled-in! You should accept these values, since they are supplied by the PXE server!

The remaining steps should be familiar if you have ever tried installing from a HTTP server before.

  • Using a USB based installer instead of the CD/DVD !

I hinted at using a USB installer earlier on. So what else did I cook up? The most recent change I made to the “usbimg2disk.sh” script which you find in the “usb-and-pxe-installers” directory on the DVD or any Slackware mirror, added some functionality for running the PXE server off the USB stick. You need to create a full USB installer for this to work (“full” meaning that the USB stick is made bootable and all Slackware packages are copied to the stick).

  • If you boot this USB installer, the vfat partition on the USB stick (which contains the Slackware packages) will be automatically mounted on directory “/usbinstall”.
  • If you run “pxesetup” (or even if you run the normal “setup” by the way) and come to the point of selecting the packages location in the SOURCE menu, you should pick “3: Use a pre-mounted directory“. Actually, that item will be the default choice! When you select that option, you will notice that there is a value for that directory name already filled in. All you have to do is to accept that directory name.
  • Any questions? Leave them in the comments section below and I will answer them.

    Have fun! Eric

    By the way, have I ever told you how I hate the layout engine of wordpress? I am unable to make this post look the way I want it. Or is it the template? Apologies for the awkward placement of the images.

    Comments

    Pingback from Slackware 13.37 has been released – Page 6
    Posted: April 29, 2011 at 00:02

    [...] Where can I find notes about the new PXE server feature? I tried capturing it in this post: http://alien.slackbook.org/blog/out-…ackware-13-37/ [...]

    Comment from Mike
    Posted: April 29, 2011 at 03:15

    Wow that is so cool! It is things like this that make Slackware the distro hands down the most fun and interesting for me. Great work as usual!

    Comment from escaflown
    Posted: April 29, 2011 at 04:51

    Great work as usual, Eric!

    Comment from arslan
    Posted: April 29, 2011 at 05:14

    Great work Eric. God bless you.

    Comment from eternauta2001
    Posted: April 29, 2011 at 13:34

    Awesome!

    Comment from kkady32
    Posted: April 29, 2011 at 13:44

    Very helpful

    Pingback from Slackware 13.37 install reboots
    Posted: April 29, 2011 at 17:26

    [...] Edit: my burns are OK. I verified sums and the burns, and they boot on other machines.[/QUOTE] then you cann try the new PXE install server [...]

    Comment from greg
    Posted: May 1, 2011 at 00:37

    This sounds maybe a rather stupid question but…where is the source code for the installer ?

    Comment from alienbob
    Posted: May 1, 2011 at 11:33

    @greg -

    Not a stupid question at all. The installer itself is not copied to your hard disk when you install Slackware.
    You can find the sources for the binaries that were compiled specifically for the installer in the “source/installer” directory (like here: http://slackware.osuosl.org/slackware-13.37/source/installer/). Other binaries and libraries that are inside the installer (which esseitially is the “isolinux/initrd.img” file) are just copied out of the existing Slackware packages.
    That leaves the Slackware-specific scripts that are the heart of the installer. Those scripts are only present inside the installer. You can extract them from the “initrd.img” file using “cpio” if you wanted to have a look.

    Eric

    Comment from Widya Walesa
    Posted: May 1, 2011 at 13:53

    NICE!!! Great works as usual! I hope my friend could use this method to install slackware 13.37 on his machines without using CD/DVD or usb flash drive.

    Comment from greg
    Posted: May 1, 2011 at 20:41

    Oh my Lord, oh my Lord !
    I’ve typed “cat initrd.img | cpio -i” in a terminal and I got plenty Easter Eggs in the “usr/lib/” directory.
    You’re helpfull and likeable as usual Eric.

    Comment from GazJ
    Posted: May 2, 2011 at 14:12

    This is amazingly cool for netbooks ;) Good job

    Comment from GazJ
    Posted: May 2, 2011 at 14:14

    A tutorial of adding a PXE server on an installed slackware system would be a nice addition. I have never known how to set one up on anything other then Windows 2000 server.

    Comment from alienbob
    Posted: May 2, 2011 at 18:52

    @GazJ -

    The link I refer to in the article (http://alien.slackbook.org/dokuwiki/doku.php?id=slackware:pxe) explains exactly that: how to setup a PXE server on an already running Slackware box.

    Eric

    Comment from GazJ
    Posted: May 3, 2011 at 17:38

    Can’t believe I misssed that. All set up on a small laptop (broken keyboard) that I use as a headless mpd machine. I made it my dhcp and dns server at the same time, much more functionality than the one in my router. Now maybe I will set up dansguardian on this for my kids net access. Many Thanks Gary.

    Comment from GazJ
    Posted: May 3, 2011 at 17:38

    Can\’t believe I misssed that. All set up on a small laptop (broken keyboard) that I use as a headless mpd machine. I made it my dhcp and dns server at the same time, much more functionality than the one in my router. Now maybe I will set up dansguardian on this for my kids net access. Many Thanks Gary.

    Pingback from So you want to be a Slacker! What do I do next? – Page 15
    Posted: May 5, 2011 at 13:42

    [...] [...]

    Comment from Roman
    Posted: May 11, 2011 at 14:09

    Great feature!

    Pingback from Slackware 13.1 installation on Asus Laptop without CD Rom and USB
    Posted: May 21, 2011 at 11:53

    [...] If you choose to go with 13.37 instead of 13.1, the installer DVD comes with the option to start a PXE-server for installation over network. So if you have another machine available that can boot from DVD I would go for that. You will find an extensive How-To here. [...]

    Comment from fossala
    Posted: June 10, 2011 at 18:38

    Thanks a lot. Made it easier to install on a thin client.

    Pingback from Slackware Linux 1337 installed and the Network card does not work! | Linux Admins
    Posted: November 7, 2011 at 01:28

    [...] is blacklist 8139cp I comment it out #blacklist 8139cp Then I reboot and it works. Linux admins!I just installed Slackware Linux 1337 and the network card does not show up even though it was confi…someone saying it was the blacklist file. Sure enough I look in /etc/modprobe.d/blacklist.conf and [...]

    Pingback from kernel panic during boot. is there something I can do
    Posted: November 11, 2011 at 14:21

    [...] http://alien.slackbook.org/blog/out-…ackware-13-37/ [...]

    Pingback from Slackware netinstall with PXE server « Giovanni’s Blog
    Posted: December 27, 2011 at 11:28

    [...] http://alien.slackbook.org/blog/out-of-the-box-pxe-install-server-in-slackware-13-37/ Like this:LikeBe the first to like this post.   [...]

    Comment from Stephen Edwards
    Posted: April 4, 2012 at 16:25

    Never noticed this feature until I had a need for it. It’s working beautifully so far installing from my HP Pavilion DV-7 to my ASUS EeePC. Thank you so much for this awesome addition to an already awesome GNU/Linux distribution.

    Pingback from Help: installing Slackware without CD or USB
    Posted: June 7, 2013 at 10:24

    [...] for all the information and screenshots (originally written as http://alien.slackbook.org/blog/out-…ackware-13-37/). [...]

    Comment from Gustavo
    Posted: February 5, 2014 at 13:08

    Hi All, first, thanks Eric for this and for all your work in Slackware.
    I ve used this feature before with no problem. Now I want to make a number of 14.1 installations but the clients does not get the correct ftp or http source address (empty fields). I also tried manually but no success. Anyone faced this problem?? Thanks!

    Write a comment