Imported Upstream version 3.99.0~git20160203
Andreas Bombe
8 years ago
0 | 0 | SUBDIRS = src manpages |
1 | ||
2 | dist_doc_DATA = doc/ANNOUNCE.mkdosfs \ | |
3 | doc/ChangeLog.dosfsck \ | |
4 | doc/ChangeLog.dosfstools-2.x \ | |
5 | doc/ChangeLog.mkdosfs \ | |
6 | doc/README.dosfsck \ | |
7 | doc/README.dosfstools-2.x \ | |
8 | doc/README.mkdosfs \ | |
9 | doc/TODO.dosfstools-2.x |
12 | 12 | # PARTICULAR PURPOSE. |
13 | 13 | |
14 | 14 | @SET_MAKE@ |
15 | ||
15 | 16 | VPATH = @srcdir@ |
16 | 17 | am__is_gnu_make = { \ |
17 | 18 | if test -z '$(MAKELEVEL)'; then \ |
90 | 91 | am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ |
91 | 92 | $(ACLOCAL_M4) |
92 | 93 | DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ |
93 | $(am__configure_deps) $(am__DIST_COMMON) | |
94 | $(am__configure_deps) $(dist_doc_DATA) $(am__DIST_COMMON) | |
94 | 95 | am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ |
95 | 96 | configure.lineno config.status.lineno |
96 | 97 | mkinstalldirs = $(install_sh) -d |
123 | 124 | n|no|NO) false;; \ |
124 | 125 | *) (install-info --version) >/dev/null 2>&1;; \ |
125 | 126 | esac |
127 | am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; | |
128 | am__vpath_adj = case $$p in \ | |
129 | $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ | |
130 | *) f=$$p;; \ | |
131 | esac; | |
132 | am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; | |
133 | am__install_max = 40 | |
134 | am__nobase_strip_setup = \ | |
135 | srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` | |
136 | am__nobase_strip = \ | |
137 | for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" | |
138 | am__nobase_list = $(am__nobase_strip_setup); \ | |
139 | for p in $$list; do echo "$$p $$p"; done | \ | |
140 | sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ | |
141 | $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ | |
142 | if (++n[$$2] == $(am__install_max)) \ | |
143 | { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ | |
144 | END { for (dir in files) print dir, files[dir] }' | |
145 | am__base_list = \ | |
146 | sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ | |
147 | sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | |
148 | am__uninstall_files_from_dir = { \ | |
149 | test -z "$$files" \ | |
150 | || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ | |
151 | || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ | |
152 | $(am__cd) "$$dir" && rm -f $$files; }; \ | |
153 | } | |
154 | am__installdirs = "$(DESTDIR)$(docdir)" | |
155 | DATA = $(dist_doc_DATA) | |
126 | 156 | RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ |
127 | 157 | distclean-recursive maintainer-clean-recursive |
128 | 158 | am__recursive_targets = \ |
292 | 322 | top_builddir = @top_builddir@ |
293 | 323 | top_srcdir = @top_srcdir@ |
294 | 324 | SUBDIRS = src manpages |
325 | dist_doc_DATA = doc/ANNOUNCE.mkdosfs \ | |
326 | doc/ChangeLog.dosfsck \ | |
327 | doc/ChangeLog.dosfstools-2.x \ | |
328 | doc/ChangeLog.mkdosfs \ | |
329 | doc/README.dosfsck \ | |
330 | doc/README.dosfstools-2.x \ | |
331 | doc/README.mkdosfs \ | |
332 | doc/TODO.dosfstools-2.x | |
333 | ||
295 | 334 | all: all-recursive |
296 | 335 | |
297 | 336 | .SUFFIXES: |
328 | 367 | $(ACLOCAL_M4): $(am__aclocal_m4_deps) |
329 | 368 | $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) |
330 | 369 | $(am__aclocal_m4_deps): |
370 | install-dist_docDATA: $(dist_doc_DATA) | |
371 | @$(NORMAL_INSTALL) | |
372 | @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \ | |
373 | if test -n "$$list"; then \ | |
374 | echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \ | |
375 | $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \ | |
376 | fi; \ | |
377 | for p in $$list; do \ | |
378 | if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ | |
379 | echo "$$d$$p"; \ | |
380 | done | $(am__base_list) | \ | |
381 | while read files; do \ | |
382 | echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \ | |
383 | $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \ | |
384 | done | |
385 | ||
386 | uninstall-dist_docDATA: | |
387 | @$(NORMAL_UNINSTALL) | |
388 | @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \ | |
389 | files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ | |
390 | dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir) | |
331 | 391 | |
332 | 392 | # This directory's subdirectories are mostly independent; you can cd |
333 | 393 | # into them and run 'make' without going through this Makefile. |
625 | 685 | exit 1; } >&2 |
626 | 686 | check-am: all-am |
627 | 687 | check: check-recursive |
628 | all-am: Makefile | |
688 | all-am: Makefile $(DATA) | |
629 | 689 | installdirs: installdirs-recursive |
630 | 690 | installdirs-am: |
691 | for dir in "$(DESTDIR)$(docdir)"; do \ | |
692 | test -z "$$dir" || $(MKDIR_P) "$$dir"; \ | |
693 | done | |
631 | 694 | install: install-recursive |
632 | 695 | install-exec: install-exec-recursive |
633 | 696 | install-data: install-data-recursive |
679 | 742 | |
680 | 743 | info-am: |
681 | 744 | |
682 | install-data-am: | |
745 | install-data-am: install-dist_docDATA | |
683 | 746 | |
684 | 747 | install-dvi: install-dvi-recursive |
685 | 748 | |
725 | 788 | |
726 | 789 | ps-am: |
727 | 790 | |
728 | uninstall-am: | |
791 | uninstall-am: uninstall-dist_docDATA | |
729 | 792 | |
730 | 793 | .MAKE: $(am__recursive_targets) install-am install-strip |
731 | 794 | |
736 | 799 | distcheck distclean distclean-generic distclean-tags \ |
737 | 800 | distcleancheck distdir distuninstallcheck dvi dvi-am html \ |
738 | 801 | html-am info info-am install install-am install-data \ |
739 | install-data-am install-dvi install-dvi-am install-exec \ | |
740 | install-exec-am install-html install-html-am install-info \ | |
741 | install-info-am install-man install-pdf install-pdf-am \ | |
742 | install-ps install-ps-am install-strip installcheck \ | |
743 | installcheck-am installdirs installdirs-am maintainer-clean \ | |
744 | maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ | |
745 | pdf-am ps ps-am tags tags-am uninstall uninstall-am | |
802 | install-data-am install-dist_docDATA install-dvi \ | |
803 | install-dvi-am install-exec install-exec-am install-html \ | |
804 | install-html-am install-info install-info-am install-man \ | |
805 | install-pdf install-pdf-am install-ps install-ps-am \ | |
806 | install-strip installcheck installcheck-am installdirs \ | |
807 | installdirs-am maintainer-clean maintainer-clean-generic \ | |
808 | mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ | |
809 | tags-am uninstall uninstall-am uninstall-dist_docDATA | |
746 | 810 | |
747 | 811 | .PRECIOUS: Makefile |
748 | 812 |
0 | Announcing the release of mkdosfs version 0.3b (Yggdrasil) | |
1 | ||
2 | It seems I didn't get the bug completely fixed in 0.3a. Some | |
3 | borderline cases would still allocate too many sectors for the FAT. | |
4 | Again, nothing to worry about, just a nitpick -- this one would only | |
5 | in certain cases add one sector per FAT. | |
6 | ||
7 | Announcing the release of mkdosfs version 0.3a (Yggdrasil) | |
8 | ||
9 | Fixed a bug which would cause too many sectors to be reserved for the | |
10 | FAT (filesystem will still work fine, but have slightly less space | |
11 | available). | |
12 | ||
13 | Announcing the release of mkdosfs version 0.3 (Yggdrasil) | |
14 | ||
15 | This version correctly handles even very large filesystems, and | |
16 | properly supports the modern (3.3+) DOS bootsector format, including a | |
17 | message printed on boot attempts. | |
18 | ||
19 | Peter Anvin | |
20 | Yggdrasil Computing, Inc. | |
21 | hpa@yggdrasil.com | |
22 | ||
23 | -------------- | |
24 | ||
25 | Announcing the release of mkdosfs version 0.2 | |
26 | ||
27 | ||
28 | I've just uploaded mkdosfs to sunsite.unc.edu. It works in a similar way | |
29 | to Remy Card's mke2fs, but creates an MS-DOS filesystem. | |
30 | ||
31 | The filename is mkdosfs-0.2.tar.gz. | |
32 | ||
33 | This second release should fix a small bug that could lead to FAT sizes that | |
34 | Linux's dosfs would accept but MS-DOS wouldn't. | |
35 | ||
36 | The archive contains a manual page, binary and source versions. | |
37 | ||
38 | ||
39 | Dave Hudson | |
40 | dave@humbug.demon.co.uk |
0 | Changes from version 0 to 1 | |
1 | =========================== | |
2 | ||
3 | - fixed an off-by-two error in check.c:check_file | |
4 | - fixed marking clusters bad in fat.c:set_fat | |
5 | - fat.c:reclaim_free was also reclaiming bad clusters. | |
6 | - fixed many incorrect byte sex conversions in check.c and fat.c | |
7 | - -t and -w now require -a or -r | |
8 | - added option -d to drop files. | |
9 | - added option -u to try to "undelete" non-directory files. |
0 | version 2.11 | |
1 | ============ | |
2 | ||
3 | - all: don't use own llseek() anymore, glibc lseek() does everything we need | |
4 | - dosfsck: lfn.c: avoid segfault | |
5 | - dosfsck: check.c, lfn.c: check for orphaned LFN slots | |
6 | - dosfsck: check.c alloc_rootdir_entry(): set owner of newly alloced clusters | |
7 | - dosfsck: dosfsck.h: better use <byteswap.h> for byte swapping | |
8 | - dosfsck: io.c: added code for real DOS | |
9 | - mkdosfs: raised FAT12_THRESHOLD from 4078 to 4085, introduced MIN_CLUST_32 | |
10 | - mkdosfs: fix loop device size | |
11 | - mkdosfs: by default, use FAT32 on devices >= 512MB | |
12 | - mkdosfs: fix a memory leak (blank_sector) | |
13 | - mkdosfs: fix parsing of number of blocks on command line, so that numbers | |
14 | >2G can be used | |
15 | - mkdosfs: add 'b' to getopt() string so this option can be used :) | |
16 | - mkdosfs: fix parsing of -i arg (should be unsigned) | |
17 | - mkdosfs: change default permissions of created images (-C) to 0666 & ~umask | |
18 | - mkdosfs: relax geometry check: if HDIO_GETGEO fails, print a warning and | |
19 | default to H=255,S=63 | |
20 | - dosfsck: new option -n (no-op): just check non-interactively, but | |
21 | don't write anything to filesystem | |
22 | - A few #include changes to support compilation with linux 2.6 | |
23 | headers (thanks to Jim Gifford <jim@jg555.com>) | |
24 | - dosfsck: remove directory entries pointing to start cluster 0, if they're | |
25 | not "." or ".." entries that should actually point to the root dir | |
26 | (pointed out by Thomas Winkler <twinkler@sysgo.de>) | |
27 | - mkdosfs: new option -h to set number of hidden sectors | |
28 | (thanks to Godwin Stewart <gstewart@spamcop.net>) | |
29 | - all: updated my mail address everywhere... | |
30 | ||
31 | version 2.10 | |
32 | ============ | |
33 | ||
34 | - dosfsck: various 64-bit fixes and removed some warnings by Michal | |
35 | Cihar <mcihar@suse.cz> | |
36 | - mkdosfs: better error message if called without parameters (also | |
37 | suggested by Michal) | |
38 | ||
39 | version 2.9 | |
40 | =========== | |
41 | ||
42 | - dosfsck: if EOF from stdin, exit with error code | |
43 | - dosfsck: Fix potential for "Internal error: next_cluster on bad cluster". | |
44 | - dosfsck: When clearing long file names, don't overwrite the dir | |
45 | entries with all zeros, but put 0xe5 into the first byte. | |
46 | Otherwise, some OSes stop reading the directory at that point... | |
47 | - dosfsck: in statistics printed by -v, fix 32bit overflow in number | |
48 | of data bytes. | |
49 | - dosfsck: fix an potential overflow in "too many clusters" check | |
50 | - dosfsck: fix 64bit problem in fat.c (Debian bug #152769) | |
51 | - dosfsck: allow FAT size > 32MB. | |
52 | - dosfsck: allow for only one FAT | |
53 | - dosfsck: with -v, also check that last sector of the filesystem can | |
54 | be read (in case a partition is smaller than the fs thinks) | |
55 | - mkdosfs: add note in manpage that creating bootable filesystems is | |
56 | not supported. | |
57 | - mkdosfs: better error message with pointer to -I if target is a | |
58 | full-disk device. | |
59 | ||
60 | version 2.8 | |
61 | =========== | |
62 | ||
63 | - dosfsck: Fixed endless loop whenever a volume label was present. | |
64 | ||
65 | version 2.7 | |
66 | =========== | |
67 | ||
68 | - dosfsck: Don't check volume label for bad characters, everything | |
69 | seems to be allowed there... Also ignore duplicate names where one of | |
70 | them is a volume label. | |
71 | ||
72 | version 2.6 | |
73 | =========== | |
74 | ||
75 | - mkdosfs: Added correct heads definition for 2.88M floppies if not | |
76 | created via loopback. | |
77 | - dosfsck: If boot sector and its backup are different (FAT32), offer | |
78 | to write the backup to sector 0. (tnx to Pavel Roskin for this) | |
79 | - For 64 bit alpha, struct bootsector in dosfsck.h must be defined | |
80 | with __attribute__((packed)). | |
81 | - mkdosfs now actually accepts -R option. (tnx to David Kerrawn) | |
82 | - Fixed typo in dosfsck boot.c (recognition of boot signature in FSINFO) | |
83 | - Various compilation fixes for 2.4 kernel headers and for ia64. | |
84 | ||
85 | version 2.5 | |
86 | =========== | |
87 | ||
88 | - The llseek() implementation for alpha didn't really work; fixed it. | |
89 | ||
90 | version 2.4 | |
91 | =========== | |
92 | ||
93 | - Fix compiling problem on alpha (made a silly typo...) | |
94 | ||
95 | version 2.3 | |
96 | =========== | |
97 | ||
98 | - mkdosfs: Fixed usage message (printed only "bad address"). | |
99 | - both: made man pages and usage statements more consistent. | |
100 | - both: fix llseek function for alpha. | |
101 | - dosfsck: fix reading of unaligned fields in boot sector for alpha. | |
102 | - dosfsck: fixed renaming of files (extension wasn't really written). | |
103 | ||
104 | version 2.2 | |
105 | =========== | |
106 | ||
107 | - Added dosfsck/COPYING, putting dosfsck officially under GPL (Werner | |
108 | and I agree that it should be GPL). | |
109 | - mkdosfs: Allow creation of a 16 bit FAT on filesystems that are too | |
110 | small for it if the user explicitly selected FAT16 (but a warning | |
111 | is printed). Formerly, you got the misleading error message "make | |
112 | the fs a bit smaller". | |
113 | - dosfsck: new option -y as synonym for -y; for compability with | |
114 | other fs checkers, which also accept this option. | |
115 | - dosfsck: Now prints messages similar to e2fsck: at start version | |
116 | and feature list; at end number of files (and directories) and | |
117 | number of used/total clusters. This makes the printouts of *fsck at | |
118 | boot time nicer. | |
119 | - dosfsck: -a (auto repair) now turns on -f (salvage files), too. -a | |
120 | should act as non-destructive as possible, so lost clusters should | |
121 | be assigned to files. Otherwise the data in them might be | |
122 | overwritten later. | |
123 | - dosfsck: Don't drop a directory with lots of bad entries in | |
124 | auto-repair mode for the same reason as above. | |
125 | - dosfsck: avoid deleting the whole FAT32 root dir if something is | |
126 | wrong with it (bad start cluster or the like). | |
127 | - general: also create symlinks {mkfs,fsck}.vfat.8 to the respective | |
128 | real man pages. | |
129 | ||
130 | version 2.1 | |
131 | =========== | |
132 | ||
133 | - Fix some forgotten loff_t's for filesystems > 4GB. (Thanks to | |
134 | <ki@kretz.co.at>). | |
135 | - Fix typo in mkdosfs manpage. | |
136 | - Removed inclusion of <linux/loop.h> from mkdosfs.c; it's unnecessary and | |
137 | caused problems in some environments. | |
138 | - Fix condition when to expect . and .. entries in a directory. (Was | |
139 | wrong for non-FAT32 if first entry in root dir was a directory also.) | |
140 | - Also create mkfs.vfat and fsck.vfat symlinks, so that also | |
141 | filesystems listed with type "vfat" in /etc/fstab can be | |
142 | automatically checked. | |
143 | ||
144 | version 2.0 | |
145 | =========== | |
146 | ||
147 | - merge of mkdosfs and dosfstools in one package | |
148 | - new maintainer: Roman Hodek <Roman.Hodek@informatik.uni-erlangen.de> | |
149 | - FAT32 support in both mkdosfs and dosfsck | |
150 | - VFAT (long filename) support in dosfsck | |
151 | - Support for Atari variant of MS-DOS filesystem in both tools | |
152 | - Working support for big-endian systems in both tools | |
153 | - Better support for loop devices in mkdosfs: usual floppy sizes are | |
154 | detected and media byte etc. set accordingly; if loop fs has no | |
155 | standard floppy size, use hd params | |
156 | (mainly by Giuliano Procida <gpp10@cus.cam.ac.uk>) | |
157 | - Removed lots of gcc warnings | |
158 | - Fixed some minor calculation bugs in mkdosfs. | |
159 | ||
160 | For change logs previous to 2.0, see the CHANGES files in the subdirectories. |
0 | 28th January 1995 H. Peter Anvin (hpa@yggdrasil.com) | |
1 | ||
2 | Better algorithm to select cluster sizes on large filesystems. | |
3 | Added bogus boot sector code that on attempts to boot prints a | |
4 | message (which can be chosen at mkdosfs time) and lets the user | |
5 | press any key and try again. Corrected support for 1.2 Mb | |
6 | floppies. mkdosfs now generates the extended bootsector | |
7 | (superblock) format of DOS 3.3+, with support for volume ID's and | |
8 | volume labels (volume labels are also written to the root | |
9 | directory, as they should). | |
10 | ||
11 | 18th February 1994 Dave Hudson (dave@humbug.demon.co.uk) | |
12 | ||
13 | Released version 0.2 - clears a bug in the FAT sizing code. | |
14 | ||
15 | 1st September 1993 Dave Hudson (dave@humbug.demon.co.uk) | |
16 | ||
17 | Released version 0.1 - ALPHA release of mkdosfs |
0 | dosfsck, version 1 | |
1 | ================== | |
2 | ||
3 | WARNING: This is ALPHA test software. Use at your own risk. | |
4 | ||
5 | dosfsck is the Linux equivalent of PC/MS-DOS' CHKDSK. It checks the | |
6 | consistency of PC/MS-DOS filesystems and optionally tries to repair | |
7 | them. The tests dosfsck performs are described in the man page. | |
8 | ||
9 | dosfsck needs header files from dosfs.9 (or later) to compile. | |
10 | ||
11 | Before using dosfsck to repair a filesystem that contains data of any | |
12 | value, you should verify that dosfsck is able to correct all reported | |
13 | errors. (Except fatal errors and those reported as unfixable, of | |
14 | course.) In order to do this, run it with the -V option, e.g. | |
15 | ||
16 | dosfsck -V /dev/sda1 (automatic check) | |
17 | or dosfsck -V -r /dev/sda1 (interactive check and repair) | |
18 | ||
19 | dosfsck will perform two passes: in the first pass, inconsistencies are | |
20 | detected and a list of changes to correct the problems is generated. In | |
21 | the second pass, those changes are applied whenever dosfsck reads data | |
22 | from disk. Hence no fixable errors should be reported in the second | |
23 | pass if the first pass was successful. | |
24 | ||
25 | Please notify the author if fixable errors are reported in the second | |
26 | pass. | |
27 | ||
28 | After verifying that dosfsck appears to be able to perform the desired | |
29 | operations, either confirm that you want the changes to be performed | |
30 | (if dosfsck was started with -r) or re-run dosfsck with the -a option | |
31 | (if it was started without -r). | |
32 | ||
33 | Please send bug reports, comments, flames, etc. to | |
34 | almesber@nessie.cs.id.ethz.ch or almesber@bernina.ethz.ch | |
35 | ||
36 | - Werner | |
37 | ||
38 | FAT32 and LFN support | |
39 | ===================== | |
40 | ||
41 | I've finally implemented some of the new features of MS-DOS | |
42 | filesystems: FAT32 and long filenames. | |
43 | ||
44 | FAT32 is automatically detected and of course the different FAT | |
45 | structure is handled. (Internally many changes were needed, so 32 bit | |
46 | variables for all cluster numbers and 64 bit vars for offsets inside | |
47 | the filesystem.) New checks for FAT32 are most notably on the backup | |
48 | boot sector and the new info sector. Also the possibility that the | |
49 | root directory resides in a cluster chain (instead of in a static | |
50 | area) on FAT32 is handled. | |
51 | ||
52 | dosfscheck also knows about VFAT long filenames now. It parses those | |
53 | names and uses them in listings etc. when available. There are also | |
54 | some checks on the (cruel) structure of how LFNs are stored and some | |
55 | attempts to fix problems. | |
56 | ||
57 | - Roman <roman@hodek.net> | |
58 | ||
59 | BTW, version 2 isn't ALPHA anymore :-) |
0 | ||
1 | Atari format support | |
2 | ==================== | |
3 | ||
4 | Both mkdosfs and dosfsck now can also handle the Atari variation of | |
5 | the MS-DOS filesystem format. The Atari format has some minor | |
6 | differences, some caused by the different machine architecture (m68k), | |
7 | some being "historic" (Atari didn't change some things that M$ | |
8 | changed). | |
9 | ||
10 | Both tools automatically select Atari format if they run on an Atari. | |
11 | Additionally the -A switch toggles between Atari and MS-DOS format. | |
12 | I.e., on an Atari it selects plain DOS format, on any other machine it | |
13 | switches to Atari format. | |
14 | ||
15 | The differences are in detail: | |
16 | ||
17 | - Atari TOS doesn't like cluster sizes != 2, so the usual solution | |
18 | for bigger partitions was to increase the logical sector size. So | |
19 | mkdosfs can handle sector sizes != 512 now, you can also manually | |
20 | select it with the -S option. On filesystems larger than approx. 32 | |
21 | MB, the sector size is automatically increased (stead of the | |
22 | cluster size) to make the filesystem fit. mkdosfs will always use 2 | |
23 | sectors per cluster (also with the floppy standard configurations), | |
24 | except when directed otherwise on the command line. | |
25 | ||
26 | - From the docs, all values between 0xfff8 and 0xffff in the FAT mark | |
27 | an end-of-file. However, DOS usually uses 0xfff8 and Atari 0xffff. | |
28 | This seems to be only an consmetic difference. At least TOS doesn't | |
29 | complain about 0xffff EOF marks. Don't know what DOS thinks of | |
30 | 0xfff8 :-) Anyway, both tools use the EOF mark common to the | |
31 | system (DOS/Atari). | |
32 | ||
33 | - Something similar of the bad cluster marks: On Atari the FAT values | |
34 | 0xfff0 to 0xfff7 are used for this, under DOS only 0xfff7 (the | |
35 | others can be normal cluster numbers, allowing 7 more clusters :-) | |
36 | However, both systems usually mark with 0xfff7. Just dosfsck has to | |
37 | interpret 0xfff0...0xfff7 differently. | |
38 | ||
39 | - Some fields in the boot sector are interpreted differently. For | |
40 | example, Atari has a disk serial number (used to aid disk change | |
41 | detection) where DOS stores the system name; the 'hidden' field is | |
42 | 32 bit for DOS, but 16 bit for Atari, and there's no 'total_sect' | |
43 | field; the 12/16 bit FAT decision is different: it's not based on | |
44 | the number of clusters, but always FAT12 on floppies and FAT16 on | |
45 | hard disks. mkdosfs nows about these differences and constructs the | |
46 | boot sector accordingly. | |
47 | ||
48 | - In dosfsck, the boot sector differences also have to known, to not | |
49 | warn about things that are no error on Atari. In addition, most | |
50 | Atari formatting tools fill the 'tracks' and 'heads' fields with 0 | |
51 | for hard disks, because they're meaningless on SCSI disks (Atari | |
52 | has/had no IDE). Due to this, the check that they should be | |
53 | non-zero is switched off. | |
54 | ||
55 | - Under Atari TOS, some other characters are illegal in filenames: | |
56 | '<', '>', '|', '"', and ':' are allowed, but all non-ASCII chars | |
57 | (codes >= 128) are forbidden. | |
58 | ||
59 | - Roman <Roman.Hodek@informatik.uni-erlangen.de> |
0 | mkdosfs - Make DOS filesystem utilty. | |
1 | ||
2 | ||
3 | I wrote this, partially to complement the dosfsck utility written by Werner | |
4 | Almesberger (who graciously gave me some pointers when I asked for some | |
5 | advice about writing this code), and also to avoid me having to boot DOS | |
6 | just to create data partitions (I use Linux to back up DOS :-) ). | |
7 | ||
8 | The code is really derived from Remy Card's mke2fs utility - I used this as a | |
9 | framework, although all of the filesystem specific stuff was removed and the | |
10 | DOS stuff inserted. I believe originally mke2fs was based on Linus' mkfs | |
11 | code, hence the acknowledgements in the source code. | |
12 | ||
13 | Neither Remy nor Linus have had any involvement with mkdosfs, so if there are | |
14 | any bugs they're almost certainly "all my own work". | |
15 | ||
16 | The code has been available for ftp since 1st September 1993, and I have yet | |
17 | to receive any bug reports from users. I don't know of any bugs, but if you | |
18 | do find a bug or have any constructive comments, please mail me! | |
19 | ||
20 | The only bug I found with version 0.1 was an obscure fault that could lead | |
21 | to an invalid (for MS-DOS, not Linux's dos fs) number of sectors used in the | |
22 | file allocation table(s). | |
23 | ||
24 | ||
25 | Dave Hudson | |
26 | dave@humbug.demon.co.uk | |
27 | ||
28 | ||
29 | FAT32 support | |
30 | ============= | |
31 | ||
32 | mkdosfs now can also create filesystems in the new FAT32 format. To do | |
33 | this, give mkdosfs a "-F 32" option. FAT32 isn't selected | |
34 | automatically (yet), even if very large clusters are needed with | |
35 | FAT16. With FAT32 you have two additional options, -R to select the | |
36 | number of reserved sectors (usually 32), and -b to select the location | |
37 | of the backup boot sector (default 6). Of course such a backup is | |
38 | created, as well as the new info sector. On FAT32, the root directory | |
39 | is always created as a cluster chain. Sorry, there's no switch to | |
40 | generate an old static root dir. | |
41 | ||
42 | One bigger bug fix besides FAT32 was to reject filesystems that need a | |
43 | 16 bit FAT to fit all possible clusters, but the bigger FAT needs some | |
44 | more sectors, so the total number of clusters drop below the border | |
45 | where MS-DOS expects a 12 bit FAT. So such filesystems would be FAT16, | |
46 | but interpreted as FAT32 by DOS. The fix is to reduce filesystem size | |
47 | a bit. | |
48 | ||
49 | - Roman <roman@hodek.net> |
0 | -*- mode: indented-text -*- | |
1 | ||
2 | - dosfsck: Better checking of file times: ctime <= mtime <= atime | |
3 | ||
4 | - mkdosfs: If /etc/bootsect.dos (or similar) exists, use it as a | |
5 | template for generating boot sectors. This way, you can, e.g., make | |
6 | bootable DOS disks. | |
7 | ||
8 | Addendum: Don't know if that's so wise... There are really many | |
9 | variants of DOS/Windows bootcode out in the wild, and the code is | |
10 | proprietary, too. | |
11 | ||
12 | - dosfsck: read-only sector test (-t without -a or -r); just print | |
13 | out errors. |
28 | 28 | mkfs_common_sources = device_info.c device_info.h \ |
29 | 29 | blkdev/blkdev.c blkdev/blkdev.h \ |
30 | 30 | blkdev/linux_version.c blkdev/linux_version.h |
31 | mkfs_fat_SOURCES = mkfs.fat.c $(mkfs_common_sources) | |
31 | mkfs_fat_SOURCES = mkfs.fat.c msdos_fs.h $(mkfs_common_sources) | |
32 | 32 | mkfs_fat_CFLAGS = $(AM_CFLAGS) $(UDEV_CFLAGS) -Iblkdev |
33 | 33 | mkfs_fat_LDFLAGS = $(UDEV_LIBS) |
34 | 34 |
312 | 312 | blkdev/blkdev.c blkdev/blkdev.h \ |
313 | 313 | blkdev/linux_version.c blkdev/linux_version.h |
314 | 314 | |
315 | mkfs_fat_SOURCES = mkfs.fat.c $(mkfs_common_sources) | |
315 | mkfs_fat_SOURCES = mkfs.fat.c msdos_fs.h $(mkfs_common_sources) | |
316 | 316 | mkfs_fat_CFLAGS = $(AM_CFLAGS) $(UDEV_CFLAGS) -Iblkdev |
317 | 317 | mkfs_fat_LDFLAGS = $(UDEV_LIBS) |
318 | 318 | testdevinfo_SOURCES = testdevinfo.c $(mkfs_common_sources) |
28 | 28 | #include <stdint.h> |
29 | 29 | #include <string.h> |
30 | 30 | #include <stdlib.h> |
31 | #include <sys/types.h> | |
31 | 32 | #include <time.h> |
32 | 33 | |
33 | 34 | #include "common.h" |
27 | 27 | #ifndef _DOSFSCK_H |
28 | 28 | #define _DOSFSCK_H |
29 | 29 | |
30 | #include <sys/types.h> | |
30 | 31 | #include <fcntl.h> |
31 | 32 | #include <stddef.h> |
32 | 33 | #include <stdint.h> |