mbox series

[v2,00/11] Support network booting with pxelinux.cfg files

Message ID 1526658340-1992-1-git-send-email-thuth@redhat.com
Headers show
Series Support network booting with pxelinux.cfg files | expand

Message

Thomas Huth May 18, 2018, 3:45 p.m. UTC
When booting a Linux kernel via network, it's sometimes more convenient
to load the kernel and initrd separately instead of having to create
a joint kernel + initrd file. The most common "standard" for doing such
network boots are the so-called pxelinux.cfg config files, initially
introduced by the PXELINUX bootloader on x86, but nowadays also used
on ppc64 by petitboot for example. So let's support booting via these
config files in SLOF, too!

v2:
 - Added support for UUID-based file names (last two patches)
 - Addressed Greg's feedback from v1

Thomas Huth (11):
  libnet: Get rid of unused huge_load and block_size parameters
  obp-tftp: Make sure to not overwrite paflof in memory
  libnet: Pass tftp_retries and ip_version via struct filename_ip
  libnet: Put code for determing TFTP error strings into a separate
    function
  libc: Implement strrchr()
  libnet: Add functions for downloading and parsing pxelinux.cfg files
  libnet: Wire up pxelinux.cfg network booting
  libc: Check for NULL pointers in free()
  libnet: Add support for DHCPv4 options 209 and 210
  slof: Add a helper function to get the contents of a property in C
    code
  libnet: Support UUID-based pxelinux.cfg file names

 include/helpers.h            |   4 +
 lib/libc/stdlib/free.c       |   4 +-
 lib/libc/string/Makefile.inc |   2 +-
 lib/libc/string/strrchr.c    |  28 ++++++
 lib/libnet/Makefile          |   2 +-
 lib/libnet/dhcp.c            |  33 +++++++
 lib/libnet/libnet.code       |   4 +-
 lib/libnet/netapps.h         |   3 +-
 lib/libnet/netload.c         | 196 +++++++++++++++++++++----------------
 lib/libnet/ping.c            |  14 ++-
 lib/libnet/pxelinux.c        | 223 +++++++++++++++++++++++++++++++++++++++++++
 lib/libnet/pxelinux.h        |  33 +++++++
 lib/libnet/tftp.c            | 120 ++++++++++++++++++++---
 lib/libnet/tftp.h            |  14 ++-
 slof/fs/packages/obp-tftp.fs |  11 ++-
 slof/helpers.c               |  30 +++++-
 16 files changed, 603 insertions(+), 118 deletions(-)
 create mode 100644 lib/libc/string/strrchr.c
 create mode 100644 lib/libnet/pxelinux.c
 create mode 100644 lib/libnet/pxelinux.h

Comments

Alexey Kardashevskiy May 24, 2018, 9:06 a.m. UTC | #1
On 19/5/18 1:45 am, Thomas Huth wrote:
> When booting a Linux kernel via network, it's sometimes more convenient
> to load the kernel and initrd separately instead of having to create
> a joint kernel + initrd file. The most common "standard" for doing such
> network boots are the so-called pxelinux.cfg config files, initially
> introduced by the PXELINUX bootloader on x86, but nowadays also used
> on ppc64 by petitboot for example. So let's support booting via these
> config files in SLOF, too!
> 
> v2:
>  - Added support for UUID-based file names (last two patches)
>  - Addressed Greg's feedback from v1
> 
> Thomas Huth (11):
>   libnet: Get rid of unused huge_load and block_size parameters
>   obp-tftp: Make sure to not overwrite paflof in memory
>   libnet: Pass tftp_retries and ip_version via struct filename_ip
>   libnet: Put code for determing TFTP error strings into a separate
>     function
>   libc: Implement strrchr()
>   libnet: Add functions for downloading and parsing pxelinux.cfg files
>   libnet: Wire up pxelinux.cfg network booting
>   libc: Check for NULL pointers in free()
>   libnet: Add support for DHCPv4 options 209 and 210
>   slof: Add a helper function to get the contents of a property in C
>     code
>   libnet: Support UUID-based pxelinux.cfg file names


I pushed 05/11 and 08/11 as they independent, I'll continue with this
tomorrow - finish reading and then I need to learn how to setup this pxe
thing to test so it is going to take a bit :) Thanks,


> 
>  include/helpers.h            |   4 +
>  lib/libc/stdlib/free.c       |   4 +-
>  lib/libc/string/Makefile.inc |   2 +-
>  lib/libc/string/strrchr.c    |  28 ++++++
>  lib/libnet/Makefile          |   2 +-
>  lib/libnet/dhcp.c            |  33 +++++++
>  lib/libnet/libnet.code       |   4 +-
>  lib/libnet/netapps.h         |   3 +-
>  lib/libnet/netload.c         | 196 +++++++++++++++++++++----------------
>  lib/libnet/ping.c            |  14 ++-
>  lib/libnet/pxelinux.c        | 223 +++++++++++++++++++++++++++++++++++++++++++
>  lib/libnet/pxelinux.h        |  33 +++++++
>  lib/libnet/tftp.c            | 120 ++++++++++++++++++++---
>  lib/libnet/tftp.h            |  14 ++-
>  slof/fs/packages/obp-tftp.fs |  11 ++-
>  slof/helpers.c               |  30 +++++-
>  16 files changed, 603 insertions(+), 118 deletions(-)
>  create mode 100644 lib/libc/string/strrchr.c
>  create mode 100644 lib/libnet/pxelinux.c
>  create mode 100644 lib/libnet/pxelinux.h
>