[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: debinst: non-msdos partition table creation support



Is this i386 specific topic ?

In <3A073C75.DBAB942C@optushome.com.au>,
  on Tue, 07 Nov 2000 10:19:17 +1100,
    on Re: debinst: non-msdos partition table creation support,
 Glenn McGrath <bug1@optushome.com.au> wrote:

> Junichi Uekawa wrote:
> > 
> > Glenn McGrath <bug1@optushome.com.au> cum veritate scripsit :
> > 
> > > > > I understand how msdos partition tables work now, its just a bunch of
> > > > > ugly hacks to make use of legacy structures that are long obsolete.

What this 'msdos partition tables' is ? Do you mean the data structure
 byte 446-509 in the MBR of i386 AT-clone ?

> > > > > msdos partitions need to be supported for machines that need microsoft
> > > > > compatability (and other OS's ?), but i think that we should provided
> > > > > users the ability to create a non-crap partition table.
> > > >
> > > > You need them to boot.
> > > Oh, really... is that a limitation of the bootloader or the kernel, i
> > > just assumed you could boot from any partition table the kernel
> > > supported.

Linux kernel can not boot from the hard disk without some boot loader
such as lilo or so.

> > On a PC, BIOS needs to be able to read it first, before anything else.

> Are you sure ?

There might be some i386 AT-clone which inspects the MBR before boot up
using their BIOS.  For example, they can not boot up from the MBR if the
last 2 byte in the MBR does not have the magic word.

> I can understand that this would be the case for OS's that use the boot
> indicator flag to work out which partition to boot from, but linux
> doesnt use this, and pretty much ignores the BIOS for everything.

Surely LILO does not use the most of info. in partition tables,
but there are partition based boot selectors such as "mbr" and "extipl".
And they would not work with the non-standard partition table structure.

Additionally, drivers/block/genhd.c has 

 static void add_partition()
 static inline int is_extended_partition()

and these func. uses informations such as

        p->start_sect = start;
        p->nr_sects = size;
        p->type = type;

from the partition table.

More, if you disable CONFIG_MSDOS_PARTITION (this enables the usage
of logical partition in an extended partition), then you can not enable
CONFIG_SOLARIS_X86_PARTITION, CONFIG_BSD_DISKLABEL, CONFIG_UNIXWARE_DISKLABEL,
because all of them depends on CONFIG_MSDOS_PARTITION. (cf: genhd.c)

You can enable CONFIG_OSF_PARTITION, CONFIG_SUN_PARTITION, CONFIG_SGI_PARTITION, 
CONFIG_AMIGA_PARTITION, CONFIG_MAC_PARTITION, CONFIG_ATARI_PARTITION, and/or
CONFIG_ULTRIX_PARTITION, but all of them are for non-i386 architecture, and
there are some PC which has the BIOS which can not support these partition tables.

  (I don't know if they are many or not. maybe most of PCs can not support,
   but I have not checked it.)

-- 
  Taketoshi Sano: <sano@debian.org>,<sano@debian.or.jp>,<kgh12351@nifty.ne.jp>



Reply to: