not used any more
[ppp.git] / README.linux
index 4b5a05aeaa9ce9ca2659a9445e516e62ed676178..569d05fe905b8d5b6f971444e28f2841a6e0502a 100644 (file)
@@ -12,6 +12,9 @@ Al Longyear         longyear@netcom.com
     CHANGES FROM THE PREVIOUS VERSION
     FUTURE PLANS
     INSTALLATION
+    PROBLEMS WHICH MAY OCCUR WHILE BUILDING THE KERNEL
+       A REFERENCE TO UNDEFINED _mod_use_count_
+       BLOCK ON FREELIST AT nnnnnn ISN'T FREE
     GENERAL NETWORK CONFIGURATION
     CONNECTING TO A PPP SERVER
     IF IT WORKS
@@ -27,11 +30,11 @@ Al Longyear         longyear@netcom.com
 
 INTRODUCTION
 
-This file is substantially derived from the previous version for
-the pppd process 2.2.0. Michael Callahan wrote that version. This
-particular version was written, modified, hacked, changed, whatever,
-by Al Longyear. If you find errors in this document, they are probably
-mine and not Michael's.
+This file is substantially derived from the previous version for the
+pppd process 2.2.0, which itself was derived from earlier works by
+Michael Callahan. This particular version was written, modified,
+hacked, changed, whatever, by Al Longyear. If you find errors in this
+document, they are probably mine and not Michael's.
 
 This is a PPP driver for Linux.  It has been used by many people and
 seems to be quite stable.  It is capable of being used either as a
@@ -44,7 +47,7 @@ about it.)
 
 The PPP protocol consists of two parts.  One is a scheme for framing
 and encoding packets, the other is a series of protocols called LCP,
-IPCP, UPAP and CHAP, for negotiating link options and for
+IPCP, PAP and CHAP, for negotiating link options and for
 authentication.  This package similarly consists of two parts: a
 kernel module which handles PPP's low-level framing protocol, and a
 user-level program called pppd which implements PPP's negotiation
@@ -70,8 +73,8 @@ Linux has no support for asynchronous I/O, so I hacked an ioctl into
 the PPP kernel module that provides a signal when packets appear and
 made pppd use this instead.
 
-Al Longyear ported version 2.2 of pppd (from the free package
-ppp-2.2.0) to Linux.  He also provided several enhancements to both
+Al Longyear ported version 2.0 of pppd (from the free package
+ppp-2.0.0) to Linux.  He also provided several enhancements to both
 the kernel driver and the OS-independent part of pppd.  His
 contributions to Linux PPP have been immense, and so this release
 is being distributed over both our names.
@@ -90,13 +93,6 @@ of '16 channel' support obsolete.
 
 CHANGES FROM THE PREVIOUS VERSION
 
-- The number of devices for the PPP device has been made dynamic. It was
-  previously configured with the default value of four devices.
-
-- The problems dealing with other systems such as Windows NT and their
-  authenticiation has been corrected. It will now generate the proper
-  responses to allow the system to choose a valid authentication protocol.
-
 - The kernel debug value has changed. Previously it was a level. It is now
   a bit map with various bits meaning certain types of debug information.
 
@@ -117,53 +113,24 @@ CHANGES FROM THE PREVIOUS VERSION
   actions.
 
 - Support is added for compression control protocol. At the present time
