diff --git a/handbook/dma.sgml b/handbook/dma.sgml index db63b82b8b..9b96da980c 100644 --- a/handbook/dma.sgml +++ b/handbook/dma.sgml @@ -1,105 +1,511 @@ - + -PC DMA - -

Contributed by &a.uhclem;. - 31 August 1995. - -Posted to : - -

Yes, as long as `single mode' is appropriate for you, there's no need -to worry about TC. TC is intented for continuous mode. Well, i've -just noticed that the PC DMAC cannot even generate an interrupt when -ready... hmm, go figure, the Z80 DMAC did it. -

And yes, for `single mode', the masking trick will do it. The -peripheral device will issue a DRQ signal for each transfered -byte/word, and masking would prevent the DMAC from accepting new DRQs -for this channel. Aborting a continuous mode transfer would not be so -easy (or even impossible at all). - - -Actually, masking is the correct procedure for all transfer modes on the -8237, even autoinit mode, which is frequently used for audio operations -since it allows seamless DMA transfers with no under/overruns. - -You are generally correct about TC. All the TC signal does is -when the counter on any channel in the DMA controller goes from -one to zero, TC is asserted. What the peripherals are supposed -to if they want to generate an interrupt when the transfer is -through, is that peripheral device is supposed to look at -(-DACK%d && TC && DEVICE_DMA_ACTIVE) and then -latch an IRQ%d for the 8259 interrupt controller. Since there is -only one TC signal, it is important that only the peripheral who -is transferring data at that moment honor the TC signal. - -The host CPU will eventually investigate the interrupt by having some driver -poll the hardware associated with the peripheral, NOT the DMA controller. -If a peripheral doesn't want an interrupt associated with the DMA counter -reaching zero, it doesn't implement the circuitry to monitor TC. - -Some sound cards realize that when the TC hits zero it means the DMA -is now idle and that is really too late, so they don't use TC and -instead allow the driver to program in a local counter value, which -is usually set lower than the value programmed into the DMA. This means -the peripheral can interrupt the CPU in advance of the DMA "running dry", -allowing the CPU to be ready to reprogram the DMA the instant it finishes -what it is doing, rather than incurring the latency later. - -This also means that two or more different devices could share a -DMA channel, by tristating DRQ%d when idle and only -honoring -DACK%d when the device knows it is expecting -the DMA to go active. (Iomega PC2B boards forgot this minor -point and will transfer data even if they are not supposed to.) - - -So, if you want to abort a 8237 DMA transfer of any kind, simply mask the -bit for that DMA channel in the 8237. Note: You can't interrupt an individual -transfer (byte or burst) in progress. Think about it... if the DMA is -running, how is your OUT instruction going to be performed? -The CPU has to be bus master for the OUT to be performed. - -Since the 8237 DMA re-evaluates DMA channel priorities constantly, even if -the DMA had already asserted HOLD (to request the bus from the CPU) when -the OUT actually took place, the processor would still grant the bus to the -DMA controller. The DMA controller would look for the highest-priority -DMA source remaining (your interrupt is masked now) at that instant, -and if none remained, the DMA will release HOLD and the processor will -get the bus back after a few clocks. - -There is a deadly race condition in this area, but if I remember right, -you can't get into it via mis-programming the DMA, UNLESS you cause the DMA -controller to be RESET. You should not do this. Effectively the CPU -can give up the bus and the DMA doesn't do anything, including giving the -bus back. Very annoying and after 16msec or so, all is over since -refresh on main memory has started failing. - -So, mask the DMA controller, then go do what you have to do to get the -transfer aborted in the peripheral hardware. In some extremely stupid -hardware (I could mention a few), you may have to program the DMA to -transfer one more byte to a garbage target to get the peripheral hardware -to go back to an idle state. Most hardware these days isn't that -stupid. - -Technically, you are supposed to mask the DMA channel, program the other -settings (direction, address, length, etc), issue commands to the -peripheral and then unmask the DMA channel once the peripheral commands have -been accepted. The last two steps can be done out of order without -harm, but you must always program the DMA channel while it is masked to -avoid spraying data all over the place in the event the peripheral -unexpected asserts DRQ%d. - -If you need to pad-out an aborted buffer, once you have masked the -DMA, you can ask it how many bytes it still had to go and what -address it was to write to next. Your driver can then fill in the -remaining area or do what needs to be done. - - -Don't forget that the 8237 was designed for use with the 8085 and -really isn't suited to the job that IBM gave it in the original PC. -That's why the upper eight bits of DMA addressing appear to be lashed-on. -They are. Look at the schematics of the original PC and you will -the upper bits are kept in external latches that are enabled whenever -the DMA is too. Very kludgy. + + DMA: What it is and how it works + +

Copyright © 1995 &a.uhclem;, All Rights Reserved. + 18 October 1995. + + + + Direct Memory Access (DMA) is a method of allowing data to + be moved from one location to another in a computer without + intervention from the central processor (CPU). + + The way that the DMA function is implemented varies between + computer architectures, so this discussion will limit + itself to the implementation and workings of the DMA + subsystem on the IBM Personal Computer (PC), the IBM PC/AT + and all of its successors and clones. + + The PC DMA subsystem is based on the Intel 8237 DMA + controller. The 8237 contains four DMA channels that can + be programmed independently and any of the channels may be + active at any moment. These channels are numbered 0, 1, 2 + and 3. Starting with the PC/AT, IBM added a second 8237 + chip, and numbered those channels 4, 5, 6 and 7. + + The original DMA controller (0, 1, 2 and 3) moves one byte + in each transfer. The second DMA controller (4, 5, 6, and + 7) moves 16-bits in each transfer. The two controllers are + identical and the difference in transfer size is caused by + the way the second controller is wired into the system. + + The 8237 has two electrical signals for each channel, named + DRQ and -DACK. There are additional signals with the + names HRQ (Hold Request), HLDA (Hold Acknowledge), -EOP + (End of Process), and the bus control signals -MEMR (Memory + Read), -MEMW (Memory Write), -IOR (I/O Read), and -IOW (I/O + Write). + + The 8237 DMA is known as a ``fly-by'' DMA controller. This + means that the data being moved from one location to + another does not pass through the DMA chip and is not + stored in the DMA chip. Subsequently, the DMA can only + transfer data between an I/O port and a memory address, but + not between two I/O ports or two memory locations. + + Note: The 8237 does allow two channels to + be connected together to allow memory-to-memory DMA + operations in a non-``fly-by'' mode, but nobody in the PC + industry uses this scarce resource this way since it is + faster to move data between memory locations using the + CPU. + + In the PC architecture, each DMA channel is normally + activated only when the hardware that uses that DMA + requests a transfer by asserting the DRQ line for that + channel. + + + A Sample DMA transfer + +

Here is an example of the steps that occur to cause a + DMA transfer. In this example, the floppy disk + controller (FDC) has just read a byte from a diskette and + wants the DMA to place it in memory at location + 0x00123456. The process begins by the FDC asserting the + DRQ2 signal to alert the DMA controller. + + The DMA controller will note that the DRQ2 signal is asserted. + The DMA controller will then make sure that DMA channel 2 + has been programmed and is enabled. The DMA controller + also makes sure that none of the other DMA channels are active + or have a higher priority. Once these checks are + complete, the DMA asks the CPU to release the bus so that + the DMA may use the bus. The DMA requests the bus by + asserting the HRQ signal which goes to the CPU. + + The CPU detects the HRQ signal, and will complete + executing the current instruction. Once the processor + has reached a state where it can release the bus, it + will. Now all of the signals normally generated by the + CPU (-MEMR, -MEMW, -IOR, -IOW and a few others) are + placed in a tri-stated condition (neither high or low) + and then the CPU asserts the HLDA signal which tells the + DMA controller that it is now in charge of the bus. + + Depending on the processor, the CPU may be able to + execute a few additional instructions now that it no + longer has the bus, but the CPU will eventually have to + wait when it reaches an instruction that must read + something from memory that is not in the internal + processor cache or pipeline. + + Now that the DMA ``is in charge'', the DMA activates its + -MEMR, -MEMW, -IOR, -IOW output signals, and the address + outputs from the DMA are set to 0x3456, which will be + used to direct the byte that is about to transferred to a + specific memory location. + + The DMA will then let the device that requested the DMA + transfer know that the transfer is commencing. This is + done by asserting the -DACK signal, or in the case of the + floppy disk controller, -DACK2 is asserted. + + The floppy disk controller is now responsible for placing + the byte to be transferred on the bus Data lines. Unless + the floppy controller needs more time to get the data + byte on the bus (and if the peripheral needs more time it + alerts the DMA via the READY signal), the DMA will wait + one DMA clock, and then de-assert the -MEMW and -IOR + signals so that the memory will latch and store the byte + that was on the bus, and the FDC will know that the byte + has been transferred. + + Since the DMA cycle only transfers a single byte at a + time, the FDC now drops the DRQ2 signal, so that the DMA + knows it is no longer needed. The DMA will de-assert the + -DACK2 signal, so that the FDC knows it must stop placing + data on the bus. + + The DMA will now check to see if any of the other DMA + channels have any work to do. If none of the channels + have their DRQ lines asserted, the DMA controller has + completed its work and will now tri-state the -MEMR, + -MEMW, -IOR, -IOW and address signals. + + Finally, the DMA will de-assert the HRQ signal. The CPU + sees this, and de-asserts the HOLDA signal. Now the CPU + activates its -MEMR, -MEMW, -IOR, -IOW and address lines, + and it resumes executing instructions and accessing main + memory and the peripherals. + + For a typical floppy disk sector, the above process is + repeated 512 times, once for each byte. Each time a byte + is transferred, the address register in the DMA is + incremented and the counter that shows how many bytes are + to be transferred is decremented. + + When the counter reaches zero, the DMA asserts the EOP + signal, which indicates that the counter has reached zero + and no more data will be transferred until the DMA + controller is reprogrammed by the CPU. This event is + also called the Terminal Count (TC). There is only one + EOP signal, because only one DMA channel can be active at + any instant. + + If a peripheral wants to generate an interrupt when the + transfer of a buffer is complete, it can test for its + -DACK signal and the EOP signal both being asserted at + the same time. When that happens, it means the DMA won't + transfer any more information for that peripheral without + intervention by the CPU. The peripheral can then assert + one of the interrupt signals to get the processors' + attention. The DMA chip itself is not capable of + generating an interrupt. The peripheral and its + associated hardware is responsible for generating any + interrupt that occurs. + + It is important to understand that although the CPU + always releases the bus to the DMA when the DMA makes the + request, this action is invisible to both applications + and the operating systems, except for slight changes in + the amount of time the processor takes to execute + instructions when the DMA is active. Subsequently, the + processor must poll the peripheral, poll the registers in + the DMA chip, or receive an interrupt from the peripheral + to know for certain when a DMA transfer has completed. + + +DMA Page Registers and 16Meg address space limitations + +

You may have noticed earlier that instead of the DMA + setting the address lines to 0x00123456 as we said + earlier, the DMA only set 0x3456. The reason for this + takes a bit of explaining. + + When the original IBM PC was designed, IBM elected to use + both DMA and interrupt controller chips that were + designed for use with the 8085, an 8-bit processor with + an address space of 16 bits (64K). Since the IBM PC + supported more than 64K of memory, something had to be + done to allow the DMA to read or write memory locations + above the 64K mark. What IBM did to solve this problem + was to add a latch for each DMA channel, that holds the + upper bits of the address to be read to or written from. + Whenever a DMA channel is active, the contents of that + latch is written to the address bus and kept there until + the DMA operation for the channel ends. These latches + are called ``Page Registers''. + + So for our example above, the DMA would put the 0x3456 + part of the address on the bus, and the Page Register for + DMA channel 2 would put 0x0012xxxx on the bus. Together, + these two values form the complete address in memory that + is to be accessed. + + Because the Page Register latch is independent of the DMA + chip, the area of memory to be read or written must not + span a 64K physical boundary. If the DMA accesses memory + location 0xffff, the DMA will then increment the address + register and it will access the next byte at 0x0000, not + 0x10000. The results of letting this happen are probably not intended. + + Note: ``Physical'' 64K boundaries should + not be confused with 8086-mode 64K ``Segments'', which + are created by adding a segment register with an offset + register. Page Registers have no address overlap. + + To further complicate matters, the external DMA address + latches on the PC/AT hold only eight bits, so that gives + us 8+16=24 bits, which means that the DMA can only point + at memory locations between 0 and 16Meg. For newer + computers that allow more than 16Meg of memory, the + PC-compatible DMA cannot access locations above 16Meg. + + To get around this restriction, operating systems will + reserve a buffer in an area below 16Meg that also doesn't + span a physical 64K boundary. Then the DMA will be + programmed to read data to that buffer. Once the DMA has + moved the data into this buffer, the operating system + will then copy the data from the buffer to the address + where the data is really supposed to be stored. + + When writing data from an address above 16Meg to a + DMA-based peripheral, the data must be first copied from + where it resides into a buffer located below 16Meg, and + then the DMA can copy the data from the buffer to the + hardware. In FreeBSD, these reserved buffers are called + ``Bounce Buffers''. In the MS-DOS world, they are + sometimes called ``Smart Buffers''. + + + DMA Operational Modes and Settings + +

The 8237 DMA can be operated in several modes. The main + ones are: + + + + Block/Demand Once the DMA acquires the + system bus, an entire block of data is transferred, + up to a maximum of 64K. If the peripheral needs + additional time, it can assert the READY signal. + READY should not be used excessively, and for slow + peripheral transfers, the Single Transfer Mode should + be used instead. + + The difference between Block and Demand is the once a + Block transfer is started, it runs until the transfer + count reaches zero. DRQ only needs to be asserted + until -DACK is asserted. Demand Mode will transfer + one more bytes until DRQ is de-asserted, then when + DRQ is asserted later, the transfer resumes where it + was suspended. + + Older hard disk controllers used Demand Mode until + CPU speeds increased to the point that it was more + efficient to read the data using the CPU. + + + Cascade This mechanism allows a DMA channel + to request the bus, but then the attached peripheral + device is responsible for placing addressing + information on the bus. This is also known as ``Bus + Mastering''. + + When a DMA channel in Cascade Mode receives control + of the bus, the DMA does not place addresses and I/O + control signals on the bus like it normally does. + Instead, the DMA only asserts the -DACK signal for + this channel. + + Now it is up to the device connected to that DMA + channel to provide address and bus control signals. + The peripheral has complete control over the system + bus, and can do reads and/or writes to any address + below 16Meg. When the peripheral is finished with + bus, it de-asserts the DRQ line, and the DMA + controller can return control to the CPU or to some + other DMA channel. + + Cascade Mode can be used to chain multiple DMA + controllers together, and this is exactly what DMA + Channel 4 is used for in the PC. When a peripheral + requests the bus on DMA channels 0, 1, 2 or 3, the + slave DMA controller asserts HLDREQ, but this wire is + actually connected to DRQ4 on the primary DMA + controller. The primary DMA controller then requests + the bus from the CPU using HLDREQ. Once the bus is + granted, -DACK4 is asserted, and that wire is + actually connected to the HLDA signal on the slave + DMA controller. The slave DMA controller then + transfers data for the DMA channel that requested it, + or the slave DMA may grant the bus to a peripheral + that wants to perform its own bus-mastering. + + Because of this wiring arrangement, only DMA channels + 0, 1, 2, 3, 5, 6 and 7 are usable on PC/AT systems. + + Note: DMA channel 0 was reserved for + refresh operations in early IBM PC computers, but + is generally available for use by peripherals in + modern systems. + + When a peripheral is performing Bus Mastering, it is + important that the peripheral transmit data to or + from memory constantly while it holds the system bus. + If the peripheral cannot do this, it must release the + bus frequently so that the system can perform refresh + operations on memory. + + Since memory read and write cycles ``count'' as refresh + cycles (a refresh cycle is actually an incomplete + memory read cycle), as long as the peripheral + controller continues reading or writing data to + sequential memory locations, that action will refresh + all of memory. + + Bus-mastering is found in some SCSI adapters and + other high-performance peripheral cards. + + + Autoinitialize This mode causes the DMA to + perform Byte, Block or Demand transfers, but when the + DMA transfer counter reaches zero, the counter and + address is set back to where they were when the DMA + channel was originally programmed. This means that + as long as the device requests transfers, they will + be granted. It is up to the CPU to move new data + into the fixed buffer ahead of where the DMA is about + to transfer it for output operations, and read new + data out of the buffer behind where the DMA is + writing on input operations. This technique is + frequently used on audio devices that have small or + no hardware ``sample'' buffers. There is additional + CPU overhead to manage this ``circular'' buffer, but in + some cases this may be the only way to eliminate the + latency that occurs when the DMA counter reaches zero + and the DMA stops until it is reprogrammed. + + + Programming the DMA + +

The DMA channel that is to be programmed should always + be ``masked'' before loading any settings. This is because + the hardware might assert DRQ, and the DMA might respond, + even though not all of the parameters have been loaded or + updated. + + Once masked, the host must specify the direction of the + transfer (memory-to-I/O or I/O-to-memory), what mode of + DMA operation is to be used for the transfer (Single, + Block, Demand, Cascade, etc), and finally the address and + length of the transfer are loaded. The length that is + loaded is one less than the amount you expect the DMA to + transfer. The LSB and MSB of the address and length are + written to the same 8-bit I/O port, so another port must + be written to first to guarantee that the DMA accepts the + first byte as the LSB and the second byte as the MSB. + + Then, be sure to update the Page Register, which is + external to the DMA and is accessed through a different + set of I/O ports. + + Once all the settings are ready, the DMA channel can be + un-masked. That DMA channel is now considered to be + ``armed'', and will respond when DRQ is asserted. + + Refer to a hardware databook for precise programming + details for the 8237. You will also need to refer to the + I/O port map for the PC system. This map describes where + the DMA and Page Register ports are located. A complete + table is located below. + + + DMA Port Map + +

All systems based on the IBM-PC and PC/AT have the DMA + hardware located at the same I/O ports. The complete + list is provided below. Ports assigned to DMA Controller + #2 are undefined on non-AT designs. + +0x00 - 0x1f DMA Controller #1 (Channels 0, 1, 2 and 3) + +

DMA Address and Count Registers + + +0x00 write Channel 0 starting address +0x00 read Channel 0 current address +0x02 write Channel 0 starting word count +0x02 read Channel 0 remaining word count + +0x04 write Channel 1 starting address +0x04 read Channel 1 current address +0x06 write Channel 1 starting word count +0x06 read Channel 1 remaining word count + +0x08 write Channel 2 starting address +0x08 read Channel 2 current address +0x0a write Channel 2 starting word count +0x0a read Channel 2 remaining word count + +0x0c write Channel 3 starting address +0x0c read Channel 3 current address +0x0e write Channel 3 starting word count +0x0e read Channel 3 remaining word count + + +DMA Command Registers + + +0x10 write Command Register +0x10 read Status Register +0x12 write Request Register +0x12 read - +0x14 write Single Mask Register Bit +0x14 read - +0x16 write Mode Register +0x16 read - +0x18 write Clear LSB/MSB Flip-Flop +0x18 read - +0x1a write Master Clear/Reset +0x1a read Temporary Register +0x1c write Clear Mask Register +0x1c read - +0x1e write Write All Mask Register Bits +0x1e read - + + +0xc0 - 0xdf DMA Controller #2 (Channels 4, 5, 6 and 7) + +

