mbox series

[v3,0/8] Support network booting with pxelinux.cfg files

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

Message

Thomas Huth May 26, 2018, 6:06 a.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!

v3:
 - Addressed Alexey's review feedback from v2

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

Thomas Huth (8):
  libnet: Pass ip_version via struct filename_ip
  libc: Add the snprintf() function
  libnet: Put code for determing TFTP error strings into a separate
    function
  libnet: Add functions for downloading and parsing pxelinux.cfg files
  libnet: Wire up pxelinux.cfg network booting
  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/include/stdio.h    |   1 +
 lib/libc/stdio/Makefile.inc |   2 +-
 lib/libc/stdio/snprintf.c   |  28 +++++
 lib/libnet/Makefile         |   2 +-
 lib/libnet/dhcp.c           |  33 ++++++
 lib/libnet/netload.c        | 189 +++++++++++++++++++--------------
 lib/libnet/ping.c           |  14 ++-
 lib/libnet/pxelinux.c       | 248 ++++++++++++++++++++++++++++++++++++++++++++
 lib/libnet/pxelinux.h       |  33 ++++++
 lib/libnet/tftp.c           | 105 ++++++++++++++++++-
 lib/libnet/tftp.h           |  14 ++-
 slof/helpers.c              |  30 +++++-
 13 files changed, 608 insertions(+), 95 deletions(-)
 create mode 100644 lib/libc/stdio/snprintf.c
 create mode 100644 lib/libnet/pxelinux.c
 create mode 100644 lib/libnet/pxelinux.h

Comments

Alexey Kardashevskiy May 30, 2018, 3:20 a.m. UTC | #1
On 26/5/18 4:06 pm, 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!
> 
> v3:
>  - Addressed Alexey's review feedback from v2


Thanks, applied.



> 
> v2:
>  - Added support for UUID-based file names (last two patches)
>  - Addressed Greg's feedback from v1
> 
> Thomas Huth (8):
>   libnet: Pass ip_version via struct filename_ip
>   libc: Add the snprintf() function
>   libnet: Put code for determing TFTP error strings into a separate
>     function
>   libnet: Add functions for downloading and parsing pxelinux.cfg files
>   libnet: Wire up pxelinux.cfg network booting
>   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/include/stdio.h    |   1 +
>  lib/libc/stdio/Makefile.inc |   2 +-
>  lib/libc/stdio/snprintf.c   |  28 +++++
>  lib/libnet/Makefile         |   2 +-
>  lib/libnet/dhcp.c           |  33 ++++++
>  lib/libnet/netload.c        | 189 +++++++++++++++++++--------------
>  lib/libnet/ping.c           |  14 ++-
>  lib/libnet/pxelinux.c       | 248 ++++++++++++++++++++++++++++++++++++++++++++
>  lib/libnet/pxelinux.h       |  33 ++++++
>  lib/libnet/tftp.c           | 105 ++++++++++++++++++-
>  lib/libnet/tftp.h           |  14 ++-
>  slof/helpers.c              |  30 +++++-
>  13 files changed, 608 insertions(+), 95 deletions(-)
>  create mode 100644 lib/libc/stdio/snprintf.c
>  create mode 100644 lib/libnet/pxelinux.c
>  create mode 100644 lib/libnet/pxelinux.h
>