From owner-freebsd-doc Sun Jul 16 12:26:06 1995 Return-Path: doc-owner Received: (from majordom@localhost) by freefall.cdrom.com (8.6.10/8.6.6) id MAA05848 for doc-outgoing; Sun, 16 Jul 1995 12:26:06 -0700 Received: from violet.berkeley.edu (violet.Berkeley.EDU [128.32.155.22]) by freefall.cdrom.com (8.6.10/8.6.6) with ESMTP id MAA05841 for ; Sun, 16 Jul 1995 12:26:03 -0700 Received: by violet.berkeley.edu (8.6.10/1.33r) id MAA02196; Sun, 16 Jul 1995 12:26:02 -0700 Date: Sun, 16 Jul 1995 12:26:02 -0700 From: jkh@violet.berkeley.edu (Jordan K. Hubbard) Message-Id: <199507161926.MAA02196@violet.berkeley.edu> To: doc@freebsd.org, sure@violet.berkeley.edu, theres.some.FAQ.material.here...- Subject: somehow, Im Sender: doc-owner@freebsd.org Precedence: bulk Path: agate!newsxfer.itd.umich.edu!zip.eecs.umich.edu!caen!msunews!harbinger.cc.monash.edu.au!yarrina.connect.com.au!warrane.connect.com.au!godzilla.zeta.org.au!not-for-mail From: bde@zeta.org.au (Bruce Evans) Newsgroups: comp.unix.bsd.freebsd.misc Subject: Re: How to disklabel new SCSI drive? Date: 16 Jul 1995 06:53:39 +1000 Organization: Kralizec Dialup Unix Sydney - +61-2-837-1183, v.32bis v.42bis Lines: 80 Message-ID: <3u99sj$uv3@godzilla.zeta.org.au> References: <3trr3s$ef@mips.infocom.com> NNTP-Posting-Host: godzilla.zeta.org.au Keywords: SCSI, disklabel, NCR In article <3trr3s$ef@mips.infocom.com>, Dave Hovemeyer wrote: >I'm having lots of trouble trying to disklabel a new SCSI drive. >I have made an entry in /etc/disktab, but when I try to label the >drive the following happens: > > mips# disklabel -w /dev/sd1 sea32550N > disklabel: ioctl DIOCWDINFO: Operation not supported by device > >What am I doing wrong? Doing this using disklabel (and fdisk) is probably harder than using sysinstall. The following should work to put FreeBSD-2.0.5 on the whole of an _empty_ disk assuming that the disktab entry is correct. disklabel -r -w /dev/rsd1 sea32550N ^^ ^ The first -r is essential for writing new labels and using the raw device instead of the block device is good technique. To be `empty' the disk should have 0's at critical points on the first two sectors. In particular, the 2 byte signature at the end of the first sector must not be 0xaa55 or the disk will be interpreted as having a slice (partition) table and it will be difficult to write to it where you want unless the slice table is initialized correctly. All bootable hard disks will have the 0xaa55 signature so they won't be empty. Empty disks may be created by copying zeros over the first 2 sectors: dd if=/dev/zero of=/dev/rsd1 bs=1k count=1 Note that this will (appear to) destroy all data on the disk. The above is not the best method. Normally you will have a slice table or a label that you want to preserve or modify slightly. This can be done using fdisk -u /dev/rsd1 # install or change slice table disklabel -r -w sd1 sea32550N # install label ^no /dev/r fdisk is unintuitive and has poor error handling so it is difficult to change slice tables using it. However, to install a new slice table on an empty drive you just have to accept all the defaults except for 'n' to write at the end. Note that the sd1 drive in the above is different from /dev/rsd1. disklabel modifies path names that don't start with a slash by prefixing /dev/r and suffixing the "raw" partition letter. sd1 thus means /dev/rsd1c, i.e., the 'c' partition on the first BSD slice on drive sd1, i.e., the whole of the first BSD slice on drive sd1, while /dev/rsd1 is the whole of drive sd1. Thus `disklabel ... sd1' will fail if there is no FreeBSD slice, while `disklabel /dev/rsd1' will print the in-core label for the whole drive. Oops, this assumes that slices are enabled by the 0xaa55 signature. If slices aren't enabled, then /dev/rsd1c means the whole drive. In practice, slices have to be enabled to make the disk bootable. If there are no BSD slices, then /dev/rsd1c will be empty instead of unconfigured and attempts to label sd1 will fail with a bogus error message about /dev/rsd1c not existing. /dev/sd1 didn't exist in previous versions of FreeBSD or 386BSD so your `disklabel -w /dev/sd1 ...' would have printed a less confusing error message before failing. >The disklabel I'm trying is >sea32550N|Seagate 32550N:\ > :ty=winchester:dt=SCSI:se#512:nc#3510:nt#11:ns#108:\ > :rm#7200:\ > :pa#2433024:oa#0:ta=4.2BSD:\ > :pc#4169880:oc#0: Note that ns has to be < 64 in the slice table. I would use nt#22:ns#54. This only matters if you don't accept fdisk's default (bogus) slice table. You have to use a valid table if you want multiple slices, or the first slice starting at a nonzero offset. Starting a nonempty slice at offset 0 is invalid so sysinstall doesn't support creating such slices. -- Bruce Evans bde@zeta.org.au