Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 10 Nov 2008 07:17:32 -0800
From:      Jeremy Chadwick <koitsu@FreeBSD.org>
To:        freebsd-fs@freebsd.org
Subject:   boot0: Unable to boot DOS slices/partitions
Message-ID:  <20081110151732.GA72926@icarus.home.lan>

next in thread | raw e-mail | index | archive | help
I've been working for the past 2-3 days on a Wiki entry describing how
to get two versions or architecture types of FreeBSD, and MS-DOS, all on
a USB stick.  The intended goal is to allow an administrator to install
FreeBSD i386 or FreeBSD amd64 from a USB stick, while also providing the
ability to boot DOS for BIOS upgrades and so forth.

Please note the below is a complete mess, due to the fact that I have
spent the past 9 hours editing things off and on.

http://wiki.freebsd.org/JeremyChadwick/Installing_from_USB_flash_drive

So far, I've had great success with the FreeBSD part of it -- no issues
or oddities.  The problem I'm running into is the DOS part.

I've been completely unable to get boot0 to boot MS-DOS 6.22 (on a FAT16
slice), MS-DOS 7.10 (on a FAT16 or FAT32 slice), or FreeDOS 1.0 (on a
FAT16 or FAT32 slice).  With MS-DOS, COMMAND.COM, IO.SYS, and MSDOS.SYS
are all copied on to the slice.  With FreeDOS, COMMAND.COM and
KERNEL.SYS are all copied on to the slice.

boot0 shows "F1 DOS" as a choice, but depending upon where I formatted
the slice (on Windows XP or via newfs_msdos), I get one of the following
two error messages from the bootstraps installed on /dev/da0s1:

Non-system disk
Disk error

I've even gone so far to try using FAT32LBA.BIN from the FreeDOS
project as the bootstrap, e.g. newfs_msdos -B FAT32LBA.BIN /dev/da0s1
which just causes a hard-lock.

Enabling packet mode in boot0cfg makes no difference.

What *does* work, however, is using FAT32LBA.BIN and SYSLINUX together
as the actual boot loader itself (e.g. at sector 0).  I can successfully
boot FreeDOS using this method.

I'd advocate using SYSLINUX entirely, but it doesn't appear possible to
get SYSLINUX to boot a slice/partition, only refer to actual files on
the FAT16/FAT32 partition.

I'd try GRUB, except that all of my BSD boxes at home are amd64 (sans
the one I'm trying to boot the USB stick on, but that doesn't have
FreeBSD installed on it), and sysutils/grub only builds on i386.

Slice layout:

DISK Geometry:  977 cyls/255 heads/63 sectors = 15695505 sectors (7663MB)

Offset       Size(KB)        End     Name  PType       Desc  Subtype    Flags

         0         31         62        -     12     unused        0
        63    5759271   11518604    da0s1      4 fat (32-bit,LBA)       12      A
  11518605    1044225   13607054    da0s2      8    freebsd      165
  13607055    1044225   15695504    da0s3      8    freebsd      165
  15695505        183   15695870        -     12     unused        0

I don't have boot0cfg output immediately on hand, but can get it if need
be.

Ideas?

-- 
| Jeremy Chadwick                                jdc at parodius.com |
| Parodius Networking                       http://www.parodius.com/ |
| UNIX Systems Administrator                  Mountain View, CA, USA |
| Making life hard for others since 1977.              PGP: 4BD6C0CB |




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