next up previous
Next: Vorbereitung des Parallelports Up: Vorbereiten der Software Previous: modules.conf-File erweitern

Unterabschnitte


IEEE Support für den Kernel und Kernelneukompilierung

WICHTIG: Bei manchen Distributionen (etwa Mandrake 7.2 dürfte darunter fallen) ist der vorkompilierte und vorinstallierte Kernel ohnehin schon ohne die IEEE 1284-Unterstützung kompiliert worden. Sie könnten darum versuchen diesen Abschnitt zunächst zu überspringen und nur im Fehlerfall hierher zurückzukehren.

Damit der Treiber einwandfrei arbeiten kann, ist es eventuell notwendig den IEEE 1284 Transfermodus für den parallelen Port abzuschalten. Bei der SuSE 7.2 ist in der Standardinstallation leider dieser Transfermodus aktiviert. Heißt das, dass man sich als SuSE 7.2 Besitzer nun einen neuen Kernel kompilieren muss, obwohl das Handbuch und die SuSE selbst stark davon abraten? JA. Es ist aber nicht so schlimm, wie es klingt. Die Kernel-Sourcen hat man sowieso benötigt, um den Plustek-Treiber mit make erstellen zu können, siehe Abschnitt 2.1 über die Kernelsourceninstallation in diesem Dokument. Und das allerbeste ist: Man wird den neuen Kernel gar nie booten müssen, sondern braucht ihn nur zu kompilieren, da dann das entsprechende parport bzw. parport_pc Modul ohne IEEE 1284 erstellt wird und danach also auch beim ganz normalen booten wie bisher mit dem Standardkernel die IEEE 1284 Unterstützung automatisch weg ist. Der Rest ist nun auch nicht mehr schwer. Aufpassen muss man aber trotzdem: Wenn nämlich der Kernel und die Kernelmodule neu kompiliert werden, dann werden nur die in der Konfiguration wirklich als Module angewählten Kernelmodule erstellt UND DIE ANDEREN MODULE GELÖSCHT!!! Man muss also aufpassen, dass man nicht die bisher immer verwendeten und benutzten Module ohne es zu merken plötzlich verliert. Zwei bequeme Möglichkeiten sehe ich, wie man das am begibt es, um das zu verhindern:

  1. Man kann den Kernel in ein anderes Verzeichnis kompilieren, aber die Module dann nicht mit make modules_install installieren, sondern ,,von Hand`` das die neuen Module parport und parport_pc über die alten Module drüberkopieren. Auf diese Möglichkeit gehe ich im Folgenden nicht weiter ein.
  2. Man kann die Konfiguration des voreingestellten Kernels einfach übernehmen und so alle voreigestellten Einstellung erhalten, außer der einen IEEE 1284-Option, die man eben loswerden will, und dann ganz normal die Module installieren. Das ist der Weg, den ich bei meinem eigenen System gegangen bin, und den ich im Folgenden ein wenig zu dokumentieren suche.

Übernahme der alten Konfiguration

Man loggt sich als Benutzer root ein und wechselt ins Verzeichnis /proc/. Dort sieht man sich einmal an, was für Dateien und Verzeichnisse da sind. Bei mir sieht das alles wir folgt aus:

Welcome to SuSE Linux 7.2 (i386) - Kernel 2.4.4-4GB (tty4).

mathplanet login: root
Password:
Last login: Fri Sep 14 19:12:16 on tty4
Have a lot of fun...
mathplanet:~ # cd /proc
mathplanet:/proc # ls
.    3    4    461  508  625  8          devices      ide         ksyms    net         stat
..   359  408  465  543  626  apm        dma          interrupts  loadavg  partitions  swaps
1    387  409  486  544  641  asound     driver       iomem       locks    pci         sys
197  388  421  487  545  7    bus        execdomains  ioports     meminfo  scsi        sysvipc
2    391  422  498  553  735  cmdline    fb           irq         misc     self        tty
201  392  433  5    554  736  config.gz  filesystems  kcore       modules  slabinfo    uptime
216  393  446  507  6    745  cpuinfo    fs           kmsg        mounts   splash      version
mathplanet:/proc #
Die Datei config.gz ist es! Diese enthält die Konfiguration von genau dem Kernel, der momentan gebootet ist. Diese Datei kopiert man einfach ins Verzeichnis mit dem aktuellen Kernelsourcen, etwa so:
mathplanet:/proc # cp config.gz /usr/src/linux
mathplanet:/proc # cd /usr/src/linux
mathplanet:/usr/src/linux # dir co*
-r--r--r--    1 root     root         9486 Sep 14 19:22 config.gz
mathplanet:/usr/src/linux # gunzip config.gz
mathplanet:/usr/src/linux # mv config config.VorinstallierterKernel
mathplanet:/usr/src/linux # exit
Jetzt liegt die Konfiguration des voreingestellten Kernels bereit, sodass nur noch geringfügige Modifikationen nötig sein sollten, die wir gleich im Detail besprechen:

