NetBSD-Bugs archive

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

bin/44496: disklabel(8) with -r may break FreeBSD disklabel on i386/amd64

>Number:         44496
>Category:       bin
>Synopsis:       disklabel(8) with -r may break FreeBSD disklabel on i386/amd64
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    bin-bug-people
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Mon Jan 31 06:45:00 +0000 2011
>Originator:     Takahiro HAYASHI
>Release:        NetBSD-current 5.99.43
System: NetBSD halt 5.99.43 NetBSD 5.99.43 (HALT) #0: Thu Jan 6 16:38:37 JST 
2011 root@halt:/usr/build2/obj.i386/sys/arch/i386/compile/HALT i386
Architecture: i386
Machine: i386
        On i386 or amd64 port, disklabel(8) invoked with "-r" option
        does not distinguish FreeBSD's disklabel info from NetBSD's one
        because disklabel(8) is compiled with -DCOMPAT_386BSD_MBRPART.
        In case that FreeBSD is installed in prior MBR partition and
        NetBSD is installed in posterior MBR partition,  disklabel(8)
        finds FreeBSD's disklabel info and treats it as a NetBSD's one.
        So if you try to edit the NetBSD's disklabel info with -r,
        disklabel(8) will edit FreeBSD's one and break it.

        In i386 or amd64 kernel this compat option is commented out
        for years, so disklabel(8) should be compiled without
        COMPAT_386BSD_MBRPART if MACHINE==i386 or amd64.

        1. carve up a disk to two MBR partitions
        2. install FreeBSD into former, install NetBSD into latter
        3. execute "disklabel -r" on NetBSD

        1. exclude CPPFLAGS+=-DCOMPAT_386BSD_MBRPART if i386 || amd64 
           from sbin/disklabel/Makefile
        2. or resister NetBSD in prior MBR partition entry to FreeBSD.
        3. or use disklabel(8) without -r. Note that some options like -I
           imply -r.

Takahiro HAYASHI <hash at abox3 dot so-net dot ne dot jp>

Home | Main Index | Thread Index | Old Index