PXE network boot with Fedora Server

Hi!

I was trying to do a dual boot Fedora Workstation / Fedora Server, so that I can work on Fedora Workstation and boot a number of network clients from that same machine.

After installing Fedora Workstation over Fedora Server, such that the grub boot loader places Fedora Workstation at the top, Fedora Server does not start anymore. I’ve never had this problem with Microsoft Windows and Fedora Workstation in a dual boot configuration.

Did anyone try this already? Is it supposed to work?

Best regards,
Mischa Baars.

Hi,
Could you please give some more details about the problem? You mentioned installing Fedora Workstation over Fedora server. I assume you installed it in two partitions or disks? What means “does not start anymore”. Where does the the booting stop or is grub only showing workstation?
Do you have BIOS boot or UEFI boot ?
Are the /boot folders in both installations populated with kernel and initramfs?
Did you update the grub.cfg of the active partition by grub2-mkconfig?

As @hmmsjan mentioned it is not clear what you really want to achieve with your question here.

If i do understand you correct, you want a dedicated computer to start pxe images from it ? To install other clients ? But occasionally you want to use the computer as a workstation too, right?

If so, you can make a pxe server also with a workstation installation. Then Workstation is not more as a server installation with a Desktop Environment (DE) installed on it. So you do not need dual boot.

Pls. confirm or clarify what you exactly want.

If you want a separate server on your workstation you can do this with a virtualization software. So you can use two computers on one, on the same time.

Hi,

I’ll reinstall tomorow and reproduct the exact error messages.

Thanks,
Mischa.

Exactly, install Fedora Server, mount it as an NFS share from Fedora Workstation, then hand over the kernel to the nodes through PXE and then mount the root filesystem as NFS. That would be the proper way to proceed, I imagined.

I can’t handout the same root filesystem, because the Workstation has a static IP address and runs dnsmasq for example, while the nodes have a dynamic IP address and don’t run dsnmasq.

Like QEmu for example? I’d need to install Fedora Server first and then start it from Fedora Workstation if I understand correctly. That would be of no help.

There is the virtual machine manager I use. There you can choose what virtualization you prefer.
If you use gnome you have boxes installed.

If you decide to use the virtual machine manager on a default Workstation I would recommend to remove Boxes first before installing the virtualization. Otherwise you have some configurations twice on different locations. Can be confusing.
Redirect Notice

https://docs.fedoraproject.org/en-US/fedora/latest/install-guide/advanced/Network_based_Installations/#pxe-overview

I personally would install a workstation on the computer you want to use for pxe and then via virtualization make a PXE server. If you want to test other servers just make a new VirtualServer.
You can configure the VirtualServer so that he starts headless after booting the workstation.

This way you have a usable workstation who shares hardware with a virtual-server.

Hi,

Oh sorry. Can’t reproduce the error messages. After reinstalling both Fedora Workstation and Fedora Server, everything now seems to work. I don’t really know what I did wrong the first time.

I generated a boot/grub2/grub.cfg for both Fedora Workstation and Fedora Server and then I do end up with three different file sizes. Do you recommend using a single boot partition for both operating systems?

But, besides that. It does work now! Next I’ll need to compile a kernel with NFS support.

Best regards,
Mischa.

Thanks, hope I can do without :slight_smile:

Ok no problem. About the PXE part did you follow which manual/tutorial ? If I do have time I will test it on my environment with a VirtualServer.

Apropos, welcome to ask.:fedora:edora @mjbaars1977

I more or less followed the instructions on ipxe.org, because the network interface only shows up in the BIOS when I set the network boot options to Legacy. Here you can find any difficulties I encountered: Console blanks out after booting iPXE · Issue #663 · ipxe/ipxe · GitHub. It should be no problem to get it all up and running upto the booting of the kernel itself. I used a “echo Hello world!” script for the moment, but you can see that the DHCP server (dnsmasq) is working, the downloading and execution of the undionly.kpxe boot loader and the script (tftpd) are both working.

The next step is to compile NFS into the server kernel to get the file systems mounted.

Thank you @ilikelinux :slight_smile:

1 Like

Is NFS not standard present in the kernel? “systemctl enable --now nfs-server” should do the job.

You are now just trying to enable the NFS server. Let me explain.

