--- Dan Strick <[EMAIL PROTECTED]> wrote:
> On Mon, 1 Dec 2003, Dorin H <[EMAIL PROTECTED]>
> wrote:
> > If no RTFM is available, point me to the source
> files.
> > I am not familiar with the FreeBSD kernel sources,
> but
> > I'll have no problem reading some code.
> >>
> This may not be exactly correct.  See the section 8
> man page for boot.
> (i.e. Do "man boot".)  The source is in
> /usr/src/sys/boot/i386.

The information is there (boot(8)). Thank you for
reminding me that 10 minutes spent reading the whole
man page saves some hours of hair-pulling struggle.

> If I understand this and your previous emails on
> this subject,
> you began with this MBR partition/slice table
> arrangement:
>       ad0s1  XP
>       ad0s2  FreeBSD
> and everything worked fine.
> Then you changed the MBR partitions to:
>       ad0s1  XP
>       ad0s2  Debian swap
>       ad0s3  Debian /
>       ad0s4  FreeBSD
> and FreeBSD would not boot correctly because the
> file /etc/fstab,
> created during the initial FreeBSD installation
> process, still had
> "/dev/ad0s2" where it now needed to have
> "/dev/ad0s4" because you
> renumbered its MBR partition.  Then you fixed that
> and everything
> seemed to work fine until you decided to reuse the
> XP partition
> for more FreeBSD disk space.  So you changed your
> MBR partition
> table to:
>       ad0s1  FreeBSD  (addtitional file system space)
>       ad0s2  Debian swap
>       ad0s3  Debian /
>       ad0s4  FreeBSD  (the operating system)
> and FreeBSD would no longer boot.  This might be due
> to boot1
> confusion.  Each partition in the MBR has a flag
> byte and a type
> byte.  The 0x80 bit in the flag byte marks the
> partition as "active".
> Normally at most one partition has the active bit
> set.
> A non-interactive MBR bootstrap program typically
> boots whichever
> partition has the active bit set.

I couldn't present it better. And yes, the problem was
due to order of partitions marked as bootable:

BOOTABLE ad0s1  FreeBSD  (not used)
         ad0s2  Debian swap
         ad0s3  Debian /
BOOTABLE ad0s4  FreeBSD  (the operating system)

Trying to boot ad0s1 failed of course.
At the promp:

>> FreeBSD/i386 BOOT
Default: 0:ad(0,a)/kernel

I did again the experiment:
1. marked ad0s1 as bootable
2. reboot
3. again the promt (from which the slice info is
missing ! that tricked me)

Supplying this solve the booting problem!
boot: 0:ad(0,4,a)/kernel 

(Still pending: I have to see how can I make it find
the loader.conf also :)  )

> The FreeBSD boot1 program, the program loaded by the
> MBR bootstrap,
> is not hardwired with the number of the MBR
> partition in which it was
> installed (perhaps it ought to be).  
> Instead it uses
> the first MBR
> partition of FreeBSD type with the active bit set. 
> If no FreeBSD MBR
> partition has the active bit set, the boot1 program
> chooses the first
> FreeBSD MBR partition.  This normally works
> correctly even if you have
> more than one bootable FreeBSD MBR partition because
> the FreeBSD boot0
> MBR program normally rewrites the MBR record with
> the appropriate
> active bit set before it invokes the FreeBSD boot1
> program.
> You say that you are using Debian lilo for your MBR
> bootstrap program
> rather than the FreeBSD boot0 program.  

Totally new to FreeBSD boot process, so using Debian
LILO felt "safer" at that time.

> I don't know
> much about lilo,
> but I am guessing that it does not set the active
> partition in the MBR
> partition table before it boots a partition.  Then
> the boot1 program
> tries to load the boot2 program from ad0s1 instead
> of ad0s4.

I will try investigate the problem. Though I remember
reading something like this somewhere... I can't find
the source to mention it here.

> Workaround: you can make ad0s4 the only active
> FreeBSD partition with
> the fdisk program.  If nothing else changes that,
> boot1 will correctly
> boot ad0s4.

Yes, the workaround is correct. It was the solution.

Thank you for your explanations,

PS. It is so nice to be able to compile again the
ports stuff on my machine :)
(ad0s1a = /usr/ports, ad0s1d=/usr/src ;) )

Do you Yahoo!?
Free Pop-Up Blocker - Get it now
[EMAIL PROTECTED] mailing list
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to