Änderung der Kerneleinstellungen

Nachdem das so einfach ist, machen wir uns nun ans Werk: Wir loggen uns zuerst wieder als root ein und gehen sodann nach /usr/src/linux. Bei mir sieht das etwa so aus:

Welcome to SuSE Linux 7.2 (i386) - Kernel 2.4.4-4GB (tty3).
 
mathplanet login: root
Password:
Last login: Sat Sep 1 12:27:25 on tty3
Have a lot of fun...
mathplanet:  # cd /usr/src/linux
mathplanet:/usr/src/linux #
Dort starten wir die Kernelkonfiguration, und zwar durch
mathplanet:/usr/src/linux # make menuconfig
Bei mir erscheint darauf ein Menü der folgenden Form:
 Linux Kernel v2.4.4 Configuration
%________________________________________________________________________________
  _________________________________ Main Menu _________________________________
  _  Arrow keys navigate the menu.  <Enter> selects submenus --->.            _
  _  Highlighted letters are hotkeys.  Pressing <Y> includes, <N> excludes,   _
  _  <M> modularizes features.  Press <Esc><Esc> to exit, <?> for Help.       _
  _  Legend: [*] built-in  [ ] excluded  <M> module  < > module capable       _
  _ _________________________________________________________________________ _
  _ _            Code maturity level options  --->                          _ _
  _ _            Loadable module support  --->                              _ _
  _ _            Processor type and features  --->                          _ _
  _ _            General setup  --->                                        _ _
  _ _            Binary emulation of other systems  --->                    _ _
  _ _            Memory Technology Devices (MTD)  --->                      _ _
  _ _            Parallel port support  --->                                _ _
  _ _            Plug and Play configuration  --->                          _ _
  _ _            Block devices  --->                                        _ _
  _ _            Multi-device support (RAID and LVM)  --->                  _ _
  _ _            Networking options  --->                                   _ _
  _ _________________________________________________________________________ _
  _____________________________________________________________________________
  _                     <Select>    < Exit >    < Help >                      _
  _____________________________________________________________________________
Bevor wir nun loslegen und die richtigen Einstellungen aktivieren, sollten wir zuerst die vorhandene Konfiguration des voreingestellten Kernels laden. Diese können wir dann modifizieren wie es uns gefällt. Das Risiko essentielle Module zu verlieren wird so minimiert. Wir gehen also im Menu ganz nach unten und wählen Load an Alternate Configuration File. Dann bekommen wir ein Menu, wo wir die gewünschte Konfiguration laden können. Wir tragen also ein:
                      _______________________________________________________
                      _  Enter the name of the configuration file you wish  _
                      _  to load.  Accept the name shown to restore the     _
                      _  configuration you last retrieved.  Leave blank to  _
                      _  abort.                                             _
                      _ ___________________________________________________ _
                      _ _config.VorinstallierterKernel                    _ _
                      _ ___________________________________________________ _
                      _______________________________________________________
                      _               <  Ok  >      < Help >                _
                      _______________________________________________________
