#include "LUGO.style"

<PAGE name="Linux und Kernel 2.0.x">

<h3>Linux und Kernel 2.0.x</h3>

<em>Von Torsten Neumann</em> <p>

Hier also wie versprochen das was ich am letzten Montag vorgetragen hab.
Damit jeder auch ein wenig zum lesen hat. Ist alles ein wenig quick and
dirty aber vielleicht kann ja jemand was damit anfangen.<P>

Insbesondere waere es schoen wenn jemand ein paar Anmerkungen zu den ganzen
IP Aenderungen machen wuerde.<P>

Die Zitate von Kristian Koehntopp sind alle aus
<EM>DqCs7C.30H@white.schulung.netuse.de</EM><P>

<H4>LINUX 2.0</H4>

<OL>
<LI> Konfiguration
  <OL>
  <LI> make config
  <LI> make menuconfig
  <LI> make xconfig
  </OL>
<LI> Documentation Directory
<LI> allgemeine neue Eigenschaften
<LI> neue Features
  <OL>
  <LI> Modules
  <LI> neue Treiber
  </OL>
<LI> upzudatende Programme
</OL>

<OL>
<LI><H4>Konfiguration</H4>

  <OL>

  <LI><STRONG>make config</STRONG>

        Es wird bei allen Fragen ausgegeben welche Antworten moeglich sind.
 Dies ist eine Auswahl aus 'y','n','m' und '?'
        Die 'alte' Antwort wird durch einen Grossbuchstaben hervorgehoben.
        Und '?' gibt einen kurzen Hilfstext.<P>

        Ausnahme ist der sound-Treiber, bei diesem hat man aber die
        Moeglichkeit die Konfiguration unter /etc/soundconf abzuspeichern,
        und dann immer wieder die gleiche Konf. zu benutzen.<P>

  <LI><STRONG>make menuconfig</STRONG>

        graphische Oberflaeche zur Konf. mit Hilfe von dialog.
        (hab ich nicht getestet)<P>

  <LI><STRONG>make xconfig</STRONG>

        tcl/tk Oberflaeche zur Kernel Konfiguration.
        Gleiche Moeglichkeiten wie bei make config. Probleme gibt es dann
        wohl noch beim einbinden des sound-Treibers. Bei meinem letzten Test
        liess sich der dann nicht konfigurieren.<P>
  </OL>

<LI><H4>Documentation Directory</H4>

Es gibt jetzt ein Verzeichniss /usr/src/linux/Documentation. (Inzwischen
schon 795 KB gross) Dort stehen weitere Informationen (ueber '?')
hinausgehend was einzelne Treiber betrifft, bzw. welche Zusatztools
benoetigt werden um Features zu benutzen. Fuer ein Update von 1.2 -> 2.0 ist
dadrin insbesondere die Datei Changes intressant.<P>

<LI><H4>Allgemeine neue Eigenschaften</h2>

"1.3 eine deutliche Performanceverbesserung gegenueber 1.2.13.
Der Scheduler wurde komplett ueberarbeitet und schaltet nicht
nur schneller zwischen den Prozessen um, sondern die
Umschaltzeit bleibt auch bei steigender Laenge der Ready-Queue
annaehernd konstant. (Kristian Koehntopp)"<P>

Ersetzung von bdflush durch kflushd. (Kernel Thread). Das Programm update
muss aber dennoch gestartet werden.<P>
Dann wurde auch noch der swap Code gruendlich ueberarbeitet. (Es gibt dann
auch noch einen kswapd Kernel Thread). So dass das auslagern von pages
schneller wird. (In der Anfangszeit soll es dabei noch Probleme gegeben
haben bei High-Memory-Systemen ( >64 MB ), da ich in letzter Zeit davon aber
nichts mehr gehoert hab wird sich das wohl auch gebessert haben)
<P>
Der nfs Code wurde gruendlich ueberarbeitet. (Noch 4 nfsiod Prozesse dazu)
Inzwischen ist zumindest das lesen ueber nfs schneller als ftp. (N.B. in
1.2.x konnten hoechstens 50 KB/sec gelesen werden)<P>

"Der neue Kern ist portabel und enthaelt Hardwareverzeichnisse
fuer Intel x86, DEC Alpha, MIPS MIPS, Motorola Power PC,
Motorola M68k und SUN Sparc. Es sind Geraetetreiber fuer
Nicht-PC-Devices dazugekommen, etwa SPARC Sbus-Karten oder fuer
Amiga- und Atari-SCSI-Hardware, -Framebuffer und Maeuse." (Kristian
Koehntopp)<P>