-  only the BSD-Compress compression protocol is supported.
-
-- There are two queues for output frames. This avoids some problems which
-  occured with the previous version and some PPP packages which exchanged
-  echo frames with Linux.
-
-- The echo frames are now proper. Previously, it would generate extra
-  characters and this caused some providers to not respond to the 'junk'.
-
-- The max-echo-failure option will now properly disconnect the line.
-
-- There are other changes which are listed in the general README file. Please
-  read that file as well for changes.
-
-- There is no limit to the number of ppp devices which you may use. Jim Freeman
-  has added code to create them upon demand and to re-use the ones which have
-  been closed. There is no code, nor plans to write code, to remove (delete)
-  the un-used devices. So, if your system goes to a spurt and uses 256 ppp
-  devices, it will remain at that level until you next reload the kernel.
-
-  If you are using modules then you may use the additional setting of
-  max_dev=#
-
-  where # is the maximum number. The default is set by the define PPP_MAX_DEV
-  and this define may be altered if you are not using modules.
-
-  The BSD compressor may only be loaded as a module. Previous beta versions
-  permitted the compressor to be included into the kernel. This was removed
-  for several reasons, some technical, some less technical and more
-  political (legal).
+  the BSD-Compress and 'deflate' compression protocols are supported. A
+  testing version of the predictor-1 compression protocol was developed but
+  it is not included in this package due to unfortunate Motorola patent
+  considerations.
 
 
 FUTURE PLANS
 
-The IPX support is still minimal. There is code which will only work with
-the 1.3 version of the networking software. The pppd process will still
-require changes to support the IPXCP and a change to the driver to properly
-enable/disable the IPX frames.
+These are to be determined.
 
 
 
 INSTALLATION
 
-This version of PPP has been tested on 1.1.x (x>=14) It will probably
-not work on kernels much earlier than this due to a change in the
-routing code.  If you have an earlier kernel, please upgrade.
+This version of PPP has been tested on kernel version 1.3.100. It will
+probably not work on kernels much earlier than this due to earlier problems
+with the kernels. If you have an earlier kernel, please upgrade to the 2.0
+kernel (when it is available).
 
 joining the PPP channel of linux-activists:
 
@@ -226,33 +193,6 @@ automated installation procedure be performed.
 Use the following procedure for all kernel versions. There are six steps
 numbered one through six. Please do them in order and not skip one.
 
-An important note about the use of modules for PPP:
-
-The module support for the Linux system supports a concept of configuring
-the external names so that they pertain to only a specific version of the
-kernel. This is enabled by answering "y)es" to the configuration question
-of "Set version information on all symbols for modules?".
-
-There is a problem with enabling this and the PPP code under some
-circumstances. It will not work if BOTH of the following is true:
-
-a) You elect to load the PPP driver into the kernel; and
-b) You want version information for all other modules.
-
-The problem is one of the module code itself. It is not able to recognize
-that the symbols loaded into the kernel symbol table may not have been
-defined with the new names for the symbols. The symbols defined by the
-PPP code will not have version information attached to them.
-
-The solution to the problem is simple. Don't do both things at the same
-time. The means that it is valid if you either (a) don't use version
-information; or (b) don't put the PPP code into the kernel (use it as a
-module instead) if you want to use version information.
-
-I will see what I can do to get around this limitation. However, for the
-time being, this is a limitation.
-
-
 
 1. Issue the command:
 
@@ -263,6 +203,7 @@ contains this README.linux file. The result of this will be to build a
 set of symbolic links to the makefiles. They should link 'Makefile' to
 'Makefile.linux' in each of the directories.
 
+
 2. Issue the command:
 
 make kernel
@@ -312,89 +253,18 @@ You are free to run the installation script as many times as you
 wish. The additional executions will only change the files which have
 not been changed.
 
