Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
While debugging #2678 it was found that the ELKS 360k FAT floppy distribution images would not boot, due to the architecture of the fake FAT /dev mechanism in the kernel. Occurring only in certain FAT floppies formatted to DOS with a small FAT table (< 5, but all 360k FAT floppies produced by ELKS builds), the FAT /dev and sometimes /bin directories were corrupted, causing boot failure.
On FAT filesystems, the "inode" number happens to be the block number of the sector containing the directory entry, since FAT doesn't actually implement inodes. When the FAT table is small, then certain directory entries were at block numbers that were small enough to trigger the /dev emulation, in this case, turning both /bin and /dev into character devices from the internal table. The code was rewritten to use a very high inode number (0xFFFFFF00) for faked /dev entries, which will work with both small and very large FAT images.
This problem seems to have occurred prior to the release of both v0.9.0 and was not fixed in v0.9.1, so it is likely that yet another small release (v0.9.2) should come soon, for those users that might want to boot a 360k FAT floppy. The problem is independent of using the BIOS or direct floppy driver in the kernel.
This PR also increments the ELKS version number to v0.9.2-dev.