DMA Address and Count Registers + + +0xc0 write Channel 4 starting address +0xc0 read Channel 4 current address +0xc2 write Channel 4 starting word count +0xc2 read Channel 4 remaining word count + +0xc4 write Channel 5 starting address +0xc4 read Channel 5 current address +0xc6 write Channel 5 starting word count +0xc6 read Channel 5 remaining word count + +0xc8 write Channel 6 starting address +0xc8 read Channel 6 current address +0xca write Channel 6 starting word count +0xca read Channel 6 remaining word count + +0xcc write Channel 7 starting address +0xcc read Channel 7 current address +0xce write Channel 7 starting word count +0xce read Channel 7 remaining word count + + +DMA Command Registers + + +0xd0 write Command Register +0xd0 read Status Register +0xd2 write Request Register +0xd2 read - +0xd4 write Single Mask Register Bit +0xd4 read - +0xd6 write Mode Register +0xd6 read - +0xd8 write Clear LSB/MSB Flip-Flop +0xd8 read - +0xda write Master Clear/Reset +0xda read Temporary Register +0xdc write Clear Mask Register +0xdc read - +0xde write Write All Mask Register Bits +0xde read - + + +0x80 - 0x9f DMA Page Registers + +

+0x87 r/w DMA Channel 0 +0x83 r/w DMA Channel 1 +0x81 r/w DMA Channel 2 +0x82 r/w DMA Channel 3 + +0x8b r/w DMA Channel 5 +0x89 r/w DMA Channel 6 +0x8a r/w DMA Channel 7 + +0x8f Refresh + diff --git a/handbook/eresources.sgml b/handbook/eresources.sgml index c5bc6429a8..f83e4be3d7 100644 --- a/handbook/eresources.sgml +++ b/handbook/eresources.sgml @@ -1,356 +1,356 @@ - + Resources on the Internet

The rapid pace of FreeBSD progress makes print media impractical as a means for following the latest developments. Electronic resources are the best, if not the only way stay informed of the latest advances. Also, since FreeBSD is a volunteer effort, the user community also serves as the technical support department and invariably, electronic mail and Usenet news are the most effective way of getting technical problems resolved. Below, the most important points of contact with the FreeBSD user community are outlined. If you are aware of other resources not included, please send them to doc@freebsd.org so they may be included. Mailing lists

Though many of the FreeBSD development members read USENET, we cannot always guarantee that we'll get to your questions in a timely fashion (or at all) if you post them only to one of the comp.unix.bsd.* groups. By addressing your questions to the appropriate mailing list you will reach both us and a concentrated FreeBSD audience, invariably assuring a better (or at least faster) response. There are list charters at the bottom of this document. Please read the list charter before joining a list. We must strive to keep the signal to noise ratio of the lists high, especially in the technical lists. Archives are kept for all of the mailing lists and can be searched -using the the . The keyword searchable archive offers an excellent way to find answers to frequently asked questions and should be consulted before posting a question. List summary

General lists: The following are general lists that anyone is free to join: List Purpose ---------------------------------------------------------------------- freebsd-announce Important events / milestones freebsd-bugs Bug reports freebsd-chat Non technical items related to the community freebsd-current Discussions about the use of FreeBSD-current freebsd-isp Issues for ISP's using FreeBSD freebsd-policy Policy issues and suggestions freebsd-questions User questions Technical lists: The following are the technical lists. You should read the charter carefully before joining them, and you should keep your e-mail within the scope of the guidelines. List Purpose ---------------------------------------------------------------------- freebsd-doc Documentation project freebsd-fs Filesystems freebsd-hackers General Technical discussions freebsd-hardware General discussion of FreeBSD hardware freebsd-multimedia Multimedia discussions freebsd-platforms Porting to Non-Intel platforms freebsd-ports Discussion of "ports" freebsd-security Security issues freebsd-scsi SCSI subsystem Limited lists: The following are limited lists that you will need approval to join. Even though access to these lists is controled, anyone is free to send suggestions and comments to them. It is a good idea establish a presence in the technical lists before asking to join one of these limited lists. List Purpose ---------------------------------------------------------------------- freebsd-admin Administrative issues freebsd-arch Architecture and design discussions freebsd-core FreeBSD core team freebsd-install Installation development freebsd-user-groups User group coordination CVS lists: The following lists are for people seeing the log messages for source changes in specific areas: List name Source area Area Description (source for) ---------------------------------------------------------------------- cvs-CVSROOT /usr/src/[A-Z]* Top level /usr/src file changes cvs-all /usr/src All changes to the tree (superset) cvs-bin /usr/src/bin System binaries cvs-etc /usr/src/etc System files cvs-games /usr/src/games Games cvs-gnu /usr/src/gnu GPL'd utilities cvs-include /usr/src/include Include files cvs-kerberosIV /usr/src/kerberosIV Kerberos encryption code cvs-lib /usr/src/lib System libraries cvs-libexec /usr/src/libexec System binaries cvs-ports /usr/ports Ported software cvs-sbin /usr/src/sbin System binaries cvs-share /usr/src/share System shared files cvs-sys /usr/src/sys Kernel cvs-usrbin /usr/src/usr.bin Use binaries cvs-usrsbin /usr/src/usr.sbin System binaries How to subscribe

All mailing lists live on FreeBSD.ORG, so to post to a list you simply mail to listname@FreeBSD.ORG. It will then be redistributed to mailing list members throughout the world. To subscribe to a list, send mail to: majordomo@FreeBSD.ORG And include the keyword subscribe [] In the body of your message. For example, to subscribe yourself to freebsd-announce, you'd do: % mail majordomo@FreeBSD.ORG subscribe freebsd-announce ^D If you want to subscribe yourself under a different name, or submit a subscription request for a local mailing list (note: this is more efficient if you have several interested parties at one site, and highly appreciated by us!), you would do something like: % mail majordomo@FreeBSD.ORG subscribe freebsd-announce local-announce@somesite.com ^D Finally, it is also possible to unsubscribe yourself from a list, get a list of other list members or see the list of mailing lists again by sending other types of control messages to majordomo. For a complete list of available commands, do this: % mail majordomo@FreeBSD.ORG help ^D Finally, we again request that you keep the technical mailing lists on a technical track. If you're only interested in the "high points", then it's suggested that you join freebsd-announce, which will contain only infrequent traffic. List charters

Administrative issues Important events / milestones This is the mailing list for people interested only in occasional announcements of significant freebsd events. This includes announcements about snapshots and other releases. It contains announcements of new FreeBSD capabilities. It may contain calls for volunteers etc. This is a low volume list. Architecture and design discussions This is the mailing list for people discussing FreeBSD architectural issues. It is a closed list, and not for general subscription. Bug reports This is the mailing list for reporting bugs in FreeBSD Whenever possible, bugs should be submitted using "send-pr". Non technical items related to the community This list contains the overflow from the other lists about non-technical, social information. It includes discussion about whether Jordan looks like a tune ferret or not, whether or not to type in capitals, who is drinking too much coffee, where the best beer is brewed, who is brewing beer in their basement, and so on. Occasional announcements of important events (such as upcoming parties, weddings, births, new jobs, etc) can be made to the technical lists, but the follow ups should be directed to this -chat list. FreeBSD core team This is an internal mailing list for use by the core members. Discussions about the use of FreeBSD-current This is the mailing list for users of freebsd-current. It includes warnings about new features coming out in -current that will affect the users, and instructions on steps that must be taken to remain -current. Anyone running "current" must subscribe to this list. Discussions about the use of FreeBSD-current This is the digest version of the freebsd-current mailing list. The digest consists of all messages sent to freebsd-current bundled together and mailed out as a single message. The average digest size is about 40kB. Documentation project This mailing list belongs to the FreeBSD Doc Project and is for the discussion of documentation related issues and projects. Filesystems Discussions concerning FreeBSD filesystems. Technical discussions This is a forum for technical discussions related to FreeBSD. This is the primary technical mailing list. It is for individuals actively working on FreeBSD, to bring up problems or discuss alternative solutions. Individuals interested in following the technical discussion are also welcome. Technical discussions This is the digest version of the freebsd-hackers mailing list. The digest consists of all messages sent to freebsd-hackers bundled together and mailed out as a single message. The average digest size is about 40kB. General discussion of FreeBSD hardware General discussion about the types of hardware that FreeBSD runs on, various problems and suggestions concerning what to buy or avoid. Installation discussion This mailing list is for discussing FreeBSD installation development for the future releases. Issues for Internet Service Providers This mailing list is for discussing topics relevant to Internet Serivce Providers (ISPs) using FreeBSD. Multimedia discussions This is a forum about multimedia applications using FreeBSD. Discussion center around multimedia applications, their installation, their development and their support within FreeBSD Porting to Non-Intel platforms Cross-platform freebsd issues, general discussion and proposals for non-Intel FreeBSD ports. Policy issues and suggestions This is a forum for policy discussions related to FreeBSD. This includes where FreeBSD is going, how to set up a consortium, whether or not and how to make FreeBSD pay for itself, how to attract more users, and so on. When a topic relates directly to FreeBSD but has little or no technical content then it should be sent to this list. Discussion of "ports" Discussions concerning FreeBSD's "ports collection" (/usr/ports), proposed ports, modifications to ports collection infrastructure and general coordination efforts. User questions This is the mailing list for questions about FreeBSD. You should not send "how to" questions to the technical lists unless you consider the question to be pretty technical. User questions This is the digest version of the freebsd-questions mailing list. The digest consists of all messages sent to freebsd-questions bundled together and mailed out as a single message. The average digest size is about 40kB. SCSI subsystem This is the mailing list for people working on the scsi subsystem for FreeBSD. Security issues FreeBSD computer security issues (DES, Kerberos, known security holes and fixes, etc). User Group Coordination List This is the mailing list for the coordinators from each of the local area Users Groups to discuss matters with each other and a designated individual from the Core Team. This mail list should be limited to meeting synopsis and coordination of projects that span User Groups. Usenet newsgroups

In addition to two FreeBSD specific newsgroups, there are many others in which FreeBSD is discussed or are otherwise relevant to FreeBSD users. are available for some of these newsgroups from courtesy of Warren Toomey <wkt@cs.adfa.oz.au>. BSD specific newsgroups

comp.unix.bsd.freebsd.announce comp.unix.bsd.freebsd.misc Other Unix newsgroups of interest

comp.unix comp.unix.questions comp.unix.admin comp.unix.programmer comp.unix.shell comp.unix.user-friendly comp.security.unix comp.sources.unix comp.unix.advocacy comp.unix.misc comp.os.386bsd.announce comp.os.386bsd.apps comp.os.386bsd.bugs comp.os.386bsd.development comp.os.386bsd.misc comp.os.386bsd.questions comp.bugs.4bsd comp.bugs.4bsd.ucb-fixes comp.unix.bsd X-Window system

comp.windows.x.i386unix comp.windows.x comp.windows.x.apps comp.windows.x.announce comp.windows.x.intrinsics comp.windows.x.motif comp.windows.x.pex comp.emulators.ms-windows.wine World Wide Web servers

