grub-devel
[Top][All Lists]
Advanced

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

Re: grub-probe for nested BSD partition on Linux


From: Lennart Sorensen
Subject: Re: grub-probe for nested BSD partition on Linux
Date: Tue, 28 Feb 2017 17:05:34 -0500
User-agent: Mutt/1.5.23 (2014-03-12)

On Tue, Feb 28, 2017 at 09:50:27PM +0300, Andrei Borzenkov wrote:
> 28.02.2017 21:31, Lennart Sorensen пишет:
> > On Tue, Feb 28, 2017 at 08:13:53PM +0300, Andrei Borzenkov wrote:
> >> Sorry? vda7 is 256M, how can you suddenly pretend it is 2G?
> >>
> >> 10:~ # fdisk -l /dev/vda
> >> Disk /dev/vda: 5 GiB, 5368709120 bytes, 10485760 sectors
> >> Units: sectors of 1 * 512 = 512 bytes
> >> Sector size (logical/physical): 512 bytes / 512 bytes
> >> I/O size (minimum/optimal): 512 bytes / 512 bytes
> >> Disklabel type: dos
> >> Disk identifier: 0x882b18da
> >>
> >> Device     Boot   Start      End Sectors  Size Id Type
> >> /dev/vda1          2048  2099199 2097152    1G 83 Linux
> >> /dev/vda2       2099200  6293503 4194304    2G a6 OpenBSD
> >> /dev/vda3       6293504 10485759 4192256    2G  5 Extended
> >> /dev/vda5       6295552  6819839  524288  256M 83 Linux
> >> /dev/vda6       6821888  7346175  524288  256M 83 Linux
> >> 10:~ # fdisk -l /dev/vda2
> >> Disk /dev/vda2: 2 GiB, 2147483648 bytes, 4194304 sectors
> >> Geometry: 16 heads, 63 sectors/track, 10402 cylinders
> >> Units: sectors of 1 * 512 = 512 bytes
> >> Sector size (logical/physical): 512 bytes / 512 bytes
> >> I/O size (minimum/optimal): 512 bytes / 512 bytes
> >> Disklabel type: bsd
> >>
> >> Slice   Start      End  Sectors  Size Type     Fsize Bsize Cpg
> >> a     2099200  2623488   524289  256M boot         0     0   0
> >> b     2099200  2623488   524289  256M unused       0     0   0
> >> c     2099200  6293503  4194304    2G unused       0     0   0
> >> d           0 10485215 10485216    5G unused       0     0   0
> >>
> >> Partition table entries are not in disk order.
> > 
> > Well that does look mostly sane for an ancient BSD version.
> > 
> 
> In case I was not clear.
> 
> BSD partition a is represented in Linux as /dev/vda7. grub-probe -t
> compatibility_hints -d /dev/vda7 returns hd0,msdos2 which is obviously
> wrong, because it refers to 2GB area on disk while partition /dev/vda7
> is just 256M. I would expect either hd0,msdos2,openbsd1 or nothing
> depending on whether such nested partition is supported.

Oh now I see what you mean.  Hmm, that is an interesting problem.

It seems FFS and UFS reserve either 1 or 8KB at the start for bootblock,
which I suppose would save the disklabel from being overwritten if using
one of those filesystems.  The documentation does seem to say to always
leave a gap before the first slice/partition in all cases.

> > Slice a is the rootfs for BSD
> > 
> > Slice b should traditionally be swap, but appears to be unused here,
> > and for some reason uses the same part of the disk as slice a, which
> > does look odd.  Maybe since the type is unknown, it doesn't matter.
> > 
> > Slice c is the whole partition containing the slices (vda2)
> > 
> > Slice d is the whole disk (vda), which apparently hasn't been used in
> > BSD for a couple of decades now, if wikipedia can be trusted.
> > 
> > So if linux only bothers to count the partition with a type that isn't
> > unused, then it probably makes sense.  That appears to be what the
> > partition parsing code does.
> > 
> > The start being the same as the start of vda2 does seem odd given it
> > appears that you are supposed to leave space at the start (1 track
> > recommended, or 64 sectors), and it appears the disklabel is at sector
> > 1 (0 being the first), so it doesn't seem like having your filesystem
> > start there would be safe unless the filesystem has reserved space at
> > the start for such things.
> > 
> 
> I just pressed 'b' in Linux fdisk and only change two partition sizes. I
> have no idea how fdisk choses partition start. Could be a bug in fdisk.

I think fdisk's default is probably wrong in this case.

Certainly if you create a slice and then decide to mkfs.ext2 on it,
your disklabel is gone if you don't make the start offset a bit higher.

-- 
Len Sorensen



reply via email to

[Prev in Thread] Current Thread [Next in Thread]