Danach sollte die Konfiguration vom vorinstallierten Kernel geladen sein. Man erkennt sie leicht daran, dass praktisch jeder Menupunkt und jedes Kernelmodul aktiviert ist, auch wenn es so ,absurd` ist wie Amatuerradio usw.. Man wird vielleicht Lust bekommen manche der Optionen, dort wo man sich sicher ist, dass sie für das eigene Computersystem völlig überflüssig sind, abzuschalten, sowie den eigenen Prozessortyp genauer einzustellen, aber das muss man nicht unbedingt. Wir machen hier nur die für den Plustek-Treiber notwenidgen Änderungen: Dazu wählt man nun den Menüpunkt Parallel port support --> an. Dann kommt ein Untermenü, etwa von folgender Form:
  ___________________________ Parallel port support ___________________________
  _  Arrow keys navigate the menu.  <Enter> selects submenus --->.            _
  _  Highlighted letters are hotkeys.  Pressing <Y> includes, <N> excludes,   _
  _  <M> modularizes features.  Press <Esc><Esc> to exit, <?> for Help.       _
  _  Legend: [*] built-in  [ ] excluded  <M> module  < > module capable       _
  _ _________________________________________________________________________ _
  _ _          <M> Parallel port support                                    _ _
  _ _          <M>   PC-style hardware                                      _ _
  _ _          [*]     Use FIFO/DMA if available (EXPERIMENTAL)             _ _
  _ _          [ ]     SuperIO chipset support (EXPERIMENTAL)               _ _
  _ _          [ ]   Support foreign hardware                               _ _
  _ _          [*]   IEEE 1284 transfer modes                               _ _
  _ _                                                                       _ _
  _ _                                                                       _ _
  _ _                                                                       _ _
  _ _                                                                       _ _
  _ _                                                                       _ _
  _ _________________________________________________________________________ _
  _____________________________________________________________________________
  _                     <Select>    < Exit >    < Help >                      _
  _____________________________________________________________________________
Wie man sieht sind hier die Menüpunkte Parallel port support und PC-style hardware als Module konfiguriert (das M ganz vorne zeigt dies an). Das ist sehr erfreulich, denn der IEEE 1284 transfer mode, den wir wegbekommen wollen, ist demnach auch NUR IN DIESEM MODUL. Wenn wir also den Menüpunkt IEEE 1284 transfer mode abwählen und dann den Kernel neu kompilieren, dann wird das Modul auch neu erstellt und das alte Modul dadurch ersetzt. Wir stellen also um, sodass wir
  ___________________________ Parallel port support ___________________________
  _  Arrow keys navigate the menu.  <Enter> selects submenus --->.            _
  _  Highlighted letters are hotkeys.  Pressing <Y> includes, <N> excludes,   _
  _  <M> modularizes features.  Press <Esc><Esc> to exit, <?> for Help.       _
  _  Legend: [*] built-in  [ ] excluded  <M> module  < > module capable       _
  _ _________________________________________________________________________ _
  _ _          <M> Parallel port support                                    _ _
  _ _          <M>   PC-style hardware                                      _ _
  _ _          [*]     Use FIFO/DMA if available (EXPERIMENTAL)             _ _
  _ _          [ ]     SuperIO chipset support (EXPERIMENTAL)               _ _
  _ _          [ ]   Support foreign hardware                               _ _
  _ _          [ ]   IEEE 1284 transfer modes                               _ _
  _ _                                                                       _ _
  _ _                                                                       _ _
  _ _                                                                       _ _
  _ _                                                                       _ _
  _ _                                                                       _ _
  _ _________________________________________________________________________ _
  _____________________________________________________________________________
  _                     <Select>    < Exit >    < Help >                      _
  _____________________________________________________________________________
erhalten. Danach verlassen wir die Kernelkonfiguration wieder und antworten auf die Frage
           ____________________________________________________________
           _   Do you wish to save your new kernel configuration?     _
           ____________________________________________________________
           _                   < Yes >      <  No  >                  _
           ____________________________________________________________
natürlich mit Yes. Jetzt ist der neue kernel konfiguriert.

Kompilieren des Kernels und Installation der Kernelmodule

Alles weitere sollte sich nun in einer Zeile erledigen lassen. Wenn man den ganzen Kernel kompilieren lassen will, nur um sicher zu gehen oder weil man ihn vielleicht statt des Standardkernels verwenden will, schreibt man am besten

make dep clean bzImage modules modules_install
in eine Zeile, damit auch wirklich ALLES erledigt wird. (Die Kernelkompilierung auf diese Weise hat bei mir etwa zweieinhalb Stunden gedauert!) Eventuell würde aber auch nur
make modules modules_install
auch ausreichen. Ich habe es nicht getestet. Möglicher weise kann man sich so aber sehr viel Zeit ersparen.

Wenn nun also der Kernel wieder die Module parport bzw. parport_pc lädt, dann sollten diese in Zukunft OHNE die IEEE 1284 Unterstützung arbeiten und dadurch mit dem Plustek-Treiber um so besser zusammenarbeiten.

Unter Windows müsste jetzt wohl neu gestartet werden... Für unsere Zwecke reicht es, die alten Module zu entladen und nie neuen zu laden. Das kann man etwa so machen:
depmod -a
modprobe -r parport
modprobe -r parport_pc
modprobe parport
modprobe parport_pc
Jetzt sollte die IEEE 1284 Unterstützung wirklich weg sein, und man kann bereits versuchen den Plustek-Treiber zu laden.


next up previous
Next: Vorbereitung des Parallelports Up: Vorbereiten der Software Previous: modules.conf-File erweitern
Johannes Prix
2003-06-12