NetBSD 10 or newer support extended attributes (EA) and access controll lists (ACLs) on FFS file systems. # Enabling or disabling EA/ACLs during setup During setup, this support is enabled by default on -current or NetBSD 11 and newer (once that exists), for NetBSD 10 you need to manually tell the installer to create the file system this way: When you are at the partitioning step in Sysinst, you will see a display like this: Sysinst partition list The "FFSv2" type means there will be no extended attributes (or ACLs) supported. If you want to change set, select that line: Sysinst partition details and select the type to change it: Sysinst file system types Change it to "FFSv2ea" if you want to enable EAs. # Checking whether EAs are enabled To check if EAs are enabled on for example your root file system, use this command: [[!template id=programlisting text=""" # dumpfs / | head file system: /dev/rdk6 format FFSv2 endian little-endian location 65536 (-b 128) magic 19540119 time Fri Dec 16 18:42:47 2022 superblock location 65536 id [ 5da1ec62 569ee376 ] cylgrp dynamic inodes FFSv2 sblock FFSv2 fslevel 5 nbfree 9145447 ndir 571441 nifree 24966867 nffree 377570 ncg 658 size 125001216 blocks 123064037 bsize 32768 shift 15 mask 0xffff8000 """]] This says: **format FFSv2** meaning: EAs are **disabled**. Example output (from different disk) when EAs are enabled looks like this: [[!template id=programlisting text=""" # dumpfs /disk |head file system: /dev/rdk6 format FFSv2ea endian little-endian location 65536 (-b 128) magic 19012038 time Fri Dec 16 18:44:02 2022 superblock location 65536 id [ 5564421e 41f80c3d ] cylgrp dynamic inodes FFSv2 sblock FFSv2 fslevel 5 nbfree 66438403 ndir 181661 nifree 178822752 nffree 207710 ncg 3853 size 732042349 blocks 720699077 bsize 32768 shift 15 mask 0xffff8000 """]] Here it says: **format FFSv2ea** meaning: EAs are **enabled**. # Enabling or disabling EAs after installation You typically need to boot to single user mode (the file system you want to convert should not be mounted). The change itself is simple: * To enable EAs where they are not, use: [[!template id=programlisting text=""" # fsck_ffs -c ea /dev/rdk10 ** /dev/rdk10 ** File system is already clean ** Last Mounted on /targetroot ** Phase 1 - Check Blocks and Sizes ** Phase 2 - Check Pathnames ** Phase 3 - Check Connectivity ** Phase 4 - Check Reference Counts ** Phase 5 - Check Cyl groups 10 files, 10 used, 1016045 free (53 frags, 126999 blocks, 0.0% fragmentation) ENABLING EXTATTR SUPPORT ***** FILE SYSTEM WAS MODIFIED ***** """]] * To disable EAs where they are enabled, use: [[!template id=programlisting text=""" # fsck_ffs -c no-ea /dev/rdk10 ** /dev/rdk10 ** File system is already clean ** Last Mounted on /targetroot ** Phase 1 - Check Blocks and Sizes ** Phase 2 - Check Pathnames ** Phase 3 - Check Connectivity ** Phase 4 - Check Reference Counts ** Phase 5 - Check Cyl groups 10 files, 10 used, 1016045 free (53 frags, 126999 blocks, 0.0% fragmentation) DISABLING EXTATTR SUPPORT ***** FILE SYSTEM WAS MODIFIED ***** """]] If the file system you want to change is in your /etc/fstab, you can use the path of the mount point instead of the raw disk device (/dev/rdk10 in above example), like we did for the dumpfs command when checking for the current state of EAs. # Compatibility issues See the history section of [UFS2ea](/features/UFS2ea) for more details why this is all so complicated. Here is the short summary of the net effects: * FFSv2ea file systems are *not* compatible with NetBSD 9 or older releases * FFSv2ea file systems are *not* compatible with any other operating system * FFSv2 file systems are compatible with older NetBSD releases (back to NetBSD 2.0) * FFSv2 file systems may be used in read-only mode on other BSDs and other operating systems, but they are not completely compatible