Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 2 May 2011 09:26:52 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        freebsd-hackers@freebsd.org
Cc:        Alexander Motin <mav@freebsd.org>
Subject:   Re: Look of boot2, on HDD
Message-ID:  <201105020926.53164.jhb@freebsd.org>
In-Reply-To: <4DBC3D63.6020508@FreeBSD.org>
References:  <20110429.160309.656.1@DEV> <mailpost.1304116761.7079263.67267.mailing.freebsd.hackers@FreeBSD.cs.nctu.edu.tw> <4DBC3D63.6020508@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Saturday, April 30, 2011 12:48:35 pm Alexander Motin wrote:
> Garrett Cooper wrote:
> > 2011/4/29  <rank1seeker@gmail.com>:
> >> /boot/boot2    STAGE 2 bootstrap file
> >> Understands the FreeBSD file system enough, to find files on it, and can provide a simple interface to choose the kernel or loader to run.
> >>
> >> Once sys is fully booted, HDD is 'ada0'.
> >> However, STAGE 2, sees it, as a 'ad4', at boot process, which is same seen, by booted sys, when I turn off AHCI.
> >>
> >> So, here is the riddle ...
> >> On fully booted sys, how do I query STAGE 2, to tell me, how it'll see, my 'ada0' HDD?
> > 
> >     This is a very interesting catch:
> > 
> > /usr/src/sys/boot/pc98/boot2/boot2.c:static const char *const
> > dev_nm[NDEV] = {"ad", "da", "fd"};
> > /usr/src/sys/boot/i386/boot2/boot2.c:static const char *const
> > dev_nm[NDEV] = {"ad", "da", "fd"};
> > 
> >     It probably will be a no-op soon because of some of the
> > compatibility changes Alex made, but still a potential point of
> > confusion nonetheless.
> 
> Pardon my ignorance, but could somebody shed some light for me on this
> list of names? Why much more sophisticated loader(8) operates disks as
> diak0/1/..., while boot2 tries to mimic something he has no any idea
> about, using very limited information from random sources? Does this
> names important for anything?

They are no longer important.  Before /boot/loader existed, boot2 passed
the root device to the kernel via 'bootdev'.  It basically handled
floppies (fdX for BIOS devices < 0x80) and hard drives (devices starting
at 0x80, either ATA (wdX) or SCSI (sdX)).  I think the user could hint
what the root device was via /boot.config similar to 'vfs.mountroot' in
loader.conf.

Due to CAM (in 3.x) and sos's new ATA (in 4.x), wd and sd were renamed to
'ad' and 'da'.  At this point however, it is mostly archaic.  boot2
still passes info in bootdev that the loader uses, but all the loader
cares about is the BIOS device number partition/slice information on that
device.

I would be happy for boot2 to be changed to use the same naming scheme
that /boot/loader uses (diskX), but it's fairly low priority.

-- 
John Baldwin



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