-3. Verify the Makefile in the kernel.
-
-The drivers/net/Makefile in the kernel must have the proper definition
-for the BSD compression module. As of 2.2.0a, the code will only build
-as a module. This means that if you have had an earlier version of the
-PPP logic and this is an update to the kernel then it is possible that
-the patch to the Makefile did not work and you will be left with a
-kernel which will not build correctly.
-
-Please, read carefully the following.
-
-Look that the kernel version which you are building. If the version is
-1.2.x (1.2.0 though 1.2.99999, whatever) then use the set of entries
-for the 1.2 kernel. If the kernel is for 1.3.x and resembles the lines
-in the 1.3 kernel entry then use those. There is a point in the early
-1.3 kernels where the Makefile actually was that of the 1.2 series.
-Please don't just use the 1.3 kernel change unless your makefile
-RESEMBLES the patch indicated.
-
-I don't know how to stress this enough. If you choose the wrong one
-then the makefile will not work. Your kernel build will fail. In that
-case, use the other one. There are only two variations. Please choose
-the proper one. Only one will work.
-
-Check the makefile. If your kernel is 1.2 then it should be similar to
-the following:
-
-ifdef CONFIG_PPP
-NETDRV_OBJS := $(NETDRV_OBJS) ppp.o
-CONFIG_SLHC = CONFIG_SLHC
-else
-MODULES := $(MODULES) ppp.o
-endif
-MODULES := $(MODULES) bsd_comp.o
-
-ifdef CONFIG_SLIP
-NETDRV_OBJS := $(NETDRV_OBJS) slip.o
-CONFIG_SLHC = CONFIG_SLHC
-else
-MODULES := $(MODULES) slip.o
-endif
-
-The critical entry is the line which says "MODULES := $(MODULES) bsd_comp.o"
-and that you don't have "NETDRV_OBJS := $(NETDRV_OBJS) ppp.o bsd_comp.o".
-
-IF YOU HAVE THE 1.3 KERNEL, the following is the expected pattern in the
-Makefile.
-
-ifeq ($(CONFIG_PPP),y)
-L_OBJS += ppp.o
-CONFIG_SLHC_BUILTIN = y
-else
-  CONFIG_SLHC_MODULE = y
-  M_OBJS += ppp.o
-  endif
-endif
-ifneq ($(CONFIG_PPP),n)
-  M_OBJS += bsd_comp.o
-endif
-
-ifeq ($(CONFIG_SLIP),y)
-L_OBJS += slip.o
-CONFIG_SLHC_BUILTIN = y
-else
-  ifeq ($(CONFIG_SLIP),m)
-
-Again, ensure that the statement reads "L_OBJS += ppp.o" and not
-"L_OBJS += ppp.o bsd_comp.o".
-
-
-4. Build the kernel.
+
+3. Build the kernel.
 
 You must rebuild the kernel with this package. The driver is totally
-new and will not work with the older daemon and the newer daemon will
+new and may not work with the older daemon and the newer daemon will
 not work with the older kernel driver. If you don't know how to build
 a kernel, then you should read the README file in the kernel source
 directory.
 
 If you wish module support then you need to have the 'modules-1.1.87'
 package installed as the minimum version. Earlier versions of the module
-support will not work properly.
+support will not work properly. All of the later ones will.
 
 As of this time, the current version for the modules package is
 1.2.0. Even 1.1.87 is old. However, if you only have 1.1.87 then it
@@ -404,6 +274,17 @@ upgrading the module package however.
 Instructions on building the kernel with modules are given in the
 README.modules in the kernel source directory.
 
+
+4. Install the kernel
+
+If you are using the Yggdrasil distribution then you need to 'install'
+the kernel at this point. Refer to their documentation on the procedures
+to install the kernel.
+
+Distributions other than the Yggdrasil will normally install the
+kernel when you build it.
+
+
 5. Build the programs.
 
 The programs are built next. The command to build the programs is fairly
@@ -413,6 +294,7 @@ make
 
 from the top level directory where this README.linux file is located.
 
+
 6. Install the programs.
 
 You may use the command
@@ -420,16 +302,24 @@ You may use the command
 make install
 
 to install the various programs. They will be installed into the
-/usr/lib/ppp directory. You may not like this directory for the
+/usr/sbin directory. You may not like this directory for the
 executables. The directory name is called BINDIR and is set in the
 file 'linux/Makefile.linux'.
 