Es gibt dann auch noch ein paar neue Devices<P>
<PRE>
        /dev/random
        /dev/urandom
</PRE><P>
welche standardmaessig unterstuetzt werden.<P>

SMP Boards werden unterstuezt.<P>

einige Eigenschaften des Kernels sind nun laufzeit konfigurierbar. (z.B ein
externes scsi-lw/tape braucht beim Rechner anschalten nicht eingeschaltet zu
sein)<P>

<LI><H4>neue Features</H4>

  <OL>
  <LI><STRONG>Modules</STRONG>

        Der neue Kernel ist mehr oder weniger modularisiert, fast alle
        Treiber lassen sich auch als module compilieren.
        Besondere Bedeutung erlangen dabei<P>

        "Der neue Kernel hat eine Initramdisk. Diese Ramdisk wird
        zusammen mit dem Kernel im Image auf der Platte gestartet und
        steht sofort nach dem Booten zur Verfuegung. Nach dem
        Systemstart kann sie optional geloescht werden. <P>

        Zusammen mit dem Modulkonzept kann man so eine Bootdiskette
        bauen, die weitgehend hardwareunabhaengig ist. Dazu wird ein
        Kernel gebaut, der nur im wesentlichen nur noch Minix-FS und
        initrd enthaelt und der alle anderen Treiber soweit moeglich als
        Module enthaelt. Nach dem Booten wird die Hardware gescannt bzw.
        die Module anhand einer voreingestellten Liste geladen und damit
        ist ein fuer die Hardware optimaler (d.h. keine ueberfluessigen
        Treiber im Speicher) Kernel geladen. Die Kernelgroesse kann
        durch erstellen einer customized initrd leicht rediziert werden
        - Kernelkompilieren entfaellt. Das ist ein sehr wesentlicher
        Punkt, denn in einem reinen Anwenderlinux ist man
        moeglicherweise nicht bereit." (Kristian Koehntopp)<P>

        Sowie kerneld. Mit kerneld ist es moeglich das ein Treiber nur bei
        Bedarf geladen wird. So macht dann der Benutzer ein mdir a: , und
        dann wird automatisch der floppy-Treiber und das msdos-fs geladen,
        und nach kurzer Zeit wieder automatisch entladen. <P>

        Mit kerneld ist es dann moeglich auf 2 verschiedenen Rechner den
        gleichen Kernel zu benutzen, und ueberhaupt nichts davon zu merken.<P>

        Na ja ein paar Probleme mit kerneld hab ich noch.
        <UL>
        <LI>Probleme mit dem scsi-Treiber und dem filesystem check beim
        booten.
        <LI>Es dauert manchmal doch so seine Zeit bis ein Treiber geladen ist.
        Macht sich bei mir beim cdrom arg bemerkbar. (Die Cdrom LW
        werden ueber den amd-Automounter automatisch gemountet sobald ich
        versuch darauf zuzugreifen, dann erst wird der request gemacht auch
        das isofs, und den Device Treiber zu laden *gaehn*)
        <LI>Probleme gibt es (bei mir) auch noch wenn Module eine
        Initialisierung brauchen. z.B. wenn der Drucker ueber IRQs betrieben
        werden soll, oder beim ncpfs Treiber. Das soll aber mit der neuesten
        Version behoben sein (modules-1.3.69f); die erlauben dann auch sowas
        wie post-install oder pre-remove in /etc/conf.modules.
        <LI>nfsiod macht bei mir auch noch Probleme wenn nfs als Module
        eingebunden wird. (funktioniert ab 1.3.97 hier)
        </UL>

  <LI><STRONG>Neue Treiber</STRONG>
        <UL>
        <LI>PCI bios support<P> Support fuer PCI Rechner, und dann kommen
                                noch ein paar Fragen nach Bugfix Support
                                fuer einige Boards.
        <LI>EIDE Support<P>     inklusive CDROM/TAPE; bis zu 8 Devices
                                werden unterstuetzt
        <LI>Loopback device support<P>  Erlaubt es Dateien zu mounten sowie
                                verschluesselte Dateisysteme zu benutzen
        <LI>Multiple device support<P>  Mehrere Platten als ein device ansprechen.
                                Append mode sowie RAID0; RAID 1 (mirroring)
                                und RAID 5 werden (noch) nicht unterstuetzt.

        <LI>Network firewalls
        <LI>Network aliasing
        <LI>IP forwarding/gatewaying
        <LI>IP multicasting
        <LI>IP accounting
        <LI>IP masquerading
        <LI>Optimize as Router not Host
        <LI>Bridging
        <LI>Kernel/User network link driver

        <LI>IPX                 Support fuer IPX
        <LI>Appletalk DDP               Support fuer Appletalk
        <LI>Amateur Radio Support       Packet Radio

        <LI>Update von SCSI Treibern (und ein paar neue)
                Speziell IOMEGA-ZIP Drive parallel port
        <LI>Update von Ethernet Treibern ( + neue )

        <LI>ISDN for Linux schon im Kernel drin.

        <LI>Update von (non-Atapi) CDROM Treibern. ( + neue )

        <LI>Filesysteme
        <UL>
                <LI>Quota Support (nur ext2)
                <LI>VFAT Support  (Windows 95)
                <LI>Root FS ueber NFS
                <LI>SMB FS                      zum mounten von Win 3.11/ Windows 95
                                        FS uebers Netz
                <LI>NCP Fs                      zum mounten von Novell FS
                <LI>AFFS                        Amiga Filesystem (read-only)
                <LI>UFS                 (SunOS,FreeBSD,NetBSD,NeXTstep)
        </UL>

        <LI>Character Devices
        <UL>
                <LI>ein paar Multiport Karten werden unterstueztz
                <LI>ftape support
                <LI>Watchdog Timer
                <LI>Enhanced Realtime Clock
        </UL>

        <LI>Sound<P>
                es werden viel mehr Karten unterstuezt.
                und die Treiber wurden stark ueberarbeitet.
      </OL>
  </OL><P>

