A few stupid questions regarding MBR and boot0
Trond Endrestøl
Trond.Endrestol at fagskolen.gjovik.no
Thu Apr 14 12:48:52 UTC 2016
On Thu, 14 Apr 2016 15:36+0300, Aleksander Alekseev wrote:
> Hello, Trond
>
> Thanks for your replies.
NP.
> > > 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.
> """
fdisk(8) is an outdated tool. gpart(8) is the current tool.
> 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?
It could be. I'm not a committer, merely a user.
> 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.
Try:
make MAKEOBJDIRPREFIX=/usr/home/eax/freebsd-obj xxx
That should place the object tree in /usr/home/eax/freebsd-obj and
avoid polluting the source tree.
> [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
--
+-------------------------------+------------------------------------+
| Vennlig hilsen, | Best regards, |
| Trond Endrestøl, | Trond Endrestøl, |
| IT-ansvarlig, | System administrator, |
| Fagskolen Innlandet, | Gjøvik Technical College, Norway, |
| tlf. mob. 952 62 567, | Cellular...: +47 952 62 567, |
| sentralbord 61 14 54 00. | Switchboard: +47 61 14 54 00. |
+-------------------------------+------------------------------------+
More information about the freebsd-hackers
mailing list