microsoft / microsoft/azurelinux
[4.0] Live installer initrd missing NFS dracut module preventing NFS based PXE deployment
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 5.3k
- Forks
- 707
- Avg merge
- 2d 18h
- Merged PRs (30d)
- 235
Description
**Azure Linux version**
Azure Linux 4.0
**Deployment / platform**
KVM VM (PXE network boot)
**Is your feature request related to a problem? Please describe.**
I'm deploying Azure Linux 4 VMs via PXE using the live installer ISO. The only option to fetch the squashfs over the network is HTTP (root=live:http://...), which downloads the entire ~831 MB image into RAM. This means VMs need 4 GB RAM just for installation.
I tried using NFS (root=live:nfs://server:/path/squashfs.img) which would mount the squashfs directly without loading it all into RAM, but it doesn't work. The initrd has the NFS kernel module (nfs.ko.xz) but is missing the dracut NFS userspace scripts (nfs-lib.sh, nfs_to_var).
Looking at the dracut arguments used to build the initrd:
`--add ' dmsquash-live livenet pollcdrom ' --omit ' multipath '`
The nfs module is not included. In url-lib.sh, the NFS handler is conditionally registered only if nfs_to_var exists — which it doesn't.
**Describe the solution you'd like**
Add nfs to the dracut --add list when building the live installer initrd. This would enable NFS-based squashfs mounting for PXE deployments and cut the RAM requirement in half.
**Describe alternatives you've considered**
Currently working around it by using HTTP and allocating 4 GB RAM to the build VM. It works but wastes resources for what's a temporary installation VM.
**Additional context**
The livenet module and curl are already included for HTTP support. Adding NFS alongside would make the live installer more flexible for network-based deployments without adding much size to the initrd.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the live installer initrd build configuration and its dracut arguments, which currently add dmsquash-live, livenet, and pollcdrom but omit the NFS module. Check url-lib.sh together with nfs-lib.sh and nfs_to_var, then verify that a PXE deployment can fetch and mount the squashfs over NFS without loading the full image into RAM.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- linux
- Domain
- infrastructure, networking
- Issue type
- Feature
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 70/100