<LI><H4>Upzudatende Programme</H4>

Generell ist zu sagen das bei allen Programmen welche direkt auf das proc-fs
zugreifen eine Aenderung notwendig sein koennte. Dazu zaehlen dann solche
Programme wie ps,top,free,arp,netstat,...<P>

Wenn mensch nicht von Warnungen erschlagen werden will
(`fcntl_setlk() called by process 123 with broken flock() emulation')
gibt es die zwei folgenden Moeglichkeiten<P>

  <UL>
  <LI>(empfohlen)
        Upgrade auf libc 4.7.6 oder 5.2.18 oder 5.3.12
        und neu linken aller statisch gelinkten Programme welche einen flock
        Aufruf machen (agetty,...)
  <LI>(fuer die faulen)
        Auskommentieren des printk Aufrufs
           printk(KERN_WARNING
                "fcntl_setlk() called by process %d with broken flock()
                 emulation\n",current->pid);
        in linux/fs/locks.c und den Kernel neu compilieren.
  </UL>

<P>Ansonsten braucht mensch wohl :<P>

  <UL>
  <LI>Kernel modules    mind. 1.2.8; fuer einige Features 1.3.69
  <LI>PPP daemon                2.2.0f
  <LI>gcc                       2.7.2
  <LI>procps            0.99a (funktioniert aber auch nur bis 1.3.94;
                               seitdem wird wieder ne neue Version
                               benoetigt)
  <LI>gpm                       1.06
  <LI>sysVinit          2.57b oder 2.60
  <LI>getty_ps          2.0.7h
  <LI>hdparm            2.7
  <LI>ipfwadm           2.0beta2
  <LI>net-tools         1.2.0 oder 1.3.6-BETA5
  <LI>xntp                      3.5c
  <LI>snd-util          3.5
  <LI>iBCS                      ibcs-1.3-960404-ALP
  <LI>dosemu            dosemu-0.63.1.8

  <LI>ircd                      Beim ifconfig des loopback devices die mtu
                        mitangeben und auf 2000 setzen.
  <LI>einen Eintrag 'linux' in /etc/termcap (oder Termcap 2.0.8)

  </UL><P>

desweiteren koennte folgendes notwendig sein<P>
  <UL>
  <LI>tcsh                      add #define SYSMALLOC in config_f.h
  <LI>innd                      neucompilieren mit HAVE_UNIX_DOMAIN DO
                        und HAVE_MMAP
  <LI>make                      siehe Release Notes zu libc
  </UL>
</OL>

</PAGE>

# Local variables:
# mode: html
# mode: auto-fill
# mode: iso-accents
# end:
