commit:     b449a96b0b62612712281821337de9341705538d
Author:     leon9078 <42963618+leon9078 <AT> users <DOT> noreply <DOT> github 
<DOT> com>
AuthorDate: Tue Sep 16 18:46:05 2025 +0000
Commit:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
CommitDate: Fri Oct  3 14:56:33 2025 +0000
URL:        https://gitweb.gentoo.org/proj/releng.git/commit/?id=b449a96b

releases/specs/{amd64,arm64,x86}: enable support for booting with NTFS 
filesystem

Add "dmsquash-live-ntfs" Dracut module which enable the use of booting an 
installation media with NTFS.

The UEFI spec encompasses the use of FAT, but UEFI is happy to boot from any 
filesystem as long as the firmware as a proper UEFI driver for it.
This is especially relevant because FAT has some design limitations being it 
very old, such as not allowing >4 GiB files.

Other limitations are:
- label
  - can be no longer than 11 characters
  - must use uppercase letters
  - characters below 0x20 are not allowed
  - characters *?.,;:/\|+=<>[]" are not allowed
  - can't start with a space character
  - must contain English characters only
- do not support symbolic links because their design predates the feature and 
lacks a mechanism to mark files as links
- do not support UNIX file permissions

Now, because Windows ISO of the last few years contains at least one file that 
is larger than 4 GiB, Microsoft put pressure on OEM to make sure they include 
an UEFI NTFS driver in their firmware.
This is true for recent (usually from last 10 years) motherboards from major 
brands (Gigabyte, ASUS, MSI, Intel, etc.)

This is because, by design, Microsoft creates Windows ISO that are FST (File 
System Transposition) compatible, meaning that the end-user is able to take a 
USB drive, format to NTFS, copy the content of the ISO into it and boot it in 
UEFI without any additional step for the user (unlike other Linux distros which 
rely on ISOHybrid, so the user is forced to use an additional tool like dd or 
Rufus to make a bootable drive).

What this PR is all about is adding support for NTFS filesystem, such that 
Gentoo install media can now be bootable from this fs, just like Windows does.

It would support both fs by having the initramfs include FAT32 and NTFS modules.
The actual module which is used at runtime depends on how the user chooses to 
format the media the ISO is written to (FAT or NTFS).

Because this change does increase RAM usage a bit, this PR only enable this 
feature for known systems architectures (x86,x86_64,arm64)

Closes: https://github.com/gentoo/releng/pull/41
Signed-off-by: Andreas K. Hüttel <dilfridge <AT> gentoo.org>

 releases/specs/amd64/installcd-stage2-minimal.spec           | 2 +-
 releases/specs/amd64/livegui/livegui-stage2.spec             | 2 +-
 releases/specs/arm64/installcd-stage2-minimal.spec           | 2 +-
 releases/specs/x86/i486/installcd-stage2-minimal-openrc.spec | 2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/releases/specs/amd64/installcd-stage2-minimal.spec 
b/releases/specs/amd64/installcd-stage2-minimal.spec
index 82717112..377eb178 100644
--- a/releases/specs/amd64/installcd-stage2-minimal.spec
+++ b/releases/specs/amd64/installcd-stage2-minimal.spec
@@ -18,7 +18,7 @@ livecd/rcadd: dbus|default gpm|default NetworkManager|default
 boot/kernel: gentoo
 
 boot/kernel/gentoo/distkernel: yes
-boot/kernel/gentoo/dracut_args: --xz --no-hostonly -a dmsquash-live -a mdraid 
-o btrfs -o crypt -o i18n -o usrmount -o lunmask -o qemu -o qemu-net -o nvdimm 
-o multipath -i /lib/keymaps /lib/keymaps -I busybox
+boot/kernel/gentoo/dracut_args: --xz --no-hostonly -a dmsquash-live -a 
dmsquash-live-ntfs -a mdraid -o btrfs -o crypt -o i18n -o usrmount -o lunmask 
-o qemu -o qemu-net -o nvdimm -o multipath -i /lib/keymaps /lib/keymaps -I 
busybox
 boot/kernel/gentoo/config: 
@REPO_DIR@/releases/kconfig/amd64/dist-amd64-livecd.config
 boot/kernel/gentoo/packages: --usepkg n net-wireless/broadcom-sta sys-fs/zfs
 

