[CentOS] Re: RedHat changes to remove file system support

Tue Aug 16 12:22:51 UTC 2005
James Pearson <james-p at moving-picture.com>

Johnny Hughes wrote:
> On Mon, 2005-08-15 at 21:03 -0400, Shawn M. Jones wrote:
> 
>>Fong Vang wrote:
>>
>>
>>>I thought my question was very specific: what did RedHat remove from
>>>Anaconda to remove support for other journaling system except ext3
>>>considering RHEL is based on Fedora?  You just kinda assume I didn't
>>>do the due deligence to find on a search engine first.
>>>
>>>Okay, let me state it again more clearl.  I'm looking for a way to
>>>directly support other journaling file systems (not just ext3) in
>>>Anaconda itself.  Just wondering if anyone has done it already.  If
>>>not, I can do it myself, that's fine.
>>> 
>>>
>>
>>Well, the Red Hat kernel is not compiled to support JFS or ReiserFS.  
>>You will need to either adapt the CentOSPlus kernel, or roll your own.  
>>I've noticed that the kernel on the install CDs does act differently 
>>than the one included with the distribution, so you might want to roll 
>>your own, or at least figure out what the differences are before trying.
> 
> 
> If you put the CentOSPlus kernel and kernel-devel in the RPMS directory
> and remove the others and use the build script, it will use that kernel
> for install.
> 
> 
>>On top of this, you will need to make modifications to anaconda to 
>>support the new filesystems.  For all I know this could be just adding 
>>them to a hash table or something in the code.
>>
> 
> 
> Not sure about this ...
> 
> 
>>And in order for anaconda to work properly, you'll need the userspace 
>>tools for those added filesystems.
>>
> 
> 
> This would probably be the hardest part.  You need to not only have a
> kernel that works, but also add executables that don't already exist to
> the bin directory for anaconda ... and incorporate that into the current
> GUI and curses disk druid.

It's not too hard to do - I've done it.

The RHEL/CentOS4 anaconda has (nearly) all the support for XFS (don't 
know about JFS or ReiserFS, but I think it's there).

You can boot the installer with the syslinux command line parameter 
'xfs' i.e.

linux text xfs (etc.)

However, as stated earlier, you need the CentosPlus kernel and the 
xfsprogs RPMS in your install tree when you re-make the installer.

Unfortunately, the grub install fails when /boot is on an XFS partition, 
- anaconda/booty do have workarounds for XFS /boot partitions, but they 
use/need /usr/sbin/xfs_freeze and /usr/sbin/xfs_io which are not 
included in the stage2 images by default - I've patched anaconda as 
follows to add these:

*** anaconda-10.1.1.19/scripts/upd-instroot.dist        2004-10-26 
13:29:09.0000
00000 +0100
--- anaconda-10.1.1.19/scripts/upd-instroot     2005-06-28 
12:45:56.041873519 +0
100
***************
*** 314,319 ****
--- 314,321 ----
   usr/sbin/xfs_db
   usr/sbin/xfs_check
   usr/sbin/xfs_copy
+ usr/sbin/xfs_freeze
+ usr/sbin/xfs_io
   usr/X11R6/share/Xconfigurator/MonitorsDB
   usr/bin/python
   usr/bin/python?.?

I've also patched anacoda to use XFS as one of it's default filesystems 
(don't need to give 'xfs' as a boot command line parameter):

*** anaconda-10.1.1.13/fsset.py.dist    2004-12-14 21:25:04.000000000 +0000
--- anaconda-10.1.1.13/fsset.py 2005-06-08 11:49:30.698981214 +0100
***************
*** 406,421 ****
           # at the boot: prompt will let you make new xfs filesystems
           # in the installer.  Bugs filed when you use this will be closed
           # WONTFIX.
!         try:
!             f = open("/proc/cmdline")
!             line = f.readline()
!             if string.find(line, " xfs") != -1:
!                 self.supported = -1
!             else:
!                 self.supported = 0
!             del f
!         except:
!             self.supported = 0

           self.packages = [ "xfsprogs" ]

--- 406,413 ----
           # at the boot: prompt will let you make new xfs filesystems
           # in the installer.  Bugs filed when you use this will be closed
           # WONTFIX.
!
!         self.supported = -1

           self.packages = [ "xfsprogs" ]


Hope this helps

James Pearson