Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have read that GRUB can read ext2 filesystems and has modules for doing this. What is the location of the mod on a Redhat system and how about if the /boot partition is ext3/ext4 or other filesystem type?

share|improve this question

The grub ext2 module also understands ext3 and ext4, as the differences are minimal. The module itself is built into the grub core.img file ( when you are using ext[234] for /boot ), which is normally copied into the sectors following the master boot record, before any partitions start, and the code in the master boot record just loads those subsequent sectors.

share|improve this answer
I certainly wouldn't call the differences minimal. Certainly when compared to ext2 vs. ext3, the changes are significant. (kernelnewbies.org/Ext4) – Magellan Dec 26 '12 at 17:10
@Adrian, they are relatively small, incremental changes that don't require many changes to the code to still be able to read. The only change that really takes any work at all is understanding extents. – psusi Dec 26 '12 at 17:58

To answer the part of your question that's in the subject line, the executable code for this is kept in the initrd image. The initrd image can be loaded directly into the kernel at boot time, which is how the chicken/egg problem is solved for getting the code for reading ext partitions without needing to read the partition.

Regarding the filesystem choice for /boot.

  • Ext3 is backwards compatible with ext2 and primarily introduces journaling.
  • Ext4 is a major revision to the ext filesystem, brings many new features, and is not reversible without restoration of data and rebuilding the filesystem.

I don't really see a need to worry about using ext3/4 on /boot. I usually don't even bother with a separate /boot on my virtual machines and it works just fine as a part of my ext4 partitions. I wouldn't worry about using ext2 without journaling on /boot either, as you're not likely to have outstanding write operations going on in the /boot filesystem during a power cut unless you're upgrading your kernel.

The modules are kept in the usual place: /lib/modules//kernel/fs/. They're compiled into the initrd image for use by the kernel at boot time.

Update: Haven't found an official RedHat statement, but it's noted in Michael Jang's book that RHEL 6 no longer ext2 for /boot as ext4 is perfectly adequate and now the default filesystem for /boot. The Jang book also states that there are effectively NO differences between ext2 vs. ext3 except for journaling.

share|improve this answer
This misses the question. The initrd holds files that allow the kernel to access the root filesystem, not grub. – psusi Dec 26 '12 at 2:49

Grub (0.9x) supports ext2 and ext3 but not ext4 (unless backward-incompatible features are turned-off).

Whereas, Grub2 (since 1.97) supports ext2, ext3 and ext4 with the same module [ext2.mod] which is located at /boot/grub2/i386-pc/ in Fedora 17 (32-bit)

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.