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>