From Fedora Workstation I will mount the Fedora Server partition under /mnt for example. This is where NFS server is running. NFS can be compiled as a module, and is by default.

What I’m worried about is this line in the CLIENT kernel config: CONFIG_NFS_FS=m

We do not want to install the operating system on 16 different network nodes. Instead, we let the clients boot the kernel handed out by TFTP and boot it. Next, we need to mount the NFS root file system of this client, but the NFS module is on that file system as well. So, it needs to be compiled statically into the kernel.

Yes?

OK, I understand what you mean. I’ve not much experience with TFTP boot, tried it long ago. As far I understand from the redhat documentation, you should be able to TFTP boot the kernal and the initial ramdisk. So I think it is sufficient to add the nfs client module(s) to the initramfs, which should be possible with dracut. In the initrd phase the kernel can start the nfs client, mount the root file system and chroot to it.
Kernel compilation is not that difficult, but it costs time and energy and has to be done at each update…

Found for Redhat6, may be obsolete:

Install the dracut-network package:

# yum install dracut-network

After installing the dracut-network package, add the following line to /etc/dracut.conf:

add_dracutmodules+="nfs"

Addition: dracut-network still exists and is even installed on my workstation without knowing. It contains an awfull lot of scripts for all kind of rootfs like nfs or iscsi.
Probably some additional recent documentation has to be found how to use it.

Addition 2: Succeeded to network boot Fedora36WS from Debian on my F36/Debian dual boot.
Same kernel, initramfs with NFS module. Modified /etc/fstab and masked out Networkmanager.
Remaining points of concern: system tries to initialize wifi which is not there, logging and hostname. But it works, no need to recompile the kernel, just the initrd!

I see, I think I’ll be needing QEmu to run ‘dnf distro-sync’ for example on Fedora Server.

The DHCP server is now running on an old Fedora 32 installation, but it will be running on the new Fedora 36 installation. Can’t be running Fedora Server and the Fedora Workstation DHCP server at the same time without QEmu, can I?

Thanks.

I’ll keep it in mind… dracut.

Thanks!

You can never run two dhcp servers on the same network segment. If you have two network segments, you could run two dhcp servers each bound to one network interface. Probably you have to take care of different lease file and status file locations.
The dnsmasq DHCP server can be simply bound to one interface with the “interface” and “bind-interfaces” option. But if I recall correctly, both dhcpd and dnsmasq are able to serve multiple interfaces, that makes it more easy.

I do not think you should bother too much over server and workstation variants, probably there is no difference in dhcp server software.

For the diskless server I used dnsmasq as dhcp server, tftp server and DNS relay, all in one program.

dnf distro-sync you need when you upgrade from one to an other version of fedora.
To check and synchronize installed packages to the latest available versions.
The whole process you find documented here > Redirect Notice

It makes you troubles if you use it in the same network segment as @hmmsjan mentioned. I guess to segment the network you need a router, managed switch or at least two network adapters on a device.

Searching in the internet gave me the following articles about IPXE:

  1. So you not really need a server version of linux, you need just a webserver what you can easily provide on a workstation. This is a nice project who lets you start with IPXE and downloads a environment from internet to boot from. I used the first iso here Downloads | netboot.xyz

  2. Netboot is made with ipxe boot scripts, you might can have a look how it is made Update on Easy PXE boot testing post: minus PXELINUX - A Random Walk Down Tech Street

That why I said old, running on an old Fedora 32 installation. I’m migrating to Fedora 36.

To keep it simple, and avoid the use of all kinds of complicated virtual machines, I’m going to have a look at ‘chroot’ here.

That way, Fedora Workstation can boot with static IP and Fedora Server with DHCP, while the chrooted environment inherits the network connection from Fedora Workstation. I can then run ‘dnf distro-sync’ for both.

I’m afraid you will run into problems with this. Please look to the procedure how to install grub from a live system. Before the chroot, you have to mount /dev+/proc+/sys from the parent into the installation to be chrooted. Otherwise at least grub2-mkconfig will fail. What do you want to achieve with “distro-sync” ? Normally, it is used for a version update, but I hope you do not want to use it to try to go from 32 to 36. If a F36 installation is OK, “dnf update” is the step to get the actual state of the software.