yaya (a grub4dos developer) has fixed a long-standing problem with grub4dos with the latest 0.4.6a version (2015-05-08). E2B 1.67 Beta D uses this new version of \grldr.
In all previous versions, grub4dos could not write to small files on an NTFS volume. This was due to the way that NTFS stores the data of small files inside it's 'directory' record. This type of data is called resident data. Once the file exceeds the available space in the resident area (typically between 700 and 800 bytes) then it stores all the data in clusters outside of this area (the data space in the resident area is thus unused and used to store the used cluster information, if the file is larger than 800-ish bytes).
Older versions of grub4dos could not update the resident data area:
e.g.
Note that grub4dos still cannot write more bytes than was originally contained in the file - i.e. you cannot overwrite a file containing 300 bytes with 301 bytes - the last byte will not be written.
You can detect these small 'resident data' NTFS files using the blocklist command:
f700 is a 700 byte resident file and does not list any used sectors.
f800 is an 800 byte files and lists two used 512-byte sectors.
Note that it is possible for a small file (e.g. 100 bytes) to be a non-resident file. This usually occurs when a larger, non-resident file has been reduced in length (e.g. a 900-byte file has been edited to be 100 bytes and saved as the same file).
The latest version of grub4dos shows the position of the resident data.
In all previous versions, grub4dos could not write to small files on an NTFS volume. This was due to the way that NTFS stores the data of small files inside it's 'directory' record. This type of data is called resident data. Once the file exceeds the available space in the resident area (typically between 700 and 800 bytes) then it stores all the data in clusters outside of this area (the data space in the resident area is thus unused and used to store the used cluster information, if the file is larger than 800-ish bytes).
Older versions of grub4dos could not update the resident data area:
e.g.
echo fred > file300bytes.txtdid not work with older versions of grub4dos, but now it does!
Note that grub4dos still cannot write more bytes than was originally contained in the file - i.e. you cannot overwrite a file containing 300 bytes with 301 bytes - the last byte will not be written.
You can detect these small 'resident data' NTFS files using the blocklist command:
f700 is a 700 byte resident file and does not list any used sectors.
f800 is an 800 byte files and lists two used 512-byte sectors.
Note that it is possible for a small file (e.g. 100 bytes) to be a non-resident file. This usually occurs when a larger, non-resident file has been reduced in length (e.g. a 900-byte file has been edited to be 100 bytes and saved as the same file).
The latest version of grub4dos shows the position of the resident data.