Difference between revisions of "Filesystem"

From Syslinux Wiki
Jump to: navigation, search
(Notes about 64bit features in e2fsprogs. XFS support updated for Syslinux 6.04.)
m (Wiki formatting.)
 
(10 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
[[Category:HowTo]]
 
[[Category:HowTo]]
<!-- Keywords: -->
+
<!-- Keywords:  
<!-- Filesystems filesystem support file system BIOS boot -->
+
--><!-- Filesystems filesystem support file system BIOS boot  
 +
-->
 
EXTLINUX supports:<br />
 
EXTLINUX supports:<br />
<tt>[3.00+]</tt> ext2/3,<br />
+
{{V|3.00+}}ext2/3,<br />
<tt>[4.00+]</tt> FAT12/16/32, ext2/3/4, Btrfs,<br />
+
{{V|4.00+}}FAT12/16/32, ext2/3/4, Btrfs,<br />
<tt>[4.06+]</tt> FAT12/16/32, NTFS, ext2/3/4, Btrfs,<br />
+
{{V|4.06+}}FAT12/16/32, NTFS, ext2/3/4, Btrfs,<br />
<tt>[5.01+]</tt> FAT12/16/32, NTFS, ext2/3/4, Btrfs, XFS,<br />
+
{{V|5.01+}}FAT12/16/32, NTFS, ext2/3/4, Btrfs, XFS,<br />
<tt>[6.03+]</tt> FAT12/16/32, NTFS, ext2/3/4, Btrfs, XFS, UFS/FFS,<br />
+
{{V|6.03+}}FAT12/16/32, NTFS, ext2/3/4, Btrfs, XFS, UFS/FFS,<br />
 +
 
 +
{{V|6.04}}Improvements and fixes.
 +
 
 +
Some limitations might apply, depending on the filesystem.
  
 
As of Syslinux 6.03,  
 
As of Syslinux 6.03,  
Line 18: Line 23:
  
 
For the available command line options, see [[Install]].
 
For the available command line options, see [[Install]].
 
  
 
<br />
 
<br />
 +
 
== Btrfs ==
 
== Btrfs ==
  
Line 26: Line 31:
 
Several improvements and fixes were added in later versions.  
 
Several improvements and fixes were added in later versions.  
 
Syslinux 6.03 (or later) is recommended.
 
Syslinux 6.03 (or later) is recommended.
 +
 +
As of Syslinux 6.03,
 +
Btrfs' {{nowrap|multi-device}} volumes are <u>not</u> supported.
  
 
As of Syslinux 6.03,  
 
As of Syslinux 6.03,  
Line 34: Line 42:
 
files if the boot filesystem is compressed and/or encrypted.
 
files if the boot filesystem is compressed and/or encrypted.
  
Additional boot parameters might be needed so to specify Btrfs subvolume IDs.  
+
 
For example: <code><nowiki>rootflags=subvol=&lt;root subvolume&gt;</nowiki></code>.
+
Additional boot parameters might be needed so as to specify Btrfs subvolume IDs.  
 +
For example:  
 +
{{nowrap|1=<code><nowiki>rootflags=subvol=&lt;root subvolume&gt;</nowiki></code>.}}
 +
 
 +
 
 +
{{V|6.04}}Fix {{nowrap|logical_to_physical}} block address mapping.
 +
 
 +
Supported in the following packages {{nowrap|(non-exhaustive list):}}
 +
* {{nowrap|Official Syslinux 6.04-pre1}}
 +
* Debian: {{nowrap|6.03+dfsg1-1}}
 +
* Debian: {{nowrap|6.04~git20171011.af7e95c3+dfsg1-1}} and newer
 +
* Fedora 26
 +
* Mageia: 6.04-01.mga7
 +
* Rosa: 6.04-0.3.pre1
 +
* Alpine: 6.04_01
  
 
<br />
 
<br />
 +
 
== ext ==
 
== ext ==
  
<!-- Keywords: -->
+
<!-- Keywords:  
<!-- extN ext2 ext3 ext4 ext2/3/4 -->
+
--><!-- extN ext2 ext3 ext4 ext2/3/4  
As of Syslinux 6.03, "pure 64-bits", compression and/or encryption  
+
-->
 +
As of Syslinux 6.03, "pure 64bit", compression and/or encryption  
 
are <u>not</u> supported.
 
are <u>not</u> supported.
  
<!-- WRT "pure 64-bits" see -->
+
<!-- WRT "pure 64bit" see https://bugzilla.redhat.com/1099237#c23 -->
<!--  https://bugzilla.redhat.com/show_bug.cgi?id=1099237#c23 -->
+
  
 
Quoting part of the release notes of  
 
Quoting part of the release notes of  
 
{{nowrap|version 1.43}} of e2fsprogs {{nowrap|(May 17, 2016):}}
 
{{nowrap|version 1.43}} of e2fsprogs {{nowrap|(May 17, 2016):}}
 
<blockquote>
 
<blockquote>
Mke2fs will now create file systems with the metadata_csum and 64bit features enabled by default.
+
Mke2fs will now create file systems with the  
 +
metadata_csum and 64bit features enabled by default.
 
</blockquote>
 
</blockquote>
  
 
Users should rather (manually) disable the 64bit feature  
 
Users should rather (manually) disable the 64bit feature  
 
in the mke2fs command when {{nowrap|creating / formatting}}  
 
in the mke2fs command when {{nowrap|creating / formatting}}  
a boot volume with {{nowrap|ext2/3/4;}}
+
a boot volume with ext4;  
 
otherwise, the bootloader (as of version 6.03) will fail.
 
otherwise, the bootloader (as of version 6.03) will fail.
 +
 +
Notes:
 +
 +
* For a 4KiB block size, <!--
 +
--> an {{nowrap|ext2/3/4}} volume size of less than 16TiB <!--
 +
--> when created without the "64bit feature" is <!--
 +
--> supported by Syslinux as of version 6.03. <!--
 +
-->
 +
* To manually disable the "64bit" feature when creating ext4 volumes, <!--
 +
--> use {{nowrap|&nbsp;<code>-O ^64bit</code>&nbsp;}} <!--
 +
--> in the mke2fs (or equivalent) command. <!--
 +
--> That is, <!--
 +
--> an hyphen, immediately followed by <!--
 +
--> an {{nowrap|upper-case}} letter "O", <!--
 +
--> a space character, <!--
 +
--> the caret "^" symbol, <!--
 +
--> followed by {{nowrap|"64bit"}} (no hyphen). <!--
 +
-->
 +
** In some cases, a backslash character before the caret might be needed: <!--
 +
--> {{nowrap|&nbsp;<code>-O \^64bit</code>&nbsp;}} <!--
 +
-->
 +
* In resize2fs, the {{nowrap|&nbsp;<code>-s</code>&nbsp;}} parameter <!--
 +
--> (that is, an hyphen followed by a {{nowrap|lower-case}} <!--
 +
--> letter {{nowrap|"s")}} disables the {{nowrap|"64bit"}} <!--
 +
--> feature of an {{nowrap|already-created}} filesystem volume, <!--
 +
--> if its size allows it.
 +
 +
 +
{{V|6.04+}}Support 64bit feature of ext4.
 +
 +
Supported in the following packages {{nowrap|(non-exhaustive list):}}
 +
* Debian: {{nowrap|6.03+dfsg1-2}}
 +
* Debian: {{nowrap|6.04~git20171011.af7e95c3+dfsg1-1}} and newer
 +
* Fedora 28
  
 
<br />
 
<br />
 +
 
== ISO9660 ==
 
== ISO9660 ==
  
 
Not relevant for [[EXTLINUX]]. See [[ISOLINUX]].
 
Not relevant for [[EXTLINUX]]. See [[ISOLINUX]].
 
  
 
<br />
 
<br />
 +
 
== NTFS ==
 
== NTFS ==
  
Line 75: Line 134:
 
with Cluster (aka "Allocation Unit") size <u>equal or smaller</u> than 4096 bytes.
 
with Cluster (aka "Allocation Unit") size <u>equal or smaller</u> than 4096 bytes.
  
 +
{|
 +
|
 
  4096 Bytes (or less) per "Allocation Unit" (aka Cluster).
 
  4096 Bytes (or less) per "Allocation Unit" (aka Cluster).
 
  Each Cluster can be 4KiB or smaller.
 
  Each Cluster can be 4KiB or smaller.
 
  For 512 Bytes per sector &rarr; either 8 / 4 / 2 / 1 Sectors per Cluster.
 
  For 512 Bytes per sector &rarr; either 8 / 4 / 2 / 1 Sectors per Cluster.
 
  For 4096 Bytes per sector &rarr; 1 Sector per Cluster.
 
  For 4096 Bytes per sector &rarr; 1 Sector per Cluster.
 +
|}
  
 
A Cluster size of 4096 bytes is usually the default and the recommended value.
 
A Cluster size of 4096 bytes is usually the default and the recommended value.
  
For general information about Cluster size: http://support.microsoft.com/kb/140365  
+
For general information about Cluster size:  
 +
http://support.microsoft.com/kb/140365  
 +
<!-- "Default cluster size for NTFS, FAT, and exFAT" -->
  
 
As of Syslinux 6.03,  
 
As of Syslinux 6.03,  
 
EXTLINUX does <u>not</u> support symlinks on NTFS volumes.
 
EXTLINUX does <u>not</u> support symlinks on NTFS volumes.
 
  
 
<br />
 
<br />
 +
 
== UFS ==
 
== UFS ==
  
<!-- Keywords: -->
+
<!-- Keywords:  
<!-- Unix Fast File System -->
+
--><!-- Unix Fast File System  
<!-- UFS/FFS UFS1 UFS2 UFS1/2 FFS -->
+
--><!-- UFS/FFS UFS1 UFS2 UFS1/2 FFS  
<!-- http://en.wikipedia.org/wiki/Berkeley_Fast_File_System -->
+
--><!-- http://en.wikipedia.org/wiki/Berkeley_Fast_File_System  
 +
-->
 
Syslinux 6.03 adds support for UFS/FFS in little-endian  
 
Syslinux 6.03 adds support for UFS/FFS in little-endian  
 
architectures (x86 and x86-64).  
 
architectures (x86 and x86-64).  
 
UFS1 and UFS2 are both supported.
 
UFS1 and UFS2 are both supported.
  
The author of UFS/FFS, Kirk McKusick, said about the name:
+
The author of UFS/FFS, Kirk McKusick, said about the name: <!--
<!-- Source: -->
+
--><!-- Source:  
<!-- http://www.syslinux.org/archives/2013-July/020511.html -->
+
--><!-- http://www.syslinux.org/archives/2013-July/020511.html  
 +
-->
 
<blockquote>
 
<blockquote>
 
The code is broken into two parts,  
 
The code is broken into two parts,  
 
the part that handles naming (UFS where the U stands for Unix),  
 
the part that handles naming (UFS where the U stands for Unix),  
 
and the part that handles disk layout (FFS where the F stands for Fast).
 
and the part that handles disk layout (FFS where the F stands for Fast).
When the two parts are put together they are called UFS/FFS or more commonly just UFS.
+
When the two parts are put together  
 +
they are called UFS/FFS or more commonly just UFS.
 
</blockquote>
 
</blockquote>
  
 
=== UFS notes ===
 
=== UFS notes ===
  
* The following steps were initially only made under a GNU/Linux environment. <!--
+
* The following steps were initially only made under a GNU/Linux environment. <!--  
    --> Therefore, functionality might vary on other systems.
+
--> Therefore, functionality might vary on other systems. <!--
* Dependency: ufsutils (UFS filesystems utilities) or equivalent.
+
-->
<!-- Examples:
+
* Dependency: ufsutils (UFS filesystems utilities) or equivalent. <!--
<!-- https://packages.debian.org/jessie/ufsutils -->
+
--><!--
<!-- http://packages.qa.debian.org/u/ufsutils.html -->
+
--><!-- Examples:  
* To add Write support on UFS to Linux, <!--
+
--><!-- https://packages.debian.org/jessie/ufsutils  
    --> a kernel with the option {{nowrap|<tt>CONFIG_UFS_FS_WRITE</tt>}} <!--
+
--><!-- http://packages.qa.debian.org/u/ufsutils.html  
    --> enabled is needed, or at least configured as a module. <!--
+
-->
    --> To the latter case, load the module {{nowrap|"<tt>ufs.ko</tt>"}} <!--
+
* To add Write support on UFS to Linux, <!--  
    --> with modprobe (probably located at {{nowrap|"<tt>/lib/modules/</tt>"}}).
+
--> a kernel with the option {{nowrap|<tt>CONFIG_UFS_FS_WRITE</tt>}} <!--  
<!-- Examples:
+
--> enabled is needed, or at least configured as a module. <!--  
<!-- https://packages.debian.org/wheezy/ufs-modules-3.2.0-4-686-pae-di -->
+
--> To the latter case, load the module {{nowrap|"<tt>ufs.ko</tt>"}} <!--  
<!-- https://packages.debian.org/wheezy/ufs-modules-3.2.0-4-486-di -->
+
--> with modprobe (probably located at {{nowrap|"<tt>/lib/modules/</tt>"}}). <!--
* Enable UFS Write support under Debian (November 26, 2012):
+
--><!--
 +
--><!-- Examples:  
 +
--><!-- https://packages.debian.org/wheezy/ufs-modules-3.2.0-4-686-pae-di  
 +
--><!-- https://packages.debian.org/wheezy/ufs-modules-3.2.0-4-486-di  
 +
-->
 +
* Enable UFS Write support under Debian (November 26, 2012):  
 +
{|
 +
|
 +
<small>
 
<pre>
 
<pre>
 
  http://oz123.github.io/writings/2012-11-26-enable-ufs-write-support-debian/  
 
  http://oz123.github.io/writings/2012-11-26-enable-ufs-write-support-debian/  
 
</pre>
 
</pre>
 
+
</small>
 
+
|}
 
<br />
 
<br />
 +
 
== XFS ==
 
== XFS ==
  
Line 140: Line 216:
 
an XFS partition in an "[[Mbr|MBR]]" partition scheme is supported.
 
an XFS partition in an "[[Mbr|MBR]]" partition scheme is supported.
  
<tt>[6.04+]</tt>Support XFS on-disk V5,  
+
 
 +
{{V|6.04+}}Support XFS on-disk V5,  
 
node directories version 3, xfsprogs 4.x.
 
node directories version 3, xfsprogs 4.x.
 +
 +
Supported in the following packages {{nowrap|(non-exhaustive list):}}
 +
* {{nowrap|Official Syslinux 6.04-pre1}}
 +
* Debian: {{nowrap|6.04~git20171011.af7e95c3+dfsg1-1}} and newer
 +
* Fedora 26
 +
* Mageia: 6.04-01.mga7
 +
* Rosa: 6.04-0.3.pre1
 +
* Alpine: 6.04_01
 +
 +
 +
<u>Note:</u>
 +
XFS 4.16+ (xfsprogs, released 2018Apr)
 +
enables the "sparse inode" feature by default.
 +
 +
When {{nowrap|creating / formatting}}
 +
a boot volume with {{nowrap|XFS 4.16+}},
 +
users might want to consider manually disabling
 +
the "sparse inode" feature on the boot volume.

Latest revision as of 17:27, 16 October 2020

EXTLINUX supports:
[3.00+] ext2/3,
[4.00+] FAT12/16/32, ext2/3/4, Btrfs,
[4.06+] FAT12/16/32, NTFS, ext2/3/4, Btrfs,
[5.01+] FAT12/16/32, NTFS, ext2/3/4, Btrfs, XFS,
[6.03+] FAT12/16/32, NTFS, ext2/3/4, Btrfs, XFS, UFS/FFS,

[6.04] Improvements and fixes.

Some limitations might apply, depending on the filesystem.

As of Syslinux 6.03, the extlinux command line installer supports 512 bytes per sector.

Please contact The Syslinux Project if the extlinux command line installer fails in any way in the supported filesystems or if the boot process fails after installing the bootloader.

For the available command line options, see Install.


Btrfs

Initial support for Btrfs was introduced in Syslinux 4.06. Several improvements and fixes were added in later versions. Syslinux 6.03 (or later) is recommended.

As of Syslinux 6.03, Btrfs' multi-device volumes are not supported.

As of Syslinux 6.03, the compression and/or encryption features of Btrfs volumes are not supported. In other words, Syslinux cannot find (configuration / kernel / initrd) files if the boot filesystem is compressed and/or encrypted.


Additional boot parameters might be needed so as to specify Btrfs subvolume IDs. For example: rootflags=subvol=<root subvolume>.


[6.04] Fix logical_to_physical block address mapping.

Supported in the following packages (non-exhaustive list):

  • Official Syslinux 6.04-pre1
  • Debian: 6.03+dfsg1-1
  • Debian: 6.04~git20171011.af7e95c3+dfsg1-1 and newer
  • Fedora 26
  • Mageia: 6.04-01.mga7
  • Rosa: 6.04-0.3.pre1
  • Alpine: 6.04_01


ext

As of Syslinux 6.03, "pure 64bit", compression and/or encryption are not supported.


Quoting part of the release notes of version 1.43 of e2fsprogs (May 17, 2016):

Mke2fs will now create file systems with the metadata_csum and 64bit features enabled by default.

Users should rather (manually) disable the 64bit feature in the mke2fs command when creating / formatting a boot volume with ext4; otherwise, the bootloader (as of version 6.03) will fail.

Notes:

  • For a 4KiB block size, an ext2/3/4 volume size of less than 16TiB when created without the "64bit feature" is supported by Syslinux as of version 6.03.
  • To manually disable the "64bit" feature when creating ext4 volumes, use  -O ^64bit  in the mke2fs (or equivalent) command. That is, an hyphen, immediately followed by an upper-case letter "O", a space character, the caret "^" symbol, followed by "64bit" (no hyphen).
    • In some cases, a backslash character before the caret might be needed:  -O \^64bit 
  • In resize2fs, the  -s  parameter (that is, an hyphen followed by a lower-case letter "s") disables the "64bit" feature of an already-created filesystem volume, if its size allows it.


[6.04+] Support 64bit feature of ext4.

Supported in the following packages (non-exhaustive list):

  • Debian: 6.03+dfsg1-2
  • Debian: 6.04~git20171011.af7e95c3+dfsg1-1 and newer
  • Fedora 28


ISO9660

Not relevant for EXTLINUX. See ISOLINUX.


NTFS

Initial support for NTFS was introduced in Syslinux 4.06. Several improvements and fixes were added in later versions. Syslinux 6.03 (or later) is recommended.

Note: As of Syslinux 6.03, Syslinux supports NTFS volumes with Cluster (aka "Allocation Unit") size equal or smaller than 4096 bytes.

4096 Bytes (or less) per "Allocation Unit" (aka Cluster).
Each Cluster can be 4KiB or smaller.
For 512 Bytes per sector → either 8 / 4 / 2 / 1 Sectors per Cluster.
For 4096 Bytes per sector → 1 Sector per Cluster.

A Cluster size of 4096 bytes is usually the default and the recommended value.

For general information about Cluster size: http://support.microsoft.com/kb/140365

As of Syslinux 6.03, EXTLINUX does not support symlinks on NTFS volumes.


UFS

Syslinux 6.03 adds support for UFS/FFS in little-endian architectures (x86 and x86-64). UFS1 and UFS2 are both supported.

The author of UFS/FFS, Kirk McKusick, said about the name:

The code is broken into two parts, the part that handles naming (UFS where the U stands for Unix), and the part that handles disk layout (FFS where the F stands for Fast). When the two parts are put together they are called UFS/FFS or more commonly just UFS.

UFS notes

  • The following steps were initially only made under a GNU/Linux environment. Therefore, functionality might vary on other systems.
  • Dependency: ufsutils (UFS filesystems utilities) or equivalent.
  • To add Write support on UFS to Linux, a kernel with the option CONFIG_UFS_FS_WRITE enabled is needed, or at least configured as a module. To the latter case, load the module "ufs.ko" with modprobe (probably located at "/lib/modules/").
  • Enable UFS Write support under Debian (November 26, 2012):

 http://oz123.github.io/writings/2012-11-26-enable-ufs-write-support-debian/ 


XFS

As of Syslinux 6.03, a filesystem block size of 4KiB is supported.

As of Syslinux 6.03, an XFS partition in an "MBR" partition scheme is supported.


[6.04+] Support XFS on-disk V5, node directories version 3, xfsprogs 4.x.

Supported in the following packages (non-exhaustive list):

  • Official Syslinux 6.04-pre1
  • Debian: 6.04~git20171011.af7e95c3+dfsg1-1 and newer
  • Fedora 26
  • Mageia: 6.04-01.mga7
  • Rosa: 6.04-0.3.pre1
  • Alpine: 6.04_01


Note: XFS 4.16+ (xfsprogs, released 2018Apr) enables the "sparse inode" feature by default.

When creating / formatting a boot volume with XFS 4.16+, users might want to consider manually disabling the "sparse inode" feature on the boot volume.