How to perform a PXE install of OpenSUSE

How to install OpenSuSE Tumbleweed via pxe boot server

set-up pxe boot server

TFTP, DHCP servers - there are multiple places to get these directions.

I prefer to use a menu file, this gives you flexibility to boot different os’s.

Create <tftproot>/pxelinux.cfg/default.menu

DEFAULT vesamenu.c32
TIMEOUT 600
ONTIMEOUT BootLocal
PROMPT 0
MENU INCLUDE pxelinux.cfg/pxe.conf
NOESCAPE 1
LABEL BootLocal
localboot 0
TEXT HELP
Boot to local hard disk
ENDTEXT
MENU END
MENU BEGIN OpenSUSE install
MENU TITLE OpenSUSE install
LABEL Previous
TEXT HELP
Return to previous menu
ENDTEXT
MENU EXIT
MENU SEPERATOR
MENU INCLUDE opensuse/opensuse-install.menu
MENU END

create <tftproot>/opensuse/opensuse-install.menu

TEXT HELP
Install Opensuse Tumbleweed
LABEL 1
MENU LABEL opensuse tumbleweed
KERNEL opensuse/tumbleweed/linux
APPEND initrd=opensuse/tumbleweed/initrd splash=silent vga=0x314 showopts install=http://download.opensuse.org/repo/tumbleweed/oss
ENDTEXT

Mount tumbleweed dvd
copy linux & initrd files form <DVDmount>/install/boot/x86_64/loader/ to <tftproot>/opensuse/tumbleweed/

boot computer with pxe
install

A couple of components in the URL are swapped in that kernel command line - it should be http://download.opensuse.org/tumbleweed/repo/oss/

I’d also add on that if you’re using iPXE (or another PXE implementation which can pull from http URLs), you can just pull everything from the mirror. That’s convenient because you don’t need to make a local copy of the install kernel or initrd, and you don’t need to remember to periodically update them either. For example, this is basically what I use as the tumbleweed menu target with my iPXE setup (and which should also work fine as a stand-alone iPXE config):


:opensuse_tumbleweed
  cpuid --ext 29 && set arch x86_64 || set arch i386
  set mirror_base http://download.opensuse.org/tumbleweed/repo/oss/
  set loader_base ${mirror_base}/boot/${arch}/loader
  kernel ${loader_base}/linux splash=silent vga=0x314 showopts install=${mirror_base}
  initrd ${loader_base}/initrd
  boot