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