Wednesday, December 23, 2009

Using ext4 when compiling your own kernel

My parents finally upgraded to a new computer this past weekend so I took their old one (PIII, 384MB SDRAM) and turned it into a file server. I used gentoo to build it and was surprised how little time it took to actually configure (compiling was a different story...). I had an old 120 GB PATA hard drive lying around so I partitioned it as follows:
  • /dev/sda1 | ext2 | 100MB (/boot)
  • /dev/sda2 | ext4 | 15GB (root)
  • /dev/sda3 | swap | 1GB
  • /dev/sda4 | ext4 | 104GB (/mnt/whatever)
It was all pretty standard: upgrade to sys-devel/gcc-4.4.2 and sys-libs/glibc-2.11-r1, `make menuconfig`'d sys-kernel/hardened-sources-2.6.28-r9, made sure I included baked-in support for ext4, and compiled. After waiting half an hour (literally -- `time make` took ~32 mins!), I rebooted and was welcomed by an unfamiliar message in my system log:
EXT4-fs: dm-5: Filesystem with huge files cannot be mounted read-write without CONFIG_LSF.
Fortunately, my root partition mounted cleanly and the error only applied to /dev/sda4. Googling around*, I discovered that the "huge_file" feature is implicit when running mkfs.ext4. I saw 'CONFIG_LSF' in the kernel config and the documentation said it was only necessary for files 2TB or larger -- clearly nothing I'd need to worry about -- so I didn't include it in the kernel.

Instead of recompiling my kernel, I figured I'd just reformat the partition without huge_file support. Yes, recompiling the kernel would've been a pain, but reformatting seemed like the more ideal/elegant solution -- especially considering this partition was barely 100GB. The default behavior for mke2fs.ext* can be found in /etc/mke2fs.conf (on gentoo, at least), and the culprit looks like this under the ext4 block:
features = has_journal,extents,huge_file,flex_bg,uninit_bg,dir_nlink,extra_isize

* http://old.nabble.com/Bug-509893:-e2fsprogs:-mkfs.ext4-produces-unusable-filesystem-td21193293.html

1 comment:

  1. Update: I ended up using the /mnt/whatever space for music streaming using mt-daapd

    ReplyDelete