Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 14 Apr 2016 10:28:50 -0400
From:      Allan Jude <allanjude@freebsd.org>
To:        freebsd-hackers@freebsd.org
Subject:   Re: A few stupid questions regarding MBR and boot0
Message-ID:  <570FA922.1000401@freebsd.org>
In-Reply-To: <20160414153627.7fc50247@fujitsu>
References:  <20160414144849.7a08b1db@fujitsu> <alpine.BSF.2.20.1604141353310.14591@mail.fig.ol.no> <20160414153627.7fc50247@fujitsu>

next in thread | previous in thread | raw e-mail | index | archive | help
On 2016-04-14 08:36, Aleksander Alekseev wrote:
> Hello, Trond
> 
> Thanks for your replies.
> 
>>> 1) If I understand correctly first 512 bytes of /dev/ad0
>>> and /boot/boot0 file should match, but they don't:
>>>
>>> http://afiskon.ru/s/31/665dc9755c_mbr.txt
>>
>> The MBR consists of two parts, the bootcode and the partition table. 
>> Any discrepancies is generally due to the partition table being zero 
>> in /boot/boot0 and realistic data stored in block 0.
> 
> Yes, but if I'm not mistaken partition table starts only at 0x1be. But
> in my case data is not just slightly different in last few bytes. Its
> not the same at all.
> 
>> BTW, check out /boot/mbr.
> 
> OK, this looks like something I have on ad0. But this file is not
> mentioned in corresponding chapters of Handbook [1] or Architecture
> Handbook [2]. Besides Architecture Handbook clearly states:
> 
> """
> Indeed, boot0 /is/ the MBR.
> """
> 
> If /boot/boot0 is MBR then what is /boot/mbr? Current version of
> Handbook mentions it twice in 18.3.2 and doesn't exactly explains what
> this file is for. According to FreeBSD 8.4 Handbook [3]:
> 
> """
> By default, the MBR installed by fdisk(8) is such an MBR and is based
> on /boot/mbr.
> """
> 
> Do I right understand that current version of Handbook is wrong
> regarding:
> 
> """
> The MBR installed by the FreeBSD installer is based on /boot/boot0.
> """
> 
> ... and in fact boot0 is only used in dual-boot case?
> 
> BTW `cd sys/boot/i386/mbr && make` works as expected.
> 
>> I have never attempted to build the FreeBSD sources outside /usr/src. 
>> The advice below might be plain wrong.
>>
>> Try:
>>
>>   cd sys/boot/i386/boot0
>>   make clean
>>   make OBJDIR=/usr/home/eax/freebsd-obj obj
>>   make OBJDIR=/usr/home/eax/freebsd-obj all
>>
>> If you want it installed, run
>>
>>   make OBJDIR=/usr/home/eax/freebsd-obj install
>>
> 
> Doesn't work:
> 
> ```
> $ make OBJDIR=/usr/home/eax/freebsd-obj obj
> mkdir: /usr/obj/usr: Permission denied
> *** Error code 1
> 
> Stop.
> make: stopped in /usr/home/eax/freebsd-src/sys/boot/i386/boot0
> ```
> 
> I also tried `OBJDIR=... make`. Naturally I could try `sudo make ...`
> but if I'm not wrong boot0 doesn't have any dependencies, it's a
> reasonably simple assembly program.
> 
> [1]https://www.freebsd.org/doc/handbook/boot-introduction.html
> [2]https://www.freebsd.org/doc/en/books/arch-handbook/boot-boot0.html
> [3]https://docs.freebsd.org/doc/8.4-RELEASE/share/doc/freebsd/handbook/boot-introduction.html
> 

There are multiple MBRs to choose from

IIRC:
/boot/boot0 just starts FreeBSD
/boot/mbr presents a menu, where you pick which partition to start,
including support for other operating systems (since it just loads the
volume boot record of the indicated partition)

-- 
Allan Jude



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?570FA922.1000401>