In <URL:news:local.armlinux> on Tue 13 Apr, Ashley Ward wrote:

[snip]
> I can create two partitions using the ideA IDEFormat program (version
> 3.51), one 2Gb large for ARM Linux + swap, the other 6Gb large for RISC
> OS. Now I start the alpha PartMan and enter IDEFS, :4 and :5 appear. If I
> select :4, I get two FileCore partitions listed. Unfortunately it seems to
> be impossible to change one of these partitions to Linux - if I delete
> one, it disappears (I was expecting it to change to the "Free" type). The
> "Edit ^E" and "Initialise..." options are greyed out, as is the "New"
> option.

You don't want to create the Linux partitions with IDEFormat.  Leave some
empty space after the Filecore partitions instead (when you create them
with IDEFormat), and create the Linux partitions after it on the disc with
PartMan (select :4 in PartMan, because partition tables on other partitions,
rather than on the disc itself, will be ignored).

If you try the install discs now, they'll probably fall down when it gets to
creating a filesystem on the partition.  There's a bug in the kernel that
stops it from recognising the partitions correctly, so edit the file
arch/arm/drivers/block/adfspart.c in Linux, changing the function
adfspart_check_ICS() to:

static int adfspart_check_ICS (struct gendisk *hd, kdev_t dev, unsigned long 
first_sector,
                               unsigned int minor)
{
        struct buffer_head *bh;
        unsigned long sum;
        unsigned int i, mask = (1 << hd->minor_shift) - 1;
        struct ics_part { unsigned long start; long size; } *p;

        /*
         * Try ICS style partitions - sector 0 contains partition info.
         */
        if (!(bh = bread (dev, 0, 1024)))
                return -1;

        /*
         * check for a valid checksum
         */
        for (i = 0, sum = 0x50617274; i < 508; i++)
                sum += bh->b_data[i];

        if (sum != *(unsigned long *)(&bh->b_data[508])) {
                brelse (bh);
                return 0; /* not ICS partition table */
        }

        printk (" [ICS]");

        for (p = (struct ics_part *)bh->b_data; p->size; p++) {
                if ((minor & mask) == 0)
                        break;

                if (p->size < 0) {
                        if(adfspart_check_ICSLinux (dev, p->start))
                                printk(" Linux partition:");
                                else printk(" Linux partition (probably):");
                        add_partition (hd, minor, first_sector + p->start + 1, 
-p->size - 1);
                } else
                        add_partition (hd, minor, first_sector + p->start, p->size);
                minor++;
        }
        brelse (bh);

        return 1;
}

And recompile the kernel.  Since you've got a working ARM Linux box already,
this shouldn't be much of a problem.  If it is, I'll send you a patched
kernel.

Try running install now.  Does it work, and what does the kernel print for
the `Partition check' when it books?

-- 
         Mark Seaborn
  - [EMAIL PROTECTED] - http://www.argonet.co.uk/users/mseaborn/ -
 
         ``I owe a lot to my parents, especially my mother and
                  my father'' -- Greg Norman

unsubscribe: body of `unsubscribe linux-arm' to [EMAIL PROTECTED]

Reply via email to