diff --git a/handbook/handbook.sgml b/handbook/handbook.sgml index 5f33593a99..2eabf37912 100644 --- a/handbook/handbook.sgml +++ b/handbook/handbook.sgml @@ -1,158 +1,152 @@ - + %authors; %sections; ]> FreeBSD Handbook <author> <name>The FreeBSD Documentation Project</name> </author> - <date>October 14, 1995</date> + <date>October 30, 1995</date> <abstract>Welcome to FreeBSD! This handbook covers the installation and day to day use of <bf>FreeBSD Release -2.0.5</bf>. +2.1</bf>. This manual is a <bf>work in progress</bf> and is the work of many individuals. Many sections do not yet exist and some of those that do exist need to be updated. If you are interested in helping with this project, send email to the FreeBSD Documentation Project mailing list <tt><htmlurl url="mailto:doc@freebsd.org" name="<doc@freebsd.org>"></tt>. The latest version of this document is always available from the <url url="http://www.freebsd.org/" name="FreeBSD World Wide Web server">. </abstract> <toc> <!-- ************************************************************ --> <part><heading>Basics</heading> <chapt><heading>Introduction</heading> &nutshell; &history; &relnotes; &install; &basics; <chapt><heading>Installing applications</heading> <sect><heading>* Installing packages</heading> &ports; &porting; <!-- ************************************************************ --> <part><heading>System Administration</heading> &kernelconfig; <chapt><heading>Users, groups and security</heading> &crypt; &skey; &kerberos; &firewalls; &printing; <chapt><heading>The X-Window System</heading> <p>Pending the completion of this section, please refer to documentation supplied by the <url url="http://www.xfree86.org/" name="The XFree86 Project, Inc">. <chapt><heading>Managing hardware</heading> <sect><heading>* Adding and reconfiguring disks</heading> &scsi; &esdi; <sect><heading>* Tapes and backups</heading> <sect><heading>* Serial ports</heading> <sect><heading>* Sound cards</heading> <!-- ************************************************************ --> <part><heading>Network Communications</heading> <chapt><heading>Basic Networking</heading> <sect><heading>* Ethernet basics</heading> <sect><heading>* Serial basics</heading> <sect><heading>* Hardwired Terminals</heading> &dialup; <chapt><heading>PPP and SLIP</heading> <p>If your connection to the internet is through a modem, or you wish to provide other people with dialup connections to the internet using FreeBSD, you have the option of using PPP or SLIP. Furthermore, two varieties of PPP are provided: <em>user</em> (sometimes referred to as iijppp) and <em>kernel</em>. The procedures for configuring both types of PPP, and for setting up SLIP are described in this chapter. &userppp; &ppp; &slipc; &slips; <chapt><heading>Advanced networking</heading> -<!-- - <sect><heading>Gateways and routing</heading> - <p>This section is in progress. Please contact - Coranth Gryphon <htmlurl url="mailto:gryphon@healer.com" - name="<gryphon@healer.com>"> for more information. ---> &routing; &nfs; &diskless; <sect><heading>* Yellow Pages/NIS</heading> <sect><heading>* ISDN</heading> <chapt><heading>* Mail</heading> <!-- ************************************************************ --> <part><heading>Advanced topics</heading> ¤t; &ctm; ⊃ &kerneldebug; &submitters; &troubleshooting; <!-- ************************************************************ --> <part><heading>Appendices</heading> &mirrors; &bibliography; &eresources; &hw; <chapt><heading>Assorted technical topics</heading> &booting; &memoryuse; &dma; &contrib; <!-- &glossary; --> </book> </linuxdoc> diff --git a/handbook/install.sgml b/handbook/install.sgml index a95e220b2c..0c4a5bbeb6 100644 --- a/handbook/install.sgml +++ b/handbook/install.sgml @@ -1,801 +1,864 @@ -<!-- $Id: install.sgml,v 1.15 1995-10-22 00:42:02 jfieber Exp $ --> +<!-- $Id: install.sgml,v 1.16 1995-11-20 01:10:23 jfieber Exp $ --> <!-- The FreeBSD Documentation Project --> <!-- <!DOCTYPE linuxdoc PUBLIC '-//FreeBSD//DTD linuxdoc//EN'> --> <chapt><heading>Installing FreeBSD<label id="install"></heading> <p>So, you would like to try out FreeBSD on your system? This section is a quick-start guide for what you need to do. FreeBSD can be installed from a variety of media including CD-ROM, floppy disk, magnetic tape, an MS-DOS partition, and if you have a network connection, via anonymous ftp or NFS. Regardless of the installation media you choose, you can get started by downleading the <bf>installation disk</bf> as described below. Booting your computer with disk will provide important information about compatibility between FreeBSD and your hardware which could dictate which installation options are possible. It can also provide early clues to compatibilty problems that could prevent FreeBSD running on your system at all. If you plan on installing via anonymous FTP, then this installation disk is all you need to download. For more information on obtaining the FreeBSD distribution itself, please see <ref id="mirrors" name="Obtaining FreeBSD"> in the Appendix. So, to get the show on the road, follow these steps: <enum> <item>Review the <ref id="install:hw" name="supported configurations"> section of this installation guide to be sure that your hardware is supported by FreeBSD. It may be helpful to make a list of any special cards you have installed, such as SCSI controllers, etherernet adapters or sound cards. This list should include relevant configuration parameters such as interrupts (IRQ) and IO port addresses. </item> <item>Download the <url - url="ftp://ftp.freebsd.org/pub/FreeBSD/2.0.5-RELEASE/UPDATES/boot.flp" + url="ftp://ftp.freebsd.org/pub/FreeBSD/2.1.0-RELEASE/floppies/boot.flp" name="installation boot disk image"> file to your hard drive, and be sure to tell your browser to <em>save</em> rather than <em>display</em>. <bf>Note:</bf> This disk image can be used for <em>both</em> 1.44 megabyte 3.5 inch floppy disks and 1.2 megabyte 5.25 inch floppy disks.</item> <item>Make the installation boot disk from the image file: <itemize> <item>If you are using MS-DOS download <url url="ftp://ftp.freebsd.org/pub/FreeBSD/tools/dos-tools/rawrite.exe" - name="rawrite.exe"> (tell your browser to <em>save</em> rather than - <em>display</em>!), then run it: + name="rawrite.exe">, then run it: <tscreen><verb> C:\> rawrite </verb></tscreen> The program will prompt you for the floppy drive containing the disk you want to write to (A: or B:) and the name of the file to put on disk (boot.flp). </item> <item>If you are using a UNIX system: <tscreen> -% dd if=boot.flp of=<em>disk_device</em> bs=18k +% dd if=boot.flp of=<em>disk_device</em> </tscreen> where <em>disk_device</em> is the <tt>/dev</tt> entry for the floppy drive. On FreeBSD systems, this - is <tt>/dev/rfd0</tt> for the A: drive and - <tt>/dev/rfd1</tt> for the B: drive. + is <tt>/dev/fd0</tt> for the A: drive and + <tt>/dev/fd1</tt> for the B: drive. </item> </itemize> </item> <item>With the installation disk in the A: drive, reboot your computer. You should get a boot prompt something like this: <tscreen> >> FreeBSD BOOT ...<newline> Use hd(1,a)/kernel to boot sd0 when wd0 is also installed.<newline> Usage: [[hd(1,a)]/kernel][-abcCdhrsv]<newline> Use ? for file list or press Enter for defaults<newline> Boot: </tscreen> If you do <em>not</em> type anything, FreeBSD will automatically boot with its default configuration after a delay of about five seconds. As FreeBSD boots, it probes your computer to determine what hardware is installed. The results of this probing is displayed on the screen. </item> <item>When the booting process is finished, The main FreeBSD installation menu will be displayed.</item> </enum> <p><bf>If something goes wrong...</bf> <p>Due to limitations of the PC architecture, it is impossible for probing to be 100 percent reliable. In the event that your hardware is incorrectly identified, or that the probing causes your computer to lock up, first check the <ref id="install:hw" name="supported configurations"> section of this installation guide to be sure that your hardware is indeed supported by FreeBSD. <p>If your hardware is supported, reset the computer and when the <tt>Boot:</tt> prompt comes up, type <bf>-c</bf>. This puts FreeBSD into a configuration mode where you can supply hints about your hardware. The FreeBSD kernel on the installation disk is configured assuming that most hardware devices are in their factory default configuration in terms of IRQs, IO addresses and DMA channels. If your hardware has been reconfigured, you will most likely need to use the <bf>-c</bf> option at boot to tell FreeBSD where things are. <p>It is also possible that a probe for a device not present will cause a later probe for another device that is present to fail. In that case, the probes for the conflicting driver(s) should be disabled. <p>In the configuration mode, you can: <itemize> <item>List the device drivers installed in the kernel.</item> <item>Disable device drivers for hardware not present in your system.</item> <item>Change the IRQ, DRQ, and IO port addresses used by a device driver.</item> </itemize> <p>While at the <tt>config></tt> prompt, type <tt>help</tt> for more information on the available commands. After adjusting the kernel to match how you have your hardware configured, type <tt>quit</tt> at the <tt>config></tt> prompt to continue booting with the new settings. After FreeBSD has been installed, changes made in the configuration mode will be permanent so you do not have to reconfigure every time you boot. Even so, it is likely that you will want to build a custom kernel to optimize the performance of your system. See <ref id="kernelconfig" name="Kernel configuration"> for more information on creating custom kernels. - <sect><heading>MS-DOS user's Questions and Answers</heading> - - <p>Many FreeBSD users wish to install FreeBSD on PCs inhabited - by MS-DOS. Here are some commonly asked questions about - installing FreeBSD on such systems. - - <p><bf>Help! I have no space! Do I need to delete - everything first?</bf> - - If your machine is already running MS-DOS and has little - or no free space available for FreeBSD's installation, - all is not lost! You may find the FIPS utility, provided - in the <tt>tools</tt> directory on the FreeBSD CDROM or - on the various FreeBSD ftp sites, to be quite useful. - - FIPS allows you to split an existing MS-DOS partition - into two pieces, preserving the original partition and - allowing you to install onto the second free piece. You - first defragment your MS-DOS partition, using the DOS - 6.xx DEFRAG utility or the Norton Disk tools, then run - FIPS. It will prompt you for the rest of the information - it needs. Afterwards, you can reboot and install FreeBSD - on the new free slice. See the <em>Distributions</em> - menu for an estimation of how much free space you'll need - for the kind of installation you want. - - - <bf>Can I use compressed MS-DOS filesystems from - FreeBSD?</bf> - - No. If you are using a utility such as Stacker(tm) or - DoubleSpace(tm), FreeBSD will only be able to use - whatever portion of the filesystem you leave - uncompressed. The rest of the filesystem will show up as - one large file (the stacked/dblspaced file!). <bf>Do not - remove that file!</bf> You will probably regret it - greatly! - - It is probably better to create another uncompressed - MS-DOS primary partition and use this for communications - between MS-DOS and FreeBSD. - - - <bf>Can I mount my MS-DOS extended partitions?</bf> - - This feature isn't in FreeBSD 2.0.5 but should be in 2.1. - We've laid all the groundwork for making this happen, now - we just need to do the last 1 percent of the work involved. - - - <bf>Can I run MS-DOS binaries under FreeBSD?</bf> - - Not yet! We'd like to add support for this someday, but - are still lacking anyone to actually do the work. - Ongoing work with Linux's DOSEMU utility may bring this - much closer to being a reality sometime soon. Send mail - to hackers@freebsd.org if you're interested in joining - this effort! - - However, there's a nice application available in the - <ref id="ports" name="The Ports Collection"> called pcemu, - that allows you to run many basic MS-DOS text-mode binaries - by entirely emulating an 8088 CPU. - - - <sect><heading>Supported Configurations<label id="install:hw"></heading> <p>FreeBSD currently runs on a wide variety of ISA, VLB, EISA and PCI bus based PC's, ranging from 386sx to Pentium class machines (though the 386sx is not recommended). Support for generic IDE or ESDI drive configurations, various SCSI controller, network and serial cards is also provided. A minimum of four megabytes of RAM is required to run FreeBSD. To run the X-window system, eight megabytes of RAM is the recommended minimum. Following is a list of all disk controllers and ethernet cards currently known to work with FreeBSD. Other configurations may very well work, and we have simply not received any indication of this. <sect1><heading>Disk Controllers</heading> <p> <itemize> <item>WD1003 (any generic MFM/RLL) <item>WD1007 (any generic IDE/ESDI) - <item>WD7000 <item>IDE <item>ATA <item>Adaptec 152x series ISA SCSI controllers <item>Adaptec 154x series ISA SCSI controllers <item>Adaptec 174x series EISA SCSI controller in standard and enhanced mode. - <item>Adaptec 274X/284X/2940 <!-- 3940 (in 2.1) --> + <item>Adaptec 274x/284x/2940/3940 (Narrow/Wide/Twin) series EISA/VLB/PCI SCSI controllers <item>Adaptec <!-- AIC-6260 and - actually not working, joerg --> AIC-6360 based boards, which includes the AHA-152x and SoundBlaster SCSI cards. <bf>Note:</bf> You cannot boot from the SoundBlaster cards as they have no on-board BIOS, which is necessary for mapping the boot device into the system BIOS I/O vectors. They are perfectly usable for external tapes, CDROMs, etc, however. The same goes for any other AIC-6x60 based card without a boot ROM. Some systems DO have a boot ROM, which is generally indicated by some sort of message when the system is first powered up or reset. Check your system/board documentation for more details. <item>Buslogic 545S & 545c <bf>Note:</bf> that Buslogic was formerly known as "Bustec". <item>Buslogic 445S/445c VLB SCSI controller <item>Buslogic 742A, 747S, 747c EISA SCSI controller. <item>Buslogic 946c PCI SCSI controller <item>Buslogic 956c PCI SCSI controller <item>NCR 53C810 and 53C825 PCI SCSI controller. - <item>NCR5380/NCR53400 ("ProAudio Spectrum") SCSI controller. + <item>NCR5380/NCR53400 (``ProAudio Spectrum'') SCSI controller. <item>DTC 3290 EISA SCSI controller in 1542 emulation mode. <item>UltraStor 14F, 24F and 34F SCSI controllers. <item>Seagate ST01/02 SCSI controllers. <item>Future Domain 8xx/950 series SCSI controllers. + + <item>WD7000 SCSI controllers. + </itemize> With all supported SCSI controllers, full support is provided for SCSI-I & SCSI-II peripherals, including Disks, tape drives (including DAT) and CD ROM drives. The following CD-ROM type systems are supported at this time: <itemize> - <item>Soundblaster SCSI and ProAudio Spectrum SCSI (cd) - <item>Mitsumi (all models) proprietary interface (mcd) + <item>Soundblaster SCSI and ProAudio Spectrum SCSI (<tt>cd</tt>) + <item>Mitsumi (all models) proprietary interface (<tt>mcd</tt>) <item>Matsushita/Panasonic (Creative) - CR-562/CR-563 proprietary interface (matcd) - <item>Sony proprietary interface (scd) + CR-562/CR-563 proprietary interface (<tt>matcd</tt>) + <item>Sony proprietary interface (<tt>scd</tt>) + <item>ATAPI IDE interface + (experimental and should be considered ALPHA quality!) + (<tt>wcd</tt>) </itemize> - <bf>Note:</bf> CD-Drives with IDE interfaces are not - supported at this time. - - Some controllers have limitations with the way they - deal with >16MB of memory, due to the fact that the - ISA bus only has a DMA address space of 24 bits. If - you do your arithmetic, you'll see that this makes it - impossible to do direct DMA to any address >16MB. - This limitation is even true of some EISA controllers - (which are normally 32 bit) when they're configured to - emulate an ISA card, which they then do in *all* - respects. This problem is avoided entirely by IDE - controllers (which do not use DMA), true EISA - controllers (like the UltraStor, Adaptec 1742A or - Adaptec 2742) and most VLB (local bus) controllers. In - the cases where it's necessary, the system will use - "bounce buffers" to talk to the controller so that you - can still use more than 16Mb of memory without - difficulty. - - <sect1><heading>Ethernet cards</heading> <p> <itemize> + <item>Allied-Telesis AT1700 and RE2000 cards + <item>SMC Elite 16 WD8013 ethernet interface, and most other WD8003E, WD8003EBT, WD8003W, WD8013W, WD8003S, WD8003SBT and WD8013EBT based clones. SMC Elite Ultra is also supported. <item>DEC EtherWORKS III NICs (DE203, DE204, and DE205) <item>DEC EtherWORKS II NICs (DE200, DE201, DE202, and DE422) <item>DEC DC21140 based NICs (SMC???? DE???) <item>DEC FDDI (DEFPA/DEFEA) NICs - <item>Fujitsu MB86960A family of NICs + <item>Fujitsu FMV-181 and FMV-182 <item>Intel EtherExpress <item>Isolan AT 4141-0 (16 bit) <item>Isolink 4110 (8 bit) <item>Novell NE1000, NE2000, and NE2100 ethernet interface. <item>3Com 3C501 cards <item>3Com 3C503 Etherlink II <item>3Com 3c505 Etherlink/+ <item>3Com 3C507 Etherlink 16/TP <item>3Com 3C509, 3C579, 3C589 (PCMCIA) Etherlink III <item>Toshiba ethernet cards <item>PCMCIA ethernet cards from IBM and National Semiconductor are also supported. </itemize> + <p><em>Note:</em> FreeBSD does not currently suppport + PnP (plug-n-play) features present on some ethernet + cards. If your card has PnP, it should be disabled. + <sect1><heading>Miscellaneous devices</heading> <p> <itemize> <item>AST 4 port serial card using shared IRQ. <item>ARNET 8 port serial card using shared IRQ. <item>BOCA IOAT66 6 port serial card using shared IRQ. <item>BOCA 2016 16 port serial card using shared IRQ. <item>Cyclades Cyclom-y Serial Board. <item>STB 4 port card using shared IRQ. <item>SDL Communications Riscom/8 Serial Board. <item>Adlib, SoundBlaster, SoundBlaster Pro, ProAudioSpectrum, Gravis UltraSound and Roland MPU-401 sound cards. </itemize> - FreeBSD currently does NOT support IBM's microchannel + FreeBSD currently does not support IBM's microchannel (MCA) bus, but support is apparently close to materializing. Details will be posted as the situation develops. <sect><heading>Preparing for the installation</heading> <p>There are a number of different methods by which FreeBSD can be installed. The following describes what preparation needs to be done for each type. <sect1><heading>Before installing from CDROM</heading> <p>If your CDROM is of an unsupported type, such as an - IDE CDROM, then please skip to section 2.3: MS-DOS - Preparation. + IDE CDROM, then please skip to <ref id="install:msdos" + name="MS-DOS Preparation">. There is not a lot of preparatory work that needs to be done to successfully install from one of Walnut Creek's FreeBSD CDROMs (other CDROM distributions may work as - well, but I can't say for sure as I have no hand or say - in their creation). You can either boot into the CD - installation directly from MS-DOS using Walnut Creek's - supplied "install" batch file or you can make a boot - floppy by writing the supplied image - (floppies/boot.flp) onto a floppy with the "go" - command, which invokes the rawrite.exe command found in - the tools/ subdirectory. - - If you're creating the boot floppy from a UNIX machine, - you may find that ``dd if=floppies/boot.flp - of=/dev/rfd0'' or ``dd if=floppies/boot.flp - of=/dev/floppy'' works well, depending on your hardware - and operating system environment. - - Once you've booted from MS-DOS or floppy, you should be - able to select CDROM as the media type in the Media + well, we simply cannot say as we have no hand or say in + their creation). You can either boot into the CD + installation directly from DOS using Walnut Creek's + supplied ``install.bat'' batch file or you can make a + boot floppy with the ``makeflp.bat'' command. + + For the easiest interface of all (from DOS), type + ``view''. This will bring up a DOS menu utility that + leads you through all the available options. + + If you are creating the boot floppy from a UNIX machine, + see <ref id="install" name="the beginning of this + guide"> for examples. of how to create the boot floppy. + + Once you have booted from DOS or floppy, you should then + be able to select CDROM as the media type in the Media menu and load the entire distribution from CDROM. No other types of installation media should be required. After your system is fully installed and you have rebooted from the hard disk, you should find the CD - mounted on the directory /cdrom. A utility called - `lndir' comes with the XFree86 distribution which you - may also find useful: It allows you to create "link - tree" directories to things on Read-Only media like - CDROM. One example might be something like this: - <tscreen>mkdir /usr/ports<newline>lndir /cdrom/ports - /usr/ports</tscreen> + mounted on the directory <bf>/cdrom</bf>. A utility + called `lndir' comes with the XFree86 distribution + which you may also find useful: It allows you to create + "link tree" directories to things on Read-Only media + like CDROM. One example might be something like this: - Which would allow you to then "cd /usr/ports; make" and - get all the sources from the CD, but yet create all the - intermediate files in /usr/ports, which is presumably - on a more writable media! +<tscreen><verb> +mkdir /usr/ports +lndir /cdrom/ports /usr/ports +</verb></tscreen> + Which would allow you to then ``cd /usr/ports; make'' + and get all the sources from the CD, but yet create all + the intermediate files in <bf>/usr/ports</bf>, which is + presumably on a more writable media. + + This is, in fact, what the Ports entry in the + Configuration menu does at installation time if you + select it. + + <quote><bf>Special note:</bf> Before invoking the + installation, be sure that the CDROM is in the drive + so that the install probe can find it. This is also + true if you wish the CDROM to be added to the default + system configuration automatically during the install + (whether or not you actually use it as the + installation media). <!-- XXX This will be fixed for + 2.1, but for now this simple work-around will ensure + that your CDROM is detected properly. --></quote> + + Finally, if you would like people to be able to FTP + install FreeBSD directly from the CDROM in your + machine, you will find it quite easy. After the machine + is fully installed, you simply need to add the + following line to the password file (using the vipw + command): + +<tscreen><verb> +ftp:*:99:99::0:0:FTP:/cdrom:/nonexistent +</verb></tscreen> + + No further work is necessary. The other installers + will now be able to chose a Media type of FTP and type + in: <tt>ftp://<em>your machine</em></tt> after picking ``Other'' + in the ftp sites menu. <sect1><heading>Before installing from Floppy</heading> <p>If you must install from floppy disks, either due to unsupported hardware or just because you enjoy doing things the hard way, you must first prepare some floppies for the install. - The first floppy you'll need is ``floppies/root.flp'', - which is somewhat special in that it's not a MS-DOS - filesystem floppy at all, but rather an "image" floppy - (it's actually a gzip'd cpio file). You can use the - rawrite.exe program to do this under DOS, or ``dd'' to - do it on a UNIX Workstation (see notes in section 2.1 - concerning the ``floppies/boot.flp'' image). Once this - floppy is made, put it aside. You'll be asked for it - later. - - You will also need, at minimum, as many 1.44MB or 1.2MB + The first floppy you will need is ``floppies/root.flp'', + which is somewhat special in that it is not a DOS + filesystem floppy at all, but rather an ``image'' + floppy (it is actually a gzip'd cpio file). You can use + the rawrite.exe program to do this under DOS, or dd to + do it on a UNIX Workstation. See <ref id="install" + name="the beginning of this guide"> for examples. of + how to create the boot floppy. Once this floppy is + made, go on to make the distribution set floppies: + + You will need, at minimum, as many 1.44MB or 1.2MB floppies as it takes to hold all files in the bin - (binary distribution) directory. THESE floppies <bf>must</bf> - be formatted using MS-DOS, using with the FORMAT - command in MS-DOS or the File Manager format command in - Microsoft Windows(tm). Factory preformatted floppies - will also work well, provided that they haven't been - previously used for something else. Note that only media - without any defects are usable for these floppies; there - is no kind of bad sector remapping available for them. + (binary distribution) directory. These floppies + <em>must</em> be formatted using MS-DOS, using the + FORMAT command in MS-DOS or the File Manager format + command in Microsoft Windows(tm). Do <em>not</em> + trust Factory Preformatted floppies. Format them again + yourself, just to make sure. Many problems reported by our users in the past have resulted from the use of improperly formatted media, so we simply take special care to mention it here! - After you've MS-DOS formatted the floppies, you'll need - to copy the files onto them. The distribution files - are split into chunks conveniently sized so that 5 of - them will fit on a conventional 1.44MB floppy. Go + After you have DOS formatted the floppies, you will + need to copy the files onto them. The distribution + files are split into chunks conveniently sized so that + 5 of them will fit on a conventional 1.44MB floppy. Go through all your floppies, packing as many files as - will fit on each one, until you've got all the - distributions you want packed up in this fashion. - Select ``Floppy'' from the Media menu at installation - time and you will be prompted for everything after - that. + will fit on each one, until you have got all the + distributions you want packed up in this fashion. Each + distribution should go into a subdirectory on the + floppy, e.g.: <bf>a:\bin\bin.aa</bf>, + <bf>a:\bin\bin.ab</bf>, and so on. + + Once you come to the Media screen of the install, + select ``Floppy'' and you will be prompted for the rest. + - <sect1><heading>Before installing from a MS-DOS partition</heading> + <sect1><heading>Before installing from a MS-DOS partition<label id="install:msdos"></heading> <p>To prepare for installation from an MS-DOS partition, copy the files from the distribution into a directory called <tt>C:\FREEBSD</tt>. The directory tree structure of the CDROM must be partially reproduced within this directory so we suggest using the DOS <tt>xcopy</tt> command. For example, to prepare for a minimal installation of FreeBSD: <tscreen><verb> C> MD C:\FREEBSD -C> XCOPY /S E:\FLOPPIES C:\FREEBSD\FLOPPIES\ C> XCOPY /S E:\DISTS\BIN C:\FREEBSD\BIN\ +C> XCOPY /S E:\FLOPPIES C:\FREEBSD\FLOPPIES\ </verb></tscreen> assuming that <tt>C:</tt> is where you have free space and <tt>E:</tt> is where your CDROM is mounted. Note that you need the <tt>FLOPPIES</tt> directory because the <tt>root.flp</tt> image is needed during an MS-DOS installation. For as many `DISTS' you wish to install from MS-DOS (and you have free space for), install each one under <tt>C:\FREEBSD</tt> - the <tt>BIN</tt> dist is only the minimal requirement. If you have room on your MS-DOS partition for all the distributions, you could replace the last line above with: <tscreen><verb> C> XCOPY /S E:\DISTS C:\FREEBSD\ </verb></tscreen> which would copy all the subdirectories of <tt>E:\DISTS</tt> to <tt>C:\FREEBSD</tt>. <sect1><heading>Before installing from QIC/SCSI Tape</heading> <p>Installing from tape is probably the easiest method, short of an on-line install using FTP or a CDROM install. The installation program expects the files to be simply tar'ed onto the tape, so after getting all of - the files for distribution you're interested in, simply + the files for distribution you are interested in, simply tar them onto the tape with a command like: <tscreen> - cd /freebsd/distdir<newline> - tar cvf /dev/rwt0 (or /dev/rst0) dist1 .. dist2 - </tscreen> +cd /freebsd/distdir<newline> +tar cvf /dev/rwt0 (or /dev/rst0) dist1 .. dist2 +</tscreen> Make sure that the `floppies/' directory is one of the - "dists" given above, since the installation will look + ``dists'' given above, since the installation will look for `floppies/root.flp' on the tape. When you go to do the installation, you should also make sure that you leave enough room in some temporary - directory (which you'll be allowed to choose) to - accommodate the FULL contents of the tape you've + directory (which you will be allowed to choose) to + accommodate the <bf>full</bf> contents of the tape you have created. Due to the non-random access nature of tapes, this method of installation requires quite a bit of - temporary storage! You should expect to require as + temporary storage. You should expect to require as much temporary storage as you have stuff written on tape. + <quote><bf>Note:</bf> When going to do the + installation, the tape must be in the drive + <em>before</em> booting from the boot floppy. The + installation probe may otherwise fail to find it.</quote> + <sect1><heading>Before installing over a network</heading> <p>You can do network installations over 3 types of communications links: <descrip> <tag>Serial port</tag> SLIP or PPP <tag>Parallel port</tag> PLIP (laplink cable) <tag>Ethernet</tag> A standard ethernet controller (includes some PCMCIA). </descrip> - SLIP support is rather primitive, and limited primarily - to hard-wired links, such as a serial cable running - between a laptop computer and another computer. The link - should be hard-wired as the SLIP installation doesn't - currently offer a dialing capability; that facility is - provided with the PPP utility, which should be used in - preference to SLIP whenever possible. - - If you're using a modem, then PPP is almost certainly - your only choice. Make sure that you have your service - provider's information handy as you'll need to know it - fairly soon in the installation process. You will need - to know, at the minimum, your service provider's IP - address and possibly your own (though you can also leave - it blank and allow PPP to negotiate it with your ISP). - You also need to know how to use the various "AT - commands" to dial the ISP with your particular modem as - the PPP dialer provides only a very simple terminal - emulator. - - If a hard-wired connection to another FreeBSD (2.0R or - later) machine is available, you might also consider - installing over a "laplink" parallel port cable. The - data rate over the parallel port is much higher than is - what's typically possible over a serial line (up to - 50k/sec), thus resulting in a quicker installation. - - Finally, for the fastest possible network installation, - an ethernet adaptor is always a good choice! FreeBSD - supports most common PC ethernet cards, a table of - supported cards (and their required settings) provided as - part of the FreeBSD Hardware Guide - see the - Documentation menu on the boot floppy. If you are using - one of the supported PCMCIA ethernet cards, also be sure - that it's plugged in _before_ the laptop is powered on! - FreeBSD does not, unfortunately, currently support "hot - insertion" of PCMCIA cards. - - You will also need to know your IP address on the - network, the "netmask" value for your address class and - the name of your machine. Your system administrator can - tell you which values to use for your particular network - setup. If you will be referring to other hosts by name - rather than IP address, you'll also need a name server - and possibly the address of a gateway (if you're using - PPP, it's your provider's IP address) to use in talking - to it. If you do not know the answers to all or most of - these questions, then you should really probably talk to - your system administrator _first_ before trying this type - of installation! - - Once you have a network link of some sort working, the - installation can continue over NFS or FTP. + SLIP support is rather primitive, and limited primarily + to hard-wired links, such as a serial cable running + between a laptop computer and another computer. The + link should be hard-wired as the SLIP installation + does not currently offer a dialing capability; that + facility is provided with the PPP utility, which should + be used in preference to SLIP whenever possible. + + If you are using a modem, then PPP is almost certainly + your only choice. Make sure that you have your service + provider's information handy as you will need to know it + fairly soon in the installation process. You will need + to know, at the minimum, your service provider's IP + address and possibly your own (though you can also + leave it blank and allow PPP to negotiate it with your + ISP). You also need to know how to use the various ``AT + commands'' to dial the ISP with your particular modem as + the PPP dialer provides only a very simple terminal + emulator. + + If a hard-wired connection to another FreeBSD (2.0R or + later) machine is available, you might also consider + installing over a ``laplink'' parallel port cable. The + data rate over the parallel port is much higher than + what is typically possible over a serial line (up to + 50k/sec), thus resulting in a quicker installation. + + Finally, for the fastest possible network installation, + an ethernet adaptor is always a good choice! FreeBSD + supports most common PC ethernet cards, a table of + supported cards (and their required settings) is + provided in <ref id="install:hw" name="Supported + Hardware">. If you are using one of the supported + PCMCIA ethernet cards, also be sure that it is plugged + in <em>before</em> the laptop is powered on! FreeBSD + does not, unfortunately, currently support hot + insertion of PCMCIA cards. + + You will also need to know your IP address on the + network, the netmask value for your address class, + and the name of your machine. Your system + administrator can tell you which values to use for your + particular network setup. If you will be referring to + other hosts by name rather than IP address, you will also + need a name server and possibly the address of a + gateway (if you are using PPP, it is your provider's IP + address) to use in talking to it. If you do not know + the answers to all or most of these questions, then you + should really probably talk to your system + administrator <em>first</em> before trying this type of + installation. + + Once you have a network link of some sort working, the + installation can continue over NFS or FTP. <sect2><heading>Preparing for NFS installation</heading> <p>NFS installation is fairly straight-forward: Simply - copy the FreeBSD distribution files you're interested - onto a server somewhere and then point the NFS media + copy the FreeBSD distribution files you want onto a + server somewhere and then point the NFS media selection at it. - If this server supports only "privileged port" access + If this server supports only ``privileged port'' access (as is generally the default for Sun workstations), you will need to set this option in the Options menu before installation can proceed. If you have a poor quality ethernet card which suffers from very slow transfer rates, you may also wish to toggle the appropriate Options flag. In order for NFS installation to work, the server - must support "subdir mounts", e.g. if your FreeBSD - 2.0.5 distribution directory lives on: - ziggy:/usr/archive/stuff/FreeBSD Then ziggy will have + must support subdir mounts, e.g., if your FreeBSD + 2.1 distribution directory lives on: + <bf>ziggy:/usr/archive/stuff/FreeBSD</bf> Then ziggy will have to allow the direct mounting of - /usr/archive/stuff/FreeBSD, not just /usr or - /usr/archive/stuff. + <bf>/usr/archive/stuff/FreeBSD</bf>, not just <bf>/usr</bf> or + <bf>/usr/archive/stuff</bf>. - In FreeBSD's /etc/exports file, this is controlled by - the ``-alldirs'' option. Other NFS servers may have + In FreeBSD's <bf>/etc/exports</bf> file, this is controlled by + the ``<tt>-alldirs</tt>'' option. Other NFS servers may have different conventions. If you are getting `Permission Denied' messages from the server then - it's likely that you don't have this enabled - properly! - + it is likely that you do not have this enabled + properly. <sect2><heading>Preparing for FTP Installation</heading> <p>FTP installation may be done from any mirror site containing a reasonably up-to-date version of FreeBSD - 2.0.5, a full menu of reasonable choices from almost - anywhere in the world being provided by the FTP site + 2.1. A full menu of reasonable choices from almost + anywhere in the world is provided by the FTP site menu. If you are installing from some other FTP site not listed in this menu, or you are having troubles getting your name server configured properly, you can also specify your own URL by selecting the ``Other'' choice in that menu. A URL can also be a direct IP address, so the following would work in the absence - of a name server: <tscreen> - ftp://192.216.222.4/pub/FreeBSD/2.0.5-RELEASE</tscreen> + of a name server: + +<tscreen><verb> +ftp://192.216.222.4/pub/FreeBSD/2.1.0-RELEASE +</verb></tscreen> - <em><bf>NOTE:</bf> Substitute "ALPHA" for "RELEASE" - during the ALPHA test period!</em> + There are two FTP installation modes you can use: - If you are installing through a firewall then you - should probably select ``Passive mode'' ftp, which is - the default. If you are talking to a server which - does not support passive mode for some reason, see - the Options menu to select Active mode transfers. + <descrip> + <tag>FTP Active</tag> + For all FTP transfers, use ``Active'' mode. This + will not work through firewalls, but will often + work with older ftp servers that do not support + passive mode. If your connection hangs with + passive mode (the default), try active! + + <tag>FTP Passive</tag> + + For all FTP transfers, use ``Passive'' mode. This + allows the user to pass through firewalls that do + not allow incoming connections on random port + addresses. + + </descrip> + + <quote><bf>Note:</bf> ACTIVE AND PASSIVE MODES ARE + NOT THE SAME AS A `PROXY' CONNECTION, WHERE A PROXY + FTP SERVER IS LISTENING ON A DIFFERENT PORT!</quote> + + In such instances, you should specify the URL as something like: +<tscreen><verb> +ftp://foo.bar.com:1234/pub/FreeBSD +</verb></tscreen> + + Where ``1234'' is the port number of the proxy ftp server. <sect><heading>Installing FreeBSD</heading> - <p>Once you've taken note of the appropriate + <p>Once you have taken note of the appropriate preinstallation steps, you should be able to install FreeBSD without any further trouble. Should this not be true, then you may wish to go back and - re-read the relevant preparation section (section 2.x) - for the installation media type you're trying to use - - perhaps there's a helpful hint there that you missed the - first time? If you're having hardware trouble, or + re-read the relevant preparation section above + for the installation media type you are trying to use, + perhaps there is a helpful hint there that you missed the + first time? If you are having hardware trouble, or FreeBSD refuses to boot at all, read the Hardware Guide provided on the boot floppy for a list of possible solutions. The FreeBSD boot floppy contains all the on-line documentation you should need to be able to navigate - through an installation and if it doesn't then I'd like - to know what you found most confusing! It is the - objective of the FreeBSD installation program - (sysinstall) to be self-documenting enough that painful - "step-by-step" guides are no longer necessary. It may - take us a little while to reach that objective, but - that's the objective! - - Meanwhile, you may also find the following "typical - installation sequence" to be helpful: + through an installation and if it does not then we would + like to know what you found most confusing. Send your + comments to <htmlurl url="mailto:doc@freebsd.org" + name="doc@freebsd.org">. It is the objective of the + FreeBSD installation program (sysinstall) to be + self-documenting enough that painful ``step-by-step'' + guides are no longer necessary. It may take us a little + while to reach that objective, but that is the objective! + + Meanwhile, you may also find the following ``typical + installation sequence'' to be helpful: <enum> - <item>Boot the boot floppy. After a boot sequence which can take anywhere from from 30 seconds to 3 minutes, depending on your hardware, you should be presented with a menu of initial choices. If the - floppy doesn't boot at all, or the boot hangs at some + floppy does not boot at all, or the boot hangs at some stage, go read the Q&A section of the Hardware Guide for possible causes. <item>Press F1. You should see some basic usage instructions on the menu system and general - navigation. If you haven't used this menu system + navigation. If you have not used this menu system before then PLEASE read this thoroughly! - <item>If English is not your native language, you may - wish to proceed directly to the Language option and - set your preferred language. This will bring up some - of the documentation in that language instead of - English. - <item>Select the Options item and set any special preferences you may have. - <item>Select Proceed, bringing you to the Installation Menu. - + <item>Select a Custom or Express install, depending on + whether or not you would like the installation to give + you a high degree of control over each step of the + installation or simply lead you through it, chosing + reasonable defaults when possible. See details on + both installation types below. + + <item>The Configure menu choice allows you to furthur + configure your FreeBSD installation by giving you + menu-driven access to various system defaults. Some + items, like networking, may be especially important + if you did a CDROM/Tape/Floppy installation and have + not yet configured your network interfaces (assuming + you have any). Properly configuring such interfaces + here will allow FreeBSD to come up on the network + when you first reboot from the hard disk. </enum> - <sect1><heading>The installation menu</heading> - - <p>You can do anything you like in this menu without - altering your system <em>except</em> for "Commit", - which will perform any requests to alter your system - you may have made. + <sect1><heading>Express installation</heading> - If you're confused at any point, the F1 key usually - pulls up the right information for the screen you're - in. + <p>The express installation is not too much different than + the Custom one except that it leads you through the + required stages in the proper order and presents you + with various helpful prompts along the way. <enum> - - <item>The first step is generally `Partition', which + <item>The first step is the `Partition Editor', which allows you to chose how your drives will be used - for FreeBSD. + for FreeBSD. If you are dedicating an entire drive + to FreeBSD, the `A' command is probably all you + need to type here. - <item>Next, with the `Label' editor, you can specify + <item>Next, with the `Label Editor', you can specify how the space in any allocated FreeBSD partitions should be used by FreeBSD, or where to mount a - non-FreeBSD partition (such as DOS). + non-FreeBSD partition (such as DOS). If you want + the standard layout, simply type `A' here. <item>Next, the `Distributions' menu allows you to specify which parts of FreeBSD you wish to load. A - good choice is "User" for a small system or - "Developer" for someone wanting a bit more out of + good choice is ``User'' for a small system or + ``Developer'' for someone wanting a bit more out of FreeBSD. If none of the existing collections sound applicable, select Custom. <item>Next, the `Media' menu allows you to specify what kind of media you wish to install from. If a desired media choice is found and configured automatically then this menu will simply return, - otherwise you'll be asked for additional details on + otherwise you will be asked for additional details on the media device type. - <item>Finally, the Commit command will actually - perform all the actions at once (nothing has been - written to your disk so far, nor will it until you - give the final confirmation). All new or changed - partition information will be written out, file - systems will be created and/or non-destructively - labelled (depending on how you set their newfs - flags in the Label editor) and all selected - distributions will be extracted. - - <item>The Configure menu choice allows you to further - configure your FreeBSD installation by giving you - menu-driven access to various system defaults. - Some items, like networking, may be especially - important if you did a CDROM/Tape/Floppy - installation and have not yet configured your - network interfaces (assuming you have some). - Properly configuring your network here will allow - FreeBSD to come up on the network when you first - reboot from the hard disk. - - <item>Exit returns you to the top menu. - + <item>Finally, you will be prompted to commit all of + these actions at once (nothing has been written to + your disk so far, nor will it until you give the + final confirmation). All new or changed partition + information will be written out, file systems will + be created and/or non-destructively labelled + (depending on how you set their newfs flags in the + Label Editor) and all selected distributions will + be extracted. </enum> - At this point, you're generally done with the + At this point, you are generally done with the sysinstall utility and can select the final `Quit'. If - you're running it as an installer (e.g. before the + you are running it as an installer (e.g., before the system is all the way up) then the system will now - reboot. If you selected the boot manager option, you - will see a small boot menu with an `F?' prompt. Press - the function key for BSD (it will be shown) and you - should boot up into FreeBSD off the hard disk. + reboot after you press return one last time. If you + selected the boot manager option, you will see a small + boot menu with an `F?' prompt. Press the function key + for BSD (it will be shown) and you should boot up into + FreeBSD off the hard disk. If this fails to happen for some reason, see the Q&A section of the Hardware Guide for possible clues! + <sect1><heading>Custom installation</heading> + + <p>You can do anything you like in this menu without + altering your system <em>except</em> for ``Commit'', + which will perform any requests to alter your system + you may have made. Some of the menu options will also + have direct `Write' commands available for commiting an + operation immediately, but they should only be used if + you are absolutely sure it is necessary. It is generally + better to make your changes and then commit them all at + once so that you are left with the option of changing + your mind up to the very last minute. + + If you are confused at any point, the F1 key usually + pulls up the right information for the screen you are + in. + + + <sect><heading>MS-DOS user's Questions and Answers</heading> + + <p>Many FreeBSD users wish to install FreeBSD on PCs inhabited + by MS-DOS. Here are some commonly asked questions about + installing FreeBSD on such systems. + + <p><bf>Help! I have no space! Do I need to delete + everything first?</bf> + + If your machine is already running MS-DOS and has little + or no free space available for FreeBSD's installation, + all is not lost! You may find the FIPS utility, provided + in the <tt>tools</tt> directory on the FreeBSD CDROM or + on the various FreeBSD ftp sites, to be quite useful. + + FIPS allows you to split an existing MS-DOS partition + into two pieces, preserving the original partition and + allowing you to install onto the second free piece. You + first defragment your MS-DOS partition, using the DOS + 6.xx DEFRAG utility or the Norton Disk tools, then run + FIPS. It will prompt you for the rest of the information + it needs. Afterwards, you can reboot and install FreeBSD + on the new free slice. See the <em>Distributions</em> + menu for an estimation of how much free space you will need + for the kind of installation you want. + + + <bf>Can I use compressed MS-DOS filesystems from + FreeBSD?</bf> + + No. If you are using a utility such as Stacker(tm) or + DoubleSpace(tm), FreeBSD will only be able to use + whatever portion of the filesystem you leave + uncompressed. The rest of the filesystem will show up as + one large file (the stacked/dblspaced file!). <bf>Do not + remove that file!</bf> You will probably regret it + greatly! + + It is probably better to create another uncompressed + MS-DOS primary partition and use this for communications + between MS-DOS and FreeBSD. + + +<!-- XXX Status??? + <bf>Can I mount my MS-DOS extended partitions?</bf> + + This feature is not in FreeBSD 2.0.5 but should be in 2.1. + We have laid all the groundwork for making this happen, now + we just need to do the last 1 percent of the work involved. +--> + + <bf>Can I run MS-DOS binaries under FreeBSD?</bf> + + Not yet! We would like to add support for this someday, but + are still lacking anyone to actually do the work. + Ongoing work with Linux's DOSEMU utility may bring this + much closer to being a reality sometime soon. Send mail + to hackers@freebsd.org if you're interested in joining + this effort! + + However, there is a nice application available in the + <ref id="ports" name="The Ports Collection"> called pcemu, + that allows you to run many basic MS-DOS text-mode binaries + by entirely emulating an 8088 CPU. + + + diff --git a/handbook/mirrors.sgml b/handbook/mirrors.sgml index 53ce4721b0..2e5e4bb96c 100644 --- a/handbook/mirrors.sgml +++ b/handbook/mirrors.sgml @@ -1,422 +1,410 @@ -<!-- $Id: mirrors.sgml,v 1.7 1995-11-19 19:51:43 jkh Exp $ --> +<!-- $Id: mirrors.sgml,v 1.8 1995-11-20 01:10:25 jfieber Exp $ --> <!-- The FreeBSD Documentation Project --> <!-- <!doctype linuxdoc public "-//FreeBSD//DTD linuxdoc//EN"> --> <chapt><heading>Obtaining FreeBSD<label id="mirrors"></heading> <p>The official sources for FreeBSD available via anonymous FTP from: <quote> <htmlurl url="ftp://ftp.freebsd.org/pub/FreeBSD" name="ftp://ftp.FreeBSD.org/pub/FreeBSD"> </quote> and on CD-ROM from Walnut Creek CDROM: <quote> Walnut Creek CDROM<newline> 1547 Palos Verdes Mall, Suite 260<newline> Walnut Creek CA 94596 USA<newline> Phone: +1 510 674-0783<newline> Fax: +1 510 674-0821<newline> Email: <htmlurl url="mailto:info@cdrom.com" name="info@cdrom.com"><newline> WWW: <htmlurl url="http://www.cdrom.com/" name="http://www.cdrom.com/"> </quote> <p>Additionally, FreeBSD is available via anonymous FTP from the following mirror sites. If you choose to obtain FreeBSD via anonymous FTP, please try to use a site near you. <descrip> <tag>Australia</tag> <itemize> <item> <htmlurl url="ftp://ftp.physics.usyd.edu.au/FreeBSD" name="ftp://ftp.physics.usyd.edu.au/FreeBSD"><newline> Contact: <htmlurl url="mailto:dawes@xfree86.org" name="dawes@xfree86.org">. <item> <htmlurl url="ftp://minnie.cs.adfa.oz.au/FreeBSD" name="ftp://minnie.cs.adfa.oz.au/FreeBSD"><newline> Contact: <htmlurl url="mailto:wkt@dolphin.cs.adfa.oz.au" name="wkt@dolphin.cs.adfa.oz.au">. </itemize> <tag>Canada</tag> <itemize> <item> <htmlurl url="ftp://ftp.synapse.net/contrib/FreeBSD" name="ftp://ftp.synapse.net/contrib/FreeBSD"><newline> Contact: <htmlurl url="mailto:evanc@synapse.net" name="evanc@synapse.net">. </itemize> <tag>Finland</tag> <itemize> <item> <htmlurl url="ftp://nic.funet.fi/pub/unix/FreeBSD" name="ftp://nic.funet.fi/pub/unix/FreeBSD"><newline> Contact: <htmlurl url="mailto:count@nic.funet.fi" name="count@nic.funet.fi">. </itemize> <tag>France</tag> <itemize> <item> <htmlurl url="ftp://ftp.ibp.fr/pub/FreeBSD" name="ftp://ftp.ibp.fr/pub/FreeBSD"><newline> Contact: <htmlurl url="mailto:Remy.Card@ibp.fr" name="Remy.Card@ibp.fr">. </itemize> <tag>Germany</tag> <itemize> <item> <htmlurl url="ftp://ftp.fb9dv.uni-duisburg.de/pub/unix/FreeBSD" name="ftp://ftp.fb9dv.uni-duisburg.de/pub/unix/FreeBSD"><newline> Contact: <htmlurl url="mailto:ftp@ftp.fb9dv.uni-duisburg.de" name="ftp@ftp.fb9dv.uni-duisburg.de">. <item> <htmlurl url="ftp://gil.physik.rwth-aachen.de/pub/FreeBSD" name="ftp://gil.physik.rwth-aachen.de/pub/FreeBSD"><newline> Contact: <htmlurl url="mailto:kuku@gil.physik.rwth-aachen.de" name="kuku@gil.physik.rwth-aachen.de">. <item> <htmlurl url="ftp://ftp.uni-paderborn.de/freebsd" name="ftp://ftp.uni-paderborn.de/freebsd"><newline> Contact: <htmlurl url="mailto:ftp@uni-paderborn.de" name="ftp@uni-paderborn.de">. <item> <htmlurl url="ftp://ftp.leo.org/pub/comp/os/bsd/FreeBSD" name="ftp://ftp.leo.org/pub/comp/os/bsd/FreeBSD"><newline> Contact: <htmlurl url="mailto:bsd@leo.org" name="bsd@leo.org">. <item> <htmlurl url="ftp://ftp.tu-dresden.de/pub/soft/unix/bsd/FreeBSD" name="ftp://ftp.tu-dresden.de/pub/soft/unix/bsd/FreeBSD"><newline> Contact: <htmlurl url="mailto:pdsowner@rcs1.urz.tu-dresden.de" name="pdsowner@rcs1.urz.tu-dresden.de">. </itemize> <tag>Hong Kong</tag> <itemize> <item> -<htmlurl url="ftp://ftp.hk.super.net/pub/mirror/FreeBSD" - name="g ftp://ftp.hk.super.net/pub/mirror/FreeBSD"><newline> +<htmlurl url="ftp://ftp.hk.super.net/pub/FreeBSD" + name="g ftp://ftp.hk.super.net/pub/FreeBSD"><newline> Contact: <htmlurl url="mailto:ftp-admin@HK.Super.NET" name="ftp-admin@HK.Super.NET">. </itemize> <tag>Ireland</tag> <itemize> <item> <htmlurl url="ftp://ftp.internet-eireann.ie/pub/FreeBSD" name="ftp://ftp.internet-eireann.ie/pub/FreeBSD"><newline> Contact: <htmlurl url="mailto:ftpadmin@internet-eireann.ie" name="ftpadmin@internet-eireann.ie">. </itemize> <tag>Israel</tag> <itemize> <item> <htmlurl url="ftp://orgchem.weizmann.ac.il/pub/FreeBSD" name="ftp://orgchem.weizmann.ac.il/pub/FreeBSD"><newline> Contact: <htmlurl url="mailto:serg@klara.weizmann.ac.il" name="serg@klara.weizmann.ac.il">. </itemize> <tag>Korea</tag> <itemize> <item> <htmlurl url="ftp://ftp.cau.ac.kr/pub/FreeBSD" name="ftp://ftp.cau.ac.kr/pub/FreeBSD"><newline> Contact: <htmlurl url="mailto:ftpadm@ftp.cau.ac.kr" name="ftpadm@ftp.cau.ac.kr">. </itemize> <tag>Netherlands</tag> <itemize> <item> <htmlurl url="ftp://ftp.nl.net/pub/os/FreeBSD" name="ftp://ftp.nl.net/pub/os/FreeBSD"><newline> Contact: <htmlurl url="mailto:archive@nl.net" name="archive@nl.net">. </itemize> -<tag>Poland</tag> - -<itemize> - -<item> -<htmlurl url="ftp://SunSITE.icm.edu.pl/pub/FreeBSD/ftp.freebsd.org" - name="ftp://SunSITE.icm.edu.pl/pub/FreeBSD/ftp.freebsd.org"><newline> - Contact: <htmlurl url="mailto:archive@nl.net" - name="archive@nl.net">. - -</itemize> - <tag>Russia</tag> <itemize> <item> <htmlurl url="ftp://ftp.kiae.su/FreeBSD" name="ftp://ftp.kiae.su/FreeBSD"><newline> Contact: <htmlurl url="mailto:ftp@ftp.kiae.su" name="ftp@ftp.kiae.su">. </itemize> <tag>Sweden</tag> <itemize> <item> <htmlurl url="ftp://ftp.luth.se/pub/FreeBSD" name="ftp://ftp.luth.se/pub/FreeBSD"><newline> Contact: <htmlurl url="mailto:ragge@ludd.luth.se" name="ragge@ludd.luth.se">. </itemize> <tag>Taiwan</tag> <itemize> <item> <htmlurl url="ftp://NCTUCCCA.edu.tw/Operating-Systems/FreeBSD" name="ftp://NCTUCCCA.edu.tw/Operating-Systems/FreeBSD"><newline> Contact: <htmlurl url="mailto:freebsd@NCTUCCCA.edu.tw" name="freebsd@NCTUCCCA.edu.tw">. <item> <htmlurl url="ftp://netbsd.csie.nctu.edu.tw/pub/FreeBSD" name="ftp://netbsd.csie.nctu.edu.tw/pub/FreeBSD"><newline> Contact: <htmlurl url="mailto:ftp@netbsd.csie.nctu.edu.tw" name="ftp@netbsd.csie.nctu.edu.tw">. </itemize> <tag>Thailand</tag> <itemize> <item> <htmlurl url="ftp://ftp.nectec.or.th/pub/FreeBSD" name="ftp://ftp.nectec.or.th/pub/FreeBSD"><newline> Contact: <htmlurl url="mailto:ftpadmin@ftp.nectec.or.th" name="ftpadmin@ftp.nectec.or.th">. </itemize> <tag>USA</tag> <itemize> <item> <htmlurl url="ftp://gatekeeper.dec.com/pub/BSD/FreeBSD" name="ftp://gatekeeper.dec.com/pub/BSD/FreeBSD"><newline> Contact: <htmlurl url="mailto:hubbard@gatekeeper.dec.com" name="hubbard@gatekeeper.dec.com">. <item> <htmlurl url="ftp://ftp.cybernetics.net/pub/FreeBSD" name="ftp://ftp.cybernetics.net/pub/FreeBSD"><newline> Contact: <htmlurl url="mailto:michael@Cybernetics.NET" name="michael@Cybernetics.NET">. <item> <htmlurl url="ftp://ftp.neosoft.com/systems/FreeBSD" name="ftp://ftp.neosoft.com/systems/FreeBSD"><newline> Contact: <htmlurl url="mailto:smace@NeoSoft.COM" name="smace@NeoSoft.COM">. <item> <htmlurl url="ftp://kryten.atinc.com/pub/FreeBSD" name="ftp://kryten.atinc.com/pub/FreeBSD"><newline> Contact: <htmlurl url="mailto:jmb@kryten.atinc.com" name="jmb@kryten.atinc.com">. <item> <htmlurl url="ftp://ftp.dataplex.net/pub/FreeBSD" name="ftp://ftp.dataplex.net/pub/FreeBSD"><newline> Contact: <htmlurl url="mailto:rkw@dataplex.net" name="rkw@dataplex.net">. <item> <htmlurl url="ftp://ftp.cps.cmich.edu/pub/ftp.freebsd.org" name="ftp://ftp.cps.cmich.edu/pub/ftp.freebsd.org"><newline> Contact: <htmlurl url="mailto:ftpadmin@cps.cmich.edu" name="ftpadmin@cps.cmich.edu">. <item> <htmlurl url="ftp://ftp.cslab.vt.edu/pub/FreeBSD" name="ftp://ftp.cslab.vt.edu/pub/FreeBSD"><newline> Contact: <htmlurl url="mailto:ftp@ftp.cslab.vt.edu" name="ftp@ftp.cslab.vt.edu">. </itemize> <tag>Japan</tag> <itemize> <item> <htmlurl url="ftp://ftp.tokyonet.ad.jp/pub/FreeBSD" name="ftp://ftp.tokyonet.ad.jp/pub/FreeBSD"><newline> Contact: <htmlurl url="mailto:ftpadmin@TokyoNet.AD.JP" name="ftpadmin@TokyoNet.AD.JP">. <item> <htmlurl url="ftp://ftp.tut.ac.jp/FreeBSD" name="ftp://ftp.tut.ac.jp/FreeBSD"><newline> Contact: <htmlurl url="mailto:<ashida@ftp.tut.ac.jp" name="ashida@ftp.tut.ac.jp">. <item> <htmlurl url="ftp://ftp.sra.co.jp/pub/os/FreeBSD" name="ftp://ftp.sra.co.jp/pub/os/FreeBSD"><newline> Contact: <htmlurl url="mailto:ftp-admin@sra.co.jp" name="ftp-admin@sra.co.jp">. <item> <htmlurl url="ftp://ftp.ee.uec.ac.jp/pub/os/mirror/ftp.freebsd.org" name="ftp://ftp.ee.uec.ac.jp/pub/os/mirror/ftp.freebsd.org"><newline> Contact: <htmlurl url="mailto:ftp-admin@ftp.ee.uec.ac.jp" name="ftp-admin@ftp.ee.uec.ac.jp">. <item> <htmlurl url="ftp://ftp.mei.co.jp/free/PC-UNIX/FreeBSD" name="ftp://ftp.mei.co.jp/free/PC-UNIX/FreeBSD"><newline> Contact: <htmlurl url="mailto:tanig@isl.mei.co.jp" name="tanig@isl.mei.co.jp">. <item> <htmlurl url="ftp://ftp.waseda.ac.jp/pub/FreeBSD" name="ftp://ftp.waseda.ac.jp/pub/FreeBSD"><newline> Contact: <htmlurl url="mailto:ftp-admin@waseda.ac.jp" name="ftp-admin@waseda.ac.jp">. <item> <htmlurl url="ftp://ftp.pu-toyama.ac.jp/pub/FreeBSD" name="ftp://ftp.pu-toyama.ac.jp/pub/FreeBSD"><newline> Contact: Yoshihiko USUI <htmlurl url="mailto:usui@pu-toyama.ac.jp" name="usui@pu-toyama.ac.jp">. <item> <htmlurl url="ftp://ftpsv1.u-aizu.ac.jp/pub/os/FreeBSD" name="ftp://ftpsv1.u-aizu.ac.jp/pub/os/FreeBSD"><newline> Contact: <htmlurl url="mailto:ftp-admin@u-aizu.ac.jp" name="ftp-admin@u-aizu.ac.jp">. </itemize> <tag>UK</tag> <itemize> <item> <htmlurl url="ftp://src.doc.ic.ac.uk/packages/unix/FreeBSD" name="ftp://src.doc.ic.ac.uk/packages/unix/FreeBSD"><newline> Contact: <htmlurl url="mailto:wizards@doc.ic.ac.uk" name="wizards@doc.ic.ac.uk">. <item> <htmlurl url="ftp://unix.hensa.ac.uk/pub/walnut.creek/FreeBSD" name="ftp://unix.hensa.ac.uk/pub/walnut.creek/FreeBSD"><newline> Contact: <htmlurl url="mailto:archive-admin@unix.hensa.ac.uk" name="archive-admin@unix.hensa.ac.uk">. <item> <htmlurl url="ftp://ftp.demon.co.uk/pub/BSD/FreeBSD" name="ftp://ftp.demon.co.uk/pub/BSD/FreeBSD"><newline> Contact: <htmlurl url="mailto:uploads@demon.net" name="uploads@demon.net">. </itemize> </descrip> The latest versions of export-restricted code for FreeBSD (2.0C or later) (eBones and secure) are being made available at the following locations. If you are outside the U.S. or Canada, please get secure (DES) and eBones (Kerberos) from one of the following foreign distribution sites: <descrip> <tag>SouthAfrica</tag> <itemize> <item> <htmlurl url="ftp://ftp.internat.freebsd.org/pub/FreeBSD" name="ftp://ftp.internat.freebsd.org/pub/FreeBSD"><newline> Contact: Mark Murray <htmlurl url="mailto:mark@grondar.za" name="mark@grondar.za">. <item> <htmlurl url="ftp://storm.sea.uct.ac.za/pub/FreeBSD" name="ftp://storm.sea.uct.ac.za/pub/FreeBSD"><newline> Contact: Shaun Courtney <htmlurl url="mailto:ftp@storm.sea.uct.ac.za" name="ftp@storm.sea.uct.ac.za">. </itemize> <tag>Brazil</tag> <itemize> <item> <htmlurl url="ftp://ftp.iqm.unicamp.br/pub/FreeBSD" name="ftp://ftp.iqm.unicamp.br/pub/FreeBSD"><newline> Contact: Pedro A M Vazquez <htmlurl url="mailto:vazquez@iqm.unicamp.br" name="vazquez@iqm.unicamp.br">. </itemize> <tag>Finland</tag> <itemize> <item> <htmlurl url="ftp://nic.funet.fi/pub/unix/FreeBSD/eurocrypt" name="ftp://nic.funet.fi/pub/unix/FreeBSD/eurocrypt"><newline> Contact: <htmlurl url="mailto:count@nic.funet.fi" name="count@nic.funet.fi">. </itemize> </descrip> diff --git a/handbook/relnotes.sgml b/handbook/relnotes.sgml index d2d778be24..2357ec323f 100644 --- a/handbook/relnotes.sgml +++ b/handbook/relnotes.sgml @@ -1,503 +1,593 @@ -<!-- $Id: relnotes.sgml,v 1.6 1995-10-22 00:42:14 jfieber Exp $ --> +<!-- $Id: relnotes.sgml,v 1.7 1995-11-20 01:10:28 jfieber Exp $ --> <!-- The FreeBSD Documentation Project --> <!-- <!DOCTYPE linuxdoc PUBLIC '-//FreeBSD//DTD linuxdoc//EN'> <linuxdoc><book><chapt>foo --> <sect><heading>About this release<label id="relnotes"></heading> + <p>FreeBSD is a freely available, full source 4.4 BSD + Lite based release for Intel i386/i486/Pentium (or + compatible) based PC's. It is based primarily on + software from U.C. Berkeley's CSRG group, with some + enhancements from NetBSD, 386BSD, and the Free Software + Foundation. + + Since our release of FreeBSD 2.0 one year ago, the + performance, feature set, and stability of FreeBSD has + improved dramatically. The largest change is a + revamped VM system with a merged VM/file buffer cache + that not only increases performance, but reduces + FreeBSD's memory footprint, making a 5MB configuration + a more acceptable minimum. Other enhancements include + full NIS client and server support, transaction TCP + support, dial-on-demand PPP, an improved SCSI + subsystem, early ISDN support, support for FDDI and + Fast Ethernet (100Mbit) adapters, improved support for + the Adaptec 2940 (WIDE and narrow) and many hundreds of + bug fixes. + + We've also taken the comments and suggestions of many + of our users to heart and have attempted to provide + what we hope is a more sane and easily understood + installation process. Your feedback on this + (constantly evolving) process is especially welcome! + + In addition to the base distributions, FreeBSD offers a + new ported software collection with some 350 commonly + sought-after programs. The list of ports ranges from + http (WWW) servers, to games, languages, editors and + almost everything in between. The entire ports + collection requires only 10MB of storage, all ports + being expressed as ``deltas'' to their original sources. + This makes it much easier for us to update ports, and + greatly reduces the disk space demands made by the + older 1.0 ports collection. To compile a port, you + simply change to the directory of the program you wish + to install, type make and let the system do the rest. + The full original distribution for each port you build + is retrieved dynamically off of CDROM or a local ftp + site, so you need only enough disk space to build the + ports you want. (Almost) every port is also provided + as a pre-compiled "package" which can be installed with + a simple command (pkg_add) by those who do not wish to + compile their own ports from source. + + A number of additional documents which you may find + very helpful in the process of installing and using + FreeBSD may now also be found in the + <bf>/usr/share/doc</bf> directory. You may view the + manuals with any HTML capable browser with the + following URLs: + + <descrip> + <tag>The FreeBSD handbook</tag> + <htmlurl url="file:/usr/share/doc/handbook/handbook.html"> + + <tag>The FreeBSD FAQ</tag> + <htmlurl url="file:/usr/share/doc/FAQ/freebsd-faq.html"> + </descrip> + + You can also visit the master (and most frequently + updated) copies at <htmlurl + url="http://www.freebsd.org" + name="http://www.freebsd.org">. + + The core of FreeBSD does not contain DES code which + would inhibit its being exported outside the United + States. There is an add-on package to the core + distribution, for use only in the United States, that + contains the programs that normally use DES. The + auxiliary packages provided separately can be used by + anyone. A freely (from outside the U.S.) exportable + European distribution of DES for our non-U.S. users + also exists and is described in the <htmlurl + url="../FAQ/freebsd-faq.html" name="FreeBSD FAQ">. + + If password security for FreeBSD is all you need, and + you have no requirement for copying encrypted passwords + from different hosts (Suns, DEC machines, etc) into + FreeBSD password entries, then FreeBSD's MD5 based + security may be all you require! We feel that our + default security model is more than a match for DES, + and without any messy export issues to deal with. If + you're outside (or even inside) the U.S., give it a + try! + +<![ IGNORE [ <p>Since our first release of FreeBSD 1.0 nearly two years ago, FreeBSD has changed dramatically. Since release 2.0, FreeBSD has been based on the Berkeley BSD 4.4-lite code rather than the Net2 code used for previous versions. In addition to clearing the legal issues that surrounded the Net2 code, the port to 4.4 has also brought in numerous new features, filesystems and enhanced driver support. Since our release of FreeBSD 2.0 in November of 1994, the performance, feature set, and stability of FreeBSD has improved dramatically. The largest change is a revamped Virtual Memory (VM) system with a merged virtual memory and file buffer cache. This increases performance while reducing FreeBSD's memory footprint, making a system with 4 megabytes of RAM a more acceptable minimum. Other enhancements include full NIS client and server support, transaction TCP support, dial on demand PPP, an improved SCSI subsystem, early support for ISDN, support for FDDI and 100Mbit Fast Ethernet adapters, improved support for the Adaptec 2940 and hundreds of bug fixes. We've also taken the comments and suggestions of many of our users to heart and have attempted to provide what we hope is a more sane and easily understood installation process. Your feedback on this constantly evolving process is especially welcome! In addition to the base distributions, FreeBSD offers a new ported software collection with some 270 commonly sought-after programs. The list of ports ranges from World Wide Web (http) servers, to games, languages, editors and almost everything in between. The entire ports collection requires only 10MB of storage because each port contains only the changes required for the source code to compile on FreeBSD and the information necessary to automatically retrieve the original sources. The original distribution for each port you build is automatically retrieved off of CD-ROM or a via anonymous ftp, so you need only enough disk space to build the ports you want. Each port is also provided as a pre-compiled package which can be installed with the <tt>pkg_add(1)</tt> command for those who do not wish to compile their own ports from source. See <ref id="ports" name="The Ports Collection"> for a more complete description. <!-- XXX make xref For a list of contributors and a general project description, please see the file "CONTRIB.FreeBSD" which should be bundled with your binary distribution. Also see the "REGISTER.FreeBSD" file for information on registering with the "Free BSD user counter". This counter is for ALL freely available variants of BSD, not just FreeBSD, and we urge you to register yourself with it. --> The core of FreeBSD does not contain DES code which would inhibit its being exported outside the United States. An add-on package, for use only in the United States, contains the programs that normally use DES. The auxiliary packages provided separately can be used by anyone. A freely exportable European distribution of DES for our non-U.S. users also exists and is described in the <url - url="http://www.freebsd.org/How/faq" name="FreeBSD + url="http://www.freebsd.org/FAQ" name="FreeBSD FAQ">. If password security for FreeBSD is all you need, and you have no requirement for copying encrypted passwords from other hosts using DES into FreeBSD password entries, then FreeBSD's MD5 based security may be all you require. We feel that our default security model is more than a match for DES, and without any messy export issues to deal with. FreeBSD 2.0.5 represents the culmination of 2 years of work and many thousands of man hours put in by an international development team. We hope you enjoy it! <sect1><heading>New feature highlights</heading> <p>The following features were added or substantially improved between the release of 2.0 and this 2.0.5 release. In order to facilitate better communication, the person, or persons, responsible for each enhancement is noted. Any questions regarding the new functionality should be directed to them first. <sect2><heading>Kernel</heading> <p> <descrip> <tag>Merged VM-File Buffer Cache</tag> A merged VM/buffer cache design greatly enhances overall system performance and makes it possible to do a number of more optimal memory allocation strategies that were not possible before. Owner: David Greenman (davidg@FreeBSD.org) and John Dyson (dyson@implode.root.com) <tag>Network PCB hash optimization</tag> For systems with a great number of active TCP connections (WEB and ftp servers, for example), this greatly speeds up the lookup time required to match an incoming packet up to its associated connection. Owner: David Greenman (davidg@FreeBSD.org) <tag>Name cache optimization</tag> The name-cache would cache all files of the same name to the same bucket, which would put for instance all ".." entries in the same bucket. We added the parent directory version to frustrate the hash, and improved the management of the cache in various other ways while we were at it. Owner: Poul-Henning Kamp (phk@FreeBSD.org) David Greenman (davidg@FreeBSD.org) <tag>Less restrictive swap-spaces</tag> The need to compile the names of the swap devices into the kernel has been removed. Now <tt>swapon(8)</tt> will accept any block devices, up to the maximum number of swap devices configured in the kernel. Owner: Poul-Henning Kamp (phk@FreeBSD.org) David Greenman (davidg@FreeBSD.org) <tag>Hard Wired SCSI Devices</tag> Prior to 2.0.5, FreeBSD performed dynamic assignment of unit numbers to SCSI devices as they were probed, allowing a SCSI device failure to possibly change unit number assignment. This could cause filesystems other disks in the system to be incorrectly mounted, or not mounted at all. Hard wiring allows static allocation of unit numbers (and hence device names) to scsi devices based on SCSI ID and bus. SCSI configuration occurs in the kernel config file. Samples of the configuration syntax can be found in the <tt>scsi(4)</tt> man page or the LINT kernel config file. Owner: Peter Dufault (dufault@hda.com) Sources involved: <tt>sys/scsi/*</tt> <tt>usr.sbin/config/*</tt> <tag>Slice Support</tag> FreeBSD now supports a <em>slice</em> abstraction which enhances FreeBSD's ability to share disks with other operating systems. This support will allow FreeBSD to inhabit DOS extended partitions. Owner: Bruce Evans (bde@FreeBSD.org) Sources involved: <tt>sys/disklabel.h</tt> <tt>sys/diskslice.h</tt> <tt>sys/dkbad.h</tt> <tt>kern/subr_diskslice.c</tt> <tt>kern/subr_dkbad.c</tt> <tt>i386/isa/diskslice_machdep.c</tt> <tt>i386/isa/wd.c</tt> <tt>scsi/sd.c</tt> <tt>dev/vn/vn.c</tt> <tag>Support for Ontrack Disk Manager Version 6.0</tag> Support has been added for disks which use Ontrack Disk Manager. The fdisk program does <em>not</em> know about it however, so make all changes using the install program on the boot.flp or the Ontrack Disk Manager tool under MS-DOS. Owner: Poul-Henning Kamp (phk@FreeBSD.org) <tag>Bad144 is back and working</tag> Bad144 works again, though the semantics are slightly different than before in that the bad-spots are kept relative to the slice rather than absolute on the disk. Owner: Bruce Evans (bde@FreeBSD.org) Poul-Henning Kamp (phk@FreeBSD.org) </descrip> <sect2><heading>New device support</heading> <sect3><heading>SCSI and CDROM devices</heading> <p><descrip> <tag>Matsushita/Panasonic (Creative) CD-ROM driver</tag> The Matsushita/Panasonic CR-562 and CR-563 drives are now supported when connected to a Sound Blaster or 100% compatible host adapter. Up to four host adapters are supported for a total of 16 CD-ROM drives. The audio functions are supported with the Karoke variable speed playback. Owner: Frank Durda IV (bsdmail@nemesis.lonestar.org) Sources involved: <tt>isa/matcd</tt> <tag>Adaptec 2742/2842/2940 SCSI driver</tag> The original 274x/284x driver has evolved considerably since the 2.0 release of FreeBSD. We now offer full support for the 2940 series as well as the Wide models of these cards. The arbitration bug that caused problems with fast devices has been corrected and <em>experimental</em> tagged queuing support has been added (kernel option <tt>AHC_TAGENABLE</tt>). John Aycock has also released the sequencer code under a Berkeley style copyright making the driver entirely clean of the GPL. Owner: Justin Gibbs (gibbs@FreeBSD.org) Sources involved: <tt>isa/aic7770.c</tt> <tt>pci/aic7870.c</tt> <tt>i386/scsi/*</tt> <tt>sys/dev/aic7xxx/*</tt> <tag>NCR5380/NCR53400 SCSI (ProAudio Spectrum) driver</tag> Owner: core Submitted by: Serge Vakulenko (vak@cronyx.ru) Sources involved: <tt>isa/ncr5380.c</tt> <tag>Sony CDROM driver</tag> Owner: core Submitted by: Mikael Hybsch (micke@dynas.se) Sources involved: <tt>isa/scd.c</tt> </descrip> <sect3><heading>Serial devices</heading> <p><descrip> <tag>SDL Communications Riscom/8 Serial Board Driver</tag> Owner: Andrey Chernov (ache@FreeBSD.org) Sources involved: <tt>isa/rc.c</tt> <tt>isa/rcreg.h</tt> <tag>Cyclades Cyclom-y Serial Board Driver</tag> Owner: Bruce Evans (bde@FreeBSD.org) Submitted by: Andrew Werple (andrew@werple.apana.org.au) and Heikki Suonsivu (hsu@cs.hut.fi) Obtained from: NetBSD Sources involved: <tt>isa/cy.c</tt> <tag>Cronyx/Sigma sync/async serial driver</tag> Owner: core Submitted by: Serge Vakulenko Sources involved: <tt>isa/cronyx.c</tt> </descrip> <sect2><heading>Networking</heading> <p><descrip> <tag>Diskless booting</tag> Diskless booting in 2.0.5 is much improved over previous releases. The boot program is in <tt>src/sys/i386/boot/netboot</tt>, and can be run from an MS-DOS system or burned into an EPROM. WD, SMC, 3COM and Novell ethernet cards are currently supported. Local swapping is also supported. <tag>DEC DC21140 Fast Ethernet driver</tag> This driver supports any of the numerous NICs using the DC21140 chipset including the 100Mb DEC DE-500-XA and SMC 9332. Owner: core Submitted by: Matt Thomas (thomas@lkg.dec.com) Sources involved: <tt>pci/if_de.c</tt> <tt>pci/dc21040.h</tt> <tag>DEC FDDI (DEFPA/DEFEA) driver</tag> Owner: core Submitted by: Matt Thomas (thomas@lkg.dec.com) Sources involved: <tt>pci/if_pdq.c</tt> <tt>pci/pdq.c</tt> <tt>pci/pdq_os.h</tt> <tt>pci/pdqreg.h</tt> <tag>3Com 3c505 (Etherlink/+) NIC driver</tag> Owner: core Submitted by: Dean Huxley (dean@fsa.ca) Obtained from: NetBSD Sources involved: <tt>isa/if_eg.c</tt> <tag>Fujitsu MB86960A family of NICs driver</tag> Owner: core Submitted by: M.S. (seki@sysrap.cs.fujitsu.co.jp) Sources involved: <tt>isa/if_fe.c</tt> <tag>Intel EtherExpress driver</tag> Owner: Rodney W. Grimes (rgrimes@FreeBSD.org) Sources involved: <tt>isa/if_ix.c</tt> <tt>isa/if_ixreg.h</tt> <tag>3Com 3c589 driver</tag> Owner: core Submitted by: "HOSOKAWA Tatsumi" (hosokawa@mt.cs.keio.ac.jp), Seiji Murata (seiji@mt.cs.keio.ac.jp) and Noriyuki Takahashi (hor@aecl.ntt.jp) Sources involved: <tt>isa/if_zp.c</tt> <tag>IBM Credit Card Adapter driver</tag> Owner: core Submitted by: "HOSOKAWA Tatsumi" (hosokawa@mt.cs.keio.ac.jp), Sources involved: <tt>isa/pcic.c</tt> <tt>isa/pcic.h</tt> <tag>EDSS1 and 1TR6 ISDN interface driver</tag> Owner: core Submitted by: Dietmar Friede (dfriede@drnhh.neuhaus.de) and Juergen Krause (jkr@saarlink.de) Sources involved: <tt>gnu/isdn/*</tt> </descrip> <sect2><heading>Miscellaneous drivers</heading> <p><descrip> <tag>Joystick driver</tag> Owner: Jean-Marc Zucconi (jmz@FreeBSD.org) Sources involved: <tt>isa/joy.c</tt> <tag>National Instruments ``LabPC'' driver</tag> Owner: Peter Dufault (dufault@hda.com) Sources involved: <tt>isa/labpc.c</tt> <tag>WD7000 driver</tag> Owner: Olof Johansson (offe@ludd.luth.se) <tag>Pcvt Console driver</tag> Owner: Jörg Wunsch (joerg@FreeBSD.org) Submitted by: Hellmuth Michaelis (hm@altona.hamburg.com) Sources involved: <tt>isa/pcvt/*</tt> <tag>BSD-audio emulator for VAT driver</tag> Owner: Amancio Hasty (ahasty@FreeBSD.org) and Paul Traina (pst@FreeBSD.org) Sources involved: <tt>isa/sound/vat_audio.c</tt> <tt>isa/sound/vat_audioio.h</tt> <tag>National Instruments AT-GPIB and AT-GPIB/TNT GPIB driver</tag> Owner: core Submitted by: Fred Cawthorne (fcawth@delphi.umd.edu) Sources involved: <tt>isa/gpib.c</tt> <tt>isa/gpib.h</tt> <tt>isa/gpibreg.h</tt> <tag>Genius GS-4500 hand scanner driver</tag> Owner: core Submitted by: Gunther Schadow (gusw@fub46.zedat.fu-berlin.de) Sources involved: <tt>isa/gsc.c</tt> <tt>isa/gscreg.h</tt> <tag>CORTEX-I Frame Grabber</tag> Owner: core Submitted by: Paul S. LaFollette, Jr. ( Sources involved: <tt>isa/ctx.c</tt> <tt>isa/ctxreg.h</tt> <tag>Video Spigot video capture card</tag> Owner: Jim Lowe </descrip> <sect1><heading>Experimental features</heading> <p><descrip> <tag>UNIONFS and LFS</tag> The unionfs and LFS file systems are known to be severely broken in FreeBSD 2.0.5. This is in part due to old bugs that we haven't had time to resolve yet and the need to update these file systems to deal with the new VM system. We hope to address these issues in a later release of FreeBSD. <tag>iBCS2 Support</tag> FreeBSD now supports running iBCS2 compatible binaries. Currently SCO UNIX 3.2.2 and 3.2.4, and ISC 2.2 COFF are supported. The iBCS2 emulator is in its early stages and has not been extensively tested, but it is functional. Most of SCO's 3.2.2 binaries work, as does an old INFORMIX-2.10 for SCO. Further testing is nessesary to complete this project. There is also work under way for ELF and XOUT loaders, and most of the svr4 syscall wrappers are written. Owner: Soren Schmidt (sos) and Sean Eric Fagan (sef) Sources involved: <tt>sys/i386/ibcs2/*</tt> and misc kernel changes. </descrip> <!-- <sect1><heading>Reporting problems, making suggestions, submitting code</heading> <p>Your suggestions, bug reports and contributions of code are always valued - please do not hesitate to report any problems you may find (preferably with a fix attached if you can!). The preferred method to submit bug reports from a machine with internet mail connectivity is to use the send-pr command. Bug reports will be dutifully filed by our faithful bugfiler program and you can be sure that we'll do our best to respond to all reported bugs as soon as possible. If, for some reason, you are unable to use the send-pr command to submit a bug report, you can try to send it to: <tscreen>bugs@FreeBSD.org</tscreen> Otherwise, for any questions or suggestions, please send mail to: <tscreen>questions@FreeBSD.org</tscreen> Additionally, being a volunteer effort, we are always happy to have extra hands willing to help - there are already far more enhancements to be done than we can ever manage to do by ourselves! To contact us on technical matters, or with offers of help, you may send mail to: <tscreen>hackers@FreeBSD.org</tscreen> Since these mailing lists can experience significant amounts of traffic, if you have slow or expensive mail access and you are only interested in keeping up with significant FreeBSD events, you may find it preferable to subscribe to: <tscreen>announce@FreeBSD.org</tscreen> All but the freebsd-bugs groups can be freely joined by anyone wishing to do so. Send mail to MajorDomo@FreeBSD.org and include the keyword `help' on a line by itself somewhere in the body of the message. This will give you more information on joining the various lists, accessing archives, etc. There are a number of mailing lists targeted at special interest groups not mentioned here, so send mail to majordomo and ask about them! --> +]]> diff --git a/handbook/scsi.sgml b/handbook/scsi.sgml index 280483518e..f69478965b 100644 --- a/handbook/scsi.sgml +++ b/handbook/scsi.sgml @@ -1,765 +1,760 @@ -<!-- $Id: scsi.sgml,v 1.6 1995-10-07 04:31:46 jfieber Exp $ --> +<!-- $Id: scsi.sgml,v 1.7 1995-11-20 01:10:30 jfieber Exp $ --> <!-- The FreeBSD Documentation Project --> <!-- <title>An introduction to SCSI and its use with FreeBSD (c) 1995, Wilko Bulte, Sun Sep 3 17:14:48 MET DST 1995 Copyright 1995, Wilko C. Bulte, Arnhem, The Netherlands This document attempts to describe the background of SCSI, its (mis)use with FreeBSD and some common pitfalls. --> SCSI

Copyright © 1995, &a.wilko;.3 September 1995. SCSI is an acronym for Small Computer Systems Interface. It is an ANSI standard that has become one of the leading I/O buses in the computer industry. The foundation of the SCSI standard was laid by Shugart Associates (the same guys that gave the world the first mini floppy disks) when they introduced the SASI bus (Shugart Associates Standard Interface). After some time an industry effort was started to come to a more strict standard allowing devices from different vendors to work together. This effort was recognized in the ANSI SCSI-1 standard. The SCSI-1 standard (approx 1985) is now more or less obsolete. The current standard is SCSI-2 (see ), with SCSI-3 on the drawing boards. In addition to a physical interconnection standard, SCSI defines a logical (command set) standard to which disk devices must adhere. This standard is called the Common Command Set (CCS) and was developed more or less in parallel with ANSI SCSI-1. SCSI-2 includes the (revised) CCS as part of the standard itself. The commands are dependent on the type of device at hand. It does not make much sense of course to define a Write command for a scanner. The SCSI bus is a parallel bus, which comes in a number of variants. The oldest and most used is an 8 bit wide bus, with single-ended signals, carried on 50 wires. (If you don't know what single-ended means, don't worry, that is what this document is all about.) Modern designs also use 16 bit wide buses, with differential signals. This allows transfer speeds of 20Mbytes/second, on cables lengths of up to 25 meters. SCSI-2 allows a maximum bus width of 32 bits, using an additional cable. Of course the SCSI bus not only has data lines, but also a number of control signals. A very elaborate protocol is part of the standard to allow multiple devices to share the bus in an efficient manner. In SCSI-2, the data is always checked using a separate parity line. In pre-SCSI-2 designs parity was optional. In SCSI-3 even faster bus types are introduced, along with a serial SCSI bus that reduces the cabling overhead and allows a higher maximum bus length. As you could have guessed from the description above, SCSI devices are intelligent. They have to be to adhere to the SCSI standard (which is over 2 inches thick BTW). So, for a hard disk drive for instance you do not specify a head/cylinder/sector to address a particular block, but simply the number of the block you want. Elaborate caching schemes, automatic bad block replacement etc are all made possible by this 'intelligent device' approach. On a SCSI bus, each possible pair of devices can communicate. If their function allows this is another matter, but the standard does not restrict it. To avoid signal contention, the 2 devices have to arbitrate for the bus before using it. The philosophy of SCSI is to have a standard that allows older-standard devices to work with newer-standard ones. So, an old SCSI-1 device should normally work on a SCSI-2 bus. Normally, because it is not absolutely sure that the implementation of an old device follows the (old) standard closely enough to be acceptable on a new bus. Modern devices are usually more well-behaved, because the standardization has become more strict and is better adhered to by the device manufacturers. Generally speaking, the chances of getting a working set of devices on a single bus is better when all the devices are SCSI-2 or newer. This does not imply that you have to dump all your old stuff when you get that shiny 2Gb disk: I own a system on which a pre-SCSI-1 disk, a SCSI-2 QIC tape unit, a SCSI-1 helical scan tape unit and 2 SCSI-1 disks work together quite happily. Components of SCSI

