VHS Herne Linux Workshop II/99 5 Abende , 20 UE, 18.30 - 21.45 Uhr Teilnehmer: am Anfang 15, am Ende 10 1. Block (11.11.) ================= Maus auf der Textconsole: gpm - geht aber leider nicht mehr, sobald X-Window läuft, aber auch dafür gibt es einen Trick (Stichwort /dev/gpmdata, repeater ) den ich aber noch nie probiert habe. mc Installation von X-Window auf allen Rechnern Paket xsvga(der zur Grafikkarte passende X-Server) war schon installiert X-Window-Konfiguration: sax oder XF86Setup oder xf86config Konfig-Datei: /etc/XF86Config Starten von X-Window: X -wenig hilfreich, nur um zu zeigen wie X ohne Windowmanager aussíeht startx -startet X und KDE für den Benutzer, der es eintippt startx fvwm2 -startet X und den fvwm2-Windowmanager KDE & X beenden: Menüpunkt "Abmelden"/"Logout" X killen: Control-Alt-Backspace Hin- und Herschalten zwischen Textconsolen und X-Window: Control-Alt-F1 bis Control-Alt-F6 -Textconsolen Control-Alt-F7 -X-Window("graphische Konsole") graphisches Login mit xdm oder kdm: nur root darf xdm/kdm starten, und auch nur wenn noch kein X läuft xdm/kdm kommt nach beenden von KDE immer wieder - xdm/kdm killen, indem man auf eine Textkonsole wechselt: killall kdm lästige xconsole entfernen: siehe http://www.nel.de/mherweg/kurs/my_pub_howto.txt Textconsole in einem X-Fenster: xterm(gibts überall) oder kvt(gehört zu KDE) oder konsole(ab KDE 1.1) yast: Benutzer anlegen Beuntzer in Gruppe "modem" eintragen letzte Reihe,Fensterseite:Monitor geht immer in Standby-Mode ?! Bei einem Rechner war die Netzwerkkarte nicht konfiguriert- Einstellungen mit yast vorgenommen: Netzwerkkarte= ne2k-pci (Kernel-Modul=Hardware-Treiber) IP-Adresse, Netmask, Default Gateway, Nameserver dann KDE beenden, denn es mag nicht, wenn man ihm das Netzwerk under den Füssen wegzieht. aktivieren der Änderungen durch: init 1 - in den Runlevel 1 wechseln(kein Netzwerk) (kurz warten) init 2 - zurück in den Runlevel 2 (Netzwerk-Devices,-Dienste werden dabei gestartet) 2. Block (18.11.) ================= Geräte, Mount-Points & Optionen in /etc/fstab lokal drucken: mit yast und eventuell mit /usr/lib/apsfilter/SETUP einrichten siehe http://sdb.suse.de/ - Artikel zum Thema drucken und Ghostscript-Homepapege: http://www.cs.wisc.edu/~ghost/printer.html lpd (line-printer-daemon) muss laufen vergl. /etc/rc.config: ... # # Start printer daemon lpd? (if you use plp, you can also disable it here # an enable it in /etc/inetd.conf) (yes/no) # START_LPD=yes ... lpd manuell stoppen & starten: /sbin/init.d/lpd stop alternativ("Abkürzung durch SymLink) rclpd stop /sbin/init.d/lpd start alternativ("Abkürzung durch SymLink) rclpd start (lpd NICHT in /etc/inetd.conf aktivieren, lpd läuft "standalone" , also ohne inetd) Ein Druck-Server benötigt eine korrekte /etc/hosts oder einen DNS-Nameserver wo alle Druck-Clients drinstehen. UND eine /etc/hosts.lpd wo alle drinstehen , die drucken dürfen. Eine Beispiel /etc/hosts und /etc/hosts.lpd findest du in diesem Verzeichnis. Prozesse beobachten und killen mit ktop Recourcenanzeige: xosview 3. Block (25.11.) ================= per Modem ins Internet ---------------------- Anwahl-Tool: kppp alternativ yast->suseppp Paket ppp installieren. Regel: Normale Anwendungen (Texte schreiben, Bilder malen, Internet surfen) NIE ALS ROOT machen, also als normaler Benutzer kde starten: z.B. startx Providerdaten in kppp eintragen. Angenommen mein Modem ist am 2. seriellen Port = /dev/ttyS1 angeschlossen (kann man mit kpp->Modem abfragen ausporbieren) Falls beide Ports nicht klappen: Kabel verbunden ? Modem eingeschaltet ?... Genug Rechte ? 1.Teil Ich schaue mal ob ich als normaler User "mherweg" ausreichend Rechte auf das Device habe: martin:~ # ls -l /dev/ttyS* crw-rw---- 1 root uucp 4, 64 Dec 10 13:15 /dev/ttyS0 crw-rw---- 1 root uucp 4, 65 Nov 8 20:48 /dev/ttyS1 aha die Schnittstelle gehört der Gruppe "uucp" mherweg@martin:~ > id uid=520(mherweg) gid=100(users) Gruppen=100(users),14(uucp),16(dialout),33(video) Ich bin auch in der Gruppe "uucp" - fein! - Falls nicht: yast->Gruppenverwaltung-> Gruppe "uucp" auswählen und mherweg in die Liste der Mitglieder eintragen. Genug Rechte ? 2.Teil Der ppp-Daemon "pppd" muss mit root-Rechten laufen, also spendieren wir ihm ein SUID-Bit, falls er noch keins hat. martin:~ # ls -l /usr/sbin/pppd ohne: -rwxr-xr-- 1 root dialout 151668 Nov 8 23:52 /usr/sbin/pppd - - mit: -rwsr-sr-- 1 root dialout 151668 Nov 8 23:52 /usr/sbin/pppd - - SUID(Set User ID on execution) setzen, entweder mit Hilfe des mc oder kde oder UNIX-klassisch: martin:~ # chmod +s /usr/sbin/pppd nun läuft pppd immer mit root-Rechten, egal wer ihn startet. Um zu sehen was bei Aufbau der ppp-Verbindung zum Provider passiert, trage ich bei kppp unter pppd-Argumente "debug" ein, mache ich mir ein xterm (oder kvt oder konsole) - Fenster auf, in dem ich root bin (Befehl su) und starte dort martin:~ # tail -f /var/log/messages Dann kann ich erkennen ob die Verbindung scheitert und eventuell auch warum. So sieht ein erfolgreicher Verbindungsaufbau aus(hier allerdings ohne zusätzliche debug-Meldungen): Oct 12 02:27:35 martin pppd[6600]: pppd 2.3.8 started by mherweg, uid 520 Oct 12 02:27:35 martin pppd[6600]: Using interface ppp0 Oct 12 02:27:35 martin pppd[6600]: Connect: ppp0 <--> /dev/ttyS0 Oct 12 02:27:36 martin pppd[6600]: Remote message: ^D^EM-t^B^F Oct 12 02:27:38 martin pppd[6600]: local IP address 194.173.104.153 Oct 12 02:27:38 martin pppd[6600]: remote IP address 194.173.104.129 ----------------------------------------------------- und um 02:32:46 habe ich mit kppp wieder aufgelegt: ----------------------------------------------------- Oct 12 02:32:46 martin pppd[6600]: Terminating on signal 15. Oct 12 02:32:46 martin pppd[6600]: Connection terminated. Oct 12 02:32:46 martin pppd[6600]: Connect time 5.2 minutes. des weiteren kann man folgendes beobachten: solange die Verbindung steht, gibt es ein Netzwerk-Device "ppp0" root@martin:~ > ifconfig eth0 Link encap:Ethernet HWaddr 00:00:01:20:81:36 inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:12 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 Interrupt:10 Base address:0x300 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:3924 Metric:1 RX packets:3322 errors:0 dropped:0 overruns:0 frame:0 TX packets:3322 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 ppp0 Link encap:Point-to-Point Protocol inet addr:194.173.104.145 P-t-P:194.173.104.129 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1524 Metric:1 RX packets:151 errors:0 dropped:0 overruns:0 frame:0 TX packets:163 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:10 ausserdem sollte kppp nun eine default-Route auf dieses "Standard-Gateway" gesetzt haben martin:~ # route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 <-Ethernet-Karte 127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo <-software "loopback device" 0.0.0.0 194.173.104.129 0.0.0.0 UG 0 0 0 ppp0 dann sollte auch ein Ping auf irgendeinen Internet-Server klappen: erfolglos: mherweg@martin:~ > ping 194.173.104.1 PING 194.173.104.1 (194.173.104.1): 56 data bytes ping: sendto: Das Netzwerk ist nicht erreichbar ping: wrote 194.173.104.1 64 chars, ret=-1 ping: sendto: Das Netzwerk ist nicht erreichbar ping: wrote 194.173.104.1 64 chars, ret=-1 erfolgreich: mherweg@martin:~ > ping 194.173.104.1 PING 194.173.104.1 (194.173.104.1): 56 data bytes 64 bytes from 194.173.104.1: icmp_seq=0 ttl=254 time=449.890 ms 64 bytes from 194.173.104.1: icmp_seq=1 ttl=254 time=180.040 ms 64 bytes from 194.173.104.1: icmp_seq=2 ttl=254 time=170.141 ms --- 194.173.104.1 ping statistics --- 3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max = 170.141/266.690/449.890 ms nun bleibt noch zu prüfen , ob die Namensauflösung mit Hilfe des DNS-Nameservers des Providers klappt. kppp sollte einen temporären Eintrag in /etc/resolv.conf machen. Man kann dort auch ruhig den DNS-Server dauerhaft eintragen, z.B. yast->Admin.->Netzwerk->Konfiguration Nameserver das schadet nicht, kann sogar nützlich sein, denn ich habe schon Systeme gesehen, die gar keine /etc/resolv.conf Datei hatten, kppp meckert dann. root@martin:~ > cat /etc/resolv.conf domain wrd.de #kppp temp entry # # /etc/resolv.conf # # Automatically generated by SuSEconfig on Mon Nov 1 12:41:35 CET 1999. # # PLEASE DO NOT EDIT THIS FILE! # # Change variables (NAMESERVER + SEARCHLIST) in /etc/rc.config instead. # # search wrd.de nameserver 194.173.104.1 nameserver 62.104.196.134 nameserver 194.231.62.3 nameserver 194.173.104.1 #kppp temp entry ob die Namensauflösung klappt, kann man auch mit einem Ping 'rauskriegen: klappt nicht: mherweg@martin:~ > ping www.wdr.de ping: unknown host: www.wdr.de klappt: mherweg@martin:~ > ping www.wdr.de PING www01.wdr.de (149.219.195.51): 56 data bytes 64 bytes from 149.219.195.51: icmp_seq=0 ttl=241 time=1178.564 ms 64 bytes from 149.219.195.51: icmp_seq=1 ttl=241 time=279.941 ms 64 bytes from 149.219.195.51: icmp_seq=2 ttl=241 time=364.955 ms 64 bytes from 149.219.195.51: icmp_seq=3 ttl=241 time=750.281 ms --- www01.wdr.de ping statistics --- 5 packets transmitted, 4 packets received, 20% packet loss round-trip min/avg/max = 279.941/643.435/1178.564 ms wenn dieser Ping geht , dann geht auch alles andere ( www,e-mail,ftp,irc......) --- ISDN: kisdn alternativ yast->ISDN-Konfiguration kann ich leider nicht viel zu sagen, da ich damit kaum praktische Erfahrungen habe. Vorsicht bei automatischer Anwahl! - kann teuer werden Das ISDN Netzwerk-Device ippp0 existiert ständig , egal ob die Leitung steht oder nicht (siehe ifconfig) Das verwirrt Netscape, der dann gerne einfriert, wenn die Leitung nicht steht, da die Route auf ein güliges Device(ippp0) zeigt, dort ist dann aber Sackgasse. Ob die Leitung steht kan man auf einer Textconsole mit "imon" beobachten 4. Block (2.12.) ================= SOUND, ISA-PnP pnpdump | less .. zeigt mir alle ISA-PnP(Plug and Pray)-Karten: # $Id: pnpdump.c,v 1.19 1999/10/16 15:17:17 fox Exp $ # Release isapnptools-1.19 # This is free software, see the sources for details. # This software has NO WARRANTY, use at your OWN RISK # # For details of this file format, see isapnp.conf(5) # # For latest information and FAQ on isapnp and pnpdump see: # http://www.roestock.demon.co.uk/isapnptools/ # # Compiler flags: -DREALTIME -DNEEDSETSCHEDULER -DABORT_ONRESERR # # Trying port address 0273 ... # Trying port address 03f3 # No boards found Puhhh, Glück gehabt. Ich hab' keine ;-) Die Soudkarten in dem Schulungsraum sind ISA-PnP-Karten. Um sie nutzen zu können muss man eine gültige /etc/isapnp.conf erzeugen, die dann bei jedem Rechnerstart ausgeführt wird: pnpdump > /etc/isapnp.conf nun per Texteditor diverse Zeilen die mit "# (" beginnen auskommentieren (siehe Suse Handbuch) Es gibt für diese Aufgabe ein paar graphische Frontends(z.B. gpnp), von denen ich aber noch keines ausprobiert habe. dann das ganze mal ausporbieren: isapnp /etc/isapnp.conf ... Meldungen beachten. Nun ist die PnP-Karte dem System bekannt und es kann ein Soundtriber geladen werden. 3 mögliche Soundtreiber-Familien: OSS-free = beim Linux-Kernel mitgelieferte Treiber kommerzielles OSS = kostet Geld, kann viele Karten, kann selber PnP erkennen (d.h. isapnp & pnpdump unnötig) eine ältere Version ist in einem Suse Paket enthalten, darf aber nicht kopiert werden. sehr einfach zu benutzen. Man muss alllerdings nach jedem Rechnerstart "soundon" ausführen um Sound einzuschalten. Am besten , man trägt es in /sbin/init.d/boot.local ein: /absoluter-pfad-zu/soundon ALSA = Der neue Standard für Linux-Sound ist auch auch einer Suse CD, aber man besogt sich sinvollerweise das aktuelle Source-Paket und das Programm "alsaconf" auf http://www.alsa-project.org/ OSS-free & ALSA benötigen bzw. machen Einträge in /etc/conf.modules (neuer Name seit suse6.3: etc/modules.conf ???) sodass der richtige Soundtreiber geladen wird, sobald man eine Sound-Applikation(z.B. kmix) startet. Am Beispiel des ALSA-Source-Paket konnte ich zeigen, wie man sowas compiliert & installiert: Es war ein .tar.gz ( ist gleichbeduetend mit .tgz ) - Paket Also habe ich es erstmal in /tmp abgelegt und mit tar xvfz alsa-driver-0.4.1d.tar.gz ausgepackt. Dan gehe ich in das soeben entstandene Verzeichnis alsa-driver-0.4.1d und lese mir die Dateien README und INSTALL aufmerksam durch !!! In INSTALL las ich , dass ich folgendes tun soll: ./configure das ./configure - Skript prüft ob alles nötige auf dem Rechner vorhanden ist(ein C-Compiler,Libraries...) falls nicht, muss man was nachistallieren(suse-CD oser aus dem Internet) falls allse ok ist, werden üblicherweise .. creating ./config.status creating Makefile creating config.h erzeugt. Nun kann man eventuell noch das Makefile seinen Bedürfnissen anpassen und dann den Compiler mit make starten und die fertigen Alsa-Module mit make install installieren. Dann gab es da noch eine Script , das mir die nötigen Gerätedateien unter /dev anlegt: ./snddevices Mit dem Programm alsaconf kann ich bequem meine Soundkarte(n) auswählen, es erzeugt mir entsprechende Einträge in /etc/modules.conf bzw. /etc/conf.modules samba = Datei- & Druck-Server für Windows-Clients, auf Wunsch auch wins-Server und PDC für WinNT-Domänen. ----- /etc/smb.conf /etc/smbpasswd smbpasswd -a mherweg rcsmb start Samba-Web-Admin-Tool = SWAT Bei Bedarf in /etc/inetd.conf freigeben: # swat is the Samba Web Administration Tool swat stream tcp nowait.400 root /usr/sbin/swat swat danach den inetd starten und seine neue config einlesen lassen: rcinetd stop rcinetd start Nun kann (auch übers Netz - Vorsicht: unverschlüsselte Passwort-Übetragung -) Samba über ein Web-Interface, z.B. Netscape unter der URL http://SERVERNAME:PORT (PORT=901) z.B.: http://localhost:901/ konfiguriert & administriert werden. 5. und letzter Block (9.12.) ============================ einen eingene Kernel kompilieren (siehe auch: Suse-Handbuch) Kenelquellen (Paket lx_suse) installieren, falls nicht schon vorhanden. das wollten wir per NFS von einen Netzwerk-freigegebenen CD-ROM machen. Ging aber erst nicht(unerträglich langsam, unzählige Fehlermeldungen auf Console 10 des Servers) - Fehlerhafte NFS-version bei Suse 6.2 Deshalb brachen wir ab, indem ich den NFS-Server stoppte: rcnfs stop per yast die Pakete nkita nkitb nfsserver von einer Suse 6.3-CD upgedatet. init 1 (Netzwerk-Dienste stoppen) (warten) init 2 (neue Netzwerk-Dienste starten) 6.2-CD mit dem lx_suse-Paket wieder 'rein, mounten nicht vergessen, dann hat's geklappt. Nun zurück zu den Kernel-Quellen: cd /usr/src/linux make menuconfig (oder in X-Window auch alternativ "make xconfig") (warten) Sprache auf deutsch stellen, Menu verlassen, nochmal starten: make menuconfig - nun sind viele(nicht alle) Texte auf deutsch. dann alles ankreuzen, was man haben will, entweder von Anfang an fest im Kernel (monolithisch) oder =als Modul. Einstellungen werden in der Datei /usr/src/linux/.config gespeichert, können dort bei Bedarf eingesehen und auch noch verändert werden. make dep clean bzImage dep = dependencies = Abhängigkeiten ermitteln clean = altes Zeug (Object-Files *.o) wegräumen bzImage = ein bzip2-komprimiertes Kernel-Image erzeugen. der Compilerlauf hat nicht auf Anhieb geklappt, er stoppte mit einem Error bei "md-" -irgendwas, md = Multiple Devices = software Raid, hmmm, na gut, dann habe ich es halt wieder bei make menuconfig 'reingenommen. Auf deutsch hiess das "Blockorientierte Geräte-> Zusammenfassen von Festplatten" danach verlief ein "make dep clean bzImage" erfolgreich und wir hatte ein Kernel- Image unter /usr/src/linux/arch/i386/boot/zImage und eine dazu passende /usr/src/linux/System.map -Datei mit make bzlilo werden diese beiden nach /boot kopiert und der alte Kernel in vmlinuz.old umbenannt und lilo einmal aufgerufen. In /etc/lilo.conf sollte man (mit yast oder per Hand) dafür sorgen, dass es je einen Eintrag für den Neuen und für den alten Kernel gibt, falls wir beim "make menuconfig" einen Fehler gemacht haben und der neue Kernel garnicht starten kann. Hier eine /etc/lilo.conf als Beispiel: -------------- # LILO Konfigurations-Datei # Start LILO global Section # If you want to prevent console users to boot with init=/bin/bash, # restrict usage of boot params by setting a passwd and using the option # restricted. #passwd=bootpwd #restricted boot=/dev/hda compact vga=ext message=/etc/lilomessage.txt read-only prompt timeout=600 # End LILO global Section # image = /boot/vmlinuz alias = 1 root = /dev/hda4 label = linux # image = /boot/vmlinuz.old alias = 2 root = /dev/hda4 label = alt ------------- nach einer Änderung von Hand: lilo ausführen: root@martin:/etc > lilo Added linux (alias 1) * Added alt (alias 2) yast macht das automatisch, wenn man die Änderungen per yast-Menü gemacht hat. Nun kann lilo den neuen und den alten Kernel booten. Gleich mal ausprobieren: root@martin:/etc >reboot alternativ: init 6 der neue Kernel läuft - *stolz* ;-) Mit uname -a finde ich anhand der angezeigten Uhrzeit/Datum herraus, ob ich auch wirklich den neuhen Kernel gebootet habe, und nicht aus Versehen wieder den alten. Falls nicht der erwatete Kernel läuft: + Inhalt von /boot checken, zB anhand des Datums der vmlinuz-Dateien + /etc/lilo.conf überprüfen + lilo laufen lassen: lilo Dann sollte es beim nächsten Reboot stimmen. --- In den letzten Sekunden wollte ich gerne noch den HP-SCSI-Scanner aktivieren: Kernelmodul für den SCSI-Controller landen: modprobe aic7xxx auf Console 10 sehe ich , er hat 2 SCSI Geräte erkannt: das zip-drive und den scanner. Nun habe ich leider in yast(Admin.->Hardware->Scanner) das falsch Device angesprochen: Ich dachte /dev/sg0, denn es ist der ERSTE SCSI-Scanner am Bus, genau wie ja auch /dev/scd0 das erste SCSI-CD-Rom ist, egal wieviele SCSI-Festplatten vorher kommen. FALSCH, denn es ist DAS ZWEITE SCSI-Gerät am Bus. /dev/sg1 wäre richtig gewesen. sg bedeutete nämlich "generic SCSI Device" und nicht SCSI-Scanner ( siehe auch die entsperchenden HOWTO-Text ) ----------------------------------------------------------------------------- ENDE ----------------------------------------------------------------------------- Ankündgungen neuer Kurse findet ihr hier: http://www.nel.de/mherweg/linux_vhs.html Weiterhin viel Spass mit freier Software wünscht euch.... Martin Herweg mherweg@nel.de