xfs
[Top] [All Lists]

Re: xfs 1.1

To: Michael Best <mbest@xxxxxxxxxxxxx>
Subject: Re: xfs 1.1
From: Eric Sandeen <sandeen@xxxxxxx>
Date: 31 May 2002 17:35:49 -0500
Cc: linux-xfs@xxxxxxxxxxx
In-reply-to: <3CF7F2DD.50605@xxxxxxxxxxxxx>
References: <3A05DACD2733D511BA0500902798AEDFAB38C2@xxxxxxxxxxxxxxxxxxxxxx> <1022881809.6147.14.camel@xxxxxxxxxxxxxxxxxxxxxx> <3CF7F2DD.50605@xxxxxxxxxxxxx>
Sender: owner-linux-xfs@xxxxxxxxxxx
On Fri, 2002-05-31 at 17:02, Michael Best wrote:
> Is it self building so to speak, ie the contents of the image contain 
> the method for making the iso?

Hm, no.  I guess I really should document the build procedure, if I ever
want to get out of this job.  :)  Hopefully I'll put up a better
explanation at some point, but basically...

First, of course, the anaconda code needs to know about XFS.  Most of it
is already in there; there's a 1 line change to actually enable it. 
There are a couple other tweaks, look at the patch in the anaconda SRPM
to see them.  Lots of it is just lawyer fluff about how this is not
stock Red Hat.  Other changes are for teaching it about the 4th disk,
disallowing lilo on the boot partition, etc.

Since RPMs were added/replaced for this distribution, you need to create
a new hdlist to tell anaconda what RPMs are where.

I created
genhdlist/rh_disc1/RedHat/RPMS
genhdlist/rh_disc2/RedHat/RPMS
genhdlist/rh_disc2/RedHat/RPMS
genhdlist/sgi_disc4/RedHat/RPMS

and populated them with the RPMs from each of those disks.  Since new
kernels were in genhdlist/sgi_disc4/RedHat/RPMS, kernel RPMs were
removed from the red hat directories.  Same for anaconda.  Then run
hdlist against this tree:

        anaconda/anaconda-xfs/utils/genhdlist --withnumbers \
        --hdlist  bootGen/RedHat/base/hdlist \
        `pwd`/genhdlist/rh_disc1 \
        `pwd`/genhdlist/rh_disc2 \
        `pwd`/genhdlist/rh_disc3 \
        `pwd`/genhdlist/sgi_disc4

This deposits the hdlist into bootGen/RedHat/base/hdlist, where
"bootGen" is a tree used to generate the boot disk.  It looks like:

bootGen/RedHat/base
bootGen/RedHat/RPMS/

and the directory is full of symlinks into the genhdlist RPMS
directories; i.e. symlinks to every RPM in the distribution.  Anaconda
uses this to build the build environment, like so:

BOOTGEN         = /mnt/sda4/bootGen
buildimg:
        (cd anaconda/anaconda-xfs/scripts; ./buildinstall  ${BOOTGEN} )


Anaconda will expand the RPMs it needs for it's runtime, and populate
/mnt/sda4/bootGen with the files needed for the boot cd; i.e. dosutils
and images.

Now the bootGen directory looks like this:

bootGen/
|-- RedHat
|   |-- RPMS
|   `-- base
|-- dosutils
|   `-- autoboot
`-- images
    |-- de
    |-- es
    |-- fr
    |-- it
    |-- ja
    `-- pxeboot


Finally, more symlinks to create the root of the actual install disk:

[sandeen@stout sda4]$ tree sgiInstall/
sgiInstall/
|-- RedHat
|   |-- RPMS -> ../../genhdlist/sgi_disc4/RedHat/RPMS/
|   `-- base -> ../../bootGen/RedHat/base/
|-- SRPMS -> ../genhdlist/sgi_disc4/RedHat/SRPMS/
|-- dosutils -> ../bootGen/dosutils/
`-- images -> ../bootGen/images/

This picks up the runtime environment (RedHat/base), boot images
(images), RPMS (RedHat/RPMS) and SRPMS (not necessary for the installer,
but included).

Then create an ISO against the sgiInstall directory:

MKISOFS = mkisofs
ISO = xfs-`date "+%b%d-%H"`.iso 
isofs:
        $(MKISOFS) -V "SGI XFS 1.1"  \
        -P SGI -p "xfs-masters@xxxxxxxxxxx" \
        -A "SGI Linux XFS 1.1 RH7.3 Installer" \
        -b dosutils/autoboot/cdboot.img \
        -c boot.cat -J -l -f -r -T  \
        -o ./$(ISO) sgiInstall

Clear as mud, eh?  :)

-Eric


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