zfs booting feedback

Chris Ross cross+freebsd at distal.com
Fri Dec 28 00:58:15 UTC 2012


On Thu, Dec 13, 2012 at 01:05:16PM +0300, KOT MATPOCKuH wrote:
> I builded world/kernel from stable/9 r244121, installed zfsboot and
> zfsloader to disk on Sun Fire V240 with OpenBoot 4.30.4.a.
> But boot fails with:
> Rebooting with command: boot disk
> Boot device: /pci at 1c,600000/scsi at 2/disk at 0,0  File and args:
> 
> >> FreeBSD/sparc64 ZFS boot block
>     Boot path:   /pci at 1c,600000/scsi at 2/disk at 0,0:a
> Consoles: Open Firmware console
> ERROR: Last Trap: Division by Zero

  I'm seeing this too, as you may've seen in recent list emails.  I'm trying to
track down where the problem lies, but it's not just you.

> Also I tried zfsloader builded from sources @ may 2012:
> (same zfsboot, but used zfsloader.old)
> Boot device: disk  File and args:
> 
> >> FreeBSD/sparc64 ZFS boot block
>     Boot path:   /pci at 1c,600000/scsi at 2/disk at 0,0:a
> Consoles: Open Firmware console
> ofwd_open: Could not open disk1:
> ofwd_open: Could not open disk2:
> ofwd_open: Could not open disk3:
> 
> FreeBSD/sparc64 ZFS enabled bootstrap loader, Revision 1.0
> (root at sunspot, Fri Nov  2 08:59:22 MSK 2012)
> bootpath="/pci at 1c,600000/scsi at 2/disk at 0,0:a"
> ZFS: i/o error - all block copies unavailable
> ZFS: i/o error - all block copies unavailable
> [...]
> Could it a result of crosscompiling?

  I'm compiling natively, so as others have said, it's likely not related to
cross-compiling.

> PS. When writing both zfsloader I got "Invalid argument" message:
> # dd if=/boot/zfsloader.old of=/dev/da0a bs=512 oseek=1024
> dd: /dev/da0a: Invalid argument
> 470+1 records in
> 470+0 records out
> 240640 bytes transferred in 1.915555 secs (125624 bytes/sec)
> Is it okey?

  I saw this too, and it wasn't initially a problem, but I noticed that the
last couple hundred bytes of the binary weren't being copied out,
and hoped that was the problem that was causing the crash.  As it
happens, it wasn't, but I determined that the error "Invalid argument"
is a result of a write to the device of smaller than the 512 byte block-
size.  If you add a "conv=notrunc,sync" to the dd command, it will fill
out the last block, and write to the disk device without error.  (the
notrunc isn't related to the issue, but is in the command I use)

  Thanks.

                               - Chris



More information about the freebsd-sparc64 mailing list