2012/11/9 Eric Auer e.a...@jpberlin.de:
Hi Bernd, Andre,
I was going to install FreeDOS 1.1 on a USB drive within qemu 1.1.1 on
Opensuse 12.2 32 bit. After selecting the language in the FreeDOS
installer, my notebook was busy during the next hour with thousands of
thousands of messages like Run chkdsk: Bad FAT I/O: 0x
The kernel produces that message when getblock fails. Bernd,
the message is printed by clusterMessage and getblock is a
macro for getblk (x, y, FALSE) which apparently is, more or
less, a wrapper for dskxfer to let BUFFERS do their work...
Probably something tried to access the drive as if it already
was formatted while it was not, maybe failed to set a flag to
mark the drive as unformatted in some internal processing...
Yesterday I tested a little bit more and I noticed that these messages
(Run chkdsk: Bad FAT I/O: 0x...) don't appear if I change only one
small step in my way: If I use the partition label c (FAT32) instead
of 6 (FAT16), all is fine. Maybe this helps you to further track down
the errors?
I've seen this as well, usually with a drive C: (primary active FAT32
partition) that didn't have a filesystem on it yet (done by FORMAT) Some
installation tools check drive C: to see if it's present.
That might fit the above, yes. Is it specific to USB drives?
Here is exactly what I did:
- plugged in a USB drive
- erased all partition data with dd if=/dev/zero of=/dev/sdb bs=1M
count=16
- created a new FAT16 partition with fdisk (1 GB, partition label 6),
set this to active
- created the filesystem with mkfs -t vfat -n FreeDOS /dev/sdb1
You should reboot between the last 2 steps if it were DOS,
but apparently you used Linux. When you create DOS drives
in Linux, you might accidentally mismatch CHS, LBA, FAT32
and FAT16 at some point, although I am not sure if there
is a risk to do so during the steps described above. Also,
at least with older mkdosfs (from dosfstools) it happened
that the partition offset and/or geometry were not nicely
set in the boot sector, causing extra work for my boot
sector installing Perl script sys-freedos-linux. I think
that using SYS in DOS itself had no problems, though, at
least when you booted via any non-virtual way first :-)
You could try providing this USB Flash Device to QEMU without first
assigning a partition and filesystem. FreeDOS is able to do it by itself
using the FDISK program to create a partition, and FORMAT program (after
rebooting QEMU once FDISK has finished). FORMAT C: /Q should do the
trick. Afterwards run SYS C:
Actually you should NOT use FORMAT /Q in this case: That
would try to backup some details to support later UNFORMAT
which does not make much sense on a freshly partitioned
drive. You can use FORMAT /Q /U to avoid the saving of
unformat data if speed is an issue, or just use FORMAT
without /Q option to get a non-quick format process :-)
If you use /U without /Q, the whole drive contents will
be wiped which can take a very long time in DOS.
After that, I started qemu with qemu-system-i386 -hda /dev/sdb -cdrom
fd11src.iso -boot d. The FreeDOS installer started, I begun the
installation with 1. It let me choose my language, and after this
the enormous amount of error messages. About an hour later, the
installer finally asked me where to install - I chose C: (the
installer showed me mysteriously only 255 MB). Then it asked me if I
want to format the drive with FAT32 - which I accepted. However, now
it showed me the following error message:
Invalid Drive! Aborting.
[Error 61]
FORMAT status: 4
Could not format your hard disk
The main.c source code of FORMAT suggests that this will
happen if your drive is neither remote nor SUBST-ed but
still you cannot get a truename of X:\ where X is the
drive letter of the drive in question... Truename here
is used to check for ASSIGN, JOIN or SUBST, but as it
fails to check this at all, the drive is probably not
even registered for DOS yet... Maybe rebooting between
the FDISK and the FORMAT step would help here - in the
QEMU case virtually rebooting is of course enough :-)
Is your USB stick more emulator-friendly if performing the partitioning
with Gparted or something?
I would also suggest that. GPARTED makes it very easy
to partition and format a drive with a few mouse clicks
and as you have QEMU, you apparently already have Linux.
If not, there are also a number of nice ISOs to make a
bootable CD or DVD with GPARTED, or make a boot stick.
I will try it with gparted.
Standard reference procedure should be something like detailed in:
http://sourceforge.net/apps/mediawiki/freedos/index.php?title=VirtualBox
Good point. We already have that howto for VirtualBox,
somebody could make a howto for Qemu based on that :-)
Eric
Well, all of this problems would be much less annoying if there would
be an image on the FreeDOS site which I can simply dd to an USB drive
- all of these error prone steps would