9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
From: tlaronde@polynum.com
To: Fans of the OS Plan 9 from Bell Labs <9fans@9fans.net>
Subject: [9fans] BUG: disk/fdisk.c: corrupts MBR
Date: Sat,  7 Jan 2012 19:29:08 +0100	[thread overview]
Message-ID: <20120107182908.GA3674@polynum.com> (raw)

Hello,

Since I'm playing with the installation, I have been hit once again
with disk/fdisk corrupting the MBR and rendering other systems
unbootable.

The explanation is arithmetic truncation. disk/fdisk.c does this:

p->start = lba/sec2cyl;

and, if modifications are done (for example creating a Plan9 partition,
of marking a primary partition active), when written back, the entries
are "restored" by:

*endlba = (vlong)p->start*sec2cyl;

Of course, if the values were not integer multiples of sec2cyl, the
entry point for the PBS is corrupt. (For example, on *BSD, the principle
is the same as for Plan9: a "primary" partition is a sequence of
adjacent bytes, furthermore subdivided; but one special subdivision
[a] is at the same offset (at start) and holds the bootcode and a
disklabel describing the subdivision; if the MBR is corrupt, neither
boot nor disklabel so user can conclude: everything lost). And the first
travel in the flying saucer will also be the last...

And since the values in the MBR have almost no relation today with the
physical access of data; and furthermore, since partitions created by
other systems for other systems should be left alone (that's the main
purpose of the MBR: establish borders to tell others: this is my realm!
go away!)...

I will submit patches later, if no one does the job before, since there
are saved values (p->ctlstart = lba; etc.) that are here and not used,
so I have to review the code closely.

Until then: if you wish to dual boot, create the Plan9 partition before
with another system present on disk (and do print the layout of the MBR)
in order to skip this step in installation.

--
        Thierry Laronde <tlaronde +AT+ polynum +dot+ com>
                      http://www.kergis.com/
Key fingerprint = 0FF7 E906 FBAF FE95 FD89  250D 52B1 AE95 6006 F40C



             reply	other threads:[~2012-01-07 18:29 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-01-07 18:29 tlaronde [this message]
2012-01-07 19:04 ` erik quanstrom
2012-01-07 19:22   ` tlaronde
2012-01-07 19:30     ` erik quanstrom
2012-01-07 20:13       ` tlaronde

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20120107182908.GA3674@polynum.com \
    --to=tlaronde@polynum.com \
    --cc=9fans@9fans.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).