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
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
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.
+The next version of pppd, 2.3, is designed to contain a demand dial
+function directly.
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:
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
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
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
from the top level directory where this README.linux file is located.
+
6. Install the programs.
You may use the command
executables. The directory name is called BINDIR and is set in the
file 'linux/Makefile.linux'.
+
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
compression control protocol for BSD compression.
+PROBLEMS WHICH MAY OCCUR WHILE BUILDING THE KERNEL
+
+A REFERENCE TO UNDEFINED _mod_use_count_
+
+If you experience an error message that the variable "mod_use_count_" is
+undefined then apply the patches in the linux/Other.Patches directory. There
+is a version for the 1.2.13 kernel and a differnt one for the early 1.3
+kernels.
+
+The current 1.3 series kernels should not experience this problem as the
+patch has already been incorporated.
+
+
+BLOCK ON FREELIST AT nnnnnn ISN'T FREE
+(where nnnnnn are a sequence of hexadecimal digits.)
+
+While this is not really an error when the kernel is built, it is an error
+which may occur when you actually run the system. The solution is a patch
+in the linux/Other.Patches directory. (That is why I mention it here.)
+
+The problem is in the VJ header compression module. It allocated a block
+of memory and then used the wrong variable to determine the amount of memory
+which should be reset. The patch is present in the 1.3.46 kernel and later
+ones. However, versions prior to that may POSSIBLY have the problem depending
+upon the number of slots which are allocated for the header compression logic.
+
+
GENERAL NETWORK CONFIGURATION