home *** CD-ROM | disk | FTP | other *** search
/ AMIGA PD 1 / AMIGA-PD-1.iso / NetBSD / docs-netbsd / 386BSD-FAQ / BSD-FAQ-part05 < prev    next >
Text File  |  1994-11-27  |  17KB  |  456 lines

  1. Archive-name: 386bsd-faq/part5
  2.  
  3. Section 4.    (Kernel Additions)
  4.  
  5.   Thanks go to  Marc Wandschneider (storm@cs.mcgill.ca) for putting this
  6.   section of the FAQ together..
  7.  
  8.   Important note:  Most of these 'kernel patches' are to the original
  9.   386bsd 0.1.  The really useful ones have been added to the kernel
  10.   of both NetBSD and FreeBSD.
  11.  
  12. 4.0    Introduction
  13.  
  14.     If you have written some addition to the kernel, or know of
  15.     one that feel should be mentioned, send mail to Dave Burgess 
  16.     (burgess@hrd769.brooks.af.mil) with all the relevant information, 
  17.     and it will be added for the next release.
  18.  
  19.  
  20.  
  21. 4.1    Common Kernel-related problems
  22.  
  23. 4.1.1    Where are the commands "rpcinfo" and "rpcgen"?
  24.  
  25.     Chris Flatters (cflatter@nrao.edu) informs us in the following
  26.     posting excerpt where we can find them:
  27.  
  28.     --------------------------------------------------------------------
  29.     The sources for the Sun OS 4.0 RPC are on titan.rice.edu (I don't 
  30.     have the inet number handy) in directory sun-sources.  You will have 
  31.     to pick up all the shell archives and unpack them to get at rpcgen.
  32.     --------------------------------------------------------------------
  33.  
  34.     These sources are also included in NetBSD and FreeBSD as part of the
  35.     normal installation.
  36.  
  37. 4.1.2    Where can I get a working "netstat"?
  38.  
  39.     When netstat was released, it came out as a binary patch and 
  40.     source patch in the patchkit for 386bsd 0.1.  The program has
  41.     been included in both NetBSD and FreeBSD.
  42.  
  43.  
  44. 4.1.3    How can I fix NFS to work with my NE2000 board?
  45.  
  46.     Ken Raeburn (raeburn@cambridge.cygnus.com) has both identified the
  47.     problem (in 386bsd 0.1) and provided us with a work around:
  48.  
  49.     --------------------------------------------------------------------
  50.     I reported previously that I was seeing problems reading files over
  51.     NFS using the ne2000 driver; timeouts would eventually be reported, no
  52.     data would be read.  Listing files and directories (small ones
  53.     anyways) were not a problem.
  54.  
  55.     After playing with etherfind and kernel printfs, I've come to this
  56.     conclusion: Fragmented 8K UDP packets from the NFS server are not
  57.     reaching the UDP layer in 386bsd.  The Sun is sending them (according
  58.     to another Sun spying on the network), but the UDP input routine is
  59.     never called.  I don't know if the bug here is on the 386bsd or Sun
  60.     side, and won't have time to look into it in the next couple of days.
  61.  
  62.     In the meantime, mounting NFS file systems with "rsize=1024" does get
  63.     rid of this problem.
  64.  
  65.     (It does nothing about TCP being slow, though.)
  66.     Ken
  67.     --------------------------------------------------------------------
  68.  
  69.     Hopefully, the real solution (a UDP fix) will be forthcoming so
  70.     that the slow TCP problem is fixed as well.
  71.  
  72.     See also:  Section 2.6.3.3c "I am getting lousy performance 
  73.            out of my network card.  What are some of the other 
  74.            possibilities?"
  75.  
  76.     Recent work in FreeBSD and NetBSD may have deprecated this problem.
  77.     There is a new network card driver called the ed0 driver.  This
  78.     replaces the original NE1000/NE2000 drivers, as well as replacing
  79.     the we0 driver.  By combining the two, a more flexible driver has
  80.     been developed and most of these types of problems have been fixed.
  81.     Once again, upgrading to FreeBSD or NetBSD seems to be the answer.
  82.  
  83.  
  84. 4.1.4    How can I get "ps" and "w" to work?
  85.  
  86.     The patch-kit contains a fix for /src/lib/libutil/kvm.c, which,
  87.     last we heard, was due to the work of Jim Paradis 
  88.     (paradis@sousa.ltn.dec.com).  New versions of the kernel should
  89.     have this problem fixed.
  90.  
  91.     In order for users to be able to use certain flags with ps and
  92.     the w/uptime commands, the kernel must have permissions 755.
  93.  
  94.     Also, in order to save space on the distribution, the 386bsd 0.1
  95.     kernel is 'stripped' of all its labels.  Programs that rely on 
  96.     those labels will not work.  There are several in this category, 
  97.     including ps, w, and uptime.  Either ftp an un-stripped kernel, 
  98.     or recompile.
  99.  
  100.     Also, when the internal structure of the kernel changes (as
  101.     with the changes to NetBSD and FreeBSD that change fundamental
  102.     parts of the kernel) a new ps, w, and uptime must usually be 
  103.     recompiled.  If you are having trouble with your ps and have 
  104.     recently upgraded/rebuilt your kernel, you will probably have 
  105.     to rebuild ps etal.
  106.  
  107.  
  108. 4.1.5    Where are re_comp and re_exec?
  109.  
  110.     These two functions are currently not in libc.a.  However, there
  111.     are two related functions that seem to work exactly the same in
  112.     all cases we've heard of---These are regcomp() and regexec().
  113.  
  114.     Thus, a pretty ugly fix for the problem would be to always compile
  115.     as follows:
  116.  
  117.     $(CC) -Dre_comp=regcomp -Dre_exec=regexec ....
  118.  
  119.     There is a slightly nicer fix available for this, listed in 4.2
  120.  
  121.  
  122. 4.1.6    Where are stty() and gtty()?
  123.  
  124.     These functions were missing from libc.a in the original 386bsd 0.1.  
  125.     To fix, add the following #defines to your program:
  126.  
  127.     #define stty(f, m)    ioctl((f), TIOCSETP, (m))
  128.     #define gtty(f, m)    ioctl((f), TIOCGETP, (m))
  129.  
  130.     A more elegant solution is to apply the patchkit.  These routines
  131.     are included in there.
  132.  
  133.  
  134. 4.1.7    The system hangs with the HD light on after intense disk usage.
  135.     The system hangs when trying to fsck -p both of my IDE hard drives
  136.     at boot-up.
  137.  
  138.     Brett Lymn (blymn@mulga.awadi.com.AU)  Provides us with a
  139.     description of the problem and the steps that he had to take
  140.     to fix it:
  141.  
  142.         It seems that, on some disk subsystems, the controller and the
  143.     hard disk get out of synchronization when they are being used 
  144.     intensively.  The result of this is that the disk completes a 
  145.     command but the controller still believes the disk not to have 
  146.     completed the command, so the controller status register 
  147.     indicates the disk is busy when it is not really.  The standard 
  148.     wd drivers are too trusting of the hardware and expect it to do 
  149.     the right thing all the time.  There are a few while loops in 
  150.     the wd drivers that loop on a status change from the disk 
  151.     controller, however; if the problem I have described takes place 
  152.     then the wd driver will be stuck looping waiting for the disk to 
  153.     not be busy - which never happens, so you lock the machine because 
  154.     this is a kernel level wait.  To fix this problem I put a timeout 
  155.     into the while loops so that after a specified time the wd driver 
  156.     will give up waiting for the drive to become ready, reset the 
  157.     controller and retry the command.  In my experience the retry 
  158.     always succeeds.
  159.  
  160.     Ed.Note:  The retry doesn't ALWAYS work, but it IS better than 
  161.     just waiting for the drive to wake back up (which it never does).
  162.  
  163.     It has been recently noted that, from time to time, a SCSI disk
  164.     subsystem will behave exactly the same way.  It is usually because
  165.     of bad/out-of-tolerance cables.  It is not a common problem, but it
  166.     is one that you, the reader, may need to take into account when
  167.     you are trouble-shooting your drives.
  168.  
  169.     Dan Yergeau (yergeau@gloworm.Stanford.EDU) provides us with more 
  170.     insight into this problem.  The README accompanying the original 
  171.     sources used as a base for the NetBSD driver indicates that
  172.  
  173.     > There's also another problem still bothering me: There's some 
  174.     sort of timing/reentrancy error still lurking in here, that was 
  175.     there in the original 0.1 wd driver as well.  The symptom is that, 
  176.     on *some* controllers, doing the initial wdopen() (which will 
  177.     then call the readdisklabel() function) for two or more disks at 
  178.     the same time (so that wdopen() gets called again while it's 
  179.     already being executed), the controller gets hung.  I'm still 
  180.     looking for this, meanwhile I specify in my config file that I 
  181.     have swap on all disks.  This causes the kernel to wdopen() the 
  182.     drives nicely in order -- and once it's been done for each disk, 
  183.     the problem will, of course, not occur.  Without the "swap on ... 
  184.     and ... and ..." stuff, my wd1, wd2 and wd3 would be opened 
  185.     simultaneously by "fsck -p" forks, which would nicely hang up 
  186.     everything...  I note a "sleep(10)" in fsck, but it obviously 
  187.     doesn't do that.
  188.  
  189.     So, changing the appropriate config line to
  190.  
  191.     config        "386bsd"    root on wd0 swap on wd0 and wd1
  192.                                                             ^^^^^^^
  193.     may get around the problem.  I don't run NetBSD, but I do use a
  194.     variation of the barsoom/NetBSD driver.  This works for me.  
  195.     Please let the NetBSD people know if it works for you.
  196.  
  197.  
  198. #include <std.disclaimer>
  199.  
  200.     [Ed. again] Other methods for fixing this problem include doing a 
  201.     dd if=/dev/wd1d of=/dev/null count=1 before the initial 'fsck -p'.
  202.     This method is considered brute force.  It works by making sure
  203.     that the drive is properly initialized before the disklabel is
  204.     read in the fsck.
  205.  
  206.     Another method involves using the '-l1' (little L) flag to make sure
  207.     that the fsck doesn't try to open both unopened hard drives at the
  208.     same time.  This method is a little better (from a purely brute
  209.     viewpoint) but does caused your startup to run longer, since the
  210.     purpose of this option is to have each of your fsck passes run
  211.     one after another.
  212.  
  213.  
  214. 4.1.8    How do you implement quotas on Net/2 derived BSD systems?
  215.  
  216.     From: tinguely@plains.NoDak.edu (Mark Tinguely)
  217.  
  218.      maybe you did not complete the setup, here is a step-by-step 
  219.      instructions to get them to work:
  220.  
  221.     1)  make a kernel with "options QUOTA" installed
  222.  
  223.     2)  edit /etc/fstab and include the kinds of quotas you want, 
  224.         below I used "userquota", you could also add "groupquota".
  225.  
  226.     /dev/wd0h        /usr        ufs    rw,userquota 1 2
  227.  
  228.     3)  for each filesystem that is in /etc/fstab that uses quota,
  229.         create the file "quota.user" (and "quota.group if appropriate).
  230.         Above I have user quotas in the /usr filesystem, so I would:
  231.  
  232.         # touch /usr/quota.user
  233.  
  234.     4)  scan filesystem for files ownership (and/or group ownership).
  235.  
  236.         # quotacheck -a
  237.  
  238.     5)  now you can add individual quota limits, if you want to add 
  239.         the same quotas to the many people, then make a template and 
  240.         replicate the template.  If they change for each user, then 
  241.         edit seperately.
  242.  
  243.         # edquota tinguely
  244.  
  245.      (an editor is kicked up and says something like:
  246.  
  247.     Quotas for user tinguely:
  248.       /usr: blocks in use: 11876, limits (soft = 0, hard = 0)
  249.             inodes in use: 891, limits (soft = 0, hard = 0)
  250.  
  251.      a limit of 0 means "unlimited".  Change these to the appropriate 
  252.      number of blocks.  A soft limit generates a warning, and can be 
  253.      exceed for period of time (7 days?), after which time a soft limit 
  254.      is treated like a hard limit.  A hard limit denies new writes.
  255.  
  256.      to replicate a template (for this example let us assume "tinguely" 
  257.      is the template):
  258.  
  259.         # edquota -p tinguely user1 user2 user3 ... userN
  260.  
  261.     6)  turn quotas on (usually done in the /etc/rc file, but turn it 
  262.         on manually so you do not have to reboot right now:
  263.  
  264.         # quotaon
  265.  
  266.     that should take care of setting up quotas.  You can look at the 
  267.     status of use of files with repquota, the -a option lists all 
  268.     filesystems with quotas.
  269.  
  270.  
  271. 4.2    Available kernel add-ons
  272.  
  273.  
  274. 4.2.1    The Patch-Kit
  275.  
  276.     Perhaps the most famous of all additions to the kernel, the Patch-Kit,
  277.     coordinated by Rodney Grimes (rgrimes@agora.rain.com) contained 
  278.     numerous bug fixes, Julian's SCSI drivers, as well as fixes
  279.     for other parts of the system.
  280.  
  281.     The patch-kit, as well as all relevant information, is available on
  282.     agate.berkeley.edu (and mirrors) in unofficial/patch-kit, as well
  283.     as bsd.co.montana.edu in /pub/patch-kit. (archie will likely list
  284.     other sites as well)
  285.  
  286.     It is highly recommended that all users with space for the source code
  287.     apply the patch-kits as many things that seem broken in 0.1 suddenly
  288.     start working with the patch-kits.
  289.  
  290.     Of course, there is no such thing as a patch kit for NetBSD or FreeBSD.
  291.     The update method for these systems is different, and covered in the
  292.     section about the System Update Protocol (sup) updates.
  293.  
  294.  
  295. 4.2.2    Shared Libraries
  296.  
  297.     A basic and experimental implementation of shared libraries exists
  298.     for 386bsd.  According to the author (Dr. Joerg Lohse, 
  299.     lohse@tech7.informatik.uni-hamburg.de), features are as follows:
  300.  
  301.     -No kernel extension is necessary
  302.     -Shared libraries use the approach used in SysV.
  303.  
  304.     Others are also working on different implementations of shared
  305.     libraries.
  306.  
  307.     Bill and Lynne have adopted a shared-library implementation based
  308.     on Dr. Lohse's original work.  It will be included in Version 0.2
  309.     of 386bsd.
  310.  
  311.     For NetBSD and FreeBSD users, two seperate and different shared 
  312.     library systems have been developed.  This feature is included in
  313.     the '-current' tree of both systems, and will be included in the
  314.     next major release of eiter or both.
  315.  
  316.  
  317. 4.2.3    Sound Blaster Drivers
  318.  
  319.     A driver for the Sound Blaster card has been written by Steve
  320.     Haehnichen (steveh@ucsd.edu) for BSD.  Steve Gerakines has
  321.     provided us with the information necessary to get this driver 
  322.     working under 386bsd.
  323.  
  324.     Most features of the SB family of cards are supported save some
  325.     stereo portions of the SBPro cards.
  326.  
  327.     The driver is available on agate.berkeley.edu in 
  328.     unofficial/drivers/misc/soundblaster-1.4
  329.  
  330.     NetBSD and FreeBSD have also adapted soundblaster drivers.  They
  331.     are included in either the -current tree or in the most recent 
  332.     release (depending on when you read this).
  333.  
  334.     For a fact, the following sound cards are supported in FreeBSD:
  335.  
  336.         1    Yamaha FM Synth
  337.         2    Soundblaster/Soundblaster Pro DSP
  338.         3    PAS PCM and Midi
  339.         4    Gravis UltraSound
  340.         5    MPU-401
  341.  
  342.     In the release notes I have, there is some doubt as to the 
  343.     operational status of the MPU-401 sound card driver.  If you have 
  344.     one of these cards and want to try the driver out, you should 
  345.     contact Jordan Hubbard (jkh@freefall.cdrom.com) when you are 
  346.     finished installing it and let him know how it is working.
  347.  
  348.     The docs for the FreeBSD driver are in 
  349.     /usr/src/sys/i386/doc/sound.doc.
  350.     
  351.  
  352. 4.2.4    Bus Mouse Drivers
  353.  
  354.     Fred Cawthorne (fcawth@delphi.umd.edu) wrote a busmouse
  355.     driver for 386bsd.  He recently wrote a short letter with this
  356.     update:
  357.  
  358.     This is taken from the INDEX in the Freebsd.cdrom.com mice 
  359.     directory:
  360.  
  361.     "We currently have four bus mouse drivers for 386bsd available by
  362.     anonymous ftp on XFree-86.cdrom.com in pub/XFree86/mice:
  363.  
  364.     ms-busmouse.tar.z
  365.  
  366.         Sandi Donno's <sandi@uctcs.cs.uct.ac.za.> port of 
  367.         Erik Forsberg's Microsoft bus mouse driver to 386bsd.
  368.  
  369.     logitech-busmouse-0.2.shar.z
  370.  
  371.         Fred Cawthorne's <fcawth@delphi.umd.edu> second version 
  372.         of a logitech Bus Mouse driver.  
  373.  
  374.     busmouse.tar.z:
  375.  
  376.         Eugene Stark's port of Rick Macklem's driver to the 
  377.         Microsoft bus mouse.  Rick's driver supports the 
  378.         Logitech and ATI Inport Bus mice with 386bsd.  It's also 
  379.         available by e-mail to stark@cs.sunysb.edu and by anon. 
  380.         ftp on cs.sunysb.edu in pub/386BSD/busmouse.tar.Z.
  381.  
  382.     psm.tar.z:
  383.  
  384.         Johan Solhed <Johan.Solhed@lu.erisoft.se> ported the 
  385.         Linux PS/2 mouse driver to 386BSD.  It includes a PS/2 
  386.         to Microsoft protocol converter in the driver so XFree86 
  387.         understands the mouse events.
  388.  
  389.     In addition we have busmouse.v3.z which is Erik Forsberg's original
  390.     post of his device driver for BSDI/386 and Microsoft (and
  391.     compatible) bus mice using the Microsoft InPort chip as well as a
  392.     device driver for Logitech bus mice. "
  393.  
  394.     Most of these busmouse drivers are now included in the current
  395.     releases of NetBSD and FreeBSD.  There is some question about
  396.     how well they work (especially the psm driver), but they are
  397.     all there.
  398.  
  399.  
  400. 4.2.5    PPP Support
  401.  
  402.     A package to add PPP support to 386bsd can be found on agate
  403.     in unofficial/drivers/net.  PPP support is included in NetBSD 
  404.     and FreeBSD.
  405.  
  406.  
  407. 4.2.6    re_comp and re_exec library functions
  408.  
  409.     As mentioned in section 4.1, re_comp and related functions, such
  410.     as re_exec, are currently not in the library libc.a.  Apart from
  411.     using the rather crude fix listed above, there is another option.
  412.  
  413.     Kim Anderson (kim@dde.dk) has provided a patch that will add these
  414.     to libc.a.  You can probably obtain this patch from the author, or
  415.     you can ftp it from binkley.cs.mcgill.ca in pub/386bsd.
  416.  
  417.     These functions are (I think) included in the libcompat.a that
  418.     comes with both NetBSD and FreeBSD.
  419.  
  420.  
  421. 4.2.7    Intel i82586 Ethernet Controller driver
  422.  
  423.     Garrett A. Wollman has written a 386bsd 0.1 driver for the 
  424.     Intel i83586 Ethernet Controller.  The driver is available from 
  425.     agate in unofficial/from-ref/sys.extras.
  426.  
  427.     The authors e-mail address is listed as Garrett.Wollman@uvm.edu,
  428.     attempts to send him mail there have failed.
  429.  
  430.  
  431. 4.2.8    PC Speaker driver for Nethack
  432.  
  433.     Andrew A. Chernov has ported the Nethack PC Speaker driver to
  434.     386bsd.  It allows the speaker to be controlled by applications.
  435.  
  436.     Unfortunately, we are not aware of a site that distributes this,
  437.     but this patch has been posted a couple of times to the various
  438.     comp.os.386bsd groups, and the author can be contacted at
  439.     ache@astral.msk.su
  440.  
  441.     The patch that is included in the NetBSD and FreeBSD source trees
  442.     is one written by Soerne Schmitt.  It appears to use the Sun-style
  443.     /dev/audio interface and is different in goals and implementation
  444.     from Andrew Chernov's speaker driver.  The source for this package
  445.     is included in the source trees for both, but is not included in 
  446.     the distribution kernels.
  447.  
  448. -- 
  449. ------
  450. TSgt Dave Burgess               | Dave Burgess
  451. NCOIC, USSTRATCOM/J6444         | *BSD FAQ Maintainer
  452. Offutt AFB, NE                  | Burgess@hrd769.brooks.af.mil
  453.  
  454.  
  455.  
  456.