From 8397e587f38277871e96099cf0254972b68d9608 Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Sun, 21 Jul 2024 14:27:28 +0200 Subject: [PATCH] New -as mkisofs option --lfa_flags --- xorriso/emulators.c | 7 +++ xorriso/xorriso_timestamp.h | 2 +- xorriso/xorrisofs.1 | 24 ++++++-- xorriso/xorrisofs.info | 119 ++++++++++++++++++++---------------- xorriso/xorrisofs.texi | 28 +++++++-- 5 files changed, 114 insertions(+), 66 deletions(-) diff --git a/xorriso/emulators.c b/xorriso/emulators.c index 6315d090..97b1d9c0 100644 --- a/xorriso/emulators.c +++ b/xorriso/emulators.c @@ -641,6 +641,7 @@ int Xorriso_genisofs_count_args(struct XorrisO *xorriso, int argc, char **argv, "-untranslated-filenames", "-verbose", "-version", "-g", "-h", "-no-mac-files", "-chrp-boot", "--hardlinks", "--acl", "--xattr", "--xattr-any", "--md5", "--for_backup", + "--lfa_flags", "--protective-msdos-label", "--boot-catalog-hide", "--no-emul-toc", "--emul-toc", "-disallow_dir_id_ext", "--old-empty", "--old-root-no-md5", "--old-root-devno", "--old-root-no-ino", @@ -870,6 +871,7 @@ int Xorriso_genisofs_help(struct XorrisO *xorriso, int flag) " --acl Record eventual ACLs of files", " --xattr Record eventual user space xattr of files", " --xattr-any Record xattr of any namespace, not only user.", +" --lfa_flags Record Linux file attribute flags (chattr)", " --md5 Compute and record MD5 checksums of data files", " --scdbackup_tag PATH NAME With --md5 record a scdbackup checksum tag", " --for_backup Use all options which improve backup fidelity", @@ -1619,6 +1621,8 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom, Xorriso_option_xattr(xorriso, "on", 0); } else if(strcmp(argpt, "--xattr-any")==0) { Xorriso_option_xattr(xorriso, "any", 0); + } else if(strcmp(argpt, "--lfa_flags")==0) { + Xorriso_option_lfa_flags(xorriso, "default:on:no_restore", 0); } else if(strcmp(argpt, "--md5")==0) { Xorriso_option_md5(xorriso, "on", 0); } else if(strcmp(argpt, "--scdbackup_tag")==0) { @@ -1633,6 +1637,8 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom, Xorriso_option_acl(xorriso, "on", 0); Xorriso_option_xattr(xorriso, "any", 0); Xorriso_option_md5(xorriso, "on", 0); + Xorriso_option_lfa_flags(xorriso, "default:on:no_restore", 0); + } else if(strcmp(argpt, "-z")==0 || strcmp(argpt, "-transparent-compression")==0) { Xorriso_option_zisofs(xorriso, "by_magic=on", 0); @@ -2063,6 +2069,7 @@ not_enough_args:; strcmp(argpt, "--acl")==0 || strcmp(argpt, "--xattr")==0 || strcmp(argpt, "--xattr-any")==0 || + strcmp(argpt, "--lfa_flags")==0 || strcmp(argpt, "--md5")==0 || strcmp(argpt, "--for_backup")==0) { /* was already handled in first argument scan */; diff --git a/xorriso/xorriso_timestamp.h b/xorriso/xorriso_timestamp.h index 0a148f03..05c72b86 100644 --- a/xorriso/xorriso_timestamp.h +++ b/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2024.07.21.113209" +#define Xorriso_timestamP "2024.07.21.122709" diff --git a/xorriso/xorrisofs.1 b/xorriso/xorrisofs.1 index 13c40147..a7ba786a 100644 --- a/xorriso/xorrisofs.1 +++ b/xorriso/xorrisofs.1 @@ -9,7 +9,7 @@ .\" First parameter, NAME, should be all caps .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection .\" other parameters are allowed: see man(7), man(1) -.TH XORRISOFS 1 "Version 1.5.7, Jun 17, 2024" +.TH XORRISOFS 1 "Version 1.5.7, Jul 21, 2024" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: @@ -677,7 +677,7 @@ Alias of \-rr_reloc_dir "/.rr_moved" Enable all options which improve backup fidelity: .br \-\-acl, \-\-xattr\-any, \-\-md5, -\-\-hardlinks. +\-\-hardlinks, \-\-lfa_flags. .br If you later restore a backup with xattr from non\-user namespaces, then make sure that the target operating system and filesystem know what these attributes @@ -685,8 +685,8 @@ mean. Possibly you will need administrator privileges to record or restore such attributes. At recording time, xorriso will try to tolerate missing privileges and just record what is readable. .br -Option \-xattr after option \-for_backup excludes non\-user attributes -from being recorded. +Option \-\-xattr after option \-\-for_backup excludes +non\-user attributes from being recorded. .TP \fB--acl\fR .br @@ -709,6 +709,16 @@ Enable recording and loading of GNU/Linux or FreeBSD extended attributes in all namespaces. This might need administrator privileges, even if the owner of the disk file tries to read the attributes. .TP +\fB--lfa_flags\fR +.br +Enable recording and loading of Linux file attributes as described in +man 1 chattr. +.br +Disable restoring of such attributes just in case that the mkisofs emulation +gets ended and files get restored to disk. If restoring of the attributes is +desired in this case, execute xorriso command \-lfa_flags "restore" with +possibly appended mode texts like ":restore_mask=aAcCdDijmPsStTux". +.TP \fB--md5\fR .br Enable recording of MD5 checksums for the overall ISO image and for each @@ -2265,11 +2275,13 @@ Programs which burn sessions to optical media .BR cdrskin(1), .BR xorriso(1) .TP -ACL and xattr +ACL, xattr, Linux file attributes .BR getfacl(1), .BR setfacl(1), .BR getfattr(1), -.BR setfattr(1) +.BR setfattr(1), +.BR lsattr(1), +.BR chattr(1) .TP MD5 checksums .BR md5sum(1) diff --git a/xorriso/xorrisofs.info b/xorriso/xorrisofs.info index b16b58ff..01f0ae28 100644 --- a/xorriso/xorrisofs.info +++ b/xorriso/xorrisofs.info @@ -614,15 +614,15 @@ File: xorrisofs.info, Node: SetExtras, Next: SetHide, Prev: SetCompl, Up: Op Alias of -rr_reloc_dir "/.rr_moved" --for_backup Enable all options which improve backup fidelity: - --acl, --xattr-any, --md5, --hardlinks. + --acl, --xattr-any, --md5, --hardlinks, --lfa_flags. If you later restore a backup with xattr from non-user namespaces, then make sure that the target operating system and filesystem know what these attributes mean. Possibly you will need administrator privileges to record or restore such attributes. At recording time, xorriso will try to tolerate missing privileges and just record what is readable. - Option -xattr after option -for_backup excludes non-user attributes - from being recorded. + Option --xattr after option --for_backup excludes non-user + attributes from being recorded. --acl Enable recording and loading of ACLs from GNU/Linux or FreeBSD (see @@ -642,6 +642,15 @@ File: xorrisofs.info, Node: SetExtras, Next: SetHide, Prev: SetCompl, Up: Op attributes in all namespaces. This might need administrator privileges, even if the owner of the disk file tries to read the attributes. +--lfa_flags + + Enable recording and loading of Linux file attributes as described + in man 1 chattr. + Disable restoring of such attributes just in case that the mkisofs + emulation gets ended and files get restored to disk. If restoring + of the attributes is desired in this case, execute xorriso command + -lfa_flags "restore" with possibly appended mode texts like + ":restore_mask=aAcCdDijmPsStTux". --md5 Enable recording of MD5 checksums for the overall ISO image and for @@ -1975,7 +1984,8 @@ Other programs which produce ISO 9660 images Programs which burn sessions to optical media growisofs(1), cdrecord(1), wodim(1), cdrskin(1), xorriso(1) ACL and xattr - getfacl(1), setfacl(1), getfattr(1), setfattr(1) + getfacl(1), setfacl(1), getfattr(1), setfattr(1) lsattr(1), + chattr(1) MD5 checksums md5sum(1) On FreeBSD some commands differ: @@ -2051,10 +2061,11 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T * --grub2-boot-info Patch El Torito boot image: Bootable. (line 109) * --grub2-mbr Install modern GRUB2 MBR: SystemArea. (line 81) * --grub2-sparc-core SUN SPARC core file: SystemArea. (line 325) -* --hardlinks Recording of hardlink relations: SetExtras. (line 130) +* --hardlinks Recording of hardlink relations: SetExtras. (line 139) +* --lfa_flags Recording of Linux file attributes: SetExtras. (line 122) * --mbr-force-bootable Enforce MBR bootable/active flag: SystemArea. (line 148) -* --md5 Recording of MD5 checksums: SetExtras. (line 122) +* --md5 Recording of MD5 checksums: SetExtras. (line 131) * --modification-date set ISO image timestamps: ImageId. (line 70) * --no-emul-toc no table-of-content emulation: SetProduct. (line 41) * --norock disable Rock Ridge production: SetExtras. (line 28) @@ -2070,7 +2081,7 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T (line 143) * --quoted_path_list read pathspecs from disk file: SetInsert. (line 12) -* --scdbackup_tag Recording of MD5 checksum: SetExtras. (line 138) +* --scdbackup_tag Recording of MD5 checksum: SetExtras. (line 147) * --set_all_file_dates set all file timestamps: SetExtras. (line 35) * --sort-weight set block address sorting weight: SetProduct. (line 45) * --sort-weight-list set block address sorting weight: SetProduct. @@ -2148,15 +2159,15 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T (line 29) * -hard-disk-boot El Torito boot image emulation: Bootable. (line 83) * -help list supported options: Miscellaneous. (line 21) -* -hfs-bless HFS+ blessing ppc_bootdir: SetExtras. (line 221) -* -hfs-bless-by HFS+ blessing: SetExtras. (line 211) -* -hfsplus enable production of HFS+ partition: SetExtras. (line 164) -* -hfsplus-block-size set APM block size: SetExtras. (line 201) +* -hfs-bless HFS+ blessing ppc_bootdir: SetExtras. (line 230) +* -hfs-bless-by HFS+ blessing: SetExtras. (line 220) +* -hfsplus enable production of HFS+ partition: SetExtras. (line 173) +* -hfsplus-block-size set APM block size: SetExtras. (line 210) * -hfsplus-block-size set HFS+ allocation block size: SetExtras. - (line 197) + (line 206) * -hfsplus-file-creator-type HFS+ creator-type attribute: SetExtras. - (line 208) -* -hfsplus-serial-no set HFS+ serial number: SetExtras. (line 193) + (line 217) +* -hfsplus-serial-no set HFS+ serial number: SetExtras. (line 202) * -hide keep matching files invisible in ISO tree: SetHide. (line 8) * -hide-hfsplus keep matching files invisible in HFS+ tree: SetHide. (line 25) @@ -2187,7 +2198,7 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T * -isohybrid-mbr Install ISOLINUX isohybrid MBR: SystemArea. (line 87) * -iso_mbr_part_type Set type of ISO MBR partition: SystemArea. (line 129) -* -J enable production of Joliet directory tree: SetExtras. (line 147) +* -J enable production of Joliet directory tree: SetExtras. (line 156) * -jigdo-checksum-algorithm set data file checksum algorithm: Jigdo. (line 42) * -jigdo-exclude add exclusion pattern for checksum file: Jigdo. @@ -2203,9 +2214,9 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T * -jigdo-template-compress choose compression algorithm: Jigdo. (line 83) * -joliet enable production of Joliet directory tree: SetExtras. - (line 151) -* -joliet-long allow longer Joliet names: SetExtras. (line 153) -* -joliet-utf16 use UTF-16 with Joliet names: SetExtras. (line 159) + (line 160) +* -joliet-long allow longer Joliet names: SetExtras. (line 162) +* -joliet-utf16 use UTF-16 with Joliet names: SetExtras. (line 168) * -l allow 31 characters in ISO file names: SetCompl. (line 56) * -log-file redirect stderr messages: Miscellaneous. (line 33) * -m exclude disk files from inserting: SetInsert. (line 41) @@ -2387,14 +2398,14 @@ File: xorrisofs.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top (line 238) * GPT, _definition: SystemArea. (line 13) * Group, for all files, -gid: SetProduct. (line 83) -* HFS+, enables production: SetExtras. (line 164) -* HFS+, issue blessing ppc_bootdir, -hfs-bless: SetExtras. (line 221) -* HFS+, issue blessing, -hfs-bless-by: SetExtras. (line 211) -* HFS+, set allocation block size: SetExtras. (line 197) -* HFS+, set APM block size: SetExtras. (line 201) +* HFS+, enables production: SetExtras. (line 173) +* HFS+, issue blessing ppc_bootdir, -hfs-bless: SetExtras. (line 230) +* HFS+, issue blessing, -hfs-bless-by: SetExtras. (line 220) +* HFS+, set allocation block size: SetExtras. (line 206) +* HFS+, set APM block size: SetExtras. (line 210) * HFS+, set creator and type of file, -hfsplus-file-creator-type: SetExtras. - (line 208) -* HFS+, set serial number: SetExtras. (line 193) + (line 217) +* HFS+, set serial number: SetExtras. (line 202) * HFS+, _definition: Standards. (line 32) * Hiding, by ISO RR path, -hide_iso_path: SetHide. (line 31) * Hiding, from HFS+, -hide-hfsplus: SetHide. (line 25) @@ -2457,16 +2468,18 @@ File: xorrisofs.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Jigdo Template Extraction, -jigdo-template-compress: Jigdo. (line 83) * Jigdo Template Extraction, -md5-list: Jigdo. (line 81) * Jigdo Template Extraction, _definition: Jigdo. (line 6) -* Joliet, allows longer names, -joliet-long: SetExtras. (line 153) -* Joliet, enable, -J, -joliet: SetExtras. (line 147) +* Joliet, allows longer names, -joliet-long: SetExtras. (line 162) +* Joliet, enable, -J, -joliet: SetExtras. (line 156) * Joliet, _definition: Standards. (line 21) * Links, follow on disk, -f, -follow-links: SetInsert. (line 32) -* Links, record and load hard links, --hardlinks: SetExtras. (line 130) +* Links, record and load hard links, --hardlinks: SetExtras. (line 139) +* Linux file attributes, record and load, --lfa_flags: SetExtras. + (line 122) * MBR, GPT, append partition, -append_partition: SystemArea. (line 208) * MBR, sectors per head, -partition_sec_hd: SystemArea. (line 180) * MBR, sectors per head, -partition_sec_hd <1>: SystemArea. (line 183) * MBR, _definition: SystemArea. (line 9) -* MD5, record and load, --md5: SetExtras. (line 122) +* MD5, record and load, --md5: SetExtras. (line 131) * Message output, increase frequency, -gui: Miscellaneous. (line 29) * Message output, redirect stderr, -log-file: Miscellaneous. (line 33) * Message output, suppress, -quiet: Miscellaneous. (line 25) @@ -2493,7 +2506,7 @@ File: xorrisofs.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top (line 16) * Rock Ridge, disable production, --norock: SetExtras. (line 28) * Rock Ridge, _definition: Standards. (line 14) -* scdbackup, record checksum tag, --scdbackup_tag: SetExtras. (line 138) +* scdbackup, record checksum tag, --scdbackup_tag: SetExtras. (line 147) * Session, select path, -M, -prev-session, -dev: Loading. (line 11) * Session, set load and write address, -C, -cdrecord-params: Loading. (line 25) @@ -2502,7 +2515,7 @@ File: xorrisofs.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * System Id, set, -sysid: ImageId. (line 43) * Table-of-content, emulation off, --no-emul-toc: SetProduct. (line 41) * Table-of-content, emulation, --emul-toc: SetProduct. (line 33) -* UTF-16, for Joliet paths, -joliet-utf16: SetExtras. (line 159) +* UTF-16, for Joliet paths, -joliet-utf16: SetExtras. (line 168) * Verbosity, high, -v, -verbose: Miscellaneous. (line 38) * Volume Id, set, -V, -volid: ImageId. (line 13) * Volume Set Id, set, -volset: ImageId. (line 25) @@ -2533,27 +2546,27 @@ Node: SetInsert9530 Node: SetProduct15465 Node: SetCompl21037 Node: SetExtras23629 -Node: SetHide35238 -Node: ImageId37237 -Node: Bootable41519 -Node: SystemArea47805 -Node: Charset67533 -Node: Jigdo68558 -Node: Miscellaneous73528 -Node: Examples75173 -Node: ExSimple75667 -Node: ExGraft76150 -Node: ExMkisofs77450 -Node: ExGrowisofs79258 -Node: ExIncBackup80448 -Node: ExIncBckAcc83624 -Node: ExBootable85329 -Node: Files89511 -Node: Environ90606 -Node: Seealso91479 -Node: Bugreport92130 -Node: Legal92723 -Node: CommandIdx93620 -Node: ConceptIdx110758 +Node: SetHide35680 +Node: ImageId37679 +Node: Bootable41961 +Node: SystemArea48247 +Node: Charset67975 +Node: Jigdo69000 +Node: Miscellaneous73970 +Node: Examples75615 +Node: ExSimple76109 +Node: ExGraft76592 +Node: ExMkisofs77892 +Node: ExGrowisofs79700 +Node: ExIncBackup80890 +Node: ExIncBckAcc84066 +Node: ExBootable85771 +Node: Files89953 +Node: Environ91048 +Node: Seealso91921 +Node: Bugreport92598 +Node: Legal93191 +Node: CommandIdx94088 +Node: ConceptIdx111299  End Tag Table diff --git a/xorriso/xorrisofs.texi b/xorriso/xorrisofs.texi index 8eb69122..a3a56459 100644 --- a/xorriso/xorrisofs.texi +++ b/xorriso/xorrisofs.texi @@ -50,7 +50,7 @@ @c man .\" First parameter, NAME, should be all caps @c man .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection @c man .\" other parameters are allowed: see man(7), man(1) -@c man .TH XORRISOFS 1 "Version 1.5.7, Jun 17, 2024" +@c man .TH XORRISOFS 1 "Version 1.5.7, Jul 21, 2024" @c man .\" Please adjust this date whenever revising the manpage. @c man .\" @c man .\" Some roff macros, for reference: @@ -943,7 +943,7 @@ Alias of -rr_reloc_dir "/.rr_moved" Enable all options which improve backup fidelity: @* @minus{}@minus{}acl, @minus{}@minus{}xattr-any, @minus{}@minus{}md5, -@minus{}@minus{}hardlinks. +@minus{}@minus{}hardlinks, @minus{}@minus{}lfa_flags. @* If you later restore a backup with xattr from non-user namespaces, then make sure that the target operating system and filesystem know what these attributes @@ -951,8 +951,8 @@ mean. Possibly you will need administrator privileges to record or restore such attributes. At recording time, xorriso will try to tolerate missing privileges and just record what is readable. @* -Option -xattr after option -for_backup excludes non-user attributes -from being recorded. +Option @minus{}@minus{}xattr after option @minus{}@minus{}for_backup excludes +non-user attributes from being recorded. @c man .TP @item @minus{}@minus{}acl @kindex @minus{}@minus{}acl Recording of ACLs @@ -981,6 +981,18 @@ Enable recording and loading of GNU/Linux or FreeBSD extended attributes in all namespaces. This might need administrator privileges, even if the owner of the disk file tries to read the attributes. @c man .TP +@item @minus{}@minus{}lfa_flags +@kindex @minus{}@minus{}lfa_flags Recording of Linux file attributes +@cindex Linux file attributes, record and load, @minus{}@minus{}lfa_flags +@* +Enable recording and loading of Linux file attributes as described in +man 1 chattr. +@* +Disable restoring of such attributes just in case that the mkisofs emulation +gets ended and files get restored to disk. If restoring of the attributes is +desired in this case, execute xorriso command -lfa_flags "restore" with +possibly appended mode texts like ":restore_mask=aAcCdDijmPsStTux". +@c man .TP @item @minus{}@minus{}md5 @kindex @minus{}@minus{}md5 Recording of MD5 checksums @cindex MD5, record and load, @minus{}@minus{}md5 @@ -2906,11 +2918,13 @@ Startup files and program options can override the effect of SOURCE_DATE_EPOCH. @c man .BR cdrskin(1), @c man .BR xorriso(1) @c man .TP -@c man ACL and xattr +@c man ACL, xattr, Linux file attributes @c man .BR getfacl(1), @c man .BR setfacl(1), @c man .BR getfattr(1), -@c man .BR setfattr(1) +@c man .BR setfattr(1), +@c man .BR lsattr(1), +@c man .BR chattr(1) @c man .TP @c man MD5 checksums @c man .BR md5sum(1) @@ -2943,6 +2957,8 @@ getfacl(1), setfacl(1), getfattr(1), setfattr(1) +lsattr(1), +chattr(1) @item MD5 checksums md5sum(1) @item On FreeBSD some commands differ: