Yes compiling the filesystem support into the kernel is one option.
Its a long know problem to do with boot, the kernel boots, and has passed to it a location of the root file system, which in then mounts and starts execution. But what if the filesystem isn't supported by the kernel, then the kernel needs to mount the module that supports that file system. But what if the module is located on that unmounted file system - this is where the problem arises, there is no way to mount the file systems without the file system already mounted ...
Now the tradition solution is an initramfs. What is done is created a little root file systems that must be cpio formated, and the kernel always has support for this simple file system. That little file system has very little on it, really just enough for the kernel to bring up linux on that particular machine. Once linux is up and running, then the little file systems does a change of root, to the main root file system. As the kernel is now bascially up and running, it can load the correct root file system, even if its an odd format.
So what you need to look into is mkinitcpio
https://wiki.archlinux.org/index.php/Mkinitcpio. Basically you'll want to make sure that the cpio file system loads the kernel module needed for mounting the root file system. Its reasonably easy to specify the modules to load, just check the wiki page.