Return to BSD News archive
Path: euryale.cc.adfa.oz.au!newshost.anu.edu.au!harbinger.cc.monash.edu.au!news.rmit.EDU.AU!news.unimelb.EDU.AU!munnari.OZ.AU!news.ecn.uoknor.edu!solace!nntp.uio.no!news.cais.net!mr.net!news.mr.net!cronkite.polaristel.net!news From: Dale Batt <dalebatt@polaristel.net> Newsgroups: comp.unix.bsd.netbsd.misc Subject: Re: [comp.unix.bsd] NetBSD, FreeBSD, and 386BSD (0.1) FAQ (Part 6 of 10) Date: Thu, 13 Jun 1996 21:55:57 -0500 Organization: MEANS Lines: 644 Message-ID: <31C0D4BD.FF9@polaristel.net> References: <386bsd-faq-1-834645603@cynjut.neonramp.com> <386bsd-faq-6-834645603@cynjut.neonramp.com> NNTP-Posting-Host: kasson-11.dialup.polaristel.net Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Mailer: Mozilla 2.01 (Win95; U) 'Dave Burgess wrote: > > Posted-By: auto-faq 3.1.1.2 > Archive-name: 386bsd-faq/part6 > > Section 5. (Kernel Replacements) > > 5.0 Introduction > > This section is supposed to document the unusual or optional > kernel add-ons that are available from various places. As > they are included in the mainstream of the various Berkeley > Net Release systems, they will slowly come out of here. > > If you know of any replacement parts for the kernel, please > send Dave Burgess (burgess@cynjut.neonramp.com) a message > detailing the package (possibly include a README), where it > can be found, and what version of the OS (ie. NetBSD or > FreeBSD) it was designed to run under. > > 5.1 Available Kernel Replacements > > 5.1.2 pcvt > > A superset of pccons, this driver supports virtual consoles, > and some form of database oriented keyboard mappings. It was > also designed to emulate a vt220 terminal as best as possible. > > (This section originally identified Joerg Wuensch as the > author. Hellmuth Michealis is the author of pcvt. Joerg was the > author of the original post. This update is from Hellmuth > himself. Apologies from the FAQ staff...) > > The last release of pcvt is version 3.00 and was done on March > 1st 1994 to the newsgroup comp.sources.misc, Volume 41, Issue > 140-152 (part 1-13). Future releases and upgrades will be done > as patches or new releases to that newsgroup. > > pcvt was recently put into the kernel sourcetree of > NetBSD-current (pre 1.0) into /sys/arch/i386/isa/pcvt. > > pcvt is also available in the FreeBSD contributed tree at > location /usr/ports/util/pcvt. > > The pcvt package consists of: > > - the driver itself > - complete documentation for installation and operation > - termcap/terminfo, pcvt.el, rc.local, /etc/ttys, xmodmap examples > - cursor, utility to set the cursor size and shape > - fed, a curses-based EGA/VGA character set editor > - fontedit, utility to edit the VT220 downloadable character set > - ispcvt, utility to display the drivers compile time configuration > - kcon, utility to setup national keyboard layouts and remap keys > - keycap, keyboard mapping database library similar to termcap > - loadfont, utility to load up to 4/8 fonts into an EGA/VGA board > - mcon, utility to control/configure a keyboard based mouse emulator > - scon, utility to runtime configure the video part of pcvt > - userkeys, utility to set the VT220 user programmable function keys > - vttest, VT100 compatibility torture test program > - demo, color- characterset- and attribute demos > and more .... > > See the README-file for the latest release (3.00) of pcvt for > lots more information and a complete list of the contributors > to this project. > > 5.1.3 syscons > > Another superset of pccons that was designed to emulate SCO as > well as possible. Many of the ioctls from SysV have been > implemented. XFree86 2.0 no longer requires special patches > to be run with kernels using this console driver. > > 5.1.9 A replacement curses program/library. > > It is generally accepted that the NetBSD curses can be easily > replaced by the ncurses package. It is more complete and offers > much better support for shared libraries and other advanced > features. The current (early 1995 version) is 1.8.5 and is > available from ftp://netcom.com:/pub/zmbenhal/ncurses/1.8.5.tgz > > 5.2 Floppy Disk problems. > > 5.2.1 How do I get a bootable floppy? > > Several ways, ranging from brain-dead-but-works to simplest. > Classification into categories is left to the reader (is there > really a difference between 'brain-dead' and 'simple'?:') > > 1) rawrite (or dd) dist.fs (or fixit.fs) to a disk, > mount it, cd to the mount point, and execute: > > rm -rf . > > you now have a bootable floppy!;^} > > 2) Take your existing dist.fs or fixit.fs boot disk and > diskcopy it on a DOS machine. Mount and rm as in 1) > above. Again, you have a bootable floppy!;^} > > 3) Run disklabel on the floppy, e.g.: > > disklabel -w -r fd0a floppy5 > > where 'floppy5' is a 'name' for an entry in the /etc/disktab > file. You'll get a couple of ioctl errors because writing a > label to a floppy isn't supported (yet?), but the boot blocks > have indeed been written. > > 4) Write the boot blocks to the floppy: > > cat /usr/mdec/fdboot /usr/mdec/bootfd | dd of=/dev/rfd0a > > or, more simply: > > cat /usr/mdec/fdboot /usr/mdec/bootfd > /dev/rfd0a > > Methods 3) and 4) require you to run newfs on the floppy, e.g.: > > newfs /dev/rfd0a floppy5 > > If you have a floppy that was originally bootable, but the boot > blocks were somehow damaged, you can use method 3) or 4) to > restore boot-ability (do _NOT_ run newfs). You _could_, through > the convolutions of copying a floppy whose boot blocks are damaged > to a temporary location and then re-copying to a bootable floppy, > use method 1) or 2) (if you really want to!;^}) > > 5) If the disk is already newfs'ed and is otherwise ready to use, > disklabel will write the boot blocks on the disk. Read the man page > for disklabel. > > 5.2.2 How do I maximize the space on a mountable floppy disk. > > As you all know, when you are working with a floppy, it is usually > more important that the floppy have a lot of room, rather than a > lot of other 'stuff'. Here is the magic incantation that will > maximize the amount of free space on the disk. > > newfs -Tfloppy[35] -i[4096 | 8192] -c 80 /dev/fd[0|1]a > > This leaves the disk with fewer inodes and only one cylinder group. > > 5.3 Character Device Driver info > > These devices are also often referred to as character devices. > > 5.3.1 Printers > > NetBSD and FreeBSD both include both an interrupt and > non-interrupt driven parallel driver in their stock > manifestations. > > It is possible to connect a serial printer to either. This brief > tutorial is provided by Daryl Berryhill > (djberry2@b25info.b25.ingr.com) > > The way I got my printer to work. > > 1) connect a 25 pin to 9 pin null modem cable to printer and > computer. > 2) set printer to 9600 baud, 7 data bits, even parity. > 3) configure /dev/com1 (DOS COM2) port the same way as the printer > 4) add a line to /etc/printcap that says: > lp|local line printer:\ > :lp=/dev/com2:wq:sd=/var/spool/lpd:lf=/var/log/lpd-errs:\ > :br#9600 > 5) type "lpr <add filename here>" > 6) type "lpd" > and it should start printing. > > An obvious point, but make sure that you do NOT start a getty on > on the com port. Check the /etc/ttys file and make sure that > the com port you select is not active. > > There have been many reports in the past of people not being able > to get their parallel port printer working. One of the problems > seems to be cables. Another problem may be with the hardware. > A seemingly stupid suggestion is to replace your printer card with > the cheapest parallel port card you can find. I am using a $10 > single parallel, two serial port card that I got from Altex. > Works great. > > In addition, there are people that want to set up multiple printer > queues using the BSD queueing mechanism. Here is a brief tutorial: > > Lpf is mainly intended for processing text and nroffed output...it > isn't anything clean...it will do certain games that will mess up > PCL output. > > If you're producing straight PCL or Postscipt (assuming your LJ > takes it), then you want to print directly to the printer w/o any > processing. > > What you really want is a "physical" queue that does no processing, > and several logical queues that map back to the physical queue and > do processing...or one "smart" queue that does file content > recognition and then maps to the raw queue. > > I do something like this for my DeskJet. There is one raw queue > and several logical queues (some postscript that do different > resoultions and color depth, some text that do various formatting, > etc). When I get the time I'll be trying to set up a "smarter" > queue using aps and maybe some bits from flexfax. > > To map logical to physical queues either use a filter that pipes > back into lpr -P<rawqueue> itself, or just point it at the "raw" > queue using something like: > > textlp|Text Printing:\ > :lp=/dev/null:\ > :if=/usr/libexec/lpr/lpf:\ > :rm=localhost:\ > :rp=lj.raw: > > And other entries as needed, you get the idea...to use an output > filter instead of the rm/rp approach (more efficent), you can get > away with something like: > > :of=/usr/local/bin/printraw: > > where /usr/local/bin/printraw looks like this: > > #!/bin/sh > cat | lpr -h -Plj.raw > > 5.3.2 Terminals/Keyboards > > Terminals are relatively simple to add. It involves making sure the > /etc/ttys file identifies the com port (com0, com00, or tty00 > depending on your configuration) as an active port and a getty is > running. The man page for ttys and getty help explain this. > > Many people report that there are sometimes problems running some > programs on a remote terminal. There are some known bugs in the > terminal handler where the parity and bits per character are > concerned. They are being worked on. > > 5.3.3 Modems/FAX Modems > > 5.3.3.1 How do I add a modem to *BSD: > > The first part that confused me was assuming that /dev/com1 is > the same as DOS com1, they're not. /dev/com0 is connected to > COM1 and (I think) /dev/com1 is connected to COM2. > > The switch settings for my modem were the same as what I had > under DOS, CTS CD RTS et al were set to follow the actual line > (i.e. my modem can force them high, which I turn off) > > Ok that's not too bad. > > Now you need to edit the /etc/remote file to include a reference > to the com port. I have only used NetBSD-0.8, so I'm not sure > what the default files are like that come with the other rev's > of *BSD. > > I added the last line (with com0). > -------------------------------------------------------- > # @(#)remote 5.2 (Berkeley) 6/30/90 > # > > ...stuff deleted... > > # UNIX system definitions > unix1200|1200 Baud dial-out to another UNIX system:\ > :el=^U^C^R^O^D^S^Q:ie=%$:oe=^D:tc=dial1200: > unix300|300 Baud dial-out to another UNIX system:\ > :el=^U^C^R^O^D^S^Q:ie=%$:oe=^D:tc=dial300: > > ...stuff deleted... > > dial2400|2400 Baud Hayes attributes:\ > :dv=/dev/tty19:br#2400:cu=/dev/tty19:at=hayes:du: > dial1200|1200 Baud Hayes attributes:\ > :dv=/dev/tty19:br#1200:cu=/dev/tty19:at=hayes:du: > > # Hardwired line > com1c|com1:dv=/dev/com1:br#9600: > com1b:dv=/dev/com1:br#2400: > > com0:com0:dv=/dev/com0:br#9600:at=hayes: > ------------------------------------------------ > > Ok, now if you are running as root you can use type 'tip com0' > and you should then be talking to your modem. I use kermit to > transfer files, and it wants to create a lock file in (not sure > about the exact path) /var/spool/uucp/lock or something along > those lines. I made the directory world writeable so I could > run kermit with my own uid, rather than root. > > Also, you may need to add an entry in /etc/remote for com0. > > Thanks also to thombsr@liciren.li.co.uk for information on how > to do this. > > New problems have surfaced with the latest releases of NetBSD. > It seems that the paradigm that the com port used to use was > 'less than complte' and much of the code has been replaced. > This provides for some interesting new problems. The first is > that the Carrier Detect line is no longer ignored, as it was > before. This means that programs like kermit and tip/cu either > have to be told explicitly to ignore the CD line (in kermit, > for example, you would use the 'set carrier off' in your .kermrc) > or you need to use the 'stty -f /dev/com? clocal' command before > you open the port. > > If you have trouble getting the settings to 'stick' it is because > the ports are now initialized to known settings on the last close > of the port. A workaround for this is to use the command: > > sleep 1000 < /dev/com? > tip ... > { or } > kermit ... > > This will keep the port open for about 12 minutes while you do > whatever it is you need to do. Once the port is open and your > connection established, the port will not reset until the final > close. > > Another symptom of this malady is described below. > > When I 'set line' in kermit, it hangs until I hit my escape > character (^\). It *does* set the line (and the rest of my session > is normal), but it's annoying because I can't put 'set line' in > my .kermrc. > > The answer is available in the kermit documentation as well as > here (now). The following commands are MY .kermrc file: > > set carrier off > set line /dev/com2 > set speed 38400 > set modem hayes > set dial speed on > set dial timeout 60 > > The 'set carrier off' tells kermit to ignore the Carrier Detect > line from the modem, and to proceed as if the command were > there. This will (as far as I have ever been able to find > out) fix the specific problem with not being able to set the > line. > > > 5.3.3.2 Adding a modem to NetBSD. > > 5.3.3.3 Adding a modem to FreeBSD. > > 5.3.3.4 Adding a Dial-in/Dial-out FAX to NetBSD or FreeBSD. > > First, here is the known working configuration for these > instructions: > > - HylaFAX 3.0 beta 100. > - Zoom VFX V.32bis Faxmodem; > - Rockwell datapump. > > 1: Start faxq from rc.local, no options on the command line. > > Add a line to your /etc/rc.local which starts up the faxq > program. Do not include any options on the command line. > > 2: Stary faxgetty from init, i.e. a line in /etc/ttys. > > I use the non modem control device; however, it's nonstandard > hardware and I've modified the driver to always return sighup > on lost carrier to solve some sticky problems with non modem > control devices never getting SIGHUP's. > > Basically, I just did as the directions said to do. I ran > 'faxaddmodem' script to configure the type of modem. I did > have to simplify some lines in the script (the ones executed > in a subshell) since I think my version of bash doesn't handle > subshells correctly. > > RTFM and you should be OK unless your modem is braindead and > stupid, not too unlikely tho given the current state of Fax > modems... B^(. > > 5.3.4 What is the trick for getting Kermit to work with rz and sz? > > Add these lines to your .kermrc file. They should do the trick. > > define sz !sz \%1 \%2 \%3 \%4 \%5 \%6 \%7 \%8 \%9 < \v(line) > \v(line) > define rz !rz \%1 \%2 \%3 \%4 \%5 \%6 \%7 \%8 \%9 < \v(line) > \v(line) > > 5.4 Tape Drives > > This section should help out for those of you that have either > never used tape drives before, or only have experience with them > as non-Unix devices. > > 5.4.1 Does the tape need to be formatted? > > It depends, but I think usually not. And when it is necessary, > I don't know how it would be done. One thing is for certain, > though, first.... NEVER use the block devices.. erase them and > forget you ever saw them. All operations on tape should be to > the character device (rst0). > > 5.4.2 If I execute the command 'st -f /dev/st0 status', I get: > Archive/Tandberg? tape drive, residual=0, blocksize=512 > Density: high = 16 (0x10), medium = 15 (0xf), low = 5 (0x5) > ds=0 > er=0 > > so to write to tape at high-density (QIC-150), presumably I want > to use a device with minor number +4 (in st.c, density is computed as > minor >> 2 & 0x03, where low density == 3 and high == 1): > > You have the idea.. density is controlled by bits 2 and 3 > > 00 = default > 01 = hi density > 10 = medium density > 11 = low density, > > Unless the driver knows about you kind of drive the density values > may need to be set by hand before they make any sense. > > 5.4.3 When is erst0 used? > > e stands for 'eject' and is bit 1 of the minor.. > e.g. eject on close.. many devices can't actually do this. > > There is actually a method to this whole thing: > > r = raw (rst0) > e = eject (erst0) > n = No rewind (nrst0 or maybe nerst0) > > 5.4.4 How is density (bpi) computed? I am using 3M DC 6250 cassettes > which have a 250MB capacity on the Viper 150. But computing the > bits/inch based on 250MB/tape-length (1020 ft.), I get a density > of 171335 bpi, which is nowhere near the 10000 bpi associated > with QIC-150 in the st(1) man page. Why the discrepancy? > > These cartridge tapes are written in narrow tracks which > alternately begin at opposite ends of the tape. Track 0 starts > at the beginning of the tape, and Track 1 starts at the other > end, etc. > > So, how many times does the tape go backwards and forwards? If > there are 17 tracks, your density is 170000 bpi if it is 10000 > bpi per track. The more tracks, the lower the bpi/track. > > 5.4.5 How is an appropriate block size determined (and in what units > are they specified in the st(1) command)? > > QIC 150 and below should stick to 512 byte blocks a write of > 1024 bytes from the program will be written as 2 512 byte blocks > with no speed penalty. dd will think it's writing a 1024 byte > block but on tape it's 2 x 512. > > Stick to 512 on QIC 150 or less if you ever hope to swap data > with anyone else. > > 5.4.6 From the 4.3BSD mtio(4) man page, it sounds like data is typically > (traditionally?) stored on tape in eof-terminated sequences of > 1K records. > > 5.4.6.1 Is st's notion of "file" the record sequence between two eof marks? > > 5.4.6.2 What about a "record"? > > 5.4.6.3 Is a "record" one "block", as determined by st's "blocksize" command? > If not, what is the connection between them? > > 5.4.6.4 Can I change the "record" size? > 5.4.6.5 When would I want a block size that is different from the default? > 1KB is the size of writes used by dd or whatever. QIC specifies > 512 byte records (well at least its what people use..) Whatever > you write in will be broken into 512 byte sections. They must be > multiples of 512 though. > > If you have written to a tape, a close will automatically append a > filemark (eof mark). You may read the 512 byte blocks back as > 512 byte records or as 1024 byte records (in which case you'll > get 2 at once). The bigger the unit, the more efficient. > > 5.4.7.1 How do I write several archives to a single tape? I tried without > success: > $ st -f /dev/rst4 rewind > $ tar cf /dev/nst4 archive1 > $ st -f /dev/nrst4 weof > $ tar cf /dev/nst4 archive2 > $ st -f /dev/nrst4 weof > > First: throw away the block devices. > > 'n' stands for 'No-Rewind-on-close' and will leave the tape > positioned ready for another file e.g. > > tar -cf /dev/nrst0 archive1 > tar -cf /dev/nrst0 archive2 > > 5.4.7.2 Later, I would expect to be able to access, say, archive3 via the fsf > directive to skip over the first two archives. What is the correct > sequence? > > st -f /dev/nrst0 rewind > st -f /dev/nrst0 fsf 2 > tar -xf /dev/rst0 {files} > > 5.4.8 Since the Viper 150 writes on QIC-150/120, I guess I don't need > to worry about writing variable-length records? How about reading > a tape written with variable-length records. Is this possible > with the Viper? If so, what's involved? > > Who would have written it? :-) > > Presently you can't. You`re right. Don't worry about it. > > The new 'st' changes will change this somewhat, though. > > 5.4.9 The very scant documentation that came with my drive mentions > a "selectable buffer disconnect size," whose default is 16K. > This is evidently the "maximum number of bytes that can be > sent over the SCSI bus during a single data transfer phase." > What's that? How is it connected st's "blocksize" command? > Do I want to use 16K blocks, or might I even want to set the > disconnect size to a higher value? > > This suggests that 32 512 blocks will be written at a time. > This jives with the tape format for some of the lower density > cartridges (QIC-40 and 80, for example). The tape is written > in blocks of 32 512-byte blocks, with the last three being used > for Error Correction Codes. > > Use dd or tar with 16 k blocks and 32 x 512 byte blocks will be > written. > > 5.4.10 What is "streaming"? When I tar a directory of files to tape, > I notice that the tape often stops. Streaming means it doesn't > stop? How would I get the viper 150 to stream using tar or cpio > or dump? > > Use a bigger write size... (more efficient) Try 16k blocks. > > 5.4.11 Where are all the answers to the above and related questions > written down? Neither on the net nor in the 4.3BSD manuals > nor Administration text which I have could I find this stuff > covered! > > They are in the FAQ :-)... > > 5.4.12 What else should I know? For example, it seems that a new tape > must stretched. How is this done? > > Use a blowtorch and a pair of pliers; or you can use the > non-destructive method and run the tape through a complete fast > forward/rewind cycle to get it tight on the spindles. > > 5.4.13 My tape drive doesn't work. > > OK. There are lots of reasons why it may not. The most obvious is > that there are no devices associated with the device in the kernel. > You can check this through the use of the 'dmesg' command. Look > for tape drives. > > If your tape drive is connected to your floppy controller, it may > or may not be supported. Several manufacturers of QIC-40/QIC-80 > minicartridge drives are supported natively in FreeBSD and > experimentatlly in NetBSD. Some aren't (mine for example, is not). > > If your tape drive is a SCSI based drive, your guess is as good as > mine. I don't have one. > > 5.4.14 I am trying to restore a tape from a FreeBSD machine on a Sun. > What kinds of problems should I expect? > > The default blocksize should not be a problem, since they are > both 20K. You may need to use "dd if=/dev/rst0 conv=swab | > <archiver>" instead of extracting directly from tape, just > in case the byte order causes a problem. This is especially > true if you don't use the 'a' and 'c' options in cpio, for > example. > > 5.5 Network > > Network devices for NetBSD and FreeBSD include many types of > Ethernet cards, as well as Serial Line IP and Point to Point > Protocol. > > 5.5.1 How can I get my system to work as a network router? > > The first hurdle to overcome is that the default kernels do not > have the GATEWAY option compiled in. Without this, it is very > nearly impossible to use the kernel as a router. > > Once you have the GATEWAY option compiled in, all sorts of things > magically start to work. If you haven't got the GATEWAY option > enabled, you can also use 'sysctl -w net.inet.ip.forwarding=1' > if you are using FreeBSD or NetBSD versions that support that. > Remember, once you build the new kernel, you will need to > install it in the root directory and reboot. > > Once you have the forwarding option set, you will need to make > certain that you have not included the '-q' option to routed. > This should be in the routed_flags keyword in /etc/netstart. If > you are using multiple internal LANs, you may also want to > invest in gated instead. > > For those folks that are not using routed, you will need to make > certain that you have a static route to your network provider > established. > > To test your network capability, try running the following > command: > > trceroute -s YOUR_ETHERNET_ADDRESS 129.186.150.150 > > Check to see where your packets are hanging up. It might be > that someone upstream from you has something broken instead of > simply assuming it is your fault. > > 5.5.2 I recently has a problem where I got a message that said "panic: > kmem_malloc: mb_map too small". What is the solution to this > problem? > > The second hurdle is that sometimes you run out of cluster > allocation space in the kernel. This is probably network-related > and usually shows up when something is being done using the > network (like NFS). The way to get around this would be to > change the value of NMBCLUSTERS in your config file. NMBCLUSTERS > is set at 256 by default, and increased to 512 when the GATEWAY > option is active. To be very safe, you could add > > options NMBCLUSTERS=1024 > > to your config file, and recompile. This is reported to work > with systems that crashed as soon as a large number of people > (75+) were connected to it. > > 5.6 I want to use my ZIP drive. Are there any weird things I need > to know? > > One of the things that "just work" are ZIP drives. The -current > code for both FreeBSD and NetBSD handle ZIP drives very cleanly. > One of the unusual things about ZIP drives is that most people > don't know (and the man page is deliberately vague about) is > once a pers