LPI101

aus Doku, der freien Wissensdatenbank

Inhaltsverzeichnis

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
'Persönliche Werkzeuge
Navigation