LPI101
aus Doku, der freien Wissensdatenbank
Allgemeines zum Kurs
Literatur
LPIC-1 Vorbereitung auf die Prüfung des Linux Professional Institute Peer Heinlein Open Source Press ISBN 3-937514-02-3
Kursübersicht LPI 101
Kurszeiten 1800-1940 / 1955-2135 (Bonus bis 22h)
1. Einführung Installation SUSE 2. Softwareinstallation 1 Verwalten von 'Shared Libraries' 4 'Installation von Quellcode' 2 RPM 1 Debian Paket Manager 3. Shell 1 Regualr Expressions (Reguläre Ausdrücke) 2 Filterprogramme 2 Prozessmanagement 4. Systemadministration 5. X Window System 6. Planung
Aufgaben
Auf 26.10. (letzter Tag)
- xauth list (PW anzeigen) - xauth add :0 MIT-MAGIC... (PW benutzen) - Displaymanager xdm - Windowmanager - Festplattenaufteilung
Auf 19.10. (7.und 2.letzer Tag)
- Bootmanager - XFree86 --> Script anschauen
Auf 12.10. (6.Tag) vorbereiten:
- FHS Filesystem Hirarchy Standard Seite 47 (Kap.5.3) - Hard- & Softlinks, - Manpage: ln - Mangage: nice, renice - Prozessprioritäten - /proc/
Auf 5.10. (5.Tag) vorbereiten:
- Disk Quotas (Buch 6.4.7) - Filesystem-Integrität (fsck... 8.5 und 8.6) - FHS Filesystem Hirarchy Standard (Kap.5.3)
Auf 28.9. (4.Tag) vorbereiten: - Filterprogramme (ab Seite 21) - Prozessmanagement (Kapitel 4 im BUCH)
Bootmanager
Allgemein
BIOS > greifft auf HD zu (1-4) Laden von MBR ab Platte 1 (Partitionstabelle Bootloader) 512 byte (erster Block) Direkt nach MBR braucht es darum noch ein wenig Platz für die Bootmanager-Daten (ein Grub z.B. ist etwa 100 Kb gross)
Der Bootloader hat Kernel im Speicher oder hat Kernel-Parameter (aus Bootloader-Konfiguration) oder erhält Sie vom User
LILO (Block-Loader)
Konfigurationsdatei: /etc/lilo.conf
Lädt Blöcke anhand einer Liste, welche im MBR liegt
LILO muss nach Kernelupgrade oder Konfigurationsänderung neu installiert werden mittels /sbin/lilo Erlaubt das angeben von Boot-Parametern
GRUB (File-Loader)
Konfigurationsdatei: /boot/grub/menu.lst
Lädt Datei anhand eines Pfades
muss nur einmal installiert werden mittels usr/sbin/grub-install da er Kernel aus Datei startet Hat eingenes CLI (Command Line Interpreter)
Nummerierung von HDs und Partitionen:
Grub: hd0,0 (entspricht im BIOS hda1 !!!)
GRUB Console
zuerst mittels booten oder dem Befehl grub aufrufen die Konsole aufrufen
root (hd0,1) # zeigt entspricht hda0 setup (hd0) # installiere Grub im Masterboot-Record
GRUB Funktionsweise
Namen von Harddisks:
hd0 bis hd3 (auf Bios 1. bis 4. Platte)
Namen von Partitionen
hd0,0 bis hd0,4 (erste Primäre Partition bis erste logische Partition "hda5")
1. nötiges Wissen: Root-Partition
grub> root (hd0,1) linux-kernel grub-konfig initial Ram Disk
2. nötiges Wissen: Pfad + Argumente f. Kernel
grub> Kernel /boot/vmlinuz root=/dev/hda2
3. nötiges Wissen: "Initial Ram Disk"
grub> initrd /boot/initrd
4. nun noch den Bootbefehl absetzten
grub> boot
GRUB restore
Quelle: http://ubuntuforums.org/showthread.php?t=114332
Looking into this forum there seem to be quit a few people that struggle
with Grub after windows (re)installation or other MBR problem
Here is a simple solution that will fix the problem in most cases:
First you need to gain root access.
1# boot-up computer with Ubuntu Installation CD 2# At "boot:" prompt, add "rescue" to the argument boot: rescue 3# Follow the instructions on screen 4# Now, Assumed that /dev/hda is the location of /boot partition type: grub-install /dev/hda
If all goes well Grub-menu is back. Just reboot and enjoy Ubuntu agian...
GRUB restore after Windows Install
Published March 27, 2007 (11:43) under ubuntu
<http://zerolab.org/blog/category/ubuntu/>, tips and tricks
<http://zerolab.org/blog/category/tips-and-tricks/>. By admin. .
Problem: A Windows Installation overrites the Bootsector and Grub
Solution:
Start with LiveCD (e.g.Ubuntu Edgy) open a terminal window sudo grub find /boot/grub/stage1 note the output it can be in the form of hd0 (mine was hd1,1). root (hd1,1) setup (hd1)
reboot the PC
crontab
Mi St Ta Mo Wo
Aufruf
crontab -l listing (read only) crontab -e editieren
Syntax
Minuten | 0-59 und * für alle Minuten Stunden | 0-23 und * für alle Stunden Tage | 1-31 und * für jeden Tag Monate | 1-12 und * für jeden Monat Wochentage | 0-7 und * für jeden Wochentag (0 und 7 für Sonntag)
Weitere Funktionen
Ein Komma , lässt mehrere Zeitangaben zu. Jeden Tag um 12 und 15 Uhr ...: 0 12,15 * * * ... Ein Bindestrich - gibt einen Zeitraum an. Jeden Tag von 12-24 Uhr (jede Stunde) ...: 0 12-24 * * * ... Ein Schrägstrich / teilt einen Zeitraum ein. Zwischen 6 und 23 Uhr alle 15 Minuten ...: */15 6-23 * * * ...
Diskquotas
download quota-pakage
ftp://ftp.gwdg.de/pub/linux/suse/ftp.suse.com/suse/i386/9.2/suse/i586/quota-3.11-26.i586.rpm
installieren mit:
rpm -ihv /home/pit/rpms/quota-3.11-26.i586.rpm (-i=installieren / h=hashsign / v=verbose)
Kernel braucht unterstützung für Quotas auf verwendetem Dateisystem:
(durch Distribution oder neu-Kompilieren des Kernels)
Aktivierung der Quota Unterstützung in Mount-Flags
mit rootfilesystem testen ob diskquotas funktionieren mit remount <Mountpoint> -o
mount / -o remount,usrquota,grpquota
Quotas checken
quotacheck -avugm
Nun hat ein ls -l / 2 Sparse Files:
-rw------- 1 root root 8192 2005-10-05 19:03 aquota.group -rw------- 1 root root 8192 2005-10-05 19:03 aquota.user
Von User Pit die Quota anzeigen
edquota -u pit
Hier z.B. Soft auf 100000 anpassen und mit :wq speichern
Nun nur noch die Quota einschalten mit
quotaon -avug #(m für forced)
Weiteres:
edquota -t zeigt nun Gracetime der Quotas an:
Display-Manager
Protokoll:
xdmcp
X -query 10.10.5.120 (wenn :0 schon belegt ist z.B. X -query localhost :1)
Konfigurationsdateien befinden sich in /etc/X11/xdm/
Xservers
-nolisten tcp auskommentieren, für zugriff via tcp (vorsicht!)
reserve rauslöschen um X-Server standardmässig zu starten...
:0 local /usr/X11R6/bin/X -nolisten tcp -br vt7 :1 local reserve /usr/X11R6/bin/X -nolisten tcp -br :1 vt8 :2 local reserve /usr/X11R6/bin/X -nolisten tcp -br :2 vt9 :3 local reserve /usr/X11R6/bin/X -nolisten tcp -br :3 vt10 :4 local reserve /usr/X11R6/bin/X -nolisten tcp -br :4 vt11 :5 local reserve /usr/X11R6/bin/X -nolisten tcp -br :5 vt12
Xaccess
. . . . anyhost can access a loginwindow auskommentieren und spezielle IP-Adressen freigeben
FHS Filesystem Hirarchy Standard
Müssen auf Rootpartition liegen:
/bin binaries (grundlegende Programme wie z.B. cd, ls...) /sbin binaries für Superuser (z.B. ifconfig) /lib shared libraries (früher auch Daten, Programme) /etc /dev
/usr
RPM oder Deb installierte Programme
/usr/bin /usr/sbin /usr/lib shared libraries /usr/etc
Hier werden selbst kompilierte Programme installiert
/usr/local/bin /usr/local/sbin /usr/local/lib /usr/local/etc /var/ /var/log Logfiles /var/lock Lockfiles /var/www Webserver-Pfad /var/lib/mysql DB-Pfad
Beispiele
/bin /sbin/ifconfig ifconfig kann zwar von normaluser ausgeführt werden ist aber nicht in $PATH enthalten /lib /share
fsck
Filecheck und repair Program
e2fsck -f -v /dev/hda1
Zuerst Imagefile erstellen und dann filecheck machen...:
dd conv=noerror,sync if=imagefile of=/dev/hda1
mount imagefile /mnt -o loop
dd conv=noerror,sync if=imagefile of=/dev/hda1
Filter & Regular Expressions
cat
Concattanate (zusammenhängen)
cat [file(s)]
cut
sucht aus tabelle felder heraus
z.B.
cut -d: -f5 /etc/passwd schneide aus /etc/passwd aus mit : getrennten felder spalte 5 heraus und gebe sie aus
grep
in Verzeichnis Dateien filtern und ausgeben
grep [Reg.Expr.] [File(s)]
grep -E "extended" Reg.Expr. grep -v Resultate Umkehren/Unterdrücken grep -l (list) suche nach Dateien, in denen Reg.Exp. vorkommt grep -L Zeigt nur Dateinamen, in denen Reg.Exp. nicht vorkommt
Beispiele
grep -v ^# /pfad/datei (alle #-Zeilen rausfiltern) grep '^[^#]' /pfad/datei (dito) grep -v ^$ /pfad/datei | grep -v ^# (unterdrückt leere Zeilen | unterdrückt #-Zeilen)
grep pit /etc/* 2> /dev/null im Pfad /etc/* nach Inhalt von Dateien suchen und anzeigen und Errormeldungen unterdrücken
head & tail
Zeigen nur erste 10 oder letzte 10 Zeilen einer Datei an
head [datei]
Zeigt bestimmte Anzahl Zeilen
head -n Zahl tail -n Zahl
Aktualisiert die letzten Zeilen einer Datei (z.B. Log überwachen)
tail -f /var/log/messages
sed
suchen nach regexpr und DEN ERSTEN mit Ersatz ersetzen
sed 's/regexpr/Ersatz/' datei
suchen nach regexpr und ALLE mit Ersatz ersetzen
sed 's/regexpr/Ersatz/g' datei
Beispiel
sed 's/[aeiouAEIOU]/X/' früchte ersetzt alle grossen und kleinen Umlaute in der Datei früchte
sort
sort -n sortiert numerisch sort -r kehrt Sortierung um
sort -u Zeigt nur noch jede Zeile einmal sort datei|uniq #dito
tr
translate (kleiner sed)
tr alt neu < datei
Beispiel
tr aei XYZ < datei ersetzt a durch X / e durch Y / i durch Z in "datei" tr a-z A-Z < datei kleine durch grosse Buchstaben ersetzen (jedoch nicht äöü)
uniq
enfernt mehrfach vorhandene, aufeinander folgende Zeilen
uniq [datei]
wc
word count
wc datei zählt lines words characters wc -l datei zählt lines wc -w datei zählt words wc -c datei zählt characters
grep -c macht dasselbe wie wc -l
Regular Expressions
Beschreibung einer bestimmten Zeichenfolge
. beliebiges Zeichen * das Zeichen vorher kommt einmal, mehrmal oder keinmal vor .* alles (kein, eins oder mehrere beliebige Zeichen) [abc] a, b, oder c ^a fängt mit a an a$ hört mit a auf ^a$ fängt mit a an und hört mit a auf
grep Syntax
grep -E '<Ausdruck>' stdinDatei entspricht egrep
find, locate, updatedb
find . -type f (sucht im aktuellen Verzeichnis alle files) type mke2fs /sbin/mke2fs locate passwd
Glossar
kompilieren (to compile) Ist für bestimmte Systemsarchitektur übersetzter Programmcode
HD Aufteilung
Zwingend auf Rootpartition (50-100MB)
/ /etc /bin /sbin /lib /dev /root
Können evtl. ausgelagert werden
/home (Grösse nach Bedarf) /usr/local
/var (400MB, Logs, wird stark beansprucht) /tmp
/usr (1-5GB, Programme, sehr schwach beansprucht) /opt
eventuell noch: /srv /data /...
Installation
Installation von Quellcode
Download-Tipps:
tar.gz und tar.bz2 Sourcecode asc digitale Signatur > gpg (win:pgp) md5sum Prüfsumme > md5sum lsm Inhaltsbeschreibung diff.gz Patch patch.gz Unterschied zw. Verionen Entwicklungspakete: - Programmpakete, denen Namen in -dev oder -devel enden - Enthalten sogenannte Headerfiles, die zum Kompilieren benötigt werden /usr/lib/libxyz.so xyz.rpm /usr/include/xyz.h xyz-devel.rpm
ALS USER AUSFÜHREN:
Download von Sourcecode meist gepackte Dateien ...tar.gz / ...tar.bz2 usw. Entpacken tar zxvvf <datei.tar.gz> oder tar jxvvf <datei.tar.bz2> oder unzip -x [datei.zip] README, INSTALL usw. lesen An System anpassen: ./configure Kompilieren (ausführbares Programm im cwd): make
ALS ROOT AUSFÜHREN:
Installieren (ausführbares Programm im System z.B. /usr/bin :) make install
Weitere Optionen für make:
make clean um aufzuräumen und Speicherplatz zu sparen make distclean #wenn "configure" abbricht und ein weiteres mal auf- gerufen werden muss, solte make distclean vorher laufen (der interne Cache von configure wird damit geleert)
Beispiel mplayer
download ab http://www.mplayerhq.hu/ ev. zuerst gcc und gcc+ installieren mittels YAST cd mkdir sources cd sources mkdir mplayer cd mplayer tar jxvvf MPlayer-1.0pre7try2.tar.bz2 cd MPlayer-1.0pre7try2 ./configure make su passwort eingeben cd /home/pit/source/mplayer/MPlayer-1.0pre7try2 make install Es gibt ein Programm ckeck install, welches gleich ausgeführt wird wie make install, jedoch wieder gelöscht werden kann.
Uebungen
Auf acer lftp ab Quellcode installiere:
http://lftp.yar.ru/
Vim ab Quellcode installieren:
http://www.vim.org/ (beachten, welche Datei geladen wird) TIPP: *ncurses* Libraries sollten installiert sein! download ...bz2 speichern in /sources/vim/ tar jxvvf vim-6.3.tar.bz2 cd vim63 ./configure make
Mit which und whereis herausfinden, welcher vim gestartet wurde. Ev. überlegen, wie ein alter deinstalliert werden kann.
Installation mittels RPM oder Deb
debian:
Paketname-Upstreamversion(Programmautor)-Paketversion
Debian dpkg --get-selections dito, jedoch ohne Versionsnummern. dpkg -l|grep ^ii dpkg -L <Paketname> Prüfen, ob schon installiert, Liste aller Dateien eines Paketes angeben dpkg -S <Dateiname> Paket zu welchem eine Datei gehört anzeigen dpkg -i installieren dpka -P <dateiname> löschen, deinstallieren (Purge)
RPM rpm -qa (query all) zeigt Liste an, welche Paketnamen in welcher Version installiert sind rpm -ql <paketname> Prüfen, ob schon installiert, Liste aller Dateien eines Paketes angeben rpm -qf <dateiname> Paket zu welchem eine Datei gehört anzeigen rpm -ihv <dateiname> installieren (i=installation / h=hashversions / v=verbose) rpm -Uhv <dateiname> update (bei dpkg nicht nötig, da dort nicht verschiedene Versionen installiert werden können rpm -e <dateiname> löschen, deinstallieren (erase)
weiteres zu Debian apt-cashe search <paketname> zeigt verfügbare Pakete an /etc/apt/sources.list apt-get update
Beispiele für Paketmanager-Frontends (ausser YAST benützen alle die gleiche Paketdatenbank)
apt-get aptitude synaptic urpmi yum up2date (für Updates) YAST (SUSE)
Ein Paketmanager muss folgendes wissen:
Welche Dateien sind von welchem Paket installiert Welche Pakete sind installiert In welcher Version?
Er muss folgendes können:
Ein Paket, das als File vorliegt, installieren Ein installiertes Paket deinstallieren Installiertes Paket, welches als File vorliegt, durch andere Version ersetzen Abhängigkeiten durchsetzten
Manuelle Installetion von Firefox ab Suse DVD
mount /dev/cdrom /mnt/ cd /mnt/suse/i586 ls -l *fox* rpm -ihv MozillaFirefox-0.10.0-14.1.i586.rpm
Installationsvorgang:
--> Informationen sammeln --> Abhängigkeiten überprüfen --> Ausführen von Pre-Install-Skript --> Dateien auspacken --> Abhängigkeiten überprüfen --> Ausführen von Post-Install-Skript
RPM erstellen
Basisordner für Paketerstellung müssen grundsätzlich einfach ans richtige Ort (Zieldateien) kopiert werden. RPM braucht ein spec-File, welches die folgenden Infos enthält - Name des Basisordners - Pfad und Name der Dateien - Version, Daten, Erzeuger - Skripte rpm -bb <Name des spec-Files> erzeugt nun das RPM-File
Deb erstellen
Basisordner & Dateien
Unterverzeichnis /debian/preinst
/postinst
/prerm
/postrm
/control
/rules
dpkg-buildpackage erstellt dann das eigentliche Deb
Konfiguration
/etc/fstab
/dev/hda2 / reiserfs acl,user_xattr,usrquota,grpquota 1 1 noauto,ro,defauts
links ln
allgemeines
hardlinks ln
Im Grunde ist jede Datei eigentliche ein Hardlink auf seinen Inode
Funktioniert nur auf Datei(, die bereits einen Hardlink hat - keine Verzeichnisse möglich)
symlink ln -s
Symbolischer Link oder auch Softlink
Eselsbrücke: Funktionniert gleich wie cp, jedoch braucht Ziel (SymLink) nicht so viel Platz
Syntax: ln -s QUELLE(existiert bereits) ZIEL(soll auch erscheinen)
lost+found
Inodes bei denen der Verweis darauf fehlt
Es ist zwar alles noch vorhanden, jedoch der Name nicht mehr
Mit file können ev. Indizen auf die Art der Files erhalten
mounten
Samba- oder Windows-Freigabe mounten
zum Beispiel:
mount -t smbfs -o username=xxxxxx,password=xxxxxx //192.168.1.35/share /mnt/nxshare
proc
Allgemeines
Spezielles Kernelverzeichnis
Enthält viele Files welche vom Kernel gehandelt werden. Die Grösse wird jeweils nicht angegeben, da Sie konstant nachgerechnet werden müsste. Ausnahme hierbei ist /proc/kcore, dessen Grösse dem aktuellen RAM-Speicher entspricht.
/proc/devices
ls -l /dev/hda gibt spezielle ausgabe:
brwxr-xr-x 1 root root 3 0 b=block/c=caracters majorNr minorNr
Wenn c bei im /proc/devices unter caracterdevices, wenn b unter blockdevices nachschauen (Major Nr. - minor ist hier egal, alle gehören zu dieser Nummer)
ein paar Beispiele
/proc/swaps /proc/net/dev
Prozesse
Ctrl Esc Startet ksysguard (nur KDE)
Ctrl Z Unterbricht einen im vordergrund laufenden Prozess
fuser -mv /pfad/datei Beendet alle Prozesse, die diese Datei offen halten. (-v = verbose / -m alles Unterhalb --> geht somit mit auch mit Verzeichnissen)
kill
kill [-Nr] PID Prozess beenden (Standard ohne Argument ist -15 (SIGTERM)) -1 unterbruch der Terminalleitung -2 interrupt-Signal (Ctrl C) -3 Programmabbruch mit Speicherabzug (Datei core im akt. Verz.) -9 sofortiger Programmabbruch, Temp. Dateien werden nicht entfernt!
kill -l listet Signale auf killall <prozessname> gleiche Optionen wie kill
pidof <Programmname> gibt entsprechende PID aus
Kommando & >datei 2>/dev/null
- Kommando wird im Hintergrund gestartet - in ./datei (neu) geschrieben (oder >> angehängt) - std.error wird ins nirvana geschickt
ps
ps ax relativ uebersichtliche Liste pstree -p halb-graphische Anzeige in der Shell ps zeigt alle Prozesse die dem User gehoeren -e zeigt auch Daemonprozesse ohne Terminal (BSD: x) -f full listing, zeigt auch PPID, UID, STIME -l long listing (umfassende Infos zu den Prozessen) -u username zeigt alle Prozesse eines bestimmten Users ps -ef | grep suchstring Prozesse gemaess Suchstring anzeigen top Top-Prozesse (q zum beenden, M um nach Memory zu sortieren)
nice
nice [-n nicewert] Kommando Angabe der Prioritaet beim Start des Programms. Standardwert ohne Angabe ist 15 Range: -20 hoechste Prioritaet / 20 niedrigste Prioritaet nice hat kein – vornedran
renice hat ein – vorweg (Negativwert --) renice neuer-nice-wert [[-p] PID ...] [[-u] user ...] Syntax renice: renice -5 123 -u daemon bin root -p 32 Beispiel: nice-Wert der Prozesse mit PID 32 und 123, sowie alle Prozesse der Benutzer daemon, bin, root um fünf reduzieren (mehr Rechenzeit)
renice
User können eigene Prozessprioritäten erhöhen (schlechter stellen)
root kann alle Werte (-20 bis 19 setzen)
Syntax renice neuerWert
top
q beenden shift m nach memory sortieren
Shared Libraries
- Bibliotheken bestehend aus kompiliertem Programmcode
Essentielle Libraries /lib weitere Libraries /usr/lib
Konfiguration
/etc/ld.so.conf Konfigurationsdatei der shared libraries /etc/ld.so.cashe Konfigurationsdatei im laufenden System ldconfig muss nach Aenderungen ausgeführt werden updatet die /etc/ld.so.conf
ldd [/bin/bash] gibt an, welche Libraries benötigt werden
gibt aus:
linux-gate.so.1 => (0xffffe000)
libreadline.so.5 => /lib/libreadline.so.5 (0x40029000)
libhistory.so.5 => /lib/libhistory.so.5 (0x40057000)
libncurses.so.5 => /lib/libncurses.so.5 (0x4005f000)
libdl.so.2 => /lib/libdl.so.2 (0x400a4000)
libc.so.6 => /lib/tls/libc.so.6 (0x400a8000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
Erklärungen:
/lib/ld-linux.so.2 = von u.A. Shell benötigte Datei in der Version 2 (nie verschieben)
libc... = Libraries für C-Programme
libdl... = Libraries für dynamisch geladene Plugins
libncurses = Einfache Steuerungen wie z.B. Zeichen eingeben
libhistory = History...
libreadline = Steuerungen wie z.B. Curserpositionierung...
Übung
herausfinden gegen welche Bibliotheken /bin/ls gelinkt ist ldd /bin/ls
vim unbrauchbar machen und durch link wiederherstellen flicken
nur libncurses... verwenden um nicht allzuviel kaputt zu machen
linux:~ # ldd /usr/bin/vim
linux-gate.so.1 => (0xffffe000)
libncurses.so.5 => /lib/libncurses.so.5 (0x40029000)
libacl.so.1 => /lib/libacl.so.1 (0x4006e000)
libdl.so.2 => /lib/libdl.so.2 (0x40075000)
libc.so.6 => /lib/tls/libc.so.6 (0x40079000)
libattr.so.1 => /lib/libattr.so.1 (0x4018f000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
linux:~ #
linux:~ # mkdir /testlib
mv
export DISPLAY=:0 erstes Displayanzeigen (um z.B. Programm als root ein Programm wie z.B. Kate starten zu können
libncurses identifizieren: (rpm -qf [datei]) # rpm -qf /lib/libncurses.so.5 identifizieren # rpm -qi [paketname] zeigt paketname an
# dpkg -S [datei] # apt-cache show [datei] Doku: /usr/share/doc/packages/ncurses
sources lists
debian
# deb file:///cdrom/ sarge main # Security Update deb http://security.debian.org/ stable/updates main # Stable deb http://mirror.switch.ch/ftp/mirror/debian/ stable main deb-src http://mirror.switch.ch/ftp/mirror/debian/ stable main # Testing deb http://mirror.switch.ch/ftp/mirror/debian/ testing main deb-src http://mirror.switch.ch/ftp/mirror/debian/ testing main # Unstable deb http://mirror.switch.ch/ftp/mirror/debian/ unstable main deb-src http://mirror.switch.ch/ftp/mirror/debian/ unstable main # Experimental deb http://mirror.switch.ch/ftp/mirror/debian/ experimental main deb-src http://mirror.switch.ch/ftp/mirror/debian/ experimental main # Vserver # deb http://matvey.org.ru/pub/debian/ stable main # Mulimedia deb ftp://ftp.nerim.net/debian-marillat/ sid main # Randall Donald's prebuilt nvidia kernel modules deb http://people.debian.org/~rdonald/nvidia modules-unstable/i386/
SUSE - YaST - Installationsquelle wechseln
openSUSE 10.1
ftp-quellen, jeweils als anonymous
packman.iu-bremen.de /suse/10.1 ftp.gwdg.de /pub/opensuse/distribution/SL-10.1/inst-source (bei Version 9.2: ftp.gwdg.de /pub/linux/suse/ftp.suse.com/suse/i386/9.2) ftp.gwdg.de pub/opensuse/distribution/SL-stable/non-oss-inst-source
openSUSE 10.2
ftp-quellen, jeweils als anonymous
ftp.gwdg.de /pub/suse/update/10.2 ftp.gwdg.de pub/opensuse/distribution/10.2/repo/src-non-oss/suse ftp.gwdg.de pub/opensuse/distribution/10.2/repo/oss packman.iu-bremen.de suse/10.2
VLC mit YAST installieren
First, add a new repository (installation source) in YaST (YaST2 -> Software -> Installation Sources)
Add the following Repository: Type: HTTP / Servername: download.videolan.org / Directory: /pub/videolan/vlc/0.8.6/SuSE/<SUSE Version>
Replace <SUSE Version> in the Directory above with your installed Version. Supported at this time are : 9.3 10.0 10.1 10.2
Confirm the addition.
The repository is signed with a GPG Key (KeyID.... Fingerprint:.....). Accept this key in YaST and it will warn you in case there is something suspect with the repository. Accept everything by clicking Finish
Go to Software Management and enter VLC in the searchbox and search for it. Select it and click Accept to install it with all it's dependencies. This might require the SUSE CD or DVD.
If you want the vlc Mozilla Plugin, you have to select the vlc-mozillaplugin manually. It does not get installed by dependencies. You're done with the installation. Have a lot of Fun.
ssh
Eigene Keyfiles (SSH-Fingerprints) können im Verzeichnis
/etc/ssh/
angezeigt werden mit dem Befehl
ssh-keygen -l Name_der_Datei
ssh Konfiguratiosdatei
Hier ist z.B. festgehalten, ob X11Forarding, Root-Login usw. erlaubt sind
/etc/ssh/ssh_config
tune2fs, debugfs
tune2fs
mkfs.ext2 = mke2fs
debugfs
tune2fs
dumpe2fs
fsck.ext2 = e2fsck
mkfs.reiserfs = mkreiserfs fsck.reiserfs = reiserfsck
Optionen von tune2fs
Blockgrösse -b count -c (z.B. tune2fs -c 0 -i 0 /dev/hda1) setzt count auf 0 (checkt nie) inode-dichte -i reservierte Blöcke für root -m
Uebung
cat /proc/swaps #zeigt swap-fs an swapoff -a #swap ausschalten mkfs.ext2 /dev/hda1 #ext2-filesystem auf /dev/hda1 erstellen (vorsicht!!!) mount /dev/hda1 /mnt tune2fs -m 2 /dev/hda1 #die 5% reservierter Platz für den Superuser auf 2 reduzieren
manuell fsck durchführen:
e2fsck -f -v /dev/hda1 #zusätzlich -n = keine Aktion, nur überprüfen
debugfs
debugfs -w /datei/system #schreibrecht in der Debug-Konsole (z.B. um nicht löschbare Dateien zu löschen)
Variablen / Umgebungsvariablen / Environmentvariablen
export NAME=Hugo Name wurde in aktueller Shell als Variable gestgelegt echo $PATH Umgebungs-Variable abrufen echo $DISPLAY Displayvariable anzeigen z.B. :0.0 env alle Variablen anzeigen set gleich wie env, jedoch ausführlicher
Which, whereis
X
Display-Manager
Protokoll:
xdmcp
X -query 10.10.5.120 (wenn :0 schon belegt ist z.B. X -query localhost :1)
Konfigurationsdateien befinden sich in /etc/X11/xdm/
Xservers
-nolisten tcp auskommentieren, für zugriff via tcp (vorsicht!)
reserve rauslöschen um X-Server standardmässig zu starten...
:0 local /usr/X11R6/bin/X -nolisten tcp -br vt7 :1 local reserve /usr/X11R6/bin/X -nolisten tcp -br :1 vt8 :2 local reserve /usr/X11R6/bin/X -nolisten tcp -br :2 vt9 :3 local reserve /usr/X11R6/bin/X -nolisten tcp -br :3 vt10 :4 local reserve /usr/X11R6/bin/X -nolisten tcp -br :4 vt11 :5 local reserve /usr/X11R6/bin/X -nolisten tcp -br :5 vt12
Xaccess
. . . . anyhost can access a loginwindow auskommentieren und spezielle IP-Adressen freigeben
Fehler-suche und Behebung
$HOME/.xsession-errors konsultieren $HOME/.xinitrc anschauen, ob sie extrem gross ist
xdm
Verwaltet Logins, Fenstersteuerungen usw.
xdmcp
x display manager client protocol
xinit dem User ein Displaymanager einstellen
Konfiguriert xauth jeweils beim Start eines Users usw.
Einem User rudimentär twm als Displaymanager starten:
vi $HOME/.xinitrc xterm & xeyes & xterm & twm esc :wq Enter
Für alle User:
/etc/X11/xinit/Xinitrc
Rootwindow setzen (z.B.blauen Hintergrund bei twm)
xsetroot -solid blue
Grösse setzen beim Start eines Programms in twe
programmname -geometry breitexhöhe+-xkoordinaten+-ykoordinaten
Hilfe dazu:
man X
X Server, X11, X Window System
Ist grob gesagt die Schnittstelle zwischen den Eingabegeräten und Unix Sockets :0.0 und TCP/IP hostname:0.0
hostname : 0 / .0 IP-Adr.oder Hostname : DisplayNr. / Screen
Wenn nichts vor :0.0 steht, läuft es über den lokalen Socket!
Dazwischen sind viele Sachen wie z.B. OpenGL, Keymap, Treiber für Eingabegeräte...
Auf "Zielrechner" kann das Display vie TCP/IP freigegeben werden:
xhost +IP-Adresse gibt auf Zielrechner das Display für diese IP-Adresse frei xhost -IP-Adresse nimmt die Erlaubnis wieder weg (bestehende Progs laufen weiter) xhost + alle erlauben, die eine TCP-Verindung auf Port 6000(+DisplayNr) aufbauen können xhost - alle erlauben wieder rückgängig machen
Eine bessere und elegantere Lösung bietet xauth
Uebung Xforwarding über ssh
Programm über ssh bei atrottmann starten und mit -X bei mir anzeigen (-l steht für den Loginnamen der folgt)
ssh -X -l atrottmann 10.10.5.128
Uebung xauth
Ueber X-Forwarding eine X-Anwendung auf einem Anderen Rechner 10.10.5.144
Firewall ausschalten:
/etc/init.d/SuSEfirewall2_setup stop
Kontrollieren ob sshd läuft:
ps -ef | grep sshd oder: pidof sshd
mit xauth list :0 zeige ich die gültigen Keys für die Displayausgabe an, danach wird mit xauth add das Display umgeleitet.
xauth list :0 xauth add Ganze_Zeile mit Unterbrüchen usw...
zz Tipps und Tricks
ftp-Verzeichnis von suse ftp.gwdg.de /pub/linux/suse/ftp.suse.com/suse/i386/9.2