+Earlier versions of the pppd package used /usr/lib/ppp as the
+directory. This has been changed. If you still have code in
+/usr/lib/ppp then you should remove it as it is probably the 2.1
+version of the code. That version will not work with the current ppp.c
+drivers in the kernel.
+
+
 7. Reboot to the new kernel.
 
 After building the new kernel, you will need to actually use it. Reboot
 the Linux system and you may then use the new pppd program.
 
-7. Load optional modules.
+
+8. Load optional modules.
 
 If you are using loadable modules for the ppp then you must load them
 after the kernel has been started. The following relative order must
@@ -441,21 +331,41 @@ Sequence    Module      Description
    3        bsd_comp.o  BSD compression for PPP's compression protocol.
 
 If you only have the bsd comprssor as a module then you may load it without
-regard to any order.
+regard to any order. Likewise you may load the deflate compressor without
+regard to any order with the BSD one. The idea is that the ppp.o code must
+be loaded to use the compressor and the VJ header compression code must be
+loaded to use ppp.o.
 
 You may elect not to load the BSD compression module if you desire. There
 is a controversy regarding a Motorola software patent and while it is
 believed that this code does not infringe upon the patent, it is however
 an optional component.
 
-In addition, if memory is a premium, do not run the BSD compression. It
+The deflate compressor has been stated by Morotola to not infringe upon
+their patent. However, it is also new. You may not find many systems which
+use this compressor.
+
+In addition, if memory is a premium, do not run the compressors. It
 may take large amounts of memory (up to 2.6 meg) for high compression
 lengths to hold the compression dictionaries.
 
-Without the BSD compression module, the PPP driver will not accept PPP's
-compression control protocol for BSD compression.
+Without the compression modules, the PPP driver will not accept PPP's
+compression control protocol for that type. If you have no compressors
+loaded then no compression will be performed. If you don't have the BSD
+compressor loaded then the BSD compression will not be performed, even
+if the peer system supports it. Likewise with the deflate compressor.
+
+Compressors are unique to their type. If you have the deflate compressor
+loaded and the peer system has the BSD version, still no compression must
+be loaded. BOTH systems must support the same compression protocols.
 
 
+PROBLEMS WHICH MAY OCCUR WHILE BUILDING THE KERNEL
+
+At this time with the 1.3.100 and pre-2.0 series kernels, soon to have the
+2.0 series kernel, there should not be a problem with the compilation of the
+drivers.
+
 
 GENERAL NETWORK CONFIGURATION
 
@@ -497,10 +407,10 @@ will use.  For example:
      192.1.1.23  chelseapc.president.whitehouse.gov chelseapc
 
 where my IP address is 192.1.1.17 and my hostname is
-billpc.president.whitehouse.gov.  (Not really, you understand.)  If
-your PPP server does dynamic IP address assignment, give a guess as to
-an address you might get (see also "Dynamic Address Assignment"
-below).
+billpc.president.whitehouse.gov.  (Not really, but you should
+understand my meaning.)  If your PPP server does dynamic IP address
+assignment, give a guess as to an address you might get (see also
+"Dynamic Address Assignment" below).
 
 Finally, you need to configure the domain name system by putting
 appropriate lines in /etc/resolv.conf .  It should look something like
@@ -547,6 +457,9 @@ Going through pppd's options in order:
          ""            send a return (null text followed by usual return)
          ogin: ppp word: whitewater    log in.
 
+         Please refer to the chat man page, chat.8, for more information
+         on the chat utility.
+
    /dev/cua1     specify the callout serial port cua1
    38400         specify baud rate
    debug         log status in syslog
@@ -602,6 +515,8 @@ want the service "blackice".  It logs in, waits for a shell prompt
 ("black%"), then starts PPP.  The -t60 argument sets the timeout to a
 minute, since things here are sometimes very slow.
 
+(The sendbreak program is not included in this package.)
+
 The "&& sleep 5" causes the script to pause for 5 seconds, unless chat
 fails in which case it exits immediately.  This is just to give the
 PPP server time to start (it's very slow).  Also, the "stty -echo"