As said before, SCSI devices are smart. The idea is to put the knowledge about intimate hardware details onto the SCSI device itself. In this way, the host system does not have to worry about things like how many heads are hard disks has, or how many tracks there are on a specific tape device. If you are curious, the standard specifies commands with which you can query your devices on their hardware particulars. The advantage of intelligent devices is obvious: the device drivers on the host can be made in a much more generic fashion, there is no longer a need to change (and qualify!) drivers for every odd new device that is introduced. For cabling and connectors there is a golden rule: get good stuff. With bus speeds going up all the time you will save yourself a lot of grief by using good material. So, gold plated connectors, shielded cabling, sturdy connector hoods with strain reliefs etc are the way to go. Second golden rule: don't use cables longer than necessary. I once spent 3 days hunting down a problem with a flaky machine only to discover that shortening the SCSI bus with 1 meter solved the problem. And the original bus length was well within the SCSI specification. SCSI bus types

From an electrical point of view, there are two incompatible bus types: single-ended and differential. This means that there are two different main groups of SCSI devices and controllers, which cannot be mixed on the same bus. It is possible however to use special converter hardware to transform a single-ended bus into a differential one (and vice versa). The differences between the bus types are explained in the next sections. In lots of SCSI related documentation there is a sort of jargon in use to abbreviate the different bus types. A small list: FWD: Fast Wide Differential FND: Fast Narrow Differential SE: Single Ended FN: Fast Narrow etc. With a minor amount of imagination one can usually imagine what is meant. Wide is a bit ambiguous, it can indicate 16 or 32 bit buses. As far as I know, the 32 bit variant is not (yet) in use, so wide normally means 16 bit. Fast means that the timing on the bus is somewhat different, so that on a narrow (8 bit) bus 10 Mbytes/sec are possible instead of 5 Mbytes/sec for 'slow' SCSI. More on this later. It should be noted that the data lines > 8 are only used for data transfers and device addressing. The transfers of commands and status messages etc are only performed on the lowest 8 data lines. The standard allows narrow devices to operate on a wide bus. The usable bus width is negotiated between the devices. You have to watch your device addressing closely when mixing wide and narrow. Single ended buses