diff --git a/releases/specs/amd64/livegui/livegui-stage2.spec 
b/releases/specs/amd64/livegui/livegui-stage2.spec
index dbfb62a0..66bec908 100644
--- a/releases/specs/amd64/livegui/livegui-stage2.spec
+++ b/releases/specs/amd64/livegui/livegui-stage2.spec
@@ -25,5 +25,5 @@ livecd/empty:
 boot/kernel: gentoo
 
 boot/kernel/gentoo/distkernel: yes
-boot/kernel/gentoo/dracut_args: --xz --no-hostonly -a dmsquash-live -a mdraid 
-o btrfs -o crypt -o i18n -o usrmount -o lunmask -o qemu -o qemu-net -o nvdimm 
-o multipath -i /lib/keymaps /lib/keymaps -I busybox
+boot/kernel/gentoo/dracut_args: --xz --no-hostonly -a dmsquash-live -a 
dmsquash-live-ntfs -a mdraid -o btrfs -o crypt -o i18n -o usrmount -o lunmask 
-o qemu -o qemu-net -o nvdimm -o multipath -i /lib/keymaps /lib/keymaps -I 
busybox
 boot/kernel/gentoo/packages: --usepkg n sys-fs/zfs broadcom-sta

diff --git a/releases/specs/arm64/installcd-stage2-minimal.spec 
b/releases/specs/arm64/installcd-stage2-minimal.spec
index 2266981e..5b2092f9 100644
--- a/releases/specs/arm64/installcd-stage2-minimal.spec
+++ b/releases/specs/arm64/installcd-stage2-minimal.spec
@@ -17,7 +17,7 @@ livecd/volid: Gentoo-arm64-@TIMESTAMP@
 boot/kernel: gentoo
 
 boot/kernel/gentoo/distkernel: yes
-boot/kernel/gentoo/dracut_args: --xz --no-hostonly -a dmsquash-live -a mdraid 
-o btrfs -o crypt -o i18n -o usrmount -o lunmask -o qemu -o qemu-net -o nvdimm 
-o multipath -o zfs -i /lib/keymaps /lib/keymaps -I busybox
+boot/kernel/gentoo/dracut_args: --xz --no-hostonly -a dmsquash-live -a 
dmsquash-live-ntfs -a mdraid -o btrfs -o crypt -o i18n -o usrmount -o lunmask 
-o qemu -o qemu-net -o nvdimm -o multipath -o zfs -i /lib/keymaps /lib/keymaps 
-I busybox
 boot/kernel/gentoo/packages: --usepkg n zfs zfs-kmod
 
 livecd/unmerge:

diff --git a/releases/specs/x86/i486/installcd-stage2-minimal-openrc.spec 
b/releases/specs/x86/i486/installcd-stage2-minimal-openrc.spec
index cff288c5..f19d0756 100644
--- a/releases/specs/x86/i486/installcd-stage2-minimal-openrc.spec
+++ b/releases/specs/x86/i486/installcd-stage2-minimal-openrc.spec
@@ -19,7 +19,7 @@ livecd/rcadd: dbus|default gpm|default NetworkManager|default
 boot/kernel: gentoo
 
 boot/kernel/gentoo/distkernel: yes
-boot/kernel/gentoo/dracut_args: --xz --no-hostonly -a dmsquash-live -a mdraid 
-o btrfs -o crypt -o i18n -o usrmount -o lunmask -o qemu -o qemu-net -o nvdimm 
-o multipath -o modsign -o net-lib -o bcache -o dmraid -o lvm -o resume -o 
virtiofs -o mdraid -o shutdown -o kernel-modules-extra -o shutdown  -o pcmcia 
-o hwdb -i /lib/keymaps /lib/keymaps -I busybox
+boot/kernel/gentoo/dracut_args: --xz --no-hostonly -a dmsquash-live -a 
dmsquash-live-ntfs -a mdraid -o btrfs -o crypt -o i18n -o usrmount -o lunmask 
-o qemu -o qemu-net -o nvdimm -o multipath -o modsign -o net-lib -o bcache -o 
dmraid -o lvm -o resume -o virtiofs -o mdraid -o shutdown -o 
kernel-modules-extra -o shutdown  -o pcmcia -o hwdb -i /lib/keymaps 
/lib/keymaps -I busybox
 boot/kernel/gentoo/config: 
@REPO_DIR@/releases/kconfig/x86/dist-x86-livecd.config
 boot/kernel/gentoo/packages: --usepkg n broadcom-sta
 

Reply via email to