[sf-lug] MBR/partition table/sfdisk/use dd to copy the mbr

Michael Paoli Michael.Paoli at cal.berkeley.edu
Fri Nov 23 18:51:47 PST 2007

> Date: Mon, 19 Nov 2007 21:35:32 -0800
> From: Rick Moen <rick at linuxmafia.com>
> Subject: Re: [sf-lug] use dd to copy the mbr
> To: sf-lug at linuxmafia.com
> Quoting jim stockford (jim at well.com):
> > # dd if=/boot/mbr_backup of=/dev/sda bs=446 count=1
> > # # or, copy from the primary master to primary slave:
> > # dd if=/dev/hda of=/dev/hdb bs=446 count=1
> >
> > note the bs=446 rather than bs=512 lets you copy the
> > bootstrap loader code without copying the partition table
> > (if you use bs=512 you copy the partition table from the
> > source and overwrite that of the target).
> I frankly cannot fathom why people think the inital 446 bytes' contents
> are so valuable.  It's dead-easy to rebuild from a Linux maintenance CD
> whatever you had there.  I'd have though possessing a reference copy of
> the partition table would be more valuable.

Well, ... at least *sometimes*, backing up the MBR and/or partition
table can be highly useful or convenient ... if not downright important.

E.g. if one might not easily be able to otherwise restore the MBR as it
was, then backing it up may be highly useful.  For example, x86
hardware, at least per legacy design, can quite easily support 4
distinct and separate operating systems - with a multi-boot
configuration.  If one wants/needs to keep a particular type of MBR in
place, ... there are no guarantees that that particular MBR is easily
restored from whatever foo operating system or boot loader may be
responsible for having initially set it up.

And on backing up partition tables - I *really* like sfdisk; *however*
sfdisk can be exceedingly dangerous if one doesn't know what one is
doing (or even worse, if one doesn't, but thinks one does).  I would
*not* recommend sfdisk for systems administrators that aren't rather to
quite experienced and careful (e.g. it's real easy to type sfdisk, not
know what one's doing or feed it not precisely the correct data, and
trash one's partition table).  Nevertheless sfdisk can do some highly
cool and useful stuff.  E.g.:
* the -l and -d options can be used to output a very handy listing of
  how the partition table is configured.  If one includes the -x option
  with -l and -uS, one can really see at quite low level how all the
  partitioning details are configured.
* the -d option can be highly useful for partition table backup/restore,
  particularly when combined with -uS, as the output format with -d can
  be used as input to (re)create/restore a partition table.  (This type
  of data is also some of the metadata that my backup scripts create
  and backup early on the backup media - so it can be easily extracted
  from backup media and consulted or used quite directly in creating
  partition table prior to moving on to higher level data restore
* the -O and -I options are highly useful for backing up, and if need be
  restoring, partition table changes.  Note that this is highly
  superior to merely backing up the partition table - as some partition
  table changes cannot be undone and things restored on the hard drive
  as they were before the change by merely restoring the earlier
  partition table (most notably with extended partitions, one also
  alters other sectors on the hard drive; with -O and -I one can save
  and undo those changes, whereas a mere backup and restore of the
  partition table will not undo changes to data in sectors beyond that
  containing the partition table).
* if it would be a legitimate partition table, sfdisk will let you
  create it.  One can do very low level fine grain control of how the
  partition table is set up - many other partitioning utilities won't
  allow one that level of control.  It will still (at least generally?)
  prevent you from creating a partition table that wouldn't be
  legitimate at all, and by default it will also prevent one from doing
  at least some things that in general may not be a good idea.

And some random examples of where I've found backing up the partition
table, partition table and related data changes, and/or MBR to be
rather to quite useful:
* Once upon a time, initial setup of a laptop.  It included a
  proprietary OS (had to purchase it with the laptop) with a sucky
  filesystem - but one with which various open source tools well
  understood and could deal with, ... and which would get instantly
  converted into an even much suckier filesystem type - which would be
  more problematic for dealing with via open source tools - if the
  installed OS was booted (it would convert filesystem type upon
  initial boot).  I didn't want to completely get rid of that sucky OS
  (maybe I wanted the occasional reminder of how sucky it was ... and
  besides, it was already bought and paid for) ... but I sure did want
  to both shrink and relocate its filesystem/partition.  I didn't want
  to change the MBR (though I did want to configure it so that by
  default, that bootloader would chainload GRUB).  I didn't yet have
  CD/DVD burn capabilities, and other than the hard drive (which I
  didn't yet want to boot from due to aforementioned reasons), the only
  things I had available to boot from were floppy, or one single
  relatively old LinuxCare rescue CD (which while useful, was rather
  limiting - e.g. the laptop's Ethernet was far too new of hardware for
  that CD to know how to deal with).  Anyway, with careful backups
  along the way (typically to floppy, or some other "safe" area removed
  or away from stuff being changed or dependent upon stuff being
  changed), I was able to make all the manipulations and file shuffling
  and repartitioning I wanted to do, without ever booting off of the
  hard drive.  If I recall correctly, one goof somewhere along all that
  hairy manipulation process, would have been a major pain had I not
  also done that tiny little backup of critical data - so I was able to
  undo the goof, and pick up again from where I was right before I'd
  made that goof.
* hairy disk partitioning / MBR / boot loader configuration changes.
  Sometimes I do a major repartitioning of a hard drive - with the data
  mostly all in place - and with no data losses.  Careful well planned
  changes, along with use of sfdisk including -O option often make this
  a significantly more goof resistant operation (and on at least some
  rare occasions, I've had need or desire to go back a step in the
  change process - and sfdisk with -I option made that quite easy, and
  guaranteed to get me back where I was before (at least as long as I
  didn't manage to do something incredibly stupid)).  Likewise, when
  doing some major bootloader reconfigurations - involving all of some
  proprietary hardware manufacturer (pre)bootloader, the NT bootloader,
  GRUB *and* LILO ... all on the same system :-) careful backups of the
  relevant pieces being altered can be rather to quite important (and I
  may have saved myself from major issue to fix by doing such careful
  backup bits ... it was either that occasion, or some of the initial
  laptop partitioning reconfiguration where I did save myself from
  quite a mess by having a careful backup of just the right critical
  bits of data).

So, yeah, ... "nowadays" with lots of (e.g. CD/DVD) bootable operating
systems and recovery utilities, generally much more capable hardware,
and when dealing with systems that have only (or mostly) open source
operating system (e.g. Linux), MBR and bootloader installed, backing up
those critical little bits often isn't as important, as fixing such is
typically much easier now.  Nevertheless, still, having just the right
critical little bits backed up - and in a manner that they can be
usefully and properly restored, can still - at least occasionally -
save one's tail.  While merely "fixing" things, such as via some
bootable CD/DVD and reloading MBR and reconfiguring the partition table
as it was, ... may not quite fix things adequately (e.g. that may not
undo other changes on disk due to extended partition changes).

Also, for what it's worth, there's *excellent* documentation on the
details of partitioning, structure, various partition "gottchas"
(particularly with multiboot configurations, and where some other
operating systems might not fully and properly "play by the rules" as
they should), which can be found in - oddly enough - the LILO
documentation.  Anyway, best partitioning documentation I ever stumbled
across (though since I found that some years ago, there might be better
information out there somewhere else).

More information about the sf-lug mailing list