A single-ended SCSI bus uses signals that are either 5 Volts or 0 Volts (indeed, TTL levels) and are relative to a COMMON ground reference. A singled ended 8 bit SCSI bus has approximately 25 ground lines, who are all tied to a single `rail' on all devices. A standard single ended bus has a maximum length of 6 meters. If the same bus is used with fast-SCSI devices, the maximum length allowed drops to 3 meters. Fast-SCSI means that instead of 5Mbytes/sec the bus allows 10Mbytes/sec transfers. Please note that this means that if some devices on your bus use 'fast' to communicate your bus must adhere to the length restrictions for fast buses! It is obvious that with the newer fast-SCSI devices the bus length can become a real bottleneck. This is why the differential SCSI bus was introduced in the SCSI-2 standard. For connector pinning and connector types please refer to the SCSI-2 standard (see ) itself, connectors etc are listed there in painstaking detail. Beware of devices using non-standard cabling. For instance Apple uses a 25pin D-type connecter (like the one on serial ports and parallel printers). Considering that the official SCSI bus needs 50 pins you can imagine the use of this connector needs some 'creative cabling'. The reduction of the number of ground wires they used is a bad idea, you better stick to 50 pins cabling in accordance with the SCSI standard. Differential buses

A differential SCSI bus has a maximum length of 25 meters. Quite a difference from the 3 meters for a single-ended fast-SCSI bus. The idea behind differential signals is that each bus signal has it's own return wire. So, each signal is carried on a (preferably twisted) pair of wires. The voltage difference between these two wires determines whether the signal is asserted or de-asserted. To a certain extent the voltage difference between ground and the signal wire pair is not relevant (don't try 10 kVolts though..). It is beyond the scope of this document to explain why this differential idea is so much better. Just accept that electrically seen the use of differential signals gives a much better noise margin. You will normally find differential buses in use for inter-cabinet connections. Because of the lower cost single ended is mostly used for shorter buses like inside cabinets. There is nothing that stops you from using differential stuff with FreeBSD, as long as you use a controller that has device driver support in FreeBSD. As an example, Adaptec marketed the AH1740 as a single ended board, whereas the AH1744 was differential. The software interface to the host is identical for both. Terminators

Terminators in SCSI terminology are resistor networks that are used to get a correct impedance matching. Impedance matching is important to get clean signals on the bus, without reflections or ringing. If you once made a long distance telephone call on a bad line you probably know what reflections are. With 20Mbytes/sec travelling over your SCSI bus, you don't want signals echoing back. Terminators come in various incarnations, with more or less sophisticated designs. Of course, there are internal and external variants. Almost every SCSI device comes with a number of sockets in which a number of resistor networks can (must be!) installed. If you remove terminators from a device, carefully stock 'm. You will need them when you ever decide to reconfigure your SCSI bus. There is enough variation in even these simple tiny things to make finding the exact replacement a frustrating business. There are also SCSI devices that have a single jumper to enable or disable a built-in terminator. There are special terminators you can stick onto a flat cable bus. Others look like external connectors, so a connector hood without a cable. So, lots of choice as you can see. There is much debate going on if and when you should switch from simple resistor (passive) terminators to active terminators. Active terminators contain more or less elaborate circuits to give more clean bus signals. The general consensus seems to be that the usefulness of active termination increases when you have long buses and/or fast devices. If you ever have problems with your SCSI buses you might consider trying an active terminator. Try to borrow one first, they reputedly are quite expensive. Please keep in mind that terminators for differential and single-ended buses are not identical. You should not mix the two variants. OK, and now where should you install your terminators? This is by far the most misunderstood part of SCSI. And it is by far the simplest.. The rule is: every SCSI bus has 2 (two) terminators, one at each end of the bus. So, two and not one or three or whatever. Do yourself a favour and stick to this rule. It will save you endless grief, because wrong termination has the potential to introduce highly mysterious bugs. A common pitfall is to have an internal (flat)cable in a machine and also an external cable attached to the controller. It seems almost everybody forgets to remove the terminators from the controller. The terminator must now be on the last external device, and not on the controller! In general, every reconfiguration of a SCSI bus must pay attention to this. What I did myself is remove all terminators from my SCSI devices and controllers. I own a couple of external terminators, for both the Centronics-type external cabling and for the internal flat cable connectors. This makes reconfiguration much easier. Terminator power

The terminators discussed in the previous chapter need power to operate properly. On the SCSI bus, a line is dedicated to this purpose. So, simple huh? Not so. Each device can provide it's own terminator power to the terminator sockets it has on-device. But if you have external terminators, or when the device supplying the terminator power to the SCSI bus line is switched off you are in trouble. The idea is that initiators (these are devices that initiate actions on the bus, a discussion follows) must supply terminator power. All SCSI devices are allowed (but not required) to supply terminator power. To allow for switched-off devices on a bus, the terminator power must be supplied to the bus via a diode. This prevents the backflow of current to switched-off devices. To prevent all kinds of nastiness, the terminator power is usually fused. As you can imagine, fuses might blow. This can, but does not have to, lead to a non functional bus. If multiple devices supply terminator power, a single blown fuse will not put you out of business. A single supplier with a blown fuse certainly will. Clever external terminators sometimes have a LED indication that shows whether terminator power is present. In newer designs auto-restoring fuses are used who 'reset' themselves after some time. On modern devices, sometimes integrated terminators are used. These things are special purpose integrated circuits that can be dis/en-abled with a control pin. It is not necessary to physically remove them from a device. You may find them on newer host adapters, sometimes they even are software configurable, using some sort of setup tool. Consult you documentation! Device addressing

Because the SCSI bus is, ehh, a bus there must be a way to distinguish or address the different devices connected to it. This is done by means of the SCSI or target ID. Each device has a unique target ID. You can select the ID to which a device must respond using a set of jumpers, or a dip switch, or something similar. Consult the documentation of your device for more information. Beware of multiple devices configured to use the same ID. Chaos normally reigns in this case. For an 8 bit bus, a maximum of 8 targets is possible. The maximum is 8 because the selection is done bitwise using the 8 data lines on the bus. For wide this increases to the number of data lines. The higher the SCSI target ID, the higher the priority the devices has. When it comes to arbitration between devices that want to use the bus at the same time, the device that has the highest SCSI ID will win. This also means that the SCSI host adapter usually uses target ID 7 (for narrow buses). For a further subdivision, the standard allows for Logical Units or LUNs for short. A single target ID may have multiple LUNs. For example, a tape device including a tape changer may have LUN 0 for the tape device itself, and LUN 1 for the tape changer. In this way, the host system can address each of the parts of the tape unit as desired. Bus layout

SCSI buses are linear. So, not shaped like Y-junctions, star topologies, cobwebs or whatever else people might want to invent. You might notice that the terminator issue discussed earlier becomes rather hairy if your bus is not linear.. The electrical characteristics, it's noise margins and ultimately the reliability of it all are tightly related to linear bus rule. Stick to the linear bus rule! Using SCSI with FreeBSD

About translations, BIOSes and magic...

As stated before, you should first make sure that you have a electrically sound bus. When you want to use a SCSI disk on your PC as boot disk, you must aware of some quirks related to PC BIOSes. The PC BIOS in it's first incarnation used a low level physical interface to the hard disk. So, you had to tell the BIOS (using a setup tool or a BIOS built-in setup) how your disk physically looked like. This involved stating number of heads, number of cylinders, number of sectors per track, obscure things like precompensation and reduced write current cylinder etc. One might be inclined to think that since SCSI disks are smart you can forget about this. Alas, the arcane setup issue is still present today. The system BIOS needs to know how to access your SCSI disk with the head/cyl/sector method. The SCSI host adapter or SCSI controller you have put in your AT/EISA/PCI/whatever bus to connect your disk therefore has it's own on-board BIOS. During system startup, the SCSI BIOS takes over the hard disk interface routines from the system BIOS. To fool the system BIOS, the system setup is normally set to No hard disk present. Obvious, isn't it? The SCSI BIOS itself presents to the system a so called translated drive. This means that a fake drive table is constructed that allows the PC to boot the drive. This translation is often (but not always) done using a pseudo drive with 32 heads and 64 sectors per track. By varying the number of cylinders, the SCSI BIOS adapts to the actual drive size. It is useful to note that 32 * 64 / 2 = the size of your drive in megabytes. The division by 2 is to get from disk blocks that are normally 512 bytes in size to Kbytes. Right.. All is well now?! No, it isn't. The system BIOS has another quirk you might run into. The number of cylinders of a bootable hard disk cannot be greater than 1024. Using the translation above, this is a show-stopper for disks greater than 1 Gb. With disk capacities going up all the time this is causing problems. Fortunately, the solution is simple: just use another translation, e.g. with 128 heads instead of 32. In most cases new SCSI BIOS versions are available to upgrade older SCSI host adapters. Some newer adapters have an option, in the form of a jumper or software setup selection, to switch the translation the SCSI BIOS uses. It is very important that all operating systems on the disk use the same translation to get the right idea about where to find the relevant partitions. So, when installing FreeBSD you must answer any questions about heads/cylinders etc using the translated values your host adapter uses. Failing to observe the translation issue might be un-bootable systems or operating systems overwriting each others partitions. Using fdisk you should be able to see all partitions. As promised earlier: what is this talk about 'lying' devices? As you might already know, the FreeBSD kernel reports the geometry of SCSI disks when booting. An example from one of my systems: Feb 9 19:33:46 yedi /386bsd: aha0 targ 0 lun 0: Feb 9 19:33:46 yedi /386bsd: sd0: 636MB (1303250 total sec), 1632 cyl, 15 head, 53 sec, bytes/sec 512 This info is retrieved from the SCSI disk itself. Newer disks often use a technique called zone bit recording. The idea is that on the outer cylinders of the drive there is more space so more sectors per track can be put on them. This results in disks that have more tracks on outer cylinders than on the inner cylinders and, last but not least, have more capacity. You can imagine that the value reported by the drive when inquiring about the geometry now becomes fake. SCSI subsystem design

FreeBSD uses a layered SCSI subsystem. For each different controller card a device driver is written. This driver knows all the intimate details about the hardware it controls. The driver has a interface to the upper layers of the SCSI subsystem through which it receives it's commands and reports back any status. On top of the card drivers there are a number of more generic drivers for a class of devices. More specific: a driver for tape devices (abbreviation: st), magnetic disks (sd), cdroms (cd) etc. In case you are wondering where you can find this stuff, it all lives in /sys/scsi. See the man pages in section 4 for more details. The multi level design allows a decoupling of low-level bit banging and more high level stuff. Adding support for another - piece of hardware is a much more manageable problem. + piece of hardware is a much more managable problem. Kernel configuration

Dependent on your hardware, the kernel configuration file must contain one or more lines describing your host adapter(s). This includes I/O addresses, interrupts etc. Consult the man page for your adapter driver to get more info. Apart from that, check out /sys/i386/conf/LINT for an overview of a kernel config file. LINT contains every possible option you can dream of. It does not imply LINT will actually get you to a working kernel at all. Although it is probably stating the obvious: the kernel config file should reflect your actual hardware setup. So, interrupts, I/O addresses etc must match the kernel config file. During system boot messages will be displayed to indicate whether the configured hardware was actually found. - An example based on the FreeBSD 2.0.5-Release kernel config + An example loosely based on the FreeBSD 2.0.5-Release kernel config file LINT with some added comments (between []): # SCSI host adapters: `aha', `ahb', `aic', `bt', `nca' # # aha: Adaptec 154x # ahb: Adaptec 174x # ahc: Adaptec 274x/284x/294x # aic: Adaptec 152x and sound cards using the Adaptec AIC-6360 (slow!) # bt: Most Buslogic controllers # nca: ProAudioSpectrum cards using the NCR 5380 or Trantor T130 # uha: UltraStore 14F and 34F # sea: Seagate ST01/02 8 bit controller (slow!) # wds: Western Digital WD7000 controller (no scatter/gather!). # -# Note that the order is important in order for Buslogic cards to be -# probed correctly. -# - -[For a Bustek controller] -controller bt0 at isa? port "IO_BT0" bio irq ? vector btintr [For an Adaptec AHA274x, 284x etc controller] controller ahc0 at isa? bio irq ? vector ahcintr # port??? iomem? [For an Adaptec AHA174x controller] controller ahb0 at isa? bio irq ? vector ahbintr -[For an Adaptec AHA154x controller] -controller aha0 at isa? port "IO_AHA0" bio irq ? drq 5 vector ahaintr - [For an Ultrastor adapter] controller uha0 at isa? port "IO_UHA0" bio irq ? drq 5 vector uhaintr -controller scbus0 #base SCSI code +# Map SCSI buses to specific SCSI adapters +controller scbus0 at ahc0 +controller scbus2 at ahb0 +controller scbus1 at uha0 +# The actual SCSI devices disk sd0 at scbus0 target 0 unit 0 [SCSI disk 0 is at scbus 0, LUN 0] disk sd1 at scbus0 target 1 [implicit LUN 0 if omitted] -disk sd2 at scbus0 target 3 -disk sd3 at scbus0 target 4 +disk sd2 at scbus1 target 3 [SCSI disk on the uha0] +disk sd3 at scbus2 target 4 [SCSI disk on the ahb0] tape st1 at scbus0 target 6 [SCSI tape at target 6] device cd0 at scbus? [the first ever CDROM found, no wiring] - The example above tells the kernel to look for a bt (Bustek) - controller, then for an Adaptec 274x, 284x etc board, and + The example above tells the kernel to look for a ahc (Adaptec 274x) + controller, then for an Adaptec 174x board, and so on. The lines following the controller specifications tell the kernel to configure specific devices but only attach them when they match the target ID and - LUN specified. + LUN specified on the corresponding bus. So, if you had a SCSI tape at target ID 2 it would not be configured, but it will attach when it is at target ID 6. Below is another example of a kernel config file as used by FreeBSD version < 2.0.5. The difference with the first example is that devices are not 'wired down'. 'Wired down' means that you specify which SCSI target belongs to which device. A kernel built to the config file below will attach the first SCSI disk it finds to sd0, the second disk to sd1 etc. If you ever removed or added a disk, all other devices of the same type (disk in this case) would 'move around'. This implies you have to change /etc/fstab each time. Although the old style still works, you are strongly recommended to use this new feature. It will save you a lot of grief whenever you shift your hardware around on the SCSI buses. So, when you re-use your old trusty config file after upgrading from a pre-FreeBSD2.0.5.R system check this out. controller ahb0 at isa? bio irq 11 vector ahbintr [driver for Adaptec 174x] controller aha0 at isa? port "IO_AHA0" bio irq 11 drq 5 vector ahaintr [for Adaptec 154x] controller sea0 at isa? bio irq 5 iomem 0xc8000 iosiz 0x2000 vector seaintr [for Seagate ST01/02] controller scbus0 device sd0 [support for 4 SCSI harddisks, sd0 up sd3] device sd1 device sd2 device sd3 device st0 [support for 2 SCSI tapes] device st1 device cd0 #Only need one of these, the code dynamically grows [for the cdrom] Both examples support 4 SCSI disks. If during boot more devices of a specific type (e.g. sd disks) are found than are configured in the booting kernel, the system will complain. You will have to build and boot a new kernel (after adapting the kernel configuration file) before you can use all of the devices. It does not hurt to have 'extra' devices in the kernel, the example above will work fine when you have only 2 SCSI disks. Use man 4 scsi to check for the latest info on the SCSI subsystem. For more detailed info on host adapter drivers use eg man 4 aha for info on the Adaptec 154x driver. Tuning your SCSI kernel setup

