Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 29 May 2015 18:22:17 -0700
From:      David Newman <dnewman@networktest.com>
To:        freebsd-questions@freebsd.org
Subject:   Re: Missing boot loader
Message-ID:  <556910C9.7010706@networktest.com>
In-Reply-To: <alpine.BSF.2.20.1505291307240.53239@wonkity.com>
References:  <5522C5DE.1050005@networktest.com> <CA+g+BvhB29m6w3DqrDoXmA+j9VyvX_7xLRG_iKQAfVJS6ELjpQ@mail.gmail.com> <55687BE9.40803@networktest.com> <alpine.BSF.2.20.1505290942330.2085@wonkity.com> <556898FB.1080704@networktest.com> <alpine.BSF.2.20.1505291307240.53239@wonkity.com>

Next in thread | Previous in thread | Raw E-Mail | Index | Archive | Help
On 5/29/15 12:22 PM, Warren Block wrote:
> On Fri, 29 May 2015, David Newman wrote:
> 
>> On 5/29/15 8:46 AM, Warren Block wrote:
>>> On Fri, 29 May 2015, David Newman wrote:
>>>
>>>> On 4/6/15 9:28 PM, Olivier Nicole wrote:
>>>>
>>>>> My solution is
>>>>> http://www.cs.ait.ac.th/~on/technotes/archives/2015/01/30/how-to_clone_a_freebsd_virtual_machine_on_vmware/index.html
>>>>>
>>>>>
>>>>> certainly not the best/fastest, but it works.
>>>>
>>>> Thanks for this. After following the clone instructions, restore
>>>> appears
>>>> to work, but the system comes up with a "Missing boot loader" error.
>>>>
>>>> This is perhaps because the next-to-last step from the live CD is:
>>>>
>>>> cd /
>>>> mount -o rw /dev/da0p1 /mnt
>>>> gpart bootcode -b /mnt/boot/pmbr -p /mnt/boot/gptboot -i 1 da0
>>>>
>>>> And that returns "/dev/da0p1: Operation not permitted" even though
>>>> da0p1
>>>> is the target system's root/boot partition.
>>>
>>> In this code, da0 is the source disk, where the bootcode files are read.
>>> It is mounted on /mnt.  So there are two reasons that gpart cannot write
>>> bootcode to da0p1.  First, it is mounted, and second, it is filesystem
>>> partition, not a freebsd-boot partition.
>>>
>>> The target disk cannot be da0p1.  Maybe it is a simple typo, and either
>>> the second or third line was meant to be ada0 rather than da0.
>>
>> Thanks for your email. Backstory: This VM is a dump/restore clone of
>> another machine that has no separate boot partition. Here's /etc/fstab
>> from the source machine:
>>
>> /dev/ada0p2    /        ufs    rw    1    1
>> /dev/ada0p3    none        swap    sw    0    0
> 
> On a GPT disk, FreeBSD uses a freebsd-boot partition to hold the
> bootcode.  This is binary code written to that partition, which does not
> have a filesystem.  It does *not* contain /boot, which is instead part
> of /.
> 
> Because the freebsd-boot partition is not needed after boot, it is not
> mentioned in /etc/fstab.  Look at the output of 'gpart show' instead.
> 
>> And on the new target VM:
>>
>> /dev/da0p1    /        ufs    rw    1    1
>> /dev/da0p2    none        swap    sw    0    0
> 
> This disk is mountable, but because there is no freebsd-boot partition,
> it will not be bootable.  (Well, it might be possible to add a
> freebsd-boot partition after the existing partitions, but I'd avoid that
> because it is unusual and may come back to haunt you at the worst
> possible time.)
> 
>> I don't understand the bit about 'ada0', since 'gpart list' shows only
>> da0 and two providers under it.
> 
> The original disk was ada0, the new one is da0.  If the partitions had
> been created properly on da0 (with p1 being the freebsd-boot partition),
> it would be possible to mount da0p2 (/), read the bootcode from a file
> in the /boot directory there, and write it to da0p1.
> 
>> The source machine has boot files in its root partition, under /boot.
> 
> Those are copies of the binary bootcode that must be written to a
> freebsd-boot partition to make a disk bootable.
> 
> Disk Setup On FreeBSD:
> http://www.wonkity.com/~wblock/docs/html/disksetup.html

Bingo. Thanks, Warren!

I completely missed the necessity for a boot partition -- the fstab
table and 'gpart show' output of the source machine should have been a clue.

Remade the partitions, redid the restore, and now the target VM boots as
expected. Thanks again!

dn





Want to link to this message? Use this URL: <http://docs.FreeBSD.org/cgi/mid.cgi?556910C9.7010706>