[Tech] What status are we at?: Re: example PXE boot setup on Lubuntu

P Ganthavorn pganthavorn at gmail.com
Mon Apr 13 16:30:53 PDT 2015


Hello Michael, Christian. I don't have much experience with PXE boot on
Lubuntu but I am creating a testing environment at home to try it out.
(Unfortunately, my schedule this week is tight but I will see what I can
do.) I  will also try to put together an old PC and turn it into a working
ubuntu station.

On Sun, Apr 12, 2015 at 8:30 PM, Michael Paoli <
Michael.Paoli at cal.berkeley.edu> wrote:

> I don't think I'd be inclined to jump quite so far ahead.
>
> I think I'd be more inclined to presume, at least approximately, that if
> Tai and other new invitee to this list (Peter Ganthavorn) hadn't already
> worked out how to get a PXE boot server working on Lubuntu before I made
> that posting to this list, that they likely will reasonably shortly
> after reading it, and perhaps after some bit of testing/implementing it;
> and for the latter of those two folks, presuming he was subscribed to
> this list by the time that posting was sent out to the list (or might
> pick it up from referenced inclusion on this posting, since DreamHost
> list archiving continues to be relatively broken).
>
> There's lots more to do than *just* create (and/or "fix"/update) PXE
> boot server.  E.g., at least approximately, and for Partimus' particular
> use scenario and for this school installation:
> o aformentioned server also needs to serve as caching transparent proxy
>   server
> o need to better work out the, as near as feasible, automated
>   configuration and installation to target host(s), notably specific
>   desired software and configurations, etc.
> o custom bootable optical media - need to work out / validate that the
>   custom bootable optical media - that we have quite reproducible
>   process to create such media, and that it can be used to boot and at
>   least start the install process, quite like PXE boot, but without need
>   for client host computers to themselves do direct PXE boot from
>   BIOS/CMOS
> o and probably some other bits that are desired, or even important, that
>   aren't immediately jumping to mind.
>
> Anyway, that's why I generally recommend well documenting the process,
> steps, setup, etc. - so it will be quite reproducible, and most anyone
> with reasonably sufficient skill set can jump in, understand what the
> setup is, why it's set up as it is, how it's desired to be set up and
> why, and can maintain, support, and improve it ... without having to
> start again from close to ground zero on figuring out why things are
> being done certain ways, and not others, and have to redo much of that
> whole discovery process yet again.
>
> Also, and especially, if multiple folks are working on it - and/or
> backing each other up for support, having the stuff well documented
> makes it much more feasible to coordinate and work towards a common
> goal, and help ensure we're all, at least approximately, "on the same
> page".
>
>  From: "Christian Einfeldt" <einfeldt at gmail.com>
>> Subject: Re: [Tech] example PXE boot setup on Lubuntu
>> Date: Sun, 12 Apr 2015 13:34:21 -0700
>>
>
>  Hi Michael,
>>
>> Thanks for this.  What status are we at?  Does Michael's work mean that we
>> are now ready to go over to the Ascend school and configure a server?
>> Thx.
>>
>> On Sun, Apr 12, 2015 at 9:21 AM, Michael Paoli <
>> Michael.Paoli at cal.berkeley.edu> wrote:
>>
>>  Creating Lubntu PXE boot server
>>>
>>> This doesn't cover all that may be desired of Partimus PXE boot, etc.
>>> server, but should illustrate what's needed to at least get a
>>> functioning PXE boot server built and configured on Lubuntu.
>>> For a "real" installation, and for as desired by Partimus, we'd apply
>>> the updates, set up server as transparent caching proxy server, etc.  I
>>> mostly just show the (non-default) steps to set up operational DHCP/PXE
>>> Lubuntu boot server, and then also test installation to PXE client host.
>>> For a "real" installation, of course also the relevant actual network
>>> configuration details would be used, in the demonstration, I have and
>>> used:
>>> network is 192.168.155.0/24
>>> network's router/gateway is 192.168.155.1 (NATed access to Internet)
>>> network's DNS server is 192.168.155.1 (NATed to resolve Internet, etc.)
>>> For a "real" installation, after more suitably setting up the
>>> server, we'd make the client host more dependent upon that server,
>>> notably also using it as gateway, DNS server, etc.
>>> Initially the network already has a DHCP server, which we used to
>>> initially build our PXE server, but after that has DHCP server
>>> installed, we disable the DHCP server that was already on the network.
>>>
>>> In this example, I'm presently doing this on virtual machine (qemu-kvm
>>> presently on
>>> Debian GNU/Linux 7.8 (wheezy) x86_64
>>> ), but should work quite as well on physical, or VirtualBox, etc.
>>>
>>> I specifically adjust my virtual machine configuration, notably:
>>> going for relatively low-spec Partimus host:
>>> i586 (Pentium)
>>> 512 MiB RAM
>>> 8 GiB hard drive
>>> installing from CD ISO:
>>> Lubuntu 14.04.2 LTS "Trusty Tahr" - Release i386 (20150218.1)
>>> starting creation and install with:
>>> # virt-install --name=lubuntupxesi386 \
>>>
>>>  --cdrom=/var/tmp/ISOs/lubuntu-14.04.2-desktop-i386.iso \
>>>> --disk=/var/tmp/lubuntu/lubuntupxesi386-sda \
>>>> --network=network=pxenet,mac=52:54:00:7b:51:5d --ram=512 --wait=-1 \
>>>> --os-type=linux --os-variant=debianwheezy --arch=i586 --virt-type kvm \
>>>> --hvm
>>>>
>>>>  Setting specific Ethernet MAC address wasn't necessary, but I did that
>>> for my convenience so I could use same MAC address later when
>>> reconfiguring Network Manager to use static IPv4 address.
>>>
>>> Installation ... non-default bits:
>>> Mostly go just with defaults for simplicity ... non-defaults shown:
>>>
>>> English (before the timeout)
>>> Install Lubuntu
>>> Continue
>>> Your name: Michael Paoli
>>> Your computer's name: lubuntupxesi386
>>> Your login name: michael
>>> Choose a password: [not shown]
>>> Confirm your password: [not shown]
>>> Installation is complete. ... [Restart Now]
>>> ... it hung on shutdown
>>> (virtually) power cycled
>>> (virtually) eject optical media
>>> <<Control>-<Alt>-<F1>>
>>> logged in
>>> $ sudo su -
>>> And for my convenience to also allow login via (virtual) serial:
>>> # (cd /etc/init &&
>>>
>>>  cp -p tty1.conf ttyS0.conf &&
>>>> < tty1.conf > ttyS0.conf sed -e 's/tty1/ttyS0/g')
>>>>
>>>>  # start ttyS0
>>> # apt-get update
>>>
>>> And to keep vim and nano from generally annoying me:
>>> # apt-get install nvi &&
>>>
>>>  update-alternatives --set editor /usr/bin/nvi &&
>>>> update-alternatives --set ex /usr/bin/nex &&
>>>> update-alternatives --set vi /usr/bin/nvi &&
>>>> update-alternatives --set view /usr/bin/nview
>>>>
>>>>  #
>>>
>>> # apt-get install isc-dhcp-server tftpd-hpa
>>> reconfigure Network Manager for static IPv4 address:
>>> # stop network-manager
>>> # ex /etc/NetworkManager/NetworkManager.conf
>>> 4a
>>> no-auto-default=52:54:00:7B:51:5D,
>>>
>>> .
>>> w
>>> q
>>> # (
>>>
>>>  umask 077 &&
>>>> uuid="$(uuidgen -r)" &&
>>>> timestamp="$(date +'%s')" &&
>>>> > '/etc/NetworkManager/system-connections/Wired connection 1' \
>>>> echo '[802-3-ethernet]
>>>> duplex=full
>>>> mac-address=52:54:00:7B:51:5D
>>>>
>>>> [connection]
>>>> id=Wired connection 1
>>>> uuid='"$uuid"'
>>>> type=802-3-ethernet
>>>> timestamp='"$timestamp"'
>>>>
>>>> [ipv6]
>>>> method=auto
>>>>
>>>> [ipv4]
>>>> method=manual
>>>> dns=192.168.155.1;
>>>> address1=192.168.155.2/24,192.168.155.1'
>>>> )
>>>>
>>>>  # start network-manager
>>>
>>> I then reconfigured the existing DHCP server on / forwarded via
>>> 192.168.155.1 to not handle or respond to the 192.168.155/24
>>> subnet/VLAN for DHCP/bootp requests, and then continued:
>>> # ex /etc/dhcp/dhcpd.conf
>>> %s/^option domain-name "/#&
>>> %s/^\(option domain-name-servers \).*$/\1 192.168.155.1;/
>>> $a
>>> next-server 192.168.155.2;
>>> subnet 192.168.155.0 netmask 255.255.255.0 {
>>>   range 192.168.155.100 192.168.155.200;
>>>   option routers 192.168.155.1;
>>>   filename "pxelinux.0";
>>> }
>>> .
>>> w
>>> q
>>> (virtually) inserted optical media:
>>> lubuntu-14.04.1-alternate-i386.iso
>>> Lubuntu 14.04.1 LTS "Trusty Tahr" - Release i386 (20140722.2)
>>> Ideally I'd use:
>>> lubuntu-14.04.2-alternate-i386.iso
>>> Lubuntu 14.04.2 LTS "Trusty Tahr" - Release i386
>>> but that appears to not (yet) be available
>>> From the GUI as mere mortal user michael, did:
>>> Click Lubuntu icon in lower left, then:
>>> Accessories
>>> File Manager PCManFM
>>> That then causes the CD-ROM to mount,
>>> (for a "real" server, I'd copy the ISO on the host and loop mount it)
>>> then ...
>>> # mount -o bind,ro,nosuid,nodev \
>>>
>>>  '/media/michael/Lubuntu 14.04.1 LTS i386'/install/netboot \
>>>> /var/lib/tftpboot
>>>>
>>>>  # restart tftpd-hpa
>>> # start isc-dhcp-server
>>> I then boot my PXE client
>>> For virtual, I'm doing:
>>> # virt-install --name=lubuntupxeci386 --pxe \
>>>
>>>  --disk=/var/tmp/lubuntu/lubuntupxeci386-sda --network=network=pxenet \
>>>> --ram=512 --wait=-1 --os-type=linux --os-variant=debianwheezy \
>>>> --arch=i586 --virt-type kvm --hvm
>>>>
>>>>  Again, similarly, I do that host as a low-spec Partimus machine:
>>> i586 (Pentium)
>>> 512 MiB RAM
>>> 8 GiB hard drive
>>> From our PXE client, again, just showing non-defaults, and generally
>>> going with defaults for simplicity:
>>> Hostname: lubuntupxeci386
>>> Full name for the new user: Michael Paoli
>>> Username for your account: michael
>>> Choose a password for the new user: [not shown]
>>> Re-enter password to verify: [not shown]
>>> Write the changes to disks? <Yes>
>>> Continue
>>> ... and our PXE client installs successfully (did rather minimal software
>>> installation in this demo run, but could install more at installation
>>> time
>>> or after).
>>>
>>> And, ... just for informational purposes, since I did these as virtual
>>> machines and with their virtual hard drives on filesystem that uses
>>> deduplication and compression (and also did those files as sparse
>>> files), the actual on-drive storage used is rather minimal:
>>> $ (cd /var/tmp/lubuntu && ls -onsh lubuntupxe[cs]i386-sda)
>>> 574M -rw------- 1 0 8.0G Apr 12 08:29 lubuntupxeci386-sda
>>> 939M -rw------- 1 0 8.0G Apr 12 08:30 lubuntupxesi386-sda
>>> $
>>> # zfs get -o all all |
>>>
>>>  egrep '^lubuntu/lubuntu .* (compress|dedup|mountpoint|used )'
>>>>
>>>>  lubuntu/lubuntu  used                  1.48G                  -
>>>  -
>>> lubuntu/lubuntu  compressratio         2.94x                  -         -
>>> lubuntu/lubuntu  mountpoint            /var/tmp/lubuntu       -
>>>  local
>>> lubuntu/lubuntu  compression           gzip-9                 -
>>>  local
>>> lubuntu/lubuntu  dedup                 verify                 -
>>>  local
>>> #
>>>
>>>  From: "Michael Paoli" <Michael.Paoli at cal.berkeley.edu>
>>>
>>>> Subject: example PXE boot setup on Debian (Ubuntu/Lubuntu should be
>>>> relatively similar)
>>>> Date: Thu, 02 Apr 2015 03:58:33 -0700
>>>>
>>>>  From: "Tai Kedzierski" <dch.tai at gmail.com>
>>>>
>>>>> Subject: Re: [Tech] Partimus (PXE?) (nearly?) unattended install
>>>>> solution(s?)
>>>>> Date: Thu, 2 Apr 2015 11:26:53 +0100
>>>>>
>>>>> * Yeah I'm still stuck on PXE - I've had some pointers from Rab in
>>>>> EdLUG
>>>>> (basically, first, don't test using VirtualBox!) and Charlie's notes
>>>>> still
>>>>> to review. And Michael's notes when he has a moment :-)
>>>>>
>>>>>
>>>> Shouldn't be too hard with virtual (e.g. qemu-kvm, virtualbox, etc.),
>>>> but key bits to be aware of there: They typically give a NATed network
>>>> by default and including a built-in provided DHCP server on that
>>>> network.
>>>> Such generally conflicts with doing PXE boot - so one typically wants
>>>> to place the virtual host on a different network/subnet/VLAN, where
>>>> there isn't some conflicting DHCP/bootp server/service.  The only other
>>>> slightly tricky bit with virtual and PXE - at least that I'm aware of
>>>> so far, is that non-intuitive bit on VirtualBox - where some interface
>>>> types don't support PXE boot (or need additional software or packages
>>>> for such interfaces - that seemed to be implied from some of what I
>>>> read about folks installing direct from Oracle rather than a linux
>>>> distribution's packaging thereof ... probably proprietary and/or non-
>>>> distribution restrictions on some extra bits for certain interface types
>>>> to be able to PXE boot under VirtualBox - found no such issue with
>>>> qemu-kvm).
>>>>
>>>> This is example I have on my
>>>> Debian GNU/Linux 7.8 (wheezy) x86_64
>>>> "server" <cough, cough> (laptop) at home.
>>>> Looks like I mostly/initially based it upon:
>>>> https://wiki.debian.org/PXEBootInstall
>>>> (and probably from around 2012-03-11, as I made a few corrective edits
>>>> to that wiki page around then).
>>>>
>>>> I was also interested in, as feasible, being
>>>> able to PXE boot and then be able to select and install various
>>>> distributions - so as I'd left it off, it could be used to PXE boot
>>>> and install any of:
>>>> Debian GNU/Linux 7.8 (wheezy) x86_64
>>>> Debian GNU/Linux 7.8 (wheezy) i386
>>>> Ubuntu-Server 14.04.1 LTS amd64
>>>>
>>>> From the wee bit of notes I made of it regarding my
>>>> installation/configuration:
>>>> $ cat /srv/tftp/NOTES
>>>> http://http.debian.net/debian/dists/wheezy/main/installer-
>>>> i386/current/images/netboot/netboot.tar.gz
>>>> and:
>>>> http://http.debian.net/debian/dists/wheezy/main/installer-
>>>> amd64/current/images/netboot/netboot.tar.gz
>>>> mostly extracted to:
>>>> /srv/tftp
>>>> except for the differing:
>>>> lrwxrwxrwx 1 root root 35 2014-04-24 07:45:30.000000000 +0000
>>>> pxelinux.cfg -> debian-installer/amd64/pxelinux.cfg
>>>> lrwxrwxrwx 1 root root 34 2014-04-24 07:46:21.000000000 +0000
>>>> pxelinux.cfg -> debian-installer/i386/pxelinux.cfg
>>>> and also:
>>>> lrwxrwxrwx 1 root root 33 2014-04-24 07:45:30.000000000 +0000 pxelinux.0
>>>> -> debian-installer/amd64/pxelinux.0
>>>> lrwxrwxrwx 1 root root 32 2014-04-24 07:46:21.000000000 +0000 pxelinux.0
>>>> -> debian-installer/i386/pxelinux.0
>>>> but in the case of pxelinux.0, the ordinary files are identical, so
>>>> replaced the symbolic link with a hard link
>>>>
>>>> also from:
>>>> Ubuntu-Server 14.04 LTS "Trusty Tahr" - Release amd64 (20140416.2)
>>>> contents under:
>>>> install/netboot
>>>> mostly also placed here, except:
>>>> renamed version.info to version.info.ubuntu
>>>> renamed pxelinux.cfg to pxelinux.cfg:ubuntu-server:amd64
>>>> and left out symbolic links: pxelinux.0
>>>>
>>>> And further examining what I'd left in place in terms of mounts and
>>>> configuration files and such (other than or in addition to that noted
>>>> above, and mostly covered on:
>>>> https://wiki.debian.org/PXEBootInstall
>>>> )
>>>>
>>>> The relevant bits of data I have in /etc/fstab:
>>>> /dev/tigger/tftp /srv/tftp ext3 ro,nosuid,nodev,noatime 0 2
>>>> /var/tmp/ISOs/ubuntu-14.04.1-server-amd64.iso
>>>> /var/tmp/ISOs/ubuntu-14.04.1-server-amd64 iso9660 loop,ro,nosuid,nodev
>>>> 0
>>>>
>>>> /var/tmp/ISOs/ubuntu-14.04.1-server-amd64/install/netboot/
>>>> ubuntu-installer
>>>> /srv/tftp/ubuntu-installer none bind,ro,nosuid,nodev 0 0
>>>> /var/tmp/ISOs/ubuntu-14.04.1-server-amd64/install/netboot/version.info
>>>> /srv/tftp/version.info.ubuntu none bind,ro,nosuid,nodev 0 0
>>>> Probably better to use location other than /var/tmp for things intended
>>>> to be there "permanently" or more longer term, but in any case ...
>>>> Also, those last two bind mounts shown above, next to last is directory
>>>> bind mounted atop directory, and the last one file mounted atop (empty)
>>>> file.
>>>> My "NOTES" from above covers much of it, but in addition (not covered by
>>>> that, and installed/configured under /srv/tftp/) we have:
>>>> $ < /srv/tftp/pxelinux.cfg/default expand
>>>> serial 0 9600
>>>> default debian-installer/i386/boot-screens/vesamenu.c32
>>>> timeout 0
>>>> label debian-i386
>>>>         menu label debian-i386
>>>>         config  pxelinux.cfg:i386/default
>>>> label debian-amd64
>>>>         menu label debian-amd64
>>>>         config  pxelinux.cfg:amd64/default
>>>> label ubuntu-server-amd64
>>>>         menu label ubuntu-server-amd64
>>>>         config pxelinux.cfg:ubuntu-server:amd64/default
>>>> That works as my default PXE boot menu that comes up, allowing
>>>> selections of:
>>>> debian-i386
>>>> debian-amd64
>>>> ubuntu-server-amd64
>>>> Each of which, when selected, then just chain loads the corresponding
>>>> stock menu from that flavor's PXE boot menu.
>>>> The
>>>> serial 0 9600
>>>> Allows that menu choice to also be made via the first (legacy) serial
>>>> port (if present), so serial console may be used to launch/control the
>>>> PXE boot and installation (can be quite handy for serial console
>>>> install, virtual machines, IPMI, etc., and doesn't particularly hurt to
>>>> include that, even if it's not being used).
>>>>
>>>> That's mostly it ... except the IP addresses and network configuration I
>>>> have is different than the example given on the referenced wiki page.
>>>>
>>>> And, comparing what I earlier noted to actual files under /srv/tftp ...
>>>> What doesn't seem to be quite covered in those earlier NOTES:
>>>> $ ls -ld /srv/tftp/pxelinux.cfg /srv/tftp/pxelinux.cfg:[ai]*
>>>> drwxr-xr-x 2 root root 1024 Apr 28  2014 /srv/tftp/pxelinux.cfg
>>>> lrwxrwxrwx 1 root root   35 Apr 27  2014 /srv/tftp/pxelinux.cfg:amd64 ->
>>>> debian-installer/amd64/pxelinux.cfg
>>>> lrwxrwxrwx 1 root root   34 Apr 27  2014 /srv/tftp/pxelinux.cfg:i386 ->
>>>> debian-installer/i386/pxelinux.cfg
>>>> $
>>>>
>>>
> _______________________________________________
> Tech mailing list
> Tech at lists.partimus.org
> http://lists.partimus.org/listinfo.cgi/tech-partimus.org
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.partimus.org/pipermail/tech-partimus.org/attachments/20150413/fc308f87/attachment-0002.htm>


More information about the Tech mailing list