Experience has shown that some devices are slow to respond to INQUIRY commands after a SCSI bus reset. An INQUIRY command is sent by the kernel on boot to see what kind of device (disk, tape, cdrom etc) is connected to a specific target ID. This process is called device probing by the way. To work around this problem, FreeBSD allows a tunable delay time before the SCSI devices are probed following a SCSI bus reset. You can set this delay time in your kernel configuration file using a line like: options "SCSI_DELAY=15" #Be pessimistic about Joe SCSI device This line sets the delay time to 15 seconds. On my own system I had to use 3 seconds minimum to get my trusty old CDROM drive to be recognized. Start with a high value (say 30 seconds or so) when you have problems with device recognition. If this helps, tune it back until it just stays working. Rogue SCSI devices

Although the SCSI standard tries to be complete and concise, it is a complex standard and implementing things correctly is no easy task. Some vendors do a better job then others. This is exactly where the 'rogue' devices come into view. Rogues are devices that are recognized by the FreeBSD kernel as behaving slightly (...) non-standard. Rogue devices are reported by the kernel when booting. An example for two of my cartridge tape units: Feb 25 21:03:34 yedi /386bsd: ahb0 targ 5 lun 0: Feb 25 21:03:34 yedi /386bsd: st0: Tandberg tdc3600 is a known rogue Mar 29 21:16:37 yedi /386bsd: aha0 targ 5 lun 0: Mar 29 21:16:37 yedi /386bsd: st1: Archive Viper 150 is a known rogue For instance, there are devices that respond to all LUNs on a certain target ID, even if they are actually only one device. It is easy to see that the kernel might be fooled into believing that there are 8 LUNs at that particular target ID. The confusion this causes is left as an exercise to the user. The SCSI subsystem of FreeBSD recognizes devices with bad habits by looking at the INQUIRY response they send when probed. Because the INQUIRY response also includes the version number of the device firmware, it is even possible that for different firmware versions different workarounds are used. This scheme works fine, but keep in mind that it of course only works for devices that are KNOWN to be weird. If you are the first to connect your bogus Mumbletech SCSI cdrom you might be the one that has to define which workaround is needed. Busmaster host adapters

Most, but not all, SCSI host adapters are bus mastering controllers. This means that they can do I/O on their own without putting load onto the host CPU for data movement. This is of course an advantage for a multitasking operating system like FreeBSD. It must be noted however that there might be some rough edges. For instance an Adaptec 1542 controller can be set to use different transfer speeds on the host bus (ISA or AT in this case). The controller is settable to different rates because not all motherboards can handle the higher speeds. Problems like hangups, bad data etc might be the result of using a higher data transfer rate then your motherboard can stomach. The solution is of course obvious: switch to a lower data transfer rate and try if that works better. In the case of a Adaptec 1542, there is an option that can be put into the kernel config file to allow dynamic determination of the right, read: fastest feasible, transfer rate. This option is disabled by default: options "TUNE_1542" #dynamic tune of bus DMA speed Check the man pages for the host adapter that you use. Or better still, use the ultimate documentation (read: driver source). Tracking down problems

The following list is an attempt to give a guideline for the most common SCSI problems and their solutions. It is by no means complete. Check for loose connectors and cables. Check and doublecheck the location and number of your terminators. Check if your bus has at least one supplier of terminator power (especially with external terminators. Check if no double target IDs are used. Check if at least one device provides terminator power to the bus. Check if all devices to be used are powered up. Make a minimal bus config with as little devices as possible. If possible, configure your host adapter to use slow bus speeds. Further reading

If you intend to do some serious SCSI hacking, you might want to have the official standard at hand: Approved American National Standards can be purchased from ANSI at 11 West 42nd Street, 13th Floor, New York, NY 10036, Sales Dept: (212) 642-4900. You can also buy many ANSI standards and most committee draft documents from Global Engineering Documents, 15 Inverness Way East, Englewood, CO 80112-5704, Phone: (800) 854-7179, Outside USA and Canada: (303) 792-2181, FAX: (303) 792- 2192. Many X3T10 draft documents are available electronically on the SCSI BBS (719-574-0424) and on the ncrinfo.ncr.com anonymous ftp site. Latest X3T10 committee documents are: AT Attachment (ATA or IDE) [X3.221-1994] (Approved) ATA Extensions (ATA-2) [X3T10/948D Rev 2i] Enhanced Small Device Interface (ESDI) [X3.170-1990/X3.170a-1991] (Approved) Small Computer System Interface - 2 (SCSI-2) [X3.131-1994] (Approved) SCSI-2 Common Access Method Transport and SCSI Interface Module (CAM) [X3T10/792D Rev 11] Other publications that might provide you with additional information are: "SCSI: Understanding the Small Computer System Interface", written by NCR Corporation. Available from: Prentice Hall, Englewood Cliffs, NJ, 07632 Phone: (201) 767-5937 ISBN 0-13-796855-8 "Basics of SCSI", a SCSI tutorial written by Ancot Corporation Contact Ancot for availability information at: Phone: (415) 322-5322 Fax: (415) 322-0455 "SCSI Interconnection Guide Book", an AMP publication (dated 4/93, Catalog 65237) that lists the various SCSI connectors and suggests cabling schemes. Available from AMP at (800) 522-6752 or (717) 564-0100 "Fast Track to SCSI", A Product Guide written by Fujitsu. Available from: Prentice Hall, Englewood Cliffs, NJ, 07632 Phone: (201) 767-5937 ISBN 0-13-307000-X "The SCSI Bench Reference", "The SCSI Encyclopedia", and the "SCSI Tutor", ENDL Publications, 14426 Black Walnut Court, Saratoga CA, 95070 Phone: (408) 867-6642 "Zadian SCSI Navigator" (quick ref. book) and "Discover the Power of SCSI" (First book along with a one-hour video and tutorial book), Zadian Software, Suite 214, 1210 S. Bascom Ave., San Jose, CA 92128, (408) 293-0800 On Usenet the newsgroups and are noteworthy places to look for more info. You can also find the SCSI-Faq there, which is posted periodically. Most major SCSI device and host adapter suppliers operate ftp sites and/or BBS systems. They may be valuable sources of information about the devices you own. diff --git a/handbook/slips.sgml b/handbook/slips.sgml index 3e86504010..cd12038c8b 100644 --- a/handbook/slips.sgml +++ b/handbook/slips.sgml @@ -1,516 +1,516 @@ Setting up a SLIP server

Contribudted by &a.ghelmer;. v1.0, 15 May 1995. This document provides suggestions for setting up SLIP Server services on a FreeBSD system, which typically means configuring your system to automatically startup connections upon login for remote SLIP clients. The author has written this document based on his experience; however, as your system and needs may be different, this document may not answer all of your questions, and the author cannot be responsible if you damage your system or lose data due to attempting to follow the suggestions here. This guide was originally written for SLIP Server services on a FreeBSD 1.x system. It has been modified to reflect changes in the pathnames and the removal of the SLIP interface compression flags in FreeBSD 2.x, which appear to be the only major changes between FreeBSD versions. If you do run encounter mistakes in this document, please email the author with enough information to help correct the problem. For FreeBSD 1.x users, all of the files referenced in the directory /etc/sliphome are actually in the /etc directory. Prerequisites

This document is very technical in nature, so background knowledge is required. It is assumed that you are familiar with the TCP/IP network protocol, and in particular, network and node addressing, network address masks, subnetting, routing, and routing protocols, such as RIP. Configuring SLIP services on a dial-up server requires a knowledge of these concepts, and if you are not familiar with them, please read a copy of either Craig Hunt's TCP/IP Network Administration published by O'Reilly & Associates, Inc. (ISBN Number 0-937175-82-X), or Douglas Comer's books on the TCP/IP protocol. It's further assumed that you have already setup your modem(s) and configured the appropriate system files to allow logins through your modems. If you haven't prepared your system for this yet, please see the tutorial for configuring dialup services; if you have a World-Wide Web browser available, browse the list of tutorials at -http://www.freebsd.org/How; otherwise, check the place +http://www.freebsd.org/; otherwise, check the place where you found this document for a document named Quick Overview

In its typical configuration, using FreeBSD as a SLIP server works as follows: a SLIP user dials up your FreeBSD SLIP Server system and logs in with a special SLIP login ID that uses /usr/sbin/sliplogin as the special user's shell. The /etc/sliphome/slip.hosts to find a matching line for the special user, and if it finds a match, connects the serial line to an available SLIP interface and then runs the shell script /etc/sliphome/slip.login to configure the SLIP interface. An Example of a SLIP Server Login

For example, if a SLIP user ID were Shelmerg, /etc/master.passwd would look something like this (except it would be all on one line): Shelmerg:password:1964:89::0:0:Guy Helmer - SLIP: /usr/users/Shelmerg:/usr/sbin/sliplogin and, when sliplogin will search /etc/sliphome/slip.hosts for a line that had a matching user ID; for example, there may be a line in /etc/sliphome/slip.hosts that reads: Shelmerg dc-slip sl-helmer 0xfffffc00 autocomp /etc/sliphome/slip.login like this: /etc/sliphome/slip.login 0 19200 Shelmerg dc-slip sl-helmer 0xfffffc00 autocomp If all goes well, /etc/sliphome/slip.login will issue an ifconfig for the SLIP interface to which slip.login) to set the local IP address (dc-slip), remote IP address (sl-helmer), network mask for the SLIP interface (0xfffffc00), and any additional flags (autocomp). If something goes wrong, /var/log/messages (see the manual pages for syslogd(8) and syslog.conf(5), and perhaps check /etc/syslog.conf to see to which files syslogd is logging). OK, enough of the examples -- let's dive into setting up the system. Kernel Configuration

FreeBSD's default kernels usually come with two SLIP interfaces defined (sl0 and sl1); you can use netstat -i to see whether these interfaces are defined in your kernel. Sample output from netstat -i: Name Mtu Network Address Ipkts Ierrs Opkts Oerrs Coll ed0 1500 0.0.c0.2c.5f.4a 291311 0 174209 0 133 ed0 1500 138.247.224 ivory 291311 0 174209 0 133 lo0 65535 79 0 79 0 0 lo0 65535 loop localhost 79 0 79 0 0 sl0* 296 0 0 0 0 0 sl1* 296 0 0 0 0 0 The sl0 and sl1 interfaces shown in netstat -i's output indicate that there are two SLIP interfaces built into the kernel. (The asterisks after the sl0 and sl1 indicate that the interfaces are ``down''.) However, FreeBSD's default kernels do not come configured to forward packets (ie, your FreeBSD machine will not act as a router) due to Internet RFC requirements for Internet hosts (see RFC's 1009 [Requirements for Internet Gateways], 1122 [Requirements for Internet Hosts -- Communication Layers], and perhaps 1127 [A Perspective on the Host Requirements RFCs]), so if you want your FreeBSD SLIP Server to act as a router, you'll have to add the line options GATEWAY to your machine's kernel configuration file and re-compile the kernel anyway. (Trivia: ``Gateways'' are the Internet's old name for what are now usually called ``routers''.) Please see the BSD System Manager's Manual chapter on ``Building Berkeley Kernels with Config'' [the source for which is in /usr/src/share/doc/smm] and ``FreeBSD Configuration Options'' [in /sys/doc/options.doc] for more information on configuring and building kernels. You may have to unpack the kernel source distribution if haven't installed the system sources already (srcdist/srcsys.?? in FreeBSD 1.1, srcdist/sys.?? in FreeBSD 1.1.5.1, or the entire source distribution in FreeBSD 2.0) to be able to configure and build kernels. You'll notice that near the end of the default kernel configuration file (/sys/i386/conf/GENERICAH) is a line that reads: pseudo-device sl 2 which is the line that defines the number of SLIP devices available in the kernel; the number at the end of the line is the maximum number of SLIP connections that may be operating simultaneously. See the document ``Building Berkeley Kernels with Config'' and the manual page for config(8) to see how to configure and build kernels. Sliplogin Configuration

As mentioned earlier, there are three files in the /etc/sliphome directory that are part of the configuration for /usr/sbin/sliplogin (see sliplogin(8) for the actual manual page for sliplogin): slip.hosts, which defines the SLIP users & their associated IP addresses; slip.login, which usually just configures the SLIP interface; and (optionally) slip.logout, which undoes slip.login's effects when the serial connection is terminated. slip.hosts Configuration

/etc/sliphome/slip.hosts contains lines which have at least four items, separated by whitespace: SLIP user's login ID Local address (local to the SLIP server) of the SLIP link Remote address of the SLIP link Network mask The local and remote addresses may be host names (resolved to IP addresses by /etc/hosts or by the domain name service, depending on your specifications in /etc/host.conf), and I believe the network mask may be a name that can be resolved by a lookup into /etc/networks. On a sample system, /etc/sliphome/slip.hosts looks like this: ----- begin /etc/sliphome/slip.hosts ----- # # login local-addr remote-addr mask opt1 opt2 # (normal,compress,noicmp) # Shelmerg dc-slip sl-helmerg 0xfffffc00 autocomp ----- end /etc/sliphome/slip.hosts ------ At the end of the line is one or more of the options. normal - no header compression compress - compress headers autocomp - compress headers if the remote end allows it noicmp - disable ICMP packets (so any ``ping'' packets will be dropped instead of using up your bandwidth) It appears that section and/or consult your IP network manager. If you are going to use a separate subnet for your SLIP clients, you will need to allocate the subnet number out of your assigned IP network number and assign each of your SLIP client's IP numbers out of that subnet. Then, you will probably either need to configure a static route to the SLIP subnet via your SLIP server on your nearest IP router, or install gated on your FreeBSD SLIP server and configure it to talk the appropriate routing protocols to your other routers to inform them about your SLIP server's route to the SLIP subnet. Otherwise, if you will use the ``proxy ARP'' method, you will need to assign your SLIP client's IP addresses out of your SLIP server's Ethernet subnet, and you'll also need to adjust your /etc/sliphome/slip.login and /etc/sliphome/slip.logout scripts to use arp(8) to manage the proxy-ARP entries in the SLIP server's ARP table. slip.login Configuration

The typical /etc/sliphome/slip.login file looks like this: ----- begin /etc/sliphome/slip.login ----- #!/bin/sh - # # @(#)slip.login 5.1 (Berkeley) 7/1/90 # # generic login file for a slip line. sliplogin invokes this with # the parameters: # 1 2 3 4 5 6 7-n # slipunit ttyspeed loginname local-addr remote-addr mask opt-args # /sbin/ifconfig sl$1 inet $4 $5 netmask $6 ----- end /etc/sliphome/slip.login ----- This slip.login file merely ifconfig's the appropriate SLIP interface with the local and remote addresses and network mask of the SLIP interface. If you have decided to use the ``proxy ARP'' method (instead of using a separate subnet for your SLIP clients), your /etc/sliphome/slip.login file will need to look something like this: ----- begin /etc/sliphome/slip.login for "proxy ARP" ----- #!/bin/sh - # # @(#)slip.login 5.1 (Berkeley) 7/1/90 # # generic login file for a slip line. sliplogin invokes this with # the parameters: # 1 2 3 4 5 6 7-n # slipunit ttyspeed loginname local-addr remote-addr mask opt-args # /sbin/ifconfig sl$1 inet $4 $5 netmask $6 # Answer ARP requests for the SLIP client with our Ethernet addr /usr/sbin/arp -s $5 00:11:22:33:44:55 pub ----- end /etc/sliphome/slip.login for "proxy ARP" ----- The additional line in this slip.login, arp -s $5 00:11:22:33:44:55 pub, creates an ARP entry in the SLIP server's ARP table. This ARP entry causes the SLIP server to respond with the SLIP server's Ethernet MAC address whenever a another IP node on the Ethernet asks to speak to the SLIP client's IP address. When using the example above, be sure to replace the Ethernet MAC address (00:11:22:33:44:55) with the MAC address of your system's Ethernet card, or your ``proxy ARP'' will definitely not work! You can discover your SLIP server's Ethernet MAC address by looking at the results of running netstat -i; the second line of the output should look something like: ed0 1500 0.2.c1.28.5f.4a 191923 0 129457 0 116 ^^^^^^^^^^^^^^^ which indicates that this particular system's Ethernet MAC address is 00:02:c1:28:5f:4a -- the periods in the Ethernet MAC address given by netstat -i must be changed to colons and leading zeros should be added to each single-digit hexadecimal number to convert the address into the form that arp(8) desires; see the manual page on arp(8) for complete information on usage. Note that when you create /etc/sliphome/slip.login and /etc/sliphome/slip.logout, the ``execute'' bit (ie, chmod 755 /etc/sliphome/slip.login /etc/sliphome/slip.logout) must be set, or sliplogin will be unable to execute it. slip.logout Configuration

/etc/sliphome/slip.logout isn't strictly needed (unless you are implementing ``proxy ARP''), but if you decide to create it, this is an example of a basic slip.logout script: ----- begin /etc/sliphome/slip.logout ----- #!/bin/sh - # # slip.logout # # logout file for a slip line. sliplogin invokes this with # the parameters: # 1 2 3 4 5 6 7-n # slipunit ttyspeed loginname local-addr remote-addr mask opt-args # /sbin/ifconfig sl$1 down ----- end /etc/sliphome/slip.logout ----- If you are using ``proxy ARP'', you'll want to have /etc/sliphome/slip.logout remove the ARP entry for the SLIP client: ----- begin /etc/sliphome/slip.logout for "proxy ARP" ----- #!/bin/sh - # # @(#)slip.logout # # logout file for a slip line. sliplogin invokes this with # the parameters: # 1 2 3 4 5 6 7-n # slipunit ttyspeed loginname local-addr remote-addr mask opt-args # /sbin/ifconfig sl$1 down # Quit answering ARP requests for the SLIP client /usr/sbin/arp -d $5 ----- end /etc/sliphome/slip.logout for "proxy ARP" ----- The arp -d $5 removes the ARP entry that the ``proxy ARP'' slip.login added when the SLIP client logged in. It bears repeating: make sure /etc/sliphome/slip.logout has the execute bit set for after you create it (ie, chmod 755 /etc/sliphome/slip.logout). Routing Considerations

If you are not using the ``proxy ARP'' method for routing packets between your SLIP clients and the rest of your network (and perhaps the Internet), you will probably either have to add static routes to your closest default router(s) to route your SLIP client subnet via your SLIP server, or you will probably need to install and configure gated on your FreeBSD SLIP server so that it will tell your routers via appropriate routing protocols about your SLIP subnet. Static Routes

Adding static routes to your nearest default routers can be troublesome (or impossible, if you don't have authority to do so...). If you have a multiple-router network in your organization, some routers, such as Cisco and Proteon, may not only need to be configured with the static route to the SLIP subnet, but also need to be told which static routes to tell other routers about, so some expertise and troubleshooting/tweaking may be necessary to get static-route-based routing to work. Running gated

An alternative to the headaches of static routes is to install gated on your FreeBSD SLIP server and configure it to use the appropriate routing protocols (RIP/OSPF/BGP/EGP) to tell other routers about your SLIP subnet. ftp.gated.cornell.edu in the directory /pub/gated; I believe the current version as of this writing is gated-R3_5Alpha_8.tar.Z, which includes support for FreeBSD ``out-of-the-box''. Complete information and documentation on gated is available on the Web starting at http://www.gated.cornell.edu/. Compile and install it, and then write a /etc/gated.conf file to configure your gated; here's a sample, similar to what the author used on a FreeBSD SLIP server: ----- begin sample /etc/gated.conf for gated version 3.5Alpha5 ----- # # gated configuration file for dc.dsu.edu; for gated version 3.5alpha5 # Only broadcast RIP information for xxx.xxx.yy out the ed Ethernet interface # # # tracing options # traceoptions "/var/tmp/gated.output" replace size 100k files 2 general ; rip yes { interface sl noripout noripin ; interface ed ripin ripout version 1 ; traceoptions route ; } ; # # Turn on a bunch of tracing info for the interface to the kernel: kernel { traceoptions remnants request routes info interface ; } ; # # Propagate the route to xxx.xxx.yy out the Ethernet interface via RIP # export proto rip interface ed { proto direct { xxx.xxx.yy mask 255.255.252.0 metric 1; # SLIP connections } ; } ; # # Accept routes from RIP via ed Ethernet interfaces import proto rip interface ed { all ; } ; ----- end sample /etc/gated.conf ----- The above sample gated.conf file broadcasts routing information regarding the SLIP subnet xxx.xxx.yy via RIP onto the Ethernet; if you are using a different Ethernet driver than the /var/tmp/gated.output for debugging gated's activity; you can certainly turn off the tracing options if gated works OK for you. You'll need to change the xxx.xxx.yy's into the network address of your own SLIP subnet (be sure to change the net mask in the proto direct clause as well). When you get gated built and installed and create a configuration file for it, you'll need to run gated in place of routed on your FreeBSD system; change the routed/gated startup parameters in /etc/netstart as appropriate for your system. Please see the manual page for gated for information on gated's command-line parameters. Acknowledgements

Thanks to these people for comments and advice regarding this tutorial: