xfs
[Top] [All Lists]

Re: grub disaster with FC4 & XFS

To: Aly Dharshi <aly.dharshi@xxxxxxxxx>
Subject: Re: grub disaster with FC4 & XFS
From: Net Llama! <netllama@xxxxxxxxxxxxx>
Date: Fri, 30 Sep 2005 10:28:38 -0500 (EST)
Cc: linux-xfs@xxxxxxxxxxx
In-reply-to: <433D533D.7060404@xxxxxxxxx>
References: <433D1236.4070602@xxxxxxxxxxxxxxxxxx> <433D533D.7060404@xxxxxxxxx>
Sender: linux-xfs-bounce@xxxxxxxxxxx
RH's anaconda folks have already stated that XFS is 100% unsupported, and
they have refused to do anything to fix any problems with it, including
ignoring my question as to why they're shipping XFS support in FC if they
have no intention of fixing its bugs.

On Fri, 30 Sep 2005, Aly Dharshi wrote:

> Woudl you be able to send this as a patch to the RedHat Anaconda folks,
> this would greatly assist in future FC installs. Unless they know about
> it already.
>
> James Pearson wrote:
> >> On 07/04/2005 01:22 PM, Ethan Benson wrote:
> >>
> >>> On Mon, Jul 04, 2005 at 01:54:40PM +0100, James Pearson wrote:
> >>>
> >>>> >Not sure if anyone is aware of this mess of a bug:
> >>>> >https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=160444
> >>>> >
> >>>> >Basically grub pukes all over itself when trying to interact with
> >>>> XFS >filesystems, resulting in an unbootable, or barely bootable FC4
> >>>> >installation.
> >>>> >
> >>>> >Any gurus here know of a solution?
> >>>> >
> >>>> >Yes, i know, this is really a FC/grub issue, but since its specific
> >>>> to >XFS, i thought someone might have run into it and found a
> >>>> workaround >and/or fix.
> >>>>
> >>>> Not sure if this is connected, but the FC installer (anaconda) uses
> >>>> the code in 'booty' to install the bootloader - this has a work
> >>>> around for grub on XFS which uses xfs_freeze - see the thread that
> >>>> starts with:
> >>>>
> >>>> http://marc.theaimsgroup.com/?l=linux-xfs&m=108009684613605&w=2
> >>>
> >>>
> >>> which is a kludge, and an unecessary one at that.
> >>>
> >>> if you install grub as followes it does not modify XFS filesystems via
> >>> raw devices, but instead through the standard unix interfaces:
> >>>
> >>> embed /boot/grub/xfs_stage1_5 (hd0)
> >>>
> >>> xx sectors embedded.
> >>>
> >>> install --stage2=/boot/grub/stage2 /boot/grub/stage1 (hd0) (hd0)1+xx
> >>> p (hd0,1)/boot/grub/stage2 /etc/grub.conf
> >>>
> >>> note the xx in the first message is the value you need to use in the
> >>> (hd0)1+xx part above.  the last argument is the path to the config
> >>> file you can have that where you like.
> >>>
> >>> what should be done is rewrite the setup command in grub to perform
> >>> the above, instead of the broken method it currently uses.
> >>>
> >>
> >> Actually, the command you noted above is what the FC4 installer was
> >> trying to do when grub went south.
> >>
> >> I did finally manage to fix this mess by booting with knoppix, purging
> >> everything in /boot/grub, repopulating with the templates that ship
> >> with grub, and running 'setup (hd0)' again.  I have no clue why all of
> >> that was neccesary.
> >
> >
> > To follow up on this - I think I might have a work round for this
> > XFS/grub/RedHat installer problem -
> >
> > Based on a comment in another thread:
> >
> > http://marc.theaimsgroup.com/?l=linux-xfs&m=112096901910385&w=2
> >
> > remounting the file system that contains /boot read-only and then
> > read-write before running the grub install command appears to work fine.
> >
> > I've attached a patch below to RedHat's 'booty' package if anyone is
> > interested
> >
> > James Pearson
> >
> >
> >
> >
> >
> > ------------------------------------------------------------------------
> >
> > Patch to make grub install on an XFS filesystem when using the RedHat
> > anaconda installer
> >
> > Patch works by remounting the XFS file system containing /boot read-only
> > and then read-write based on an idea from:
> >
> > http://marc.theaimsgroup.com/?l=linux-xfs&m=112096901910385&w=2
> >
> > The patch should work with most recent versions of booty i.e. Fedora Core
> > 2, 3 and 4, RHEL4, CentOS4  etc.
> >
> > This patch can either be used to patch the booty SRPM, rebuild the RPM and
> > then rebuild the installer, or just used to create an 'update' for the
> > installer - to do this:
> >
> > Install the booty RPM
> >
> > cd /usr/lib/booty
> > patch -p1 < this_file
> >
> > This will patch 'bootloaderInfo.py'
> >
> > If you install over NFS, then create a directory at the top level of
> > the install tree called 'RHupdates' and copy in bootloaderInfo.py to
> > this directory. The anaconda installer will look here by default when
> > doing NFS installs.
> >
> > If installing via other methods, then you need to create an updates floppy,
> > CD or USB drive - for a floppy disk, do something like:
> >
> > mkfs -t ext2 /dev/fd0
> > mount /media/floppy (or /mnt/floppy or whatever)
> > cp /usr/lib/booty/bootloaderInfo.py /media/floppy
> > umount /media/floppy
> >
> > Then, at the installer 'boot:' prompt, type:
> >
> > boot: linux updates
> >
> > This will prompt you to insert the update floppy and the installer will use
> > the new bootloaderInfo.py
> >
> > The CD and USB disk update disks (probably) work in a similar way (not 
> > tested)
> >
> > James Pearson <james-p@xxxxxxxxxxxxxxxxxx>
> >
> >
> > *** ./bootloaderInfo.py.dist        2005-05-11 16:41:51.000000000 +0100
> > --- ./bootloaderInfo.py     2005-09-29 12:16:11.117385013 +0100
> > ***************
> > *** 49,71 ****
> >   # there's no guarantee that data is written to the disk and grub
> >   # reads both the filesystem and the disk.  suck.
> >   def syncDataToDisk(dev, mntpt, instRoot = "/"):
> > !     import isys, fsset
> >       isys.sync()
> >       isys.sync()
> >       isys.sync()
> >
> > !     # and xfs is even more "special" (#117968)
> >       if fsset.isValidXFS(dev):
> > !         rhpl.executil.execWithRedirect( "/usr/sbin/xfs_freeze",
> > !                                         ["/usr/sbin/xfs_freeze", "-f", 
> > mntpt],
> > !                                         stdout = "/dev/tty5",
> > !                                         stderr = "/dev/tty5",
> > !                                         root = instRoot)
> > !         rhpl.executil.execWithRedirect( "/usr/sbin/xfs_freeze",
> > !                                         ["/usr/sbin/xfs_freeze", "-u", 
> > mntpt],
> > !                                         stdout = "/dev/tty5",
> > !                                         stderr = "/dev/tty5",
> > !                                         root = instRoot)
> >
> >   class BootyNoKernelWarning:
> >       def __init__ (self, value=""):
> > --- 49,84 ----
> >   # there's no guarantee that data is written to the disk and grub
> >   # reads both the filesystem and the disk.  suck.
> >   def syncDataToDisk(dev, mntpt, instRoot = "/"):
> > !     import isys, fsset, _isys
> >       isys.sync()
> >       isys.sync()
> >       isys.sync()
> >
> > !     # for XFS make sure the data is _really_ sync'd to disk by remounting
> > !     # /boot first read-only and then read-write - idea from:
> > !     # http://marc.theaimsgroup.com/?l=linux-xfs&m=112096901910385&w=2
> > !     # James Pearson MPC 29-sep-2005
> >       if fsset.isValidXFS(dev):
> > !         fstype = "xfs"
> > !         device = "/tmp/%s" % dev
> > !         location = "%s%s" % (instRoot, mntpt)
> > !         readOnly = 1
> > !         bindMount = 0
> > !         remount = 1
> > !         log("remounting %s on %s read-only" % (device, location))
> > !         # remount the boot partition as read-only
> > !         rc = _isys.mount(fstype, device, location, readOnly, bindMount, 
> > remount)
> > !
> > !         # if the remount fails, then we should really do something else 
> > e.g.
> > !         # sleep for a few minutes? - for the time being we'll just log the
> > !         # return
> > !         log("remount return: %s (None == OK)" % rc)
> > !
> > !         # now remount as read-write
> > !         readOnly = 0
> > !         log("remounting %s on %s read-write" % (device, location))
> > !         rc = _isys.mount(fstype, device, location, readOnly, bindMount, 
> > remount)
> > !         log("remount return: %s (None == OK)" % rc)
> >
> >   class BootyNoKernelWarning:
> >       def __init__ (self, value=""):
>
>

-- 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lonni J Friedman                        netllama@xxxxxxxxxxxxx
LlamaLand                               http://netllama.linux-sxs.org


<Prev in Thread] Current Thread [Next in Thread>