https://wiki.archlinux.de/api.php?action=feedcontributions&user=PSub&feedformat=atomwiki.archlinux.de - Benutzerbeiträge [de]2024-03-29T00:20:45ZBenutzerbeiträgeMediaWiki 1.41.0https://wiki.archlinux.de/index.php?title=Datei:Xmonad.hs.txt&diff=11941Datei:Xmonad.hs.txt2011-08-21T13:28:21Z<p>PSub: hat eine neue Version von „Datei:Xmonad.hs.txt“ hochgeladen: dmenu Aufruf an dmenu-version 4.4 angepasst</p>
<hr />
<div></div>PSubhttps://wiki.archlinux.de/index.php?title=ROX&diff=10739ROX2010-09-06T21:28:04Z<p>PSub: /* Thumbnails */ Wegen https://bbs.archlinux.de/viewtopic.php?id=17347</p>
<hr />
<div>[[Bild:rox.png|thumb|300px|ROX zeigt den Verzeichnisinhalt an]]<br />
ROX ist ein leichtgewichtiger und anpassbarer Dateimanager in GTK, der stark auf Drag'n'Drop setzt.<br />
<br />
==Installation==<br />
ROX ist im „extra“-Repository verfügbar und kann mittels [[Pacman]] installiert werden.<br />
<br />
# pacman -S rox<br />
<br />
Außer GTK hat er keine größeren Abhängigkeiten und ist daher sehr schlank.<br />
<br />
==Konfiguration==<br />
Die Konfiguration erfolgt nach einem Rechtsklick in das Fenster auf grafischem Wege und ist eigentlich selbsterklärend. Ein paar Besonderheiten gibt es aber doch.<br />
<br />
Es ist möglich ROX einen Desktophintergrund und Icons sowie ein Panel zu lassen. Die Konfiguration läuft ebenfalls über das Optionsmenü. Starten lässt sich diese Funktionalität mittels …<br />
<br />
# rox-session<br />
<br />
Nach einem Rechtsklick auf eine Datei lässt sich dieser eine Startaktion zuweisen. <br />
Dabei steht <code>"$@"</code> für die angeklickte Datei.<br />
<br />
Über den Unterpunkt „Menü anpassen...“ im Rechtsklickmenü lassen sich außerdem recht komfortabel neue Menüpunkte hinzufügen: Es öffnet sich ein weiteres Fenster, in dem man Verknüpfungen zu Programmen oder direkt eigene kleine Scripts hinzufügen kann, die dann bei einem späteren Rechtsklick auf die Datei bzw. einen Ordner erscheinen. So lässt sich beispielsweise ein kleines Script schreiben, dass alle Bilder in einem Ordner in einer Diashow anzeigt oder auf eine bestimmte Größe skaliert.<br />
<br />
==Thumbnails==<br />
Um das Anzeigen von Thumbnails nutzen zu können, müssen weitere Pakete installiert werden:<br />
<br />
pacman -S magickthumbnail videothumbnail<br />
<br />
Beide Pakete sind in „community“ verfügbar.<br />
<br />
==Links==<br />
* [http://roscidus.com Homepage des Projekts] {{sprache|en}}<br />
<br />
[[Kategorie: Dateimanager]] [[Kategorie: GTK]]</div>PSubhttps://wiki.archlinux.de/index.php?title=Rdiff-backup&diff=10738Rdiff-backup2010-09-06T21:27:27Z<p>PSub: /* Installation */ Wegen https://bbs.archlinux.de/viewtopic.php?id=17347</p>
<hr />
<div>{{SEITENTITEL:rdiff-backup}}<br />
rdiff-backup ist, wie der Name sagt, ein Backupprogramm. Es basiert auf den Bibliotheken von [[rsync]] und legt für geänderte Dateien nur diffs(Dateien mit Unterschieden) zur alten Version in ein gesondertes Verzeichnis ab. Dadurch hat man bei einem Platzbedarf, der den des Originals, im Vergleich mit anderen Backupprogrammen, nur wenig übersteigt und dennoch viele Revisionen.<br />
{{righttoc}}<br />
== Installation ==<br />
rdiff-backup ist im '''Community''' Repository vorhanden und kann daher über<br />
pacman -S rdiff-backup<br />
installiert werden.<br />
<br />
== Backupskript ==<br />
rdiff-backup hat keine Konfiguration. Es ist aber klug ein Shellscript zu machen, in dem der ganze Backupvorgang komplett festgehalten ist, statt alle paar Tage die vielen Befehle manuell einzugeben.<br />
<br />
Daher wird jetzt ein Skript für diesen Zweck erstellt. Zuerst muss man sich im Klaren sein: Was will ich sichern, wohin, wie oft und welchen Platz brauche ich. Es ist klug, auf jeden Fall ''/home'' und ''/etc'' zu sichern, hat man Datenbanken oder einen Webserver, können auch ''/srv'' oder ''/var'' von Belang sein. Es sollte mindestens einmal im Monat gesichert werden, aber ich denke, dass muss jeder selber wissen. Mit rdiff-backup macht es keinen Sinn, auf read-only Datenträger wie DVDs zu sichern, dann sind so gut wie alle Vorteile, die man mit rdiff-backup hat, weg. Als Normalnutzer wird man also sicherlich auf eine (externe) Festplatte sichern. Diese sollte auf jeden Fall größer sein als die Quellordner und -dateien, wie viel größer hängt davon ab, wie oft sich Dateien ändern.<br />
<br />
Bevor begonnen werden kann, muss noch eins überlegt werden: Wie will ich das Backup anstoßen.<br />
* Automatisch per [[Cron]]: Die externe Festplatte muss immer an Computer und Strom angeschlossen sein, was Sicherheitsnachteile bringt, wenn bespielsbeise durch einen Blitz Überspannung fließt oder aus Versehen die Daten überschrieben werden(alles schon passiert…)<br />
* Automatisch wenn die Festplatte an den Computer angeschlossen wird: Es kann nervig sein, wenn man eigentlich Daten wiederherstellen wollte aber erstmal viel Last durch das Backup erzeugt wird.<br />
* Manuell: Es wird vergessen oder herausgeschoben(ich spreche aus eigener Erfahrung…)<br />
<br />
Wie es gemacht wird, ist vorerst egal, die Anleitung geht aber davon aus, dass die Festplatte angesteckt ist und über /dev/sdb1 gemounted werden kann.<br />
<br />
Zuerst kommt also die Shebang:<br />
<br />
#!/bin/sh<br />
<br />
Dann wird ein Array mit den Quellordnern und Dateien erzeugt:<br />
<br />
SRC=( /home /etc )<br />
<br />
Und die Festplatte in einen temporären Ordner gemounted:<br />
<br />
BACKUPDIR=$(mktemp -d)<br />
mount /dev/sdb1 ${BACKUPDIR}<br />
cd ${BACKUPDIR}<br />
<br />
Und das Backup angestoßen:<br />
<br />
for i in ${SRC[@]}; do<br />
rdiff-backup -b $i ./rdiff-backup$i<br />
end<br />
<br />
Und schlussendlich muss die Festplatte wieder entfernt werden:<br />
<br />
umount ${BACKUPDIR}<br />
<br />
Das Verzeichnis rdiff-backup auf der Festplatte muss dabei schon existieren!<br />
<br />
Nochmal das komplette Skript:<br />
<br />
#!/bin/sh<br />
SRC=( /home /etc ) # bitte anpassen!<br />
BACKUPDIR=$(mktemp -d)<br />
mount /dev/sdb1 ${BACKUPDIR} # bitte anpassen!<br />
cd ${BACKUPDIR}<br />
for i in ${SRC[@]}; do<br />
rdiff-backup -b $i ./rdiff-backup$i<br />
end<br />
umount ${BACKUPDIR}<br />
<br />
== Weblinks ==<br />
* http://rdiff-backup.nongnu.org/ Offizielle Homepage<br />
<br />
[[Kategorie:Anwendungen]]</div>PSubhttps://wiki.archlinux.de/index.php?title=Firefox-Profile_in_Ramdisk_auslagern&diff=10737Firefox-Profile in Ramdisk auslagern2010-09-06T21:26:52Z<p>PSub: /* rsync */ Wegen https://bbs.archlinux.de/viewtopic.php?id=17347</p>
<hr />
<div>{{hinweis|Dieser Artikel richtet sich an erfahrenere Linux-Nutzer}}<br />
{{righttoc}}<br />
Der Startvorgang von [[Firefox]] gehört nach landläufiger Meinung nicht zu den schnellsten Startvorgängen auf einem Linux-System. Dies ist einerseits natürlich Firefox’ Funktionsweise geschuldet, andererseits aber auch dem verwendeten Firefox-Profil, das mitunter mehrere hundert Megabyte groß werden kann.<br />
<br />
Gegen die Probleme des langsamen Startens, begründet in der Funktionsweise, kann man nicht viel tun. Wohl aber kann man die Performance verbessern, indem man sich des Firefox-Profils annimmt. Man kann das Profil nicht nur versuchen schlank zu halten, sondern es auch in eine [[Ramdisk]] auslagern, womit sich dieser Artikel beschäftigt.<br />
<br />
== Vorüberlegungen ==<br />
Wenn man einen einfachen Test macht, sieht man sofort, wie viel schneller der Arbeitsspeicher gegenüber der Festplatte ist. Hierfür kann man z.B. [[dd]] verwenden und damit eine ein Gigabyte große Datei in eine Ramdisk schreiben, und danach den Test noch mal mit einer Festplatte wiederholen.<br />
<br />
$ dd if=/dev/zero of=/media/ramdisk/file bs=10M count=100<br />
100+0 Datensätze ein<br />
100+0 Datensätze aus<br />
1048576000 Bytes (1,0 GB) kopiert, 1,1095 s, 945 MB/s<br />
<br />
$ dd if=/dev/zero of=/home/user/file bs=10MB count=100<br />
100+0 Datensätze ein<br />
100+0 Datensätze aus<br />
1000000000 Bytes (1,0 GB) kopiert, 12,0017 s, 83,3 MB/s<br />
<br />
Der Test wurde mit relativ kleinen Blockgrößen gemacht (zur genauen Syntax siehe [[dd|Wiki-Artikel über dd]]. Das Ergebnis zeigt deutlich, eine Ramdisk ist mit 945 Megabyte pro Sekunde deutlich schneller als die Festplatte mit 83,3 Megabyte pro Sekunde. Man könnte nun also das Firefox-Profil in eine Ramdisk schreiben und von deren enormem Geschwindigkeitsvorteil profitieren.<br />
<br />
Zwei Nachteile hat diese Vorgehensweise allerdings: Zum Einen benötigt eine Ramdisk, wie der Name schon verrät, RAM. Von diesem sollte also ausreichend zur Verfügung stehen. Bei einem System mit nur einem Gigabyte Arbeitsspeicher lohnt sich eine Ramdisk wahrlich nicht. Zwei Gigabyte Arbeitsspeicher sollten bei der in diesem Artikel vorgestellten Technik mindestens vorhanden sein, besser mehr.<br />
<br />
Zum Anderen sind die Inhalte einer Ramdisk nur so lange verfügbar, wie der RAM mit Strom versorgt wird, und die Ramdisk gemountet ist. Wenn das System unerwartet ausfällt, oder man den Rechner herunter fährt, wird der RAM entladen, und die Ramdisk somit geleert. Man muss also dafür sorgen, dass die Inhalte der Ramdisk in regelmäßigen Abständen, mindestens aber beim Starten und Beenden mit einem Verzeichnis auf der Festplatte – zum Beispiel mit [[rsync]] – synchronisiert werden.<br />
<br />
== Vorbereitungen ==<br />
Um die in den Vorüberlegungen beschriebene Technik anzuwenden, bedarf es dreierlei Dingen. Zum Einen muss eine Ramdisk angelegt werden, zum Anderen muss rsync installiert werden und zu guter Letzt muss das Firefox-Profilverzeichnis verschoben werden.<br />
<br />
=== Ramdisk ===<br />
Es wird eine Ramdisk benötigt. Die Ramdisk belegt standardmäßig maximal die Hälfte des gesamten zur Verfügung stehenden Arbeitsspeichers abzüglich Swap. Ramdisks können mittels [[mount]] erstellt werden.<br />
<br />
Man sollte die Größe der Ramdisk an das Firefox-Profil anpassen. Zwar belegt eine Ramdisk nur so viel Platz, wie sie tatsächlich benötigt, aber man sollte immer klare Grenzen stecken, innerhalb derer sich das System bewegen darf.<br />
<br />
Zuerst prüft man, wie groß das Firefox-Profilverzeichnis ist.<br />
<br />
$ du -hs /home/user/.mozilla/firefox/<br />
122M /home/user/.mozilla/firefox/<br />
<br />
Anhand dieser Angabe kann man nun die Größe der Ramdisk bestimmen. Man könnte hier zum Beispiel großzügig auf 200 Megabyte aufrunden, und noch zur Sicherheit 100 Megabyte auf diesen Wert draufschlagen. Somit hätte die zu erstellende Ramdisk eine Größe von 300 Megabyte. Mit dieser Angabe kann nun die Ramdisk in der [[fstab]] definiert werden.<br />
<br />
[…]<br />
none /media/ramdisk tmpfs defaults,size=300m 0 0<br />
[…]<br />
<br />
Standardmäßig haben alle User Schreib- und Leserechte für die Ramdisk. Wenn man dies nicht will, kann man die Optionsangaben um „mode“, „uid“ und „gid“ erweitern, denen man die entsprechenden, gewünschten Werte zuweist. Der Mountpoint <code>/media/ramdisk</code> muss natürlich angelegt werden. Dann wird die Ramdisk mittels <code>mount /media/ramdisk</code> gemountet.<br />
<br />
=== rsync ===<br />
rsync ist im „[[Pacman#Repositorien_und_Spiegel-Server|extra]]“-Repository verfügbar, und kann aus diesem heraus [[Pacman|installiert]] werden.<br />
<br />
pacman -S rsync<br />
<br />
Es sind keine weiteren Einstellungen nötig, da nachfolgend alles Nötige über die Befehlszeile, sowie ein Script geregelt wird.<br />
<br />
=== Profilverzeichnis ===<br />
{{warnung|Man sollte den Wiki-Artikel entweder als PDF abspeichern, in einem anderen Browser als Firefox, oder an einem anderen Rechner geöffnet lassen, während man diese Schritte durchführt, da Firefox während dieser Zeit nicht laufen sollte. Wann immer man mit Dateien arbeitet, die wichtig sind, sollte man von diesen Dateien ein Backup anfertigen, auch wenn eigentlich nichts passieren sollte!}}<br />
Da das Script, das nachfolgend in diesem Artikel erstellt wird, mit [[ln|Symlinks]] arbeitet, muss das Firefox-Profilverzeichnis verschoben werden, da das eigentliche Verzeichnis später durch einen Symlink ersetzt werden wird.<br />
<br />
mv /home/user/.mozilla/firefox /home/user/.mozilla/firefox-profiles<br />
<br />
Hier wird das Profil-Verzeichnis einfach in „firefox-profiles“ umbenannt. Der Name wird später im Script einmalig angegeben und mittels einer Variablen verwendet.<br />
<br />
== Testlauf ==<br />
Nun, da alles soweit vorbereitet ist, kann man das Ganze mal testweise durchspielen, was später durch ein Script automatisiert werden wird.<br />
<br />
# Prüfen, ob die Ramdisk gemountet ist<br />
mount | grep /media/ramdisk<br />
<br />
# Firefox-Profilverzeichnis ertmalig auf die Ramdisk kopieren,<br />
# und dabei alle Dateirechte und -Zeiten erhalten<br />
cp -a /home/user/.mozilla/firefox-profiles /media/ramdisk/<br />
<br />
# Prüfen, ob Verzeichnis kopiert<br />
ls -ld /media/ramdisk/firefox-profiles<br />
<br />
# Symlink anlegen, um das Profilverzeichnis wieder über seinen<br />
# Standard-Namen verfügbar zu machen<br />
ln -s /media/ramdisk/firefox-profiles/ /home/user/.mozilla/firefox<br />
<br />
Nun kann man Firefox bereits wieder starten. Man sollte nun einen gewissen Geschwindigkeitsgewinn feststellen. Gerade die History, sowie als auch die Awesomebar und die Bookmarks (gerade bei großen Bookmarksammlungen sollte es sich sehr bemerkbar machen) sollten nun um einiges Flotter reagieren.<br />
<br />
Testweise sollte man nun auch das Synchronisieren mittels rsync vornehmen. Dabei sollte man den Verbose-Mode von rsync benutzen, um zu sehen, was gemacht wurde.<br />
<br />
$ rsync -av --delete /media/ramdisk/firefox-profiles/ /home/dirk/.mozilla/firefox-profiles/<br />
sending incremental file list<br />
[verschiedene Dateien]<br />
<br />
sent 6732789 bytes received 436 bytes 13466450.00 bytes/sec<br />
total size is 117512183 speedup is 17.45<br />
<br />
Es wurden also einige Dateien aus der Ramdisk in das Firefox-Profilverzeichnis auf der Festplatte kopiert. Tastweise kann man einfach mal ein Bookmark anlegen, Firefox schließen, den rsync-Befehl ausführen, und den Symlink ändern.<br />
<br />
Es sollte beim manuellen Synchronisieren mittels rsync eine Datei „places.sqlite“ synchronisiert werden, wenn dies der Fall war, wird der Bookmark auch beim Starten aus dem Verzeichnis auf der Festplatte vorhanden sein. Das System funktioniert also.<br />
<br />
== Script ==<br />
Das Script hat die Aufgabe, beim Starten von [[X]] zu prüfen, ob die Ramdisk vorhanden ist, und wenn ja, das Firefox-Profilverzeichnis in die Ramdisk zu kopieren, und den Symlink zu erstellen. Das Script tut genau das, was beim Testlauf manuell gemacht wurde.<br />
<br />
Im Kopfbereich des Scripts müssen die Daten an die eigene Umgebung angepasst werden. Dabei sind allerdings schon sinnvolle Vorgaben gemacht, die sich mit den Vorbereitungen aus diesem Wiki-Artikel decken.<br />
<br />
#!/bin/bash<br />
# Put Firefox to ramdisk if available, and create symlink at default<br />
# location to the version in ramdisk. If ramdisk not available, just link<br />
# to profiles dir on harddisk.<br />
<br />
MOZILLADIR="/home/user/.mozilla"<br />
PROFILEDIR="firefox-profiles"<br />
FIREFOXDIR="firefox"<br />
RAMDISKMP="/media/ramdisk"<br />
INFOFILE="${MOZILLADIR}/ramdiskdata"<br />
<br />
ACTION="${1}"<br />
<br />
if [ "${ACTION}" = "copy" ]; then<br />
if [ "$(mount | grep ${RAMDISKMP} 2> /dev/null)" ]; then<br />
rm -f "${MOZILLADIR}/${FIREFOXDIR}"<br />
cp -fa "${MOZILLADIR}/${PROFILEDIR}" "${RAMDISKMP}/"<br />
fi<br />
<br />
if [ "$(ls -ld ${RAMDISKMP}/${PROFILEDIR} 2> /dev/null)" ]; then<br />
rm -f "${MOZILLADIR}/${FIREFOXDIR}"<br />
ln -s "${RAMDISKMP}/${PROFILEDIR}/" \<br />
"${MOZILLADIR}/${FIREFOXDIR}"<br />
echo "ramdisk" > "$INFOFILE"<br />
else<br />
rm -f "${MOZILLADIR}/${FIREFOXDIR}"<br />
ln -s "${MOZILLADIR}/${PROFILEDIR}/" \<br />
"${MOZILLADIR}/${FIREFOXDIR}"<br />
echo "harddisk" > "$INFOFILE"<br />
fi<br />
fi<br />
<br />
if [ "${ACTION}" = "sync" ]; then<br />
LOCATION=$(cat "${INFOFILE}")<br />
if [ "${LOCATION}" = "ramdisk" ]; then<br />
rsync -aq --delete "${RAMDISKMP}/${PROFILEDIR}" "${MOZILLADIR}"<br />
fi<br />
fi<br />
<br />
Mittels eines Parameters wird die entsprechende Aktion ausgeführt. Wenn das Script mit dem Parameter „copy“ aufgerufen wird, prüft es, ob die Ramdisk gemountet ist, und kopiert dann das Profilverzeichnis in eben diese Ramdisk.<br />
<br />
Im zweiten Schritt wird dann geprüft, ob das Verzeichnis auf der Ramdisk vorhanden ist. Wenn ja, wird der Symlink dorthin gesetzt, wenn nein, wird der Symlink auf das Profilverzeichnis auf der Festplatte gesetzt.<br />
<br />
In beiden Fällen wird eine entsprechende Information in eine Informationsdatei geschrieben, die vor dem Synchronisieren überprüft wird.<br />
<br />
Das Synchronisieren wird mittels des Parameters „sync“ eingeleitet. Hier liest das Script die Informationsdatei ein, und synchronisiert mittels rsync das Festplattenverzeichnis mit dem Ramdiskverzeichnis.<br />
<br />
=== Verwendung ===<br />
Die Verwendung des Scripts gliedert sich in zwei Abschnitte. Zum Einen wird es beim Starten der X-Session verwendet, um das Firefox-Profilverzeichnis in die Ramdisk zu schreiben, zum Anderen wird über das Script auch die Synchronisierung – entweder einmalig beim Runterfahren, oder regelmäßig via Cronjob – vorgenommen.<br />
<br />
==== Erstmalig ====<br />
Da das Profilverzeichnis von Firefox nur einmalig in die Ramdisk geschrieben werden muss, reicht es, das Script mit dem entsprechenden Parameter einmalig beim starten von X auszuführen. Man kann den Aufruf zum Beispiel in die „.xinitrc“-Datei schreiben. Wenn man den Eintrag vor den Aufruf des Fenstermanagers setzt, kann man sich sicher sein, dass das Script abgearbeitet wurde, wenn der Fenstermanager geladen ist.<br />
<br />
. .scripts/fxramdisk copy<br />
[Aufruf des Fenstermanagers]<br />
<br />
In diesem Fall wurde das Script im home-Verzeichnis des Users unter „.scripts/fxramdisk“ abgelegt.<br />
<br />
Will man die Ramdisk nicht mehr verwenden, so unmountet man sie, und führt das Script einfach erneut mit dem copy-Parameter aus. Da die Ramdisk nun nicht mehr existiert, werden wird die Infodatei und der Symlink angepasst. Man sollte dies unter gar keinen Umständen machen, während Firefox noch geöffnet ist.<br />
<br />
Alternativ kann man das erstmalige Kopieren der Daten in die Ramdisk auch beim Systemstart vornehmen lassen. Man muss dann trotzdem so lange warten, bis die Daten kopiert wurden, allerdings kommt es dann beim Starten des Fenstermanagers zu keiner Verzögerung mehr durch das Kopieren der Daten in die Ramdisk. Hierzu erstellt oder bearbeitet man die Datei <code>/etc/rc.local</code> und definiert folgendes:<br />
<br />
#!/bin/bash<br />
<br />
. /etc/rc.conf<br />
. /etc/rc.d/functions<br />
<br />
stat_busy "Copying Firefox profiles to ramdisk"<br />
su username -l -c "/home/username/.scripts/fxramdisk copy"<br />
stat_done<br />
<br />
Hiermit wird, im Stil der anderen Ausgaben, eine Meldung über den Kopiervorgang der Firefox-Profildaten Daten in die Ramdisk ausgegeben, der Username muss entsprechend angepasst werden.<br />
<br />
==== Synchronisierung ====<br />
Die Synchronisation kann man zum Beispiel einmalig beim Runterfahren des Rechners vornehmen lassen. Dazu erstellt oder bearbeitet man die Datei <code>/et/rc.local.shutdown</code> und schreibt folgendes hinein:<br />
<br />
. /etc/rc.conf<br />
. /etc/rc.d/functions<br />
<br />
stat_busy "Synching Firefox ramdisk to HDD"<br />
su user -l -c "/home/user/.scripts/fxramdisk sync &>/dev/null"<br />
stat_done<br />
<br />
Dadurch wird beim Herunterfahren eine Meldung über das Synchronisieren der Verzeichnisse im selben Stil angezeigt, wie auch die anderen Meldungen beim herunterfahren angezeigt werden.<br />
<br />
Wem das zu unsicher ist, oder wer seinen Rechner nur selten herunterfährt, aber trotzdem die Daten aus der Ramdisk auf die Festplatte sichern möchte, kann sich auch einen Cronjob einrichten, der zum Beispiel alle 5 Minuten eine Synchronisation vornimmt.<br />
<br />
*/5 * * * * bash /home/user/.scripts/fxramdisk sync<br />
<br />
Das Script berücksichtigt dabei, ob die Ramdisk gemountet ist, oder nicht, wenn nach dem Mounten das Script mit dem „copy“-Parameter ausgeführt wurde. Wenn die Ramdisk nicht gemountet ist, oder die Informationsdatei falsch ist, macht der aufruf nichts.<br />
<br />
=== Wrapper ===<br />
Wenn man bei jedem Beenden der letzten Instanz von Firefox möchte, dass die Version auf der Fesplatte mit den Inhalten der Ramdisk abgeglichen wird, kann man sich auch ein Wrapper-Script bauen. Dieses Script ruft man dann statt Firefox auf.<br />
<br />
#!/bin/bash<br />
# Wrapper-Script for ramdisk/HDD sync using the ramdisk profiles script<br />
<br />
FIREFOXPATH="$(which firefox)"<br />
SCRIPTPATH="/home/user/.scripts/fxramdisk"<br />
<br />
"${FIREFOXPATH}" $@<br />
<br />
if [ -z "$(ps -U $USER | grep ' firefox$')" ] ; then<br />
"${SCRIPTPATH}" sync<br />
fi<br />
<br />
Dieses Script kann man nun statt Firefox ausführen, indem man es zum Beispiel unter <code>/home/user/.scripts/fxwrapper</code> speichert, und in der [[bashrc]] einen Alias erstellt.<br />
<br />
alias firefox="/home/user/.scripts/fxwrapper"<br />
<br />
Nachdem man sich neu eingeloggt, hat, wird nun bei Aufruf von <code>firefox</code> das Wrapperscript aufgerufen. Die Abarbeitung des Scripts pausiert, so lange Firefox läuft, und wird fortgesetzt, wenn die entsprechende Firefox-Instanz wieder beendet wird, dann wird überprüft, ob noch eine Firefox-Instanz läuft, wenn dies nicht der Fall ist, wird das Synchronisationsscript ausgeführt.<br />
<br />
== Siehe auch ==<br />
* [[Firefox]]<br />
* [[Ramdisk]]<br />
* [[rsync]]<br />
<br />
== Weblinks ==<br />
* [http://www.tuxradar.com/content/benchmarked-firefox-javascript-linux-and-windows-and-its-not-pretty Firefox-Javascript-Benchmark] {{sprache|en}}<br />
* [http://www.linuxfocus.org/Deutsch/November1999/article124.html LinuxFocus: „Wie man eine Ramdisk unter Linux benutzt“] {{sprache|de}}<br />
<br />
[[Kategorie:Browser]]<br />
[[Kategorie:Scripte]]</div>PSubhttps://wiki.archlinux.de/index.php?title=Artikelstil&diff=10736Artikelstil2010-09-06T21:25:36Z<p>PSub: /* Installation */ Wegen https://bbs.archlinux.de/viewtopic.php?id=17347</p>
<hr />
<div>{{righttoc}}<br />
Diese Seite stellt eine Empfehlung für den Stil von Wiki-Artikeln dar. Diese Seite ist nicht verbindlich, sondern zeigt auf, was man beim Schreiben eines Wiki-Artikels berücksichtigen sollte.<br />
<br />
== Struktur ==<br />
Zum Strukturieren eines Artikels verwendet man Überschriften. Diese Überschriften sollten so wenig wie möglich, aber so tief wie nötig verschachtelt werden. Im Zweifelsfall sollte man die Überschrift einfach weg lassen. Man sollte darauf achten, nicht mehr als drei Ebenen tief zu verschachteln. Besonders komplexe Artikel sollte man besser auf mehrere Einzelartikel im selben Artikel-Namensraum aufteilen.<br />
<br />
Die erste Überschrift wird beim Erstellen der Artikel weg gelassen, da sie anhand des Artikel-Seitennamens von der Wiki-Software selbständig erstellt wird. Wenn man eine Überschrift erstellt, fängt man mit der zweiten Ebene an. Überschriften werden direkt über den ersten Absatz und mit einer zeile abstand zum vorherigen Absatz gesetzt.<br />
<br />
[…]<br />
Letzte Zeile des vorherigen Absatzes.<br />
<br />
== Überschrift ==<br />
Hier folgt der Inhalt zu dieser Überschrift<br />
[…]<br />
<br />
Hat man in einem Artikel mehr als fünf bis zehn Überschriften, so sollte man das Inhaltsverzeichnis an die Seite verschieben, da sonst nach dem einleitenden Absatz und dem eigentlichen Inhalt des Artikels durch das Inhaltsverzeichnis ein sehr großer, unschöner Zwischenraum entstehen würde. Zum Ausrichten den Inhaltsverzeichnisses können die Vorlage-Tags <code><nowiki>{{righttoc}}</nowiki></code> und <code><nowiki>{{lefttoc}}</nowiki></code> verwendet werden. <code><nowiki>{{righttoc}}</nowiki></code> ist vorzuziehen.<br />
<br />
Umzuwandelde Befehls-Zeilen werden mit einem Leerzeichen jeweils vor und nach der Zeile abgesetzt, ebenso Aufzählungen.<br />
<br />
… Text …<br />
<br />
befehlszeile<br />
<br />
… Text …<br />
<br />
Um den Lesefluss nicht zu beeinflussen, sollte ein Abschnittsende nicht „offen“ sein, nach einem Bild, einer Liste, einer Befehlszeile, o.Ä. noch mindestens ein Absatz kommen, der über mindestens eine Zeile umbricht.<br />
<br />
== Inhalte ==<br />
Da jeder Artikel speziell auf die Anforderungen des beschriebenen Programms oder des Themas zugeschnitten werden sollte, kann man sich nur grob an eine Struktur halten. Diese sollte jedoch logisch aufgebaut sein.<br />
<br />
* Einleitender Text<br />
* Installation/Beschaffung<br />
* Grundkonfiguration oder -bedienung<br />
* Erweiterte Möglichkeiten oder Bedienung<br />
* Wiki-Links, Web-Links<br />
* evtl. Todo für den Artikel<br />
<br />
=== Einleitender Text ===<br />
Über den Einleitenden Text wird das Artikel-Thema kurz vorgestellt. Dieser Text sollte nicht länger als zwei bis drei Absätze sein, und nicht auf die Konfiguration oder die Beschaffungsmöglichkeiten eingehen, sondern lediglich umschreiben, welches Problem/Programm/Thema dem Wiki-Artikel zu Grunde liegt.<br />
<br />
Handelt es sich um ein Programm, das beschrieben wird, bietet sich im einleitenden Text an, ein/das Alleinstellungsmerkmal dieses Programms zu nennen, um einem potentiellen Nutzer zu verdeutlichen, welche Vorteile ihm durch die Verwendung des Programms entstehen.<br />
<br />
Handelt es sich um ein Spezialprogramm, für dessen Verwendung gewisse Voraussetzungen erfüllt sein müssen, oder um ein Thema, zu dem tieferes Wissen von Nöten ist, kann man dies im einleitenden Text ebenfalls kurz umreißen. Allerdings sollte man sich auch hier mit der Anzahl der Absätze zurückhalten.<br />
<br />
=== Installation ===<br />
Der Abschnitt zur Installation sollte – wenn es sich um eine Standardinstallation handelt – benennen, aus welchem Repository das Programm bezogen wird, und wie es installiert wird. Wenn es große Programme als Abhängigkeiten hat, sollten diese benannt werden.<br />
<br />
Das Programm <nowiki>''Programmname''</nowiki> ist über das Paket <nowiki>''paketname''</nowiki> aus dem<br />
„<nowiki>[[Pacman#Repositorien_und_Spiegel-Server|extra]]</nowiki>“-Repository installierbar.<br />
<br />
pacman -S dasprogram<br />
<br />
Da es sich bei Programmname um ein Qt-Programm handelt, wird Qt nebst<br />
Abhängigkeiten ebenfalls installiert, wenn nicht bereits vorhanden.<br />
<br />
Hier wird das Programm „programmname“ aus „extra“ installiert. Das Programm ist als „dasprogramm“ paketiert und besitzt als Abhängigkeit die Qt-Grafikbibliothek.<br />
<br />
Sollte es sich um ein Paket aus dem AUR handeln, gibt man entsprechend den Pfad zum Programm im AUR an, und verweist darauf, dass das Programm aus dem AUR installiert werden muss. Der Hinweis auf eventuelle, große Abhängigkeiten sollte aber auch bei einem Programm aus dem AUR gegeben werden.<br />
<br />
Das Programm <nowiki>[http://aur.archlinux.org/packages.php?ID=00000 Programmname]</nowiki><br />
ist im <nowiki>[[AUR]]</nowiki> verfügbar, und muss aus diesem installiert werden.<br />
<br />
[Abhängigkeitshinweis]<br />
<br />
Müssen für das vollständige Funktionieren nach der Installation des Programms noch Schritte ausgeführt werden, so sind diese ebenfalls anzugeben. Bei [[Daemons]] sind hier zum Beispiel das Hinzufügen des Daemons in das DAEMONS-Array und das Starten des Daemons mittels <code>/etc/rc.d/daemon start</code> zu nennen.<br />
<br />
=== Benutzung ===<br />
Bei einem Artikel zu einem Programm sollte zum Einen die Grundkonfiguration erläutert werden, und zum anderen ein Beispiel mit einer etwas aufsührlicheren Konfiguration dargestellt werden. Handelt es sich um ein Programm, das ohne Konfiguration nicht lauffähig ist, so ist dieser Punkt im Artikel auf jeden Fall so ausführlich zu beschreiben, dass danach eine lauffähige Konfiguration vorhanden ist.<br />
<br />
Wenn es sich um ein Programm handelt, dass keiner Konfiguration bedarf, so ist dessen Verwendung zu beschreiben, und zwar derart, dass einmal die Standard-Verwendung beschrieben ist, und einmal eine fortgeschrittenere Verwendung dargelegt wird.<br />
<br />
=== Todo und Links ===<br />
Nach dem eigentlichen Artikel sollte man noch, sofern vorhanden, auf weitere Wiki-Artikel verweisen. Zudem sollte als Weblink zumindest die Homepage des Programmierers oder des Programms angegeben werden. Bei Links zu anderen Seiten sind Sprach-Tags zu verwenden.<br />
<br />
== Siehe auch ==<br />
* <nowiki>[[Artikel 1]]</nowiki><br />
* <nowiki>[[Artikel 2]]</nowiki><br />
<br />
== Weblinks ==<br />
* <nowiki>[http://example.com/deutsch.php Homepage von Programm] {{sprache|de}}</nowiki><br />
* <nowiki>[http://example.com/englisch.php Weitere Informationen] {{sprache|en}}</nowiki><br />
<br />
Sollte der Artikel unvollständig sein, oder fehlen noch wichtige Angaben, so ist dies vor dem eigentlichen Artikel mittels der Vorlage <code><nowiki>{{unvollständig}}</nowiki></code> zu markieren. Diese Vorlage erstellt einen Link auf eine Überschrift „Todo“ und verweist auf den Text. Wenn man einen unvollständigen Artikel veröffentlicht sollte man also entweder im Text darauf hinweisen, oder nach dem Artikelinhalt eine Überschrift „Todo“ setzen, unter der man auf die Unvollständigkeit eingeht, und Dinge benennt, die noch getan werden müssen, damit der Artikel vollständig ist.<br />
<br />
== Stil ==<br />
Ein einheitlicher Stil ist in einer technischen Dokumentation – wie dieses Wiki eine ist – von entscheidendem Vorteil. Wenn alle Artikel identisch stukturiert sind, muss man sich nicht bei jedem Artikel aufs Neue orientieren, sondern kann sich direkt auf den Inhalt des Artikels kozentrieren.<br />
<br />
=== Ansprache ===<br />
Es hat sich bei technischen Dokumentationen der neutrale Aktivstil bewährt. Dies bedeutet, statt „wir“ oder „du“ oder eine passiven Schreibweise wird „man“ verwendet.<br />
<br />
* Inklusivstil: „Wir installieren das Programm indem wir …“<br />
* intimer Exklusivstil: „Du installierst das Programm indem du …“<br />
* neutraler Passivstil: „Das Programm wird durch … installiert.“<br />
* neutraler Aktivstil: „Man installiert das Programm indem man …“<br />
<br />
Die beiden neutralen Stile kann man auch gleichzeitig im selben Artikel verwenden, ohne einen Stilbruch herbeizuführen.<br />
<br />
=== Syntax ===<br />
Programme, die in Artikeln erwähnt werden, sollten (nur!) bei der ersten Nennung mit der entsprechenden Wiki-Seite oder der offiziellen Homepage verknüpft werden. Alle weiteren Erwähnungen des Programms werden nicht explizit hevorgehoben.<br />
<br />
Dateinamen hebt man hervor, indem man sie in Anführungszeichen, oder in <nowiki><code></nowiki>-Tags setzt. Sollte zu einer Datei ein Wiki-Artikel exisitieren, so verlinkt man den Dateinamen bei erster Nennung mit dem entsprechenden Artikel, und lässt die Anführungszeichen weg.<br />
<br />
Einzugebende Befehle kann man, wenn es sich nur um einen einzigen Befehl ohne Parameter handelt, direkt im Text notieren, indem man ihn in &lt;code>-Tags einschließt. Befehlsketten oder Befehle mit Parametern rückt man ein, so dass sie von der Wiki-Software automatisch in eine Befehlszeile umgewandelt werden.<br />
<br />
Bei der Notation von Befehlen sollte man das Eingabeprompt weg lassen. Wenn es relevant ist, kann man zwischen root und user unterscheiden, ansonsten soll sich aus dem Kontext ergeben, wie der Befehl ausgeführt werden muss.<br />
<br />
$ dies -als --user<br />
$ su<br />
Passwort:<br />
# dies --als=root<br />
# exit<br />
$ <br />
<br />
Menüpunkte gibt man direkt im Text, umschlossen von Anführungszeichen ein, und verwendet Pfeile, um die Menü-Ebenen zu unterscheiden. Nachfolgendes Beispiel beschreibt, wie man in Firefox einstellt, dass Websites keine eigenen Schriften verwenden dürfen.<br />
<br />
Im Firefox-Hauptfenster geht man auf „Bearbeiten → Einstellungen → Inhalt“,<br />
und klickt bei „Schriftarten & Farben“ auf „Erweitert“. In dem erscheinenden<br />
Dialogfenster entfernt man den Haken vor „Seiten das Verwenden von …“<br />
<br />
Sofern ohne Mehrdeutigkeit möglich, kann man lange Optionsbezeichnungen sinnvoll kürzen. Beim „Pfad“ zu der Option wird nicht zwischen Menüs, Untermenüs und Tabs unterschieden.<br />
<br />
=== Grammatik und Orthographie ===<br />
Niemand ist perfekt, und niemandem wird der Kopf abgerissen, wenn er nicht zu 100 Prozent perfektes Deutsch schreibt. Schließlich sind wir alle nur Menschen, dennoch sollte man darauf achten, nicht „wie Kraut und Rüben“ zu schreiben, und zumindest im Ansatz erkennen lassen, dass man beim Schreiben des Artikels über seine Worte nachgedacht hat.<br />
<br />
Dies gilt ebenso für die Rechtschreibung. Alle gängigen Textver- und -bearbeitungprogramme haben eingebaute Rechtschreibprüfungen, auch viele Browser selbst unterstützen dies. Wirklich grobe Schnitzer sind also auf jeden Fall vermeidbar. Bei typischen „Tipp-Rechtschreib-Schwächen“ (Verb groß, Substantiv klein; „di eman“ statt „die man“ – und ähnliches), die man eher zu den Tippfehlern zählen kann, wird aber wohl niemand etwas sagen. Stattdessen sollte man solche Fehler einfach verbessern.<br />
<br />
=== Hervorhebungen ===<br />
Mit Hervorhebungen im Text muss sehr sparsam umgegangen werden, da sie zwar den Textsinn verdeutlichen können, aber bei zu starker Verwendung den Lesefluss stören. Sachlicher Stil zeichnet sich dadurch aus, dass er ohne spezielle Hervorhebungen verständlich ist.<br />
<br />
Will man dennoch etwas hervorheben, so ist hierfür die Kursivschreibung (<nowiki>''kursiv''</nowiki>) der Fettschreibung (<nowiki>'''fett'''</nowiki>) vorzuziehen. Unterstreichungen sollten auf jeden Fall vermieden werden.<br />
<br />
== Referenzen und Vermutungen ==<br />
Bei einer technischen Dokumentation, wie einem Wiki, sollte man vermeiden, sich beim Schreiben auf sich selbst zu beziehen. Wenn eine solche Selbstreferenz nicht vermeidbar ist, so sollte man sie umschreiben („Der Autor hat …“ statt „Ich habe …“).<br />
<br />
Eben so wie Referenzen sollte man auch das Anstellen von Vermutungen unterlassen und besser Beschreibungen verwenden. Wenn man einen Artikel schreibt, so sollte man das, was man schreibt, vorher oder während des Schreibens überprüfen.<br />
<br />
* Vermutung: „Durch einen Klick auf ‚Run!‘ sollte die Bearbeitung der Daten starten.“<br />
* Beschreibung: „Durch einen Klick auf ‚Run!‘ startet die Bearbeitung der Daten.“<br />
<br />
Wenn man eine Aktion ausführt, und sie führt zu einem Resultat, dann schreibt man dies so auch in den Wiki-Artikel. Wenn beim Testen eine Aktion nicht wie erwartet funktioniert, sollte man zuerst ausschließen, ob man beim Testen einen Fehler gemacht hat (ggf. im Wiki/Forum des betroffenen Programms recherchieren), bevor man es in den Artikel schreibt.<br />
<br />
== Zeichen ==<br />
Bei Auslassung von Inhalten werden von eckigen Klammern umschlossene Auslassungspunkte verwendet. Allerdings nur, wenn sich die Auslassung zwischen Inhalten befindet. Wenn sich die Auslassung vor oder nach Inhalten befindet, werden die Klammern weg gelassen. Wenn man die Auslassung erklärt, wird diese Erklärung an jeder Stelle von eckigen Klammern umschlossen<br />
<br />
… es fehlen […] Inhalte, die irrelevant sind …<br />
<br />
Es wird eine Dateiliste ausgegeben:<br />
<br />
- Datei 1<br />
- Datei 2<br />
- Datei 3<br />
[weitere Dateien]<br />
<br />
Wenn Anführungszeichen verwendet werden, sollte man den normalen deutschen Anführungszeichen den Vorrang geben.<br />
<br />
„Dieser Text ‚steht in‘ Anführungszeichen“<br />
<br />
Die Kodierung der [http://de.wikipedia.org/wiki/%E2%80%9E#Kodierung Anführungszeichen] und der [http://de.wikipedia.org/wiki/%E2%80%A6#Kodierung Auslassungspunkte] und der für Menüpfade empfohlenen [http://de.wikipedia.org/wiki/Unicode-Block_Pfeile Pfeile] sind in der Wikipedia nachzulesen, und man kann sie sich zur leichteren Verwendung auch mittels [[Xmodmap]] auf beliebige Tasten(kombinationen) legen.<br />
<br />
== Siehe auch ==<br />
* [[Gute Beiträge schreiben]]<br />
* [[Neue Beiträge erstellen]]<br />
<br />
[[Kategorie:Hilfe]]</div>PSubhttps://wiki.archlinux.de/index.php?title=FVWM&diff=10734FVWM2010-09-06T21:24:47Z<p>PSub: /* Installation */ Wegen https://bbs.archlinux.de/viewtopic.php?id=17347</p>
<hr />
<div>{{righttoc}} <br />
[[Bild:FVWM.png|thumb|200px|FVWM in einer Simplen Konfiguration]]<br />
Fvwm ist ein freier, ICCCM-konformer und modularer Fenstermanager für das [[X|X Window System]]. <br />
Auf Grund seiner hohen Konfigurierbarkeit und des geringen Ressourcenverbrauches wird er auch heute noch häufig eingesetzt. <br />
<br />
== Installation ==<br />
FVWM kann aus dem '''extra'''-Repository installiert werden. <br />
<br />
pacman -S fvwm<br />
<br />
Oder falls man eine aktuellere Entwicklerversion benutzen möchte:<br />
<br />
pacman -S fvwm-devel <br />
<br />
Damit FVWM beim Start von X gleich mitgestartet wird, und man es sofort verwenden kann, bedarf es eines Eintrages in der Datei [[Xinitrc|„~/.xinitrc“]]. Es ist diese Datei also in einem Texteditor zu öffnen, und dort folgendes am Ende hinzuzufügen. <br />
<br />
exec ck-launch-session fvwm <br />
<br />
Sollte die Datei nicht existieren, so ist sie anzulegen. <br />
<br />
cp /etc/skel/.xinitrc ~/<br />
<br />
== Konfiguration == <br />
Da die Konfiguration von FVWM sehr Umfangreich ist, sei an dieser Stelle auf eine sehr gute Original-Dokumentation verwiesen. Diese Anleitung ist speziell für Anfänger gedacht und kann aber auch als Nachschlagewerk angesehen werden.<br />
<br />
* http://www.zensites.net/fvwm/guide/<br />
<br />
== FVWM-Crystal == <br />
[[Bild:FVWM-Crystal.jpg|thumb|200px|FVWM-Crystal Default]]<br />
FVWM-Crystal macht aus dem Fenstermanager FVWM eine [[:Kategorie:Desktopumgebung|Desktopumgebung]] und ergänzt den Windowmanager durch ein Panel, die Möglichkeit Hintergrundbilder zu setzten, und vieles mehr. Die Konfiguration und das Inbetriebnehmen sind mit der Konfiguration und Inbetriebnahme von FVWM identisch.<br />
<br />
=== Installation === <br />
FVWM-Crystal kann wie alle Versionen von FVWM aus '''extra''' installiert werden: <br />
<br />
pacman -S fvwm-crystal<br />
<br />
== Siehe auch ==<br />
* [[Hintergrundbild anpassen]]<br />
* [[PCManFM]]<br />
* [[:Kategorie:Panels|Panels für diverse Fenstermanager]]<br />
<br />
== Weblinks == <br />
* http://www.fvwm.org/ <br />
* http://fvwmwiki.bu-web.de/FrontPage <br />
* http://www.fvwm-crystal.org/ <br />
* http://www.oreilly.de/german/freebooks/rlinux3ger/ch113.html<br />
<br />
[[Kategorie:Fenstermanager]]</div>PSubhttps://wiki.archlinux.de/index.php?title=HP_Compaq_6510b&diff=10733HP Compaq 6510b2010-09-06T21:24:27Z<p>PSub: /* X */ Wegen https://bbs.archlinux.de/viewtopic.php?id=17347</p>
<hr />
<div>== Installation von Archlinux ==<br />
Für die Installation von Archlinux ist die Verwendung der aktuellsten [http://www.archlinux.de/?page=GetFileFromMirror;file=iso/2009.02/archlinux-2009.02-ftp-x86_64.iso ftp.iso] in der 64 Bit (x86_64) Version zu empfehlen. Es gibt derzeit faktisch keinerlei Gründe mehr, die gegen eine Installation dieser Version sprechen dürften. Bei der Installation selbst ist im Grunde nichts weiter zu beachten, als dass, sofern die kabellose Netzwerkverbindung zunächst nicht zum Verbindungsaufbau verwendet wird, lediglich die Pakete der Base Rubrik ausgewählt werden müssen. Bei Bedarf können im Nachhinein noch weitere Pakete der anderen Rubriken zusätzlich installiert werden.<br />
<br />
== Hardwarekomponenten ==<br />
Nach der erfolgreichen Einrichtung des Grundsystems gilt es zunächst, die jeweiligen Hardwarekomponenten einzurichten beziehungsweise anzupassen.<br />
<br />
=== CPU ===<br />
Der verbaute Intel® Core™2 Duo Prozessor wird automatisch korrekt erkannt, so dass es hier in der Regel keiner weiteren Anpassung bedarf. Bei manchen Modellen der 6510b Reihe kommt es jedoch zu Lüftersteuerungsproblemen, d.h. der prozessoreigene Lüfter läuft aufgrund der Taktstufen der CPU sehr unreguliert und meist auf der höchsten Stufe. Dem kann durch zweierlei entgegengewirkt werden. Einerseits schafft bereits die Installation und Einrichtung des [[Cpufrequtils]] Pakets einen regulierteren Betrieb der CPU, andererseits kann der Prozessor zusätzlich [http://wiki.archlinux.de/title/Processor_Hardware_Control undervoltet] werden, so dass sich der Stromverbrauch und damit die Abwärme reduziert. Ein netter Nebeneffekt des Ganzen, die Akkulaufzeit erhöht sich signifikant.<br />
<br />
=== Grafik ===<br />
Der verbaute mobile Onboard Grafikchip ist schnell installiert. Eine zusätzliche Installation des proprietären Treibers sollte bereits vollständige Hardwareerkennung garantieren.<br />
<br />
pacman -S xf86-video-intel<br />
<br />
=== Wlan ===<br />
Die integrierte Netzwerkkarte wird wie der Prozessor ebenfalls automatisch erkannt und versorgt. Im Gegensatz zur diesem ist allerdings eine Firmware für die Nutzung erforderlich. Diese kann ohne weitere Erfordernisse über das Core Repositorium bezogen und installiert werden.<br />
<br />
pacman -S iwlwifi-3945-ucode<br />
<br />
Nun dürfte es möglich sein, sich per drahtloser Netzwerkverbindung mit einem ESSID seiner Wahl zu verbinden. Empfehlenswert ist darüberhinaus die Verwendung eines Networkmanagers wie [[Wicd]], welcher einem eine Vielzahl an nötigen Einstellungen abnimmt und gerade für Anfänger eine leicht zu bediende Möglichkeit darstellt.<br />
<br />
=== Sound ===<br />
Die Soundkarte wird unter Linux überweise mittels Alsa konfiguriert. Hierzu muss Alsa zunächst installiert werden, bevor die weiteren Einstellungen vorgenommen werden können.<br />
<br />
pacman -S alsa-lib alsa-utils<br />
<br />
Nun kann man für jeden Benutzer die Soundeinstellungen der einzelen Kanale über den Befehl ''alsamixer'' individuell gestalten. Empfehlenswerterweise sollten alle Kanäle von der Lautstärke im grünen Bereich liegen und über den Buchstaben m der Tastatur aktiviert werden.<br />
Schlussendlich müssen die Einstellungen über den Befehl ''alsactl store'' als Root dauerhaft gespeichert werden, der Daemon ''audio'' der Daemonreihe in der [[rc.conf]] und der jeweilige Benutzer der Gruppe audio hinzugefügt werden.<br />
<br />
=== Tastatur und Multimediatasten ===<br />
Mittlerweile wird das gesamte Hotplugging standardmäßig von [[evdev]] übernommen. Dadurch hat sich ebenfalls etwas in der Form der Konfiguration der Tastatur geändert. Wurde diese früher über die zentrale xorg.conf verwaltet, ist es nun ratsam, sie über eine keymap zu administrieren. Hierzu reicht es aus, die Beispieldatei zu kopieren und das Layout anzupassen.<br />
<br />
cp /usr/share/hal/fdi/policy/10osvendor/10-keymap.fdi /etc/hal/fdi/policy/10-keymap.fdi<br />
nano /etc/hal/fdi/policy/10-keymap.fdi<br />
<br />
Diese Zeile auf das gewünschte Tastaturlayout abändern, hier für ein deutsches Layout:<br />
<br />
<merge key="input.xkb.layout" type="string">''de''</merge><br />
<br />
Nicht zu vergessen ist das Hinzufügen des ''hal'' Daemons in die rc.conf, um die Tastatur nutzen zu können.<br />
<br />
Das HP Compaq 6510b Modell bietet weiterhin oberhalb der Tastatur spezielle Tasten, mit denen zusätzliche Funktionen verknüpft sind. Normalerweise sollten dies sein:<br />
<br />
* Aufruf der Hilfe | Allgemeine Informationen über das installierte System<br />
* Deaktivierung bzw. Aktivierung der drahtlosen Netzwerkverbindung<br />
* Aufruf der Präsentationssoftware | üblicherweise unter Windows MS Power Point<br />
* Stummschaltung bzw. Aktivierung des Hauptaudiokanal<br />
* Schrittweise Erhöhung bzw. Verringerung der Lautstärke des Hauptaudiokanals<br />
<br />
Das Problem dieser Tasten besteht in deren Unterstützung durch die jeweiligen verwendeteten Desktopumgebungen bzw. Windowmanager. So bieten [[Kde]] und [[Gnome]] beispielsweise eine gute bis hervorragende Unterstützung, vor allem jedoch schmalbrüstigere Alternativen wie [[Openbox]] bieten standardmäßig keinerlei Unterstützung. Eine einfache und doch gut funktionierende Möglichkeit bietet das Programm [http://wiki.archlinux.de/title/Hotkeys#Anwendungen_in_X_starten xbindkeys]. Gilt es beispielsweise die Soundfunktionen nutzbar zu machen, so findet man über den Befehl ''xev'' zunächst die interne Namensbezeichnung der Taste heraus, die für die jeweilige Funktion zuständig ist. Anschließend nimmt man dies in die Konfigurationsdatei unter ''~/.xbindkeysrc'' auf.<br />
<br />
"amixer set PCM toggle" # Stummschaltung bzw. Aktivierung des Hauptaudiokanal<br />
c:121 # hierfür zuständige Taste mit deren internen Bezeichnung<br />
"amixer set PCM 2-" # Schrittweise Verringerung der Lautstärke des Hauptaudiokanals<br />
c:122 # hierfür zuständige Taste mit deren internen Bezeichnung<br />
"amixer set PCM 2+" # Schrittweise Erhöhung der Lautstärke des Hauptaudiokanals<br />
c:123 # hierfür zuständige Taste mit deren internen Bezeichnung<br />
<br />
So kann nun mit allen weiteren Tasten verfahren werden, bis das gewünschte Ergebnis erreicht ist.<br />
<br />
=== Touchpad ===<br />
Gleichsam wie die Tastatur verwendet auch das Touchpad für die Konfiguration mittlerweile [[evdev]]. Es ist also lediglich nötig die Beispieldatei herauszukopieren und entsprechend abzuändern.<br />
<br />
cp /usr/share/hal/fdi/policy/10osvendor/11-x11-synaptics.fdi /etc/hal/fdi/policy/11-x11-synaptics.fdi<br />
<br />
<?xml version="1.0" encoding="ISO-8859-1"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.capabilities" contains="input.touchpad"><br />
<match key="info.product" contains="Synaptics TouchPad"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
<merge key="input.x11_options.Device" type="string">/dev/input/mouse0</merge><br />
<merge key="input.x11_options.LeftEdge" type="string">120</merge><br />
<merge key="input.x11_options.LeftEdge" type="string">1700</merge><br />
<merge key="input.x11_options.RightEdge" type="string">5300</merge><br />
<merge key="input.x11_options.TopEdge" type="string">1700</merge><br />
<merge key="input.x11_options.BottomEdge" type="string">4200</merge><br />
<merge key="input.x11_options.FingerLow" type="string">25</merge><br />
<merge key="input.x11_options.FingerHigh" type="string">30</merge><br />
<merge key="input.x11_options.MaxTapTime" type="string">180</merge><br />
<merge key="input.x11_options.MaxTapMove" type="string">220</merge><br />
<merge key="input.x11_options.VertScrollDelta" type="string">100</merge><br />
<merge key="input.x11_options.MinSpeed" type="string">0.10</merge><br />
<merge key="input.x11_options.MaxSpeed" type="string">0.70</merge><br />
<merge key="input.x11_options.AccelFactor" type="string">0.00150</merge><br />
<merge key="input.x11_options.SHMConfig" type="string">on</merge><br />
<merge key="input.x11_options.VertTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.VertEdgeScroll" type="string">1</merge><br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">1</merge><br />
<merge key="input.x11_options.TapButton1" type="string">1</merge><br />
<merge key="input.x11_options.TapButton2" type="string">2</merge><br />
<merge key="input.x11_options.TapButton3" type="string">3</merge><br />
</match><br />
<match key="info.product" contains="AlpsPS/2 ALPS"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<match key="info.product" contains="appletouch"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<match key="info.product" contains="bcm5974"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
Nun noch ''hal'' als Daemon in die [[rc.conf]] aufnehmen und den notwendigen Treiber installieren und das Touchpad sollte reibungslos funktionieren.<br />
<br />
pacman -S xf86-input-synaptics<br />
<br />
== Installation weiterer Software ==<br />
Nachdem nun die wichtigsten Hardwarekomponenten reibungslos ihren Dienst vollrichten sollten, geht es nun an die Installation weiterer essentieller Pakete, mit dem Ziel exemplarisch das System eines durschnittlichen Archnutzers abzubilden.<br />
<br />
=== X ===<br />
Praktisch unerlässlich für eine Nutzung eines grafischen Systems ist die Einrichtung eines XServers. Hierzu reicht es meist schon aus, sämtliche Pakete für xorg zu installieren.<br />
<br />
pacman -S xorg<br />
<br />
=== Desktopumgebung | Windowmanager ===<br />
Ein installierter XServer bildet die Basis für die gängisten Desktopumgebungen und Windowmanager. Zu was hier geraten werden sollte ist reine Glaubenssache und führt immer wieder zu heftigen Diskussionen. Die einen beführten komplette Arbeitsumgebungen wie Gnome, Kde, Xfce oder das deutlich leichtere LXDE, also die sogenannten Desktopumgebungen, die anderen favorisieren lediglich einen Windowmanager, um welchen nach und nach die Arbeitsumgebung individuell gestaltet wird. Letztere lassen sich ihrerseits in die Konzepte Tiling (diesem folgen bsp. [[Awesome]], [[wmii]] oder [[Musca]]) und Floating (hier sind maßgeblich [[Openbox]], [[Fluxbox]] und [[Compiz-fusion]] zu nennen) einteilen.<br />
<br />
=== weitere nützliche Pakete ===<br />
==== Conky ==== <br />
Hier eine beispielhafte .conkyrc.<br />
<br />
use_xft yes<br />
xftfont HandelGotDLig:size=9<br />
xftalpha 0.8<br />
text_buffer_size 2048<br />
update_interval 1<br />
total_run_times 0<br />
own_window yes<br />
own_window_transparent yes<br />
own_window_type normal<br />
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager<br />
double_buffer yes<br />
minimum_size 1280<br />
draw_shades no<br />
draw_outline no<br />
draw_borders no<br />
stippled_borders 0<br />
border_margin 5<br />
border_width 1<br />
default_color white<br />
default_shade_color black<br />
default_outline_color black<br />
gap_x 0<br />
gap_y 0 <br />
no_buffers yes<br />
uppercase no<br />
cpu_avg_samples 1<br />
net_avg_samples 1<br />
override_utf8_locale yes <br />
use_spacer none<br />
TEXT<br />
${alignc} ${sysname} ${kernel} | ${execi 60 /home/syvo/.scripts/updates.pl} | ${time %a %d. %b %k:%M} | Karlsruhe ${execi 300 /home/robert/.scripts/weather.sh "EUR|DE|GM001|KARLSRUHE"} | CPU ${cpu}% Ram ${memperc}% Wlan ${wireless_link_qual wlan0}% Batterie ${battery_percent C23B}% Root ${fs_used_perc /}% Home ${fs_used_perc /home/robert}% ${if_mounted /media/disk} Media ${fs_used_perc /media/disk}% $endif<br />
<br />
== Weitere Tipps und Tricks ==<br />
<br />
[[Kategorie:Notebook]]</div>PSubhttps://wiki.archlinux.de/index.php?title=Numlock&diff=10732Numlock2010-09-06T21:23:54Z<p>PSub: /* Vorbereitungen */ Wegen https://bbs.archlinux.de/viewtopic.php?id=17347</p>
<hr />
<div>{{righttoc}}<br />
Auf Tastaturen mit separatem Nummerfeld gibt es eine Taste, mit der man zwischen den über das Nummernfeld eingebbaren Zahlen, sowie den Alternativ-Belegungen der dort befindlichen Tasten hin-und-her schalten kann. Diese Taste wird mit ''Numlock'' bezeichnet, und findet sich üblicher Weise oben links auf dem rechtsseitig angeordneten Nummernfeld.<br />
<br />
Das Problem ist allerdings, dass das Nummernfeld standardmäßig nur die Alternativbelegung bereitstellt, so dass man Numlock jedes mal erst einschalten muss, wenn man es verwenden will. Dieses ständige Einschalten-Müssen kann man aber auch automatisieren.<br />
<br />
== Beim Start automatisch ==<br />
Wenn man an seinem Computer mit nur einer Tastatur arbeitet (was ja nicht unüblich ist …) will man Numlock eventuell automatisch aktiviert haben, so dass man direkt nach dem Systemstart auf das Nummernfeld zugreifen kann, ohne, dass man es erst aktivieren muss.<br />
<br />
=== Virtuelle Konsolen ===<br />
Um Numlock an den virtuellen Konsolen automatisch zu aktivieren, bedient man sich des Standard-Programms „setleds“, sowie eines Eintrages in der Datei „/etc/rc.local“. Diese Datei wird nach jedem standardmäßigem Systemstart ausgeführt und aktiviert somit Numlock.<br />
<br />
for tty in /dev/tty*; do<br />
/usr/bin/setleds -D +num < "$tty"<br />
done<br />
<br />
Diese for-Schleife durchläuft alle verfügbaren virtuellen Konsolen in „/dev“, wo diese als Gerätedateien verzeichnet sind. Je Konsole wird dann „setleds“ ausgeführt und mittels Umleitung an die jeweilige virtuelle Konsole gesendet.<br />
<br />
Will man nur eine Konsole so behandeln, reicht ein einfaches …<br />
<br />
/usr/bin/setleds -D +num < /dev/ttyX<br />
<br />
… wobei „X“ durch die jeweilige Konsolennummer ersetzt werden muss. „/dev/tty1“ ist zum Beispiel die erste Konsole, die man nach einem standardmäßigen Bootvorgang vor sich hat.<br />
<br />
=== X-Server ===<br />
Die Einstellungen per „setleds“ gelten nur für die virtuellen Konsolen, nicht aber für den X-Server. Hier bedarf es eines Zusatzprogramms. Zum Beispiel „numlockx“, das genau für diesen einen Zweck geschaffen wurde, Numlock an und aus zu schalten.<br />
<br />
pacman -S numlockx<br />
<br />
Das Programm verfügt über drei Parameter: „on“, „off“ und „toggle“. „on“ aktiviert Numlock, „off“ deaktivert es, und „toggle“ schaltet in den jeweils anderen Modus. Wenn Numlock aktiviert ist, schaltet „toggle“ es aus, wenn Numlock deaktiviert ist, schaltet „toggle“ es ein.<br />
<br />
numlockx on<br />
<br />
Dies aktiviert Numlock unter [[X]]. Allerdings nur, wenn es auch unter X aufgerufen wurde. Wenn es nicht unter X aufgerufen wurde, gibt es lediglich eine Fehlermeldung, sofern man nicht das ''Display'' angegeben hat.<br />
<br />
==== Login-Manager ====<br />
Den Befehl „numlockx on“ kann man natürlich auch in die Konfigurationsdateien des verwendeten Login-Managers schreiben. Bei [[KDM]], dem [[Login-Manager]] von [[KDE]], ist dies die Datei „/usr/share/config/kdm/Xsetup“.<br />
<br />
Unter [[GDM]] wird die Anweisung in der Datei „/etc/gdm/Init/Default“ definiert. Dort wird sie gemäß den GDM-Vorgaben eingetragen und wird von nun an bei jedem GDM-Start ausgeführt, und Numlock damit eingeschaltet.<br />
<br />
Um die Anweisung in [[Login-Manager#SLiM|SLiM]] zu definieren, muss man die Datei „/etc/slim.conf“ bearbeiten, und die Anweisung gemäß der Vorgaben in die Datei schreiben.<br />
<br />
==== Autostart ====<br />
Selbstversändlich kann man „numlockx on“ auch in die Autostart-Datei der verwendeten [[:Kategorie:Desktopumgebung|Desktopumgebung]] oder in die „.xinitrc“ schreiben. Die Autostart-Datei des Desktopmanagers ist der Definition in der „.xinitrc“ aber vorzuziehen.<br />
<br />
Unter KDE erstellt man eine Datei „~/.kde/Autostart/numlockx“, wobei der Dateiname nicht von Bedeutung ist. In diese Datei schreibt man …<br />
<br />
#!/bin/bash<br />
numlockx on<br />
<br />
… und macht diese mittels „chmod +x dateiname“ ausführbar. Unter [[GNOME]] kann man ein Autostart-Programm nebst Startparametern über „System → Einstellungen → Sitzung“ der Sitzung, bzw. den Autostartprogrammen hinzufügen. Unter [[Openbox]] muss der Eintrag in die „~/.config/openbox/autostart.sh“ gesetzt werden.<br />
<br />
== USB-Tastatur beim Einstecken ==<br />
{{Unvollständig}}<br />
Arbeitet man an einem Laptop, an das man gelegentlich per USB eine vollwertige Tastatur anschließt, schaltet man vermutlich häufig zwischen Numlock hin-und-her, da die Notebook-Tastatur für gewöhnlich ja keinen separaten Nummernfeld hat, kann ein eingeschaltetes Numlock mitunter merkwürdige Ergebnisse produzieren. Ausgeschaltetes Numlock auf der vollwertigen Tastatur ist aber auch nicht so schön<br />
<br />
=== Vorbereitungen ===<br />
Damit das automatische Aktivieren und Deaktivieren von Numlock beim einstecken bzw, abziehen einer USB-Tastatur am Laptop funktioniert, müssen [[udev]] und „numlockx“ installiert sein und ordnungsgemäß funktionieren.<br />
<br />
pacman -S udev numlockx<br />
<br />
Wenn „udev“ ordnungsgemäß funktioniert und man mittels „numlockx“ Numlock ein- und ausschalten kann, steht einer Automation nichts mehr im Wege.<br />
<br />
=== Einrichtung ===<br />
Damit der Vorgang funktioniert, bedarf es eines Skriptes, über das je nach Vorgang (einstecken oder abziehen der USB-Tastatur) der entsprechende Programmaufruf ausgeführt wird. Dieses Script sieht wie folgt aus:<br />
<br />
#!/bin/sh<br />
case "$1" in<br />
on)<br />
export DISPLAY=':0.0'; /usr/bin/numlockx on<br />
;;<br />
off)<br />
export DISPLAY=':0.0'; /usr/bin/numlockx off<br />
;;<br />
esac<br />
exit 0<br />
<br />
Gespeichert wird das Script zum Besipiel als „/usr/local/bin/numl“. Der Dateiname ist dabei allerdings unrelevant, man muss die Datei nur wiederfinden können. Zusätzlich zu dieser Datei bedarf es noch einer Regel für udev. Diese Regel wird unter „/etc/udev/rules.d/25-usbkeyboard.rules“ erstellt und sieht wie folgt aus:<br />
<br />
ACTION=="add", SUBSYSTEM=="input", ATTRS{idProduct}=="1003",<br />
ATTRS{idVendor}=="05ac", RUN+="/usr/local/bin/numl on",<br />
ENV{REMOVE_CMD}="/usr/local/bin/numl off"<br />
<br />
'''''Achtung:''' Die Zeilenumbrüche hier sind nur aus designtechnischen Gründen für das Wiki vorhanden und müssen beim erstellen der Regel ersatzlos entfernt werden.''<br />
<br />
Die Werte „idProduct“ und „idVendor“, im Script besipielhaft mit „1003“ bzw. „05ac“ müssen an die eigenen, tatäschlichen Werte angepasst werden. Abfragen kann man die Werte mittels „udevinfo“<br />
<br />
udevinfo -a -p /sys/class/input/eventN<br />
<br />
„N“ muss durch eine event-Nummer ersetzt werden. Durch ein wenig herumprobieren bekommt man hier mit die Produkt-ID und die Hersteller-ID heraus. Diese Werte trägt man dann in die udev-Regel ein.<br />
<br />
Nun muss nur noch vor em Aufruf des Fenstermanagers in der „.xinitrc“ die Zeile …<br />
<br />
xhost +local:<br />
<br />
… eingefügt werden, und ein Neustart von „udev“ vorgenommen werden, danach sollte beim Einstecken der USB-Tastatur Numlock automatisch eingeschaltet werden, und beim Abziehen der USB-Tastatur Numlock wieder ausgeschaltet werden.<br />
<br />
== Todo ==<br />
* udev oder evdev fürs automatische Aktivieren? [[Diskussion:Numlock|Siehe Diskussionsseite]]<br />
<br />
[[Kategorie:Systemverwaltung]]<br />
[[Kategorie:X11]]<br />
[[Kategorie:Konsole]]<br />
[[Kategorie:Unvollständig]]<br />
[[en:Activating Numlock on Bootup]]</div>PSubhttps://wiki.archlinux.de/index.php?title=Arch_Linux_auf_einem_Root-Server&diff=10731Arch Linux auf einem Root-Server2010-09-06T21:23:11Z<p>PSub: /* System vorbereiten */ Wegen https://bbs.archlinux.de/viewtopic.php?id=17347</p>
<hr />
<div>{{unvollständig}}<br />
{{righttoc}}<br />
Diese Anleitung beschreibt die Installation von Arch Linux auf einem dedicated Root-Server aus einem Rescue-System auf Basis eigener Erfahrungen. Basierend auf der Anleitung von [http://wiki.archlinux.org/index.php/Install_From_Existing_Linux], welche aber nicht 1:1 übersetzt wurde.<br />
==Anmerkungen==<br />
Entsprechend der später verwendeten Architektur sollte auch das Rettungssystem diese bereits verwenden. Bei Hetzner kann man zwischen einem 32-Bit und einem 64-Bit Rettungssystem auswählen. Bis 3 GB RAM sollte das 32-Bit System ( so auch die i686er Variante von Arch ) vollkommen ausreichen. Vorausgesetzt man braucht keine Datenbanken mit mehreren 100 MByte Größe. Diese Anleitung beschreibt die Nutzung der i686-Variante, kann aber auf die x86_64 1:1 übernommen werden - Bis auf die Pakete.<br />
==Vorbereitung==<br />
===Partitionierung===<br />
Für diese Anleitung wird ein Software-RAID 1 aufgebaut, welches eine erhöhte Datensicherheit bietet. Die Partitionierung kann mit cfdisk oder fdisk erfolgen. Bevorzugt lege ich auf meinen Servern immer folgendes Partionsschemata an:<br /><br />
* /dev/sda1 - 100 MB - linuxraid autodetect - /boot<br />
* /dev/sda2 - 1 GB - linuxraid autodetect - swap<br />
* /dev/sda3 - rest - linuxraid autodetect - /<br />
Dies muss auf beiden Festplatten erfolgen!<br />
===Erstellung der RAID-Arrays===<br />
'''Info'''<br /><br />
Sollte RAID später Probleme machen, dann mal RAID weg lassen.<br /><br /><br />
Mit mdadm erstellen wir nun das RAID Array für /boot, / und swap.<br /><br />
Bevor das RAID Array erstellt werden kann, müssen die entsprechenden Module geladen werden:<br /><br /><br />
<code>modprobe raid1</code><br /><br />
Später / ...<br /><br />
<code>mdadm --create /dev/md0 --level 1 --raid-devices 2 /dev/sda3 /dev/sdb3</code><br /><br />
Später /boot ...<br /><br />
<code>mdadm --create /dev/md1 --level 1 --raid-devices 2 /dev/sda1 /dev/sdb1</code><br /><br />
Später swap ...<br /><br />
<code>mdadm --create /dev/md2 --level 1 --raid-devices 2 /dev/sda2 /dev/sdb2</code><br /><br />
<br />
===Erstellung der Dateisysteme===<br />
Damit wir später archlinux installieren und noch später auch booten können, müssen nun die entsprechenden Dateisystem erstellt werden. Für /boot sowie für / wird das ext3-Dateisystem benutzt.<br /><br /><br />
<code>mkfs.ext3 /dev/md0</code><br /><br />
<code>mkfs.ext3 /dev/md1</code><br /><br />
<code>mkswap /dev/md2</code><br /><br />
===Mounten===<br />
Nun müssen die einzelnen Partitionen (RAID Arrays) gemountet werden. Hierzu wird vorher unter /mnt das Verzeichnis ''archlinux'' erstellt:<br /><br /><br />
<code>mkdir -p /mnt/archlinux</code><br /><br />
<code>mount -t ext3 /dev/md0 /mnt/archlinux</code><br /><br />
<code>mkdir -p /mnt/archlinux/boot</code><br /><br />
<code>mount -t ext3 /dev/md1 /mnt/archlinux/boot</code><br /><br />
===Notwendige Pakete downloaden===<br />
Damit wir später Arch mit pacman installieren können, muss dieses nun nach /tmp/archlinux gedownloaded werden:<br /><br /><br />
<code>mkdir -p /tmp/archlinux</code><br /><br />
<code>cd /tmp/archlinux</code><br /><br />
<code>wget ftp://ftp.archlinux.org/core/os/i686/pacman-3.2.1-2-i686.pkg.tar.gz</code><br /><br />
<code>wget ftp://ftp.archlinux.org/core/os/i686/pacman-mirrorlist-20081213-1-i686.pkg.tar.gz</code><br /><br />
<code>tar xzvf pacman-3.2.1-2-i686.pkg.tar.gz</code><br /><br />
<code>tar xzvf pacman-mirrorlist-20081213-1-i686.pkg.tar.gz</code><br /><br /><br />
Da pacman nicht statisch auf Libs gelinkt ist, benötigen wir noch die statisch gelinkte.<br /><br /><br />
<code><br />
cd /tmp/archlinux<br /><br />
wget http://repo.archlinux.fr/i686/pacman-static-3.2.2-1.pkg.tar.gz<br /><br />
tar xzvf pacman-static-3.2.1-1-i686.pkg.tar.gz<br />
</code><br /><br />
<br />
===Benötigte Dateien ins Host-System kopieren===<br />
Da in der Regel die Rescue-Systeme von dedicated Root-Servern ein Netzwerkimage haben, können die Dateien von Pacman direkt nach / kopiert werden:<br /><br />
<code>tar xf /tmp/archlinux/pacman-*.pkg.tar.gz -C /</code><br /><br />
<br />
===Pacman konfigurieren===<br />
Nun müssen die Dateien /etc/pacman.conf und /etc/pacman.d/mirrorlist den Bedürfnissen angepasst werden.<br />
==Installation von Arch Linux==<br />
===Pacman aktualisieren===<br />
mkdir -p /mnt/archlinux/var/lib/pacman<br />
pacman.static -S -r /mnt/archlinux<br />
pacman.static -S pacman -r /mnt/archlinux<br />
<br />
===Basissystem installieren===<br />
pacman.static -S base -r /mnt/archlinux<br />
<br />
===System vorbereiten===<br />
Nun wird es richtig ernst, denn wir bereiten das System für das chroot vor. Vorher muss aber sichergestellt werden, dass die richtigen nodes in /dev für udev erstellt wurden:<br /><br />
<code><br />
ls -alF /mnt/archlinux/dev<br />
</code><br /><br />
» Das sollte dann ausgegeben werden:<br /><br />
<code><br />
crw------- 1 root root 5, 1 2008-12-27 21:40 console<br /><br />
crw-rw-rw- 1 root root 1, 3 2008-12-27 21:42 null<br /><br />
crw-rw-rw- 1 root root 1, 5 2008-12-27 21:40 zero<br /><br />
</code><br />
» Nun müssen weitere Dateisystem eingebunden werden:<br /><br />
<code><br />
mount -o bind /dev /mnt/archlinux/dev<br /><br />
mount -t proc none /mnt/archlinux/proc<br /><br />
mount -o bind /sys /mnt/archlinux/sys<br /><br />
</code><br />
» /etc/resolv.conf kopieren<br /><br />
<code>cp -r /etc/resolv.conf /mnt/archlinux/etc/resolv.conf</code><br /><br />
» /etc/pacman.d/mirrorlist kopieren<br /><br />
<code>cp -r /etc/pacman.d/mirrorlist /mnt/archlinux/etc/pacman.d/mirrorlist</code><br /><br />
» Enter the chroot<br /><br />
<code>chroot /mnt/archlinux /bin/bash</code><br /><br />
» Den Rest installieren<br /><br />
<code><br />
pacman -S kernel26<br /><br />
pacman -S openssh<br /><br />
pacman -S <paket><br />
</code><br /><br />
Das Paket ''openssh'' muss installiert werden, sofern keine Remote-Console an den Server gekoppelt ist.<br /><br />
<br />
===System einrichten===<br />
* /etc/rc.conf<br />
* /etc/fstab<br />
<code><br />
/dev/md0 / ext3 defaults 0 0<br /><br />
/dev/md1 /boot ext3 defaults 0 0<br /><br />
/dev/md2 swap swap defaults 0 0<br />
</code><br />
* /etc/mkinitcpio.conf<br />
* /etc/modprobe.d/modprobe.conf<br />
* /etc/resolv.conf<br />
* /etc/hosts<br />
* /etc/hosts.deny<br />
<code># ALL: ALL: DENY</code><br />
* /etc/hosts.allow<br />
<code>ALL: ALL: ALLOW</code><br />
* /etc/locale.gen<br />
Wenn alle Konfigurationsdateien bearbeitet wurden und die notwendigen Locales in /etc/locale.gen freigeschalten wurden (# vor Zeile weg), können die notwendigen Locales erstellt werden:<br /><br />
<code>locale-gen</code><br />
===Installation von Grub===<br />
» Damit Grub innerhalb des chroot installiert werden kann<br /><br />
<code>grep -v rootfs /proc/mounts > /etc/mtab</code><br />
» /boot/grub/menu.lst bearbeiten<br /><br />
» Kernelzeile muss am Ende folgendes enthalten<br /><br />
<code>md=1,/dev/sda1,/dev/sdb1 md=0,/dev/sda3,/dev/sdb3, md=2,/dev/sda2,/dev/sdb2</code><br />
» Grub installieren<br /><br />
<code><br />
grub<br /><br />
grub> find /boot/grub/stage1<br /><br />
grub> root (hd0,0)<br /><br />
grub> setup (hd0)<br /><br />
grub> quit<br />
</code><br />
===Installation fertig===<br />
Wenn alles eingerichtet und installiert ist, kann das System rebootet werden.<br /><br />
Bei Hetzner ist es nun angebracht sich eine LARA anschließen zu lassen, da ich persönlich bsp. Probleme hatte.<br /><br />
== Bekannte Probleme ==<br />
* Derzeit keine.<br />
<br />
==Fragen oder Anregungen==<br />
Ihr habt Fragen oder Anregungen oder möchtet etwas ergänzen? Keine Scheu, ich beiße keinem dem Kopf ab!<br />
==Quellen==<br />
Hauptquelle war das englische HowTo unter http://wiki.archlinux.org/index.php/Install_From_Existing_Linux<br /><br />
--[[Benutzer:Igprolin|Igprolin]] 15:28, 1. Jan. 2009 (CET)<br />
[[Kategorie:Installation]]</div>PSubhttps://wiki.archlinux.de/index.php?title=WLAN&diff=10730WLAN2010-09-06T21:22:42Z<p>PSub: /* Wicd */ Wegen https://bbs.archlinux.de/viewtopic.php?id=17347</p>
<hr />
<div>== (W)LAN und Arch Linux ==<br />
Methoden der Authentifizierung - welches Tool für was?<br />
<br />
Dieser Artikel beschreibt Möglichkeiten, sich teils automatisiert zu auswählbaren Netzwerken zu verbinden und diese dann zu nutzen. Hauptaugenmerk liegt dabei auf kabellosen WLAN-Verbindungen, aber etliche Konzepte/Tools lassen sich auch für kabelgebundene Verbindungen nutzen, teils gleichzeitig oder im Wechsel.<br />
<br />
=== Überblick ===<br />
Es wird in diesem Artikel davon ausgegangen, dass die Wireless-Netzkarte schon erkannt ist, das Modul(Treiber) für die Karte also geladen ist. Nützliche Befehle um das zu erkennen sind (als root ausführen):<br />
<br />
ifconfig -a<br />
<br />
zeigt alle Netzwerkgeräte<br />
<br />
iwconfig<br />
<br />
zeigt auch alle Netzwerkgeräte, prüft aber darauf, welches mit den kabellosen Erweiterungen (wireless extensions) umgehen kann, also wlan-fähig ist.<br />
<br />
Wichtig zu wissen ist, welchen Namen die WLAN-Karte hat. Gebräuchlich sind z.B. wlan0, eth1, ath0 (üblich bei Atheros Chips), ra0 (üblich bei RaLink Chips).<br />
Die Nummern hinter den Textbezeichnern können varieren.<br />
Ich gehe in diesem Artikel von meiner WLAN-Cardbus-Karte aus, welche den Device-Namen ath0 hat. Ihr müsst das an euren Kartenbezeichner anpassen.<br />
<br />
iwlist ath0 scan<br />
<br />
Scannt die momentan erreichbaren WLAN-Netze bzw. AccessPoints.<br />
<br />
Was wir jetzt wollen ist, uns kabellos mit einer Gegenstelle zu verbinden und über diese Verbindung den Netzwerkverkehr (hier TCP/IP) zu transportieren. Wichtig dabei: Es handelt sich um zwei separate Vorgänge.<br />
<br />
Die Verbindung zu einer Gegenstelle herzustellen ist vergleichbar bei einer kabelgebundenen Verbindung mit dem Einstecken des Kabels in einen Hub/Switch. Ohne diese physikalische Teilnahme am LAN kann auf der logischen (Software)-Ebene kein Netzwerkprotokoll transportiert werden (hier TCP/IP, z.B. eine IP-Adresse beziehen).<br />
<br />
Um nun kabellos diese "physikalische" Verbindung (den "Link") aufzubauen gibt es eigene Befehle und Konzepte, die sich aber je nach Art dieser Verbindung unterscheiden.Das Medium Funkübertragung bringt es mit sich, dass wir nicht bestimmen können - im Gegensatz zur kabelgebundenen Verbindung - wer ausschließlich unsere Daten bekommt bzw. von wem wir diese erhalten. Ähnlich wie Radio werden Signale in den Äther verschickt und jeder mit einem geeigneten Empfänger kann diese Daten nutzen.In der Regel bestimmt unsere Gegenstelle (meist ein AccessPoint), wie wir die Verbindung dahin aufbauen können. Meist gebraucht dabei sind:<br />
<br />
'''Open (Offen)'''<br />
<br />
Die Gegenstelle verlangt keinerlei Authentifizierung (Passwort o.ä.), die Übertragung der Daten geschieht unverschlüsselt.<br />
<br />
'''WEP'''<br />
<br />
Die Gegenstelle verlangt ein Passwort und die Daten werden verschlüsselt übertragen. Diese Art der Übertragung ist mittlerweile als sehr unsicher einzustufen, da durch Mithören der Funkdaten sehr einfach der Schlüssel (das Passwort) errechenbar ist.<br />
<br />
'''WPA/PSK'''<br />
<br />
Die Gegenstelle verlangt ein Passwort und die Daten werden verschlüsselt übertragen. Diese Art der Verschlüsselung macht es "Mithörern" wesentlich schwerer bis nahezu unmöglich, anhand der mitgehörten Daten den Schlüssel zu errechnen. Es ist die im Privatbereich bevorzugte Methode der Funkdaten-Verschlüsselung.<br />
<br />
Welches Wlan-Konzept bei ArchLinux eignet sich für welche Übertragung:<br />
{| class="prettytable"<br />
| <center>'''Methode'''</center><br />
| <center>'''Open'''</center><br />
| <center>'''WEP'''</center><br />
| <center>'''WPA'''</center><br />
<br />
|-<br />
| rc.conf<br />
| <center>X</center><br />
| <center>X</center><br />
| <center>-</center><br />
<br />
|-<br />
| Netzwerk-Profile<br />
| <center>X</center><br />
| <center>X</center><br />
| <center>X</center><br />
<br />
|-<br />
| wpa_supplicant<br />
| <center>X</center><br />
| <center>X</center><br />
| <center>X</center><br />
<br />
|-<br />
| Networkmanager<br />
| <center>X</center><br />
| <center>X</center><br />
| <center>X</center><br />
<br />
|}<br />
<br />
Weiterhin ist wichtig bei der Suche nach der geeigneten Methode zu wissen: Befinde ich mich immer/meist an einer Stelle (Zuhause oder Zuhause/Büro) oder bin ich oft/meist mobil in unterschiedlichen Netzen unterwegs ("road warrior"). Verbinde ich mich also meist zu festen, bekannten Netzwerken oder bewege ich mich oft in "unbekanntem" Gebiet (Hot-Spots, Service). Für die nachfolgend vorgestellten Konzepte ist es dabei auch meist unerheblich, ob die Verbindung kabelgebunden (Ethernet) oder kabellos (WLan) geschieht. Oder beides. Sowohl Ethernet als auch WLan können von dem einen oder anderen Konzept profitieren.<br />
<br />
Legende:<br />
<br />
''Fest'' = immer die gleiche Verbindung zu EINER Gegenstelle<br><br />
''Mehrere'' = verschiedene Verbindungen wählbar, diese sind aber vordefiniert.<br><br />
''Mobil'' = verschiedene Verbindungen, die auch zeitnah erstellt werden können.<br><br />
<nowiki>* = es gibt Einschränkungen</nowiki><br />
<br />
{| class="prettytable"<br />
| <center>'''Methode'''</center><br />
| <center>'''Fest'''</center><br />
| <center>'''Mehrere'''</center><br />
| <center>'''Mobil'''</center><br />
<br />
|-<br />
| rc.conf<br />
| <center>X</center><br />
| <center>-</center><br />
| <center>-</center><br />
<br />
|-<br />
| Netzwerk-Profile<br />
| <center>X</center><br />
| <center>X</center><br />
| <center>-*¹</center><br />
<br />
|-<br />
| wpa_supplicant<br />
| <center>X</center><br />
| <center>X</center><br />
| <center>X*²</center><br />
<br />
|-<br />
| Networkmanager<br />
| <center>X</center><br />
| <center>X</center><br />
| <center>X</center><br />
<br />
|}<br />
<nowiki>*¹ = bezieht sich auf das händische Editieren einer Konfig-Datei</nowiki><br><br />
<nowiki>*² = bezieht sich auf das Tool ====>"wpa_gui"</nowiki><br />
<br />
Ein weiteres Kriterium für die bevorzugte Methode ist, ob das System selbständig prüfen soll, ob sich eine Netzwerkverbindung geändert hat und ggf. daraufhin bestimmte Aktionen auslösen soll. Oder ob diese Aufgabe der jeweilige Benutzer entscheiden will/muss.<br />
<br />
Das kann z.B. der Wechsel von kabelgebundener Verbindung (Ethernet) zu WLan sein (Notebook aus der Docking-Station genommen). Oder ob per WLan automatisch eine Verbindung aufgebaut wird sobald eine bekannte Funkzelle gefunden wird.<br />
<br />
Legende:<br />
<br />
<nowiki>* = es gibt Einschränkungen</nowiki><br />
<br />
{| class="prettytable"<br />
| <center>'''Methode'''</center><br />
| <center>'''Benutzer'''</center><br />
| <center>'''Automatisch'''</center><br />
<br />
|-<br />
| rc.conf<br />
| <center>X</center><br />
| <center>-*</center><br />
<br />
|-<br />
| Netzwerk-Profile<br />
| <center>X</center><br />
| <center>-*</center><br />
<br />
|-<br />
| wpa_supplicant<br />
| <center>X</center><br />
| <center>-*</center><br />
<br />
|-<br />
| Networkmanager<br />
| <center>X</center><br />
| <center>X</center><br />
<br />
|}<br />
<nowiki>* = bezieht sich auf die Nutzung des Tools ====>"ifplugd"</nowiki><br />
<br />
Ein weiteres Kriterium kann sein, ob direkt nach dem Booten eine WLan-Verbindung bestehen soll um z.B. NFS/Samba-Freigaben zu mounten oder Dienste anzubieten ohne dass ein User angemeldet ist.<br />
<br />
Legende:<br><br />
<nowiki>* = es gibt Einschränkungen</nowiki><br />
<br />
{| class="prettytable"<br />
| <center>'''Methode'''</center><br />
| <center>'''Ja'''</center><br />
| <center>'''Nein'''</center><br />
<br />
|-<br />
| rc.conf<br />
| <center>X</center><br />
| <br />
<br />
|-<br />
| Netzwerk-Profile<br />
| <center>X</center><br />
| <br />
<br />
|-<br />
| wpa_supplicant<br />
| <center>X</center><br />
| <br />
<br />
|-<br />
| Networkmanager<br />
| <br />
| <center>X*</center><br />
<br />
|}<br />
<nowiki>* = eine kabelgebundene Ethernet-Verbindung ist nach dem Booten möglich, aber WLan-Verbindungen erfordern dass ein User angemeldet ist und ein Windowmanager läuft, da die Authentifizierungs-Daten aus dem Gnome-Keyring oder bei KDE über den kwallet-Schlüsselring benötigt werden.</nowiki><br />
<br />
== Konzepte ==<br />
=== rc.conf (Arch Linux WLan Einstellungen) ===<br />
Diese Methode ist am geeignetsten, um sich immer zu einer vorgegebenen Gegenstelle zu verbinden, wobei diese Verbindung unverschlüsselt oder allerhöchstens durch WEP abgesichert ist.<br />
<br />
Dazu wird das Netzdevice in der Datei ''/etc/rc.conf'' bekannt gemacht.<br />
<br />
(Hier anhand meines Devices ''ath0'')<br />
<br />
Für eine dynamische IP-Vergabe, DHCP-Server im Netz:<br />
<br />
<tt>ath0="dhcp"</tt><br />
<br />
Für eine statische IP:<br />
<br />
<tt>ath0="ath0 192.168.1.100 ... "</tt><br />
<br />
Im Netzwerk-Bootscript bei Arch Linux gibt es einen Teil, der kabellose Netzwerkkarten besonders behandelt (den "Link" aufbaut). Das kabellose Device wird dabei genauso eingerichtet wie eine normale Ethernet-Karte. Über Zusatzeinstellungen in einer Extra-Datei ''/etc/conf.d/wireless'' wird dieses Device als WLan-Device eingerichtet.<br />
<br />
Um sich also zum eigenen AccessPoint mit der Kennung(ESSID) "MyHome" zu verbinden und nach erfolgreicher Verbindung darüber eine IP dynamisch zugewiesen zu bekommen:<br />
<pre><br />
#/etc/rc.conf<br />
ath0="dhcp"<br />
<br />
INTERFACES=(lo eth0 '''ath0''')<br />
<br />
#/etc/conf.d/wireless<br />
wlan_ath0="ath0 essid MyHome"<br />
# Für eine WEP-Verbindung mit Passwort:<br />
wlan_ath0="ath0 essid Myhome key 12345678"<br />
# bzw. der Schlüssel als Klartext:<br />
wlan_ath0="ath0 essid Myhome key s:klartextpasswort"<br />
</pre><br />
<br />
Testen und per Hand diese Verbindung aufbauen:<br />
/etc/rc.d/network ifdown ath0<br />
<br />
/etc/rc.d/network ifup ath0<br />
<br />
Wenn alles funktioniert hat, dann sollte jetzt:<br />
<br />
ifconfig ath0<br />
<br />
die WLan-Karte als UP mit der zugewiesenen Ip-Adresse zeigen<br />
<br />
route -n<br />
<br />
sollte ein Default-Gateway (UG) mit der Destinantion 0.0.0.0 zeigen.<br />
<br />
cat /etc/resolv.conf<br />
<br />
sollte uns einen oder mehrere Nameserver zeigen.<br />
<br />
ping www.google.de<br />
<br />
sollte mit Antwortpaketen beantwortet werden.<br />
<br />
<br />
Wenn es Probleme gibt:<br />
<br />
Logdatei /var/log/everything.log auswerten<br />
<br />
Siehe auch Wiki-Artikel [[Netzwerkprobleme]]<br />
<br />
=== Netzwerk-Profile ===<br />
<br />
{{Unvollständig}}<br />
'''ACHTUNG: dieser Teil ist nur noch vom Prinzip her gültig!'''<br><br />
'''netcfg ist durch netcfg2 abgelöst, Hinweise dazu siehe bitte: ''' [http://wiki.archlinux.org/index.php/Netcfg netcfg]<br />
<br />
Diese Methode erlaubt während des Bootvorgangs oder nachträglich das Wählen zwischen unterschiedlichen Netzwerkverbindungen (egal ob Ethernet oder Wlan). Hierbei kann für Wlan auch eine WPA-verschlüsselte Verbindung eingerichtet werde.<br />
<br />
Für WPA wird gebraucht:<br />
<br />
pacman -S wpa_supplicant<br />
<br />
Die verschiedenen Profile liegen in ''/etc/network-profiles''. Anfangs befindet sich nur eine Vorlage darin, die Datei ''template''.<br />
<br />
Anhand dieser Datei können jetzt unterschiedliche Profile erstellt werden. Profile können z.B. sein: ein Profil für Ethernet zuhause mit statischer IP-Adresse, eines für Ethernet mit DHCP für unterwegs, eines für die WLAN-Verbindung (verschlüsselt WPA), usw.<br />
<br />
Ich stelle hier zwei Profile vor, um das Prinzip deutlich zu machen. Kommentare zu den einzelnen Parametern finden sich in der ''template'' Datei.<br />
<br />
* Profil für Ethernet mit statischer IP-Adresse<br />
* WPA-verschlüsselte kabellose Verbindung<br />
<br />
<pre><br />
#/etc/network-profiles/home-lan<br />
<br />
# Profil: LAN-Zuhause mit statischer IP<br />
#<br />
DESCRIPTION="Home LAN "<br />
<br />
# Network Settings<br />
INTERFACE=eth0<br />
HOSTNAME=myhost<br />
<br />
# Interface Settings (use IFOPTS="dhcp" for DHCP)<br />
IFOPTS="192.168.1.10 netmask 255.255.255.0 broadcast 192.168.1.255"<br />
<br />
GATEWAY=192.168.1.1<br />
<br />
# DNS Settings (optional)<br />
DOMAIN=local.lan<br />
DNS1=192.168.1.1<br />
DNS2=<br />
</pre><br />
<br />
<pre><br />
#/etc/network-profiles/uni-wlan<br />
<br />
# Profil: Uni-Zugang mit WPA-Verschluesselung, IP ueber DHCP<br />
#<br />
DESCRIPTION="Uni WLAN"<br />
<br />
# Network Settings<br />
INTERFACE=ath0<br />
HOSTNAME=myhost<br />
<br />
# Interface Settings (use IFOPTS="dhcp" for DHCP)<br />
IFOPTS="dhcp"<br />
<br />
# DNS Settings (optional)<br />
#DOMAIN=localdomain<br />
#DNS1=192.168.0.1<br />
#DNS2=<br />
<br />
# Wireless Settings (optional)<br />
ESSID=UniESSID<br />
<br />
#KEY=<br />
#IWOPTS="mode managed essid $ESSID channel 11 key s:$KEY"<br />
<br />
WIFI_INTERFACE=ath0<br />
<br />
#WIFI_WAIT=5 # seconds to wait for the wireless card to<br />
# associate before bringing the interface up<br />
<br />
USEWPA="yes" # start wpa_supplicant with the profile<br />
WPAOPTS="-D wext" # use "" for normal operation or specify additional<br />
# options (eg, "-D ipw")<br />
# see /etc/wpa_supplicant.conf for configuration<br />
<br />
#AUTOWPA="yes" # automatically configure WPA<br />
<br />
#PASSKEY="" # wpa passkey/phrase. for use with AUTOWPA<br />
</pre><br />
<br />
Bei diesem letzten Beispiel kommt nun erstmals das Tool ''wpa_supplicant'' mit ins Spiel, welches die Authentifizierung und Verschlüsselung mit WPA/PSK ermöglicht.<br />
<br />
Durch den Parameter USEWPA=“yes“ ermöglichen wir das. Dieses Profil nutzt nun den Parameter ESSID um in der wpa_supplicant Konfigdatei ''/etc/wpa_supplicant.conf'' einen zu dieser ESSID passenden Eintrag zu finden.<br />
<br />
Zur Konfiguration von wpa_supplicant siehe den entsprechenden Abschnitt in diesem Artikel.<br />
<br />
Hinweis: die Parameter KEY= und IWOPTS= in den Profil-Dateien dienen bei einer Wlan-Verbindung den Angaben für offenes oder mit WEP-verschlüsselter Authentifizierung.<br />
<br />
Wie können wir jetzt mit diesen Profilen arbeiten?<br />
<br />
Voraussetzung dafür sind erstmal entsprechende Einträge in der ''/etc/rc.conf''. Hinweis: da wir die Netzwerk-Verbindungen komplett durch die Profiles regeln wollen/können brauchen wir in der rc.conf keinen Einträge für Ethernet- oder WLAN-Devices. Bis auf loopback Device (lo) können wir alles auskommentieren bzw. löschen.<br />
<br />
<pre><br />
#/etc/rc.conf<br />
<br />
lo="lo 127.0.0.1"<br />
INTERFACES=(lo)<br />
#<br />
NET_PROFILES=(menu)<br />
</pre><br />
<br />
Durch den Parameter NET_PROFILES wird die Profilwahl gesteuert. Wir haben hier folgende Optionen:<br />
<br />
* menu = bietet beim Bootvorgang ein Auswahl-Menü an. Dieses Menü wartet ca. 5 Sekunden auf eine Auswahl oder bootet danach das Profil, dessen Dateiname lexikalisch an erster Stelle kommt.<br />
Hinweis: Das automatische Menu-ANGEBOT FUNKTIONIERT NICHT, wenn "network" als Daemon in der rc.conf mit einem vorangestellten "@" während des Bootvorgangs in den Hintergrund verbannt wurde!<br />
* ''profildatei_name'' = Durch Angabe eines Profilnamens (z.B. obiges home-lan)<br />
<br />
Eine weitere Möglichkeit ist, in der ''rc.conf'' den Parameter NET_PROFILES wegzulassen und das gewünschte Profil als Bootparameter anzugeben bzw. in den Bootmanager einzutragen. Dieser Parameter heißt NET=''profildatei_name''<br />
<br />
Wir können auch nach dem Booten erstmal ganz ohne Netzwerk booten (also kein NET_PROFILES in der rc.conf und kein Bootparameter NET=), und dann später das gewünschte Profil per Hand aktivieren.<br />
<br />
Dieses nachträgliche Aktivieren oder auch das spätere Wechseln der Profile außerhalb des Bootvorgangs geschieht durch das Tool ''netcfg''. <br />
<br />
<pre><br />
netcfg --menu<br />
# ruft das Menü auf<br />
<br />
netcfg profil_name<br />
# startet das Profil profil_name<br />
<br />
netcfg --stopall<br />
# stoppt alle Netzwerkverbindungen<br />
<br />
# netcfg -h gibt noch weitere Optionen<br />
</pre><br />
<br />
Hinweis: bei Verwendung der Netzwerk-Profile kann immer nur ein Device aktiv sein, da jedes Profil genau ein Device regelt. Wenn analog unseren Beispielen oben Home-Lan aktiv ist und zu Uni-Wlan gewechselt wird, dann wird die Verbindung der aktiven Profiles beendet und das Device deaktiviert.<br />
<br />
=== wpa_supplicant ===<br />
wpa_supplicant ist zum einen eine Umgebung um verschlüsselte Wlan-Verbindungen zu ermöglichen, zum anderen ein Tool um diese Anmeldung auch durchführen zu können.<br />
<br />
wpa_supplicant kommt mit den gebräuchlichsten Authentifizierungs-Standards zurecht.<br />
<br />
wpa_supplicant wird installiert mit:<br />
<br />
pacman -S wpa_supplicant<br />
<br />
Die sehr ausführlich kommentierte Konfigurations-Datei liegt in /etc/wpa_supplicant.conf.<br />
<br />
Davon sollte man sich erstmal eine Sicherung machen um dann seine eigenen Netzwerke einzutragen.<br />
<br />
cp /etc/wpa_supplicant.conf /etc/wpa_supplicant.conf.org<br />
<br />
Unterhalb von „#example block“ sind jetzt Beispiel-Netze aufgeführt. Diese kann man als Grundlage für seine eigene Umgebung verwenden, sollte dann diese Beispiele aber löschen.<br />
<br />
Hier soll ein Beispiel gezeigt werden für ein WLAN-Netz, welches mit WPA-PSK verschlüsselt ist.<br />
<br />
Den Netzwerk-Namen „UniESSID“ und das Passwort anpassen.<br />
<br />
<pre><br />
network={<br />
ssid="UniESSID"<br />
key_mgmt=WPA-PSK<br />
proto=WPA<br />
pairwise=TKIP<br />
group=TKIP<br />
psk="klartext-passwort"<br />
}<br />
</pre><br />
<br />
Für jedes verschlüsselte WLAN, mit dem man sich verbinden will, muss nun solch ein network Block in dieser Konfigdatei existieren. Man kann diese (als root) schnell mit einem Editor (copy&paste) einfügen bzw. ändern. Es gibt aber auch eine grafische Oberfläche. Dazu später mehr.<br />
<br />
<br />
'''Starten als Daemon und Bedienung'''<br />
<br />
Momentan starten wir alle Tools testweise per Hand im Vordergrund um uns vertraut zu machen. Wir brauchen zwei Textkonsolen, in denen wir beidemal root sind. Ich gehe hier wieder von meinem WLAN-Device ath0 aus.<br />
<br />
wpa_supplicant:<br />
<br />
ifconfig ath0 up<br />
<br />
wpa_supplicant -iath0 -c/etc/wpa_supplicant.conf -d<br />
<br />
Das startet wpa_supplicant im Vordergrund im Debug-Modus (-d)<br />
<br />
In der zweiten Konsole bedienen wir jetzt den Daemon:<br />
<br />
wpa_cli<br />
<br />
gibt uns eine Bedienungsumgebung, in der wir Netze suchen, verbinden, trennen und auch neue Netze in die Konfig-Datei eintragen können. Die Bedienung ist typisch spartanisch, aber es funktioniert. Bei den meisten Befehlen müssen nur die ersten Buchstaben eingegeben werden, wenn es mehrere Alternativen gibt bekommen wir das mitgeteilt.<br />
<br />
help – zeigt uns alle möglichen Befehle<br />
scan – scannt nach verfügbaren Netzwerken<br />
scan_result – zeigt uns das Ergebniss des Scans (scan_r geht auch)<br />
list – zeigt uns unsere definierten Netzwerke aus der wpa_supplicant.conf<br />
select <nr> - wählt und aktiviert das bei list gezeigte Netzwerk mit der Nummer <nr>, select <ESSID> geht auch<br />
disconnect – trennt die Verbindung<br />
reassociate – nimmt die momentan gewählte Verbindung wieder auf.<br />
reconfigure – liest die Konfigdatei /etc/wpa_supplicant.conf neu ein.<br />
quit – beendet das wpa_cli Tool.<br />
<br />
Neben dem Interface lasssen sich die wpa_cli Kommandos auch direkt aufrufen, z.B.<br />
<br />
wpa_cli select 0<br />
<br />
Wenn mit obigen Kommandos die verschlüsselte Verbindung nun erfolgreich war (wpa_cli meldet uns das mit: CTRL-EVENT-CONNECTED, das Status-Fenster des Daemons mit: WPA: Key negotiation completed with), dann ist das erst die halbe Miete.<br />
<br />
Wie einleitend angeführt sind WLAN-Authentifizierung/Verbindung und TCP/IP zwei verschiedene Paar Schuhe. Um jetzt z.B. über einen WLAN-Router ins Internet zu kommen muss unser WLAN-Device noch eine IP bekommen und Routen und Nameserver angegeben werden.<br />
<br />
Wenn der Router DHCP anbietet reduziert sich dieser Aufwand auf ein simples:<br />
<br />
dhcpcd ath0<br />
<br />
Um die Nutzung von wpa_supplicant zu automatisieren bietet sich an:<br />
<br />
#/etc/rc.local<br />
<br />
wpa_supplicant -iath0 -c/etc/wpa_supplicant.conf -Dwext -B<br />
<br />
Nach dem Boot wird wpa_supplicant als Daemon (-B) automatisch gestartet und versucht sich automatisch mit dem am besten erreichbarem WLAN zu authentifizieren, welches entweder „offen“ ist oder in der Konfigdatei definiert ist.<br />
<br />
<br />
'''Die GUI zu wpa_supplicant'''<br />
<br />
Mit:<br />
<br />
pacman -S wpa_supplicant_gui<br />
<br />
installieren wir das Tool.<br />
<br />
Gestartet wird es mit:<br />
wpa_gui<br />
<br />
Um wpa_gui auch als Nicht-Root benutzen zu können:<br />
<br />
* start mittels kdesu/gksu und Eingabe des Root-Passworts<br />
* Über sudo und freischalten dieses Programms in /etc/sudoers<br />
<br />
Mit dieser GUI kann sich komfortabel zu jedem beliebigen WLAN verbunden werden, Netze und Einstellungen hinzugefügt, bearbeitet werden u.v.m.<br />
<br />
Lediglich die TCP/IP Netzwerkeinstellungen müssen ggf. von Hand jeweils angepasst werden.<br />
<br />
(NB: hier muss sicher noch einiges ausführlicher/besser dargestellt werden.)<br />
<br />
=== Networkmanager ===<br />
Die Installation und Konfiguration von NetworkManager wird [[Networkmanager|hier]] beschrieben.<br />
<br />
Networkmanager ist ein sehr interessantes Konzept. Es kümmert sich um die komplette Netzanbindung des Rechners (v.a. interessant für Laptops in wechselnden Umgebungen).<br />
* Es wird versucht, '''immer''' eine Netzverbindung aufrechtzuhalten bzw. aufzubauen.<br />
* Die Reihenfolge dabei ist:<br />
** Kabelgebundene Verbindung (Ethernet) vor WLan wegen der Geschwindigkeit.<br />
** Bei WLan wird nach bekannten Netzen gesucht und damit verbunden, ansonsten wird versucht sich mit offenen Netzen zu verbinden.<br />
** Wenn momentan keine WLan-Verbindung aufgebaut werden kann, wird permanent nach neuen Netzen gescannt.<br />
<br />
Der größte Nachteil von Networkmanager ist, dass nach/während des Bootvorgangs maximal eine kabelgebundene Ethernet-Verbindung (mit DHCP) zur Verfügung steht. Eine andere Verbindung (v.a. verschlüsseltes WLan) steht erst nach Einloggen eines Users und dem Starten eines der FrontEnds(knetworkmanager, gnome-network-manager) zur Verfügung, da Verbindungsdaten (Essid, Passwörter) per User geladen werden.<br><br />
Wer also Networkmanager z.B. mit WLan nutzen möchte kann z.Zt. keine Netzwerk-Shares (nfs, samba) in der /etc/fstab beim Booten einbinden. Nach dem Start des Frontends durch den User ist das aber durch den Dispatcher (siehe weiter unten) sehr wohl möglich.<br />
<br />
'''Nützliches rund um den Networkmanager'''<br />
<br />
Mit ''nm-tool'' kann man sich den Status der momentanen Verbindung und der vom Networkmanager verwalteten Devices anschauen.<br />
<br />
Das Start/Stop-Skript in /etc/rc.d bietet die Optionen alle Verbindungen zeitweilig zu stoppen und wieder aufzunehmen.<br />
* /etc/rc.d/networkmanager sleep trennt alle aktiven Verbindungen (die Devices werden auf Down gesetzt)<br />
* /etc/rc.d/networkmanager wake nimmt die Verbindung wieder auf bzw. initiert das Suchen nach einer Verbindung neu.<br />
Das kann man sich z.B. zu Nutze machen, wenn man nach dem Booten/Einloggen erstmal '''kein''' Netzwerk haben, sondern es später zuschalten möchte. Dazu kann man folgendes konfigurieren:<br />
#/etc/rc.local<br />
<br />
/etc/rc.d/networkmanager sleep<br />
Zum Aktivieren des Networkmanagers kann dann o.a. Startskript-Befehl mit wake genutzt werden. Oder im grafischen Frontend die Option "In Online-Modus wechseln".<br />
<br />
Ein wenig bekannter Zusatz ist der '''Networkmanager-Dispatcher'''. Durch Start dieses Daemons kann der Networkmanager Vorgänge auslösen, je nachdem ob ein Device (eth0, ath0, wlan0) UP oder DOWN gemeldet wird. Also z.B. auf das An-/Ab-Stöpseln des Ethernet-Kabels reagieren oder ob eine WLan-Verbindung aufgebaut wurde.<br />
<br />
Damit ist es z.B. möglich, nach dem Start NFS-Freigaben einzumounten - auch bei WLan-Verbindungen.<br />
<br />
Aktiviert wird der Dispatcher so:<br />
#/etc/rc.conf<br />
<br />
DAEMONS=(... dhcdbd networkmanager '''networkmanager-dispatcher''' ...)<br />
Skripte die, je nachdem ob ein Device UP oder DOWN ist, abgearbeitet werden, liegen in<br />
/etc/NetworkManager/dispatcher.d<br />
Nach der Installation liegen dort bereits zwei Skripte:<br />
* netfs<br />
* ntpdate<br />
Das Erste kümmert sich um die Einbindung aller Arten von Netzwerk-Mounts, die in der Datei /etc/fstab definiert sind. Es startet/stoppt dazu den ArchLinux-Mechanismus um die fstab-Datei gezielt nach Netzwerk-Mounts zu durchsuchen.<br><br />
Das zweite Skript würde die Uhrzeit anhand eines NTP(Zeit)-Servers angleichen, sofern das Paket ntp installiert ist.<br />
<br />
Eigene Skripte könnten z.B. so aufgebaut sein:<br />
<pre><br />
#/etc/NetworkManager/dispatcher.d/1-test<br />
<br />
#!/bin/sh<br />
#<br />
arping -c 3 192.168.1.2 | grep 00:12:8B:38:A0:74 > /dev/null<br />
AT_HOME_LAN=$?<br />
nm-tool | grep UniEssid > /dev/null<br />
AT_HOME_WLAN=$?<br />
<br />
case "$2" in<br />
up)<br />
if [ $AT_HOME_LAN == 0 ]; then<br />
echo "Home LAN verfügbar" >> /tmp/t.log<br />
else<br />
echo "Home LAN nicht verfügbar" >> /tmp/t.log<br />
fi<br />
if [ $AT_HOME_WLAN == 0 ]; then<br />
echo "Home WLAN verfügbar" >> /tmp/t.log<br />
else<br />
echo "Home WLAN nicht verfügbar" >> /tmp/t.log<br />
fi<br />
;;<br />
down)<br />
;;<br />
esac<br />
</pre><br />
Dazu sollte installiert sein:<br />
pacman -S arping<br />
Als IP-Adresse setzt man die ein, welche zu dem Rechner gehört auf dessen Verfügbarkeit man prüfen möchte. Damit jetzt nicht ein beliebiger Rechner mit dieser IP-Adresse irrtümlich für den Rechner zuhause gehalten wird, prüft man auch auf die MAC-Adresse. Das ist diese zwölfstellige Hexadezimal-Zahl, die durch Dopelpunkte getrennt wird.<br><br />
Die MAC-Adresse eines Rechners kann man z.B. so rauskriegen:<br />
ping -c 5 <ip_addr_des_testrechners><br />
arp -n<br />
Die Ausgabe des Arp-Caches zeigt uns nun auch die MAC/HW-Adresse, die wir zum Identifizieren "unseres" Rechners nehmen können.<br />
<br />
Ob "unser" WLAN verfügbar ist können wir leicht testen, indem wir nach der Essid in der Ausgabe von nm-tool suchen. Das Beispiel UniEssid durch die eigene ersetzen, bei Verwendung von Leerstellen in der Essid mit Anführungsstriche (") umhüllen.<br />
<br />
Das Skript macht jetzt nicht mehr als beim Zustandekommen einer Verbindung zu prüfen, ob LAN und WLAN "zuhause" sind und schreibt dieses Ergebniss in ein Logfile /tmp/t.log.<br><br />
Mit ein bisschen Shellprogrammierung-Kenntnisse kann das aber sehr leicht an eigene Bedürfnisse angepasst werden. Noch ein Hinweis: Networkmanager übergibt im Parameter $1 den Interface-Namen (z.B. eth0), im zweiten den Zustand (up, down). Damit ließe sich gezielt Aktionen basierend auf der Art der Netzwerkverbindung und dem Zustand erstellen.<br />
<br />
=== Wicd ===<br />
Wicd ist ein von Desktops unabhängiger Networkmanager. Man installiert ihn mit:<br />
<br />
pacman -S wicd<br />
<br />
Ist dies getan trägt man den Wicd-Daemon in die <code>rc.conf</code> ein:<br />
<br />
DAEMONS=(... wicd ...)<br />
<br />
Nach einem Neustart des Systems oder manuellen Starten des Daemons gibt es nun zwei Möglichkeiten seine Netzwerke zu verwalten:<br />
<br />
wicd-curses<br />
<br />
oder<br />
<br />
wicd-client<br />
<br />
Startet man den Wicd-Client wird ein Icon ins Tray eingefügt und man erhält eine hübsche GTK-Oberfläche.<br />
Die Curses-basierte Oberfläche startet man im Terminal.<br />
<br />
Die Bedienung läuft dann gleich ab: Es gibt ein Hauptfenster in dem die WLAN- und die Kabelverbindungen angezeigt werden. Über die Einträge der WLAN-APs kann man die Verbindung zu diesem konfigurieren (Statische DNS, Passwort etc.). Kabelnetzwerke werden standardmäßig angezeigt, wenn eines verfügbar ist. Mit Refresh wird nach neuen APs gesucht. Unter Preferences kann man seine Interfaces konfigueren, die zu verwenden Treiber einstellen usw.<br />
<br />
Eine Besonderheit ist die Verbindung zu versteckten APs dar: In der GTK-Oberfläche klickt man auf Netzwerk und dann auf Find Hidden-Network, in der Curses-Oberfläche muss man Shift-I tippen um zu dieser Funktion zu gelangen.<br />
<br />
=== Sonstige hilfreiche Tools ===<br />
In Arbeit<br />
<br />
* ifplugd<br />
* wlassistant<br />
* wifi-radar<br />
<br />
<br />
<br />
<br />
[[Kategorie:Unvollständig]]<br />
[[en:Wireless Setup]]</div>PSubhttps://wiki.archlinux.de/index.php?title=WLAN&diff=10729WLAN2010-09-06T21:22:24Z<p>PSub: /* wpa_supplicant */ Wegen https://bbs.archlinux.de/viewtopic.php?id=17347</p>
<hr />
<div>== (W)LAN und Arch Linux ==<br />
Methoden der Authentifizierung - welches Tool für was?<br />
<br />
Dieser Artikel beschreibt Möglichkeiten, sich teils automatisiert zu auswählbaren Netzwerken zu verbinden und diese dann zu nutzen. Hauptaugenmerk liegt dabei auf kabellosen WLAN-Verbindungen, aber etliche Konzepte/Tools lassen sich auch für kabelgebundene Verbindungen nutzen, teils gleichzeitig oder im Wechsel.<br />
<br />
=== Überblick ===<br />
Es wird in diesem Artikel davon ausgegangen, dass die Wireless-Netzkarte schon erkannt ist, das Modul(Treiber) für die Karte also geladen ist. Nützliche Befehle um das zu erkennen sind (als root ausführen):<br />
<br />
ifconfig -a<br />
<br />
zeigt alle Netzwerkgeräte<br />
<br />
iwconfig<br />
<br />
zeigt auch alle Netzwerkgeräte, prüft aber darauf, welches mit den kabellosen Erweiterungen (wireless extensions) umgehen kann, also wlan-fähig ist.<br />
<br />
Wichtig zu wissen ist, welchen Namen die WLAN-Karte hat. Gebräuchlich sind z.B. wlan0, eth1, ath0 (üblich bei Atheros Chips), ra0 (üblich bei RaLink Chips).<br />
Die Nummern hinter den Textbezeichnern können varieren.<br />
Ich gehe in diesem Artikel von meiner WLAN-Cardbus-Karte aus, welche den Device-Namen ath0 hat. Ihr müsst das an euren Kartenbezeichner anpassen.<br />
<br />
iwlist ath0 scan<br />
<br />
Scannt die momentan erreichbaren WLAN-Netze bzw. AccessPoints.<br />
<br />
Was wir jetzt wollen ist, uns kabellos mit einer Gegenstelle zu verbinden und über diese Verbindung den Netzwerkverkehr (hier TCP/IP) zu transportieren. Wichtig dabei: Es handelt sich um zwei separate Vorgänge.<br />
<br />
Die Verbindung zu einer Gegenstelle herzustellen ist vergleichbar bei einer kabelgebundenen Verbindung mit dem Einstecken des Kabels in einen Hub/Switch. Ohne diese physikalische Teilnahme am LAN kann auf der logischen (Software)-Ebene kein Netzwerkprotokoll transportiert werden (hier TCP/IP, z.B. eine IP-Adresse beziehen).<br />
<br />
Um nun kabellos diese "physikalische" Verbindung (den "Link") aufzubauen gibt es eigene Befehle und Konzepte, die sich aber je nach Art dieser Verbindung unterscheiden.Das Medium Funkübertragung bringt es mit sich, dass wir nicht bestimmen können - im Gegensatz zur kabelgebundenen Verbindung - wer ausschließlich unsere Daten bekommt bzw. von wem wir diese erhalten. Ähnlich wie Radio werden Signale in den Äther verschickt und jeder mit einem geeigneten Empfänger kann diese Daten nutzen.In der Regel bestimmt unsere Gegenstelle (meist ein AccessPoint), wie wir die Verbindung dahin aufbauen können. Meist gebraucht dabei sind:<br />
<br />
'''Open (Offen)'''<br />
<br />
Die Gegenstelle verlangt keinerlei Authentifizierung (Passwort o.ä.), die Übertragung der Daten geschieht unverschlüsselt.<br />
<br />
'''WEP'''<br />
<br />
Die Gegenstelle verlangt ein Passwort und die Daten werden verschlüsselt übertragen. Diese Art der Übertragung ist mittlerweile als sehr unsicher einzustufen, da durch Mithören der Funkdaten sehr einfach der Schlüssel (das Passwort) errechenbar ist.<br />
<br />
'''WPA/PSK'''<br />
<br />
Die Gegenstelle verlangt ein Passwort und die Daten werden verschlüsselt übertragen. Diese Art der Verschlüsselung macht es "Mithörern" wesentlich schwerer bis nahezu unmöglich, anhand der mitgehörten Daten den Schlüssel zu errechnen. Es ist die im Privatbereich bevorzugte Methode der Funkdaten-Verschlüsselung.<br />
<br />
Welches Wlan-Konzept bei ArchLinux eignet sich für welche Übertragung:<br />
{| class="prettytable"<br />
| <center>'''Methode'''</center><br />
| <center>'''Open'''</center><br />
| <center>'''WEP'''</center><br />
| <center>'''WPA'''</center><br />
<br />
|-<br />
| rc.conf<br />
| <center>X</center><br />
| <center>X</center><br />
| <center>-</center><br />
<br />
|-<br />
| Netzwerk-Profile<br />
| <center>X</center><br />
| <center>X</center><br />
| <center>X</center><br />
<br />
|-<br />
| wpa_supplicant<br />
| <center>X</center><br />
| <center>X</center><br />
| <center>X</center><br />
<br />
|-<br />
| Networkmanager<br />
| <center>X</center><br />
| <center>X</center><br />
| <center>X</center><br />
<br />
|}<br />
<br />
Weiterhin ist wichtig bei der Suche nach der geeigneten Methode zu wissen: Befinde ich mich immer/meist an einer Stelle (Zuhause oder Zuhause/Büro) oder bin ich oft/meist mobil in unterschiedlichen Netzen unterwegs ("road warrior"). Verbinde ich mich also meist zu festen, bekannten Netzwerken oder bewege ich mich oft in "unbekanntem" Gebiet (Hot-Spots, Service). Für die nachfolgend vorgestellten Konzepte ist es dabei auch meist unerheblich, ob die Verbindung kabelgebunden (Ethernet) oder kabellos (WLan) geschieht. Oder beides. Sowohl Ethernet als auch WLan können von dem einen oder anderen Konzept profitieren.<br />
<br />
Legende:<br />
<br />
''Fest'' = immer die gleiche Verbindung zu EINER Gegenstelle<br><br />
''Mehrere'' = verschiedene Verbindungen wählbar, diese sind aber vordefiniert.<br><br />
''Mobil'' = verschiedene Verbindungen, die auch zeitnah erstellt werden können.<br><br />
<nowiki>* = es gibt Einschränkungen</nowiki><br />
<br />
{| class="prettytable"<br />
| <center>'''Methode'''</center><br />
| <center>'''Fest'''</center><br />
| <center>'''Mehrere'''</center><br />
| <center>'''Mobil'''</center><br />
<br />
|-<br />
| rc.conf<br />
| <center>X</center><br />
| <center>-</center><br />
| <center>-</center><br />
<br />
|-<br />
| Netzwerk-Profile<br />
| <center>X</center><br />
| <center>X</center><br />
| <center>-*¹</center><br />
<br />
|-<br />
| wpa_supplicant<br />
| <center>X</center><br />
| <center>X</center><br />
| <center>X*²</center><br />
<br />
|-<br />
| Networkmanager<br />
| <center>X</center><br />
| <center>X</center><br />
| <center>X</center><br />
<br />
|}<br />
<nowiki>*¹ = bezieht sich auf das händische Editieren einer Konfig-Datei</nowiki><br><br />
<nowiki>*² = bezieht sich auf das Tool ====>"wpa_gui"</nowiki><br />
<br />
Ein weiteres Kriterium für die bevorzugte Methode ist, ob das System selbständig prüfen soll, ob sich eine Netzwerkverbindung geändert hat und ggf. daraufhin bestimmte Aktionen auslösen soll. Oder ob diese Aufgabe der jeweilige Benutzer entscheiden will/muss.<br />
<br />
Das kann z.B. der Wechsel von kabelgebundener Verbindung (Ethernet) zu WLan sein (Notebook aus der Docking-Station genommen). Oder ob per WLan automatisch eine Verbindung aufgebaut wird sobald eine bekannte Funkzelle gefunden wird.<br />
<br />
Legende:<br />
<br />
<nowiki>* = es gibt Einschränkungen</nowiki><br />
<br />
{| class="prettytable"<br />
| <center>'''Methode'''</center><br />
| <center>'''Benutzer'''</center><br />
| <center>'''Automatisch'''</center><br />
<br />
|-<br />
| rc.conf<br />
| <center>X</center><br />
| <center>-*</center><br />
<br />
|-<br />
| Netzwerk-Profile<br />
| <center>X</center><br />
| <center>-*</center><br />
<br />
|-<br />
| wpa_supplicant<br />
| <center>X</center><br />
| <center>-*</center><br />
<br />
|-<br />
| Networkmanager<br />
| <center>X</center><br />
| <center>X</center><br />
<br />
|}<br />
<nowiki>* = bezieht sich auf die Nutzung des Tools ====>"ifplugd"</nowiki><br />
<br />
Ein weiteres Kriterium kann sein, ob direkt nach dem Booten eine WLan-Verbindung bestehen soll um z.B. NFS/Samba-Freigaben zu mounten oder Dienste anzubieten ohne dass ein User angemeldet ist.<br />
<br />
Legende:<br><br />
<nowiki>* = es gibt Einschränkungen</nowiki><br />
<br />
{| class="prettytable"<br />
| <center>'''Methode'''</center><br />
| <center>'''Ja'''</center><br />
| <center>'''Nein'''</center><br />
<br />
|-<br />
| rc.conf<br />
| <center>X</center><br />
| <br />
<br />
|-<br />
| Netzwerk-Profile<br />
| <center>X</center><br />
| <br />
<br />
|-<br />
| wpa_supplicant<br />
| <center>X</center><br />
| <br />
<br />
|-<br />
| Networkmanager<br />
| <br />
| <center>X*</center><br />
<br />
|}<br />
<nowiki>* = eine kabelgebundene Ethernet-Verbindung ist nach dem Booten möglich, aber WLan-Verbindungen erfordern dass ein User angemeldet ist und ein Windowmanager läuft, da die Authentifizierungs-Daten aus dem Gnome-Keyring oder bei KDE über den kwallet-Schlüsselring benötigt werden.</nowiki><br />
<br />
== Konzepte ==<br />
=== rc.conf (Arch Linux WLan Einstellungen) ===<br />
Diese Methode ist am geeignetsten, um sich immer zu einer vorgegebenen Gegenstelle zu verbinden, wobei diese Verbindung unverschlüsselt oder allerhöchstens durch WEP abgesichert ist.<br />
<br />
Dazu wird das Netzdevice in der Datei ''/etc/rc.conf'' bekannt gemacht.<br />
<br />
(Hier anhand meines Devices ''ath0'')<br />
<br />
Für eine dynamische IP-Vergabe, DHCP-Server im Netz:<br />
<br />
<tt>ath0="dhcp"</tt><br />
<br />
Für eine statische IP:<br />
<br />
<tt>ath0="ath0 192.168.1.100 ... "</tt><br />
<br />
Im Netzwerk-Bootscript bei Arch Linux gibt es einen Teil, der kabellose Netzwerkkarten besonders behandelt (den "Link" aufbaut). Das kabellose Device wird dabei genauso eingerichtet wie eine normale Ethernet-Karte. Über Zusatzeinstellungen in einer Extra-Datei ''/etc/conf.d/wireless'' wird dieses Device als WLan-Device eingerichtet.<br />
<br />
Um sich also zum eigenen AccessPoint mit der Kennung(ESSID) "MyHome" zu verbinden und nach erfolgreicher Verbindung darüber eine IP dynamisch zugewiesen zu bekommen:<br />
<pre><br />
#/etc/rc.conf<br />
ath0="dhcp"<br />
<br />
INTERFACES=(lo eth0 '''ath0''')<br />
<br />
#/etc/conf.d/wireless<br />
wlan_ath0="ath0 essid MyHome"<br />
# Für eine WEP-Verbindung mit Passwort:<br />
wlan_ath0="ath0 essid Myhome key 12345678"<br />
# bzw. der Schlüssel als Klartext:<br />
wlan_ath0="ath0 essid Myhome key s:klartextpasswort"<br />
</pre><br />
<br />
Testen und per Hand diese Verbindung aufbauen:<br />
/etc/rc.d/network ifdown ath0<br />
<br />
/etc/rc.d/network ifup ath0<br />
<br />
Wenn alles funktioniert hat, dann sollte jetzt:<br />
<br />
ifconfig ath0<br />
<br />
die WLan-Karte als UP mit der zugewiesenen Ip-Adresse zeigen<br />
<br />
route -n<br />
<br />
sollte ein Default-Gateway (UG) mit der Destinantion 0.0.0.0 zeigen.<br />
<br />
cat /etc/resolv.conf<br />
<br />
sollte uns einen oder mehrere Nameserver zeigen.<br />
<br />
ping www.google.de<br />
<br />
sollte mit Antwortpaketen beantwortet werden.<br />
<br />
<br />
Wenn es Probleme gibt:<br />
<br />
Logdatei /var/log/everything.log auswerten<br />
<br />
Siehe auch Wiki-Artikel [[Netzwerkprobleme]]<br />
<br />
=== Netzwerk-Profile ===<br />
<br />
{{Unvollständig}}<br />
'''ACHTUNG: dieser Teil ist nur noch vom Prinzip her gültig!'''<br><br />
'''netcfg ist durch netcfg2 abgelöst, Hinweise dazu siehe bitte: ''' [http://wiki.archlinux.org/index.php/Netcfg netcfg]<br />
<br />
Diese Methode erlaubt während des Bootvorgangs oder nachträglich das Wählen zwischen unterschiedlichen Netzwerkverbindungen (egal ob Ethernet oder Wlan). Hierbei kann für Wlan auch eine WPA-verschlüsselte Verbindung eingerichtet werde.<br />
<br />
Für WPA wird gebraucht:<br />
<br />
pacman -S wpa_supplicant<br />
<br />
Die verschiedenen Profile liegen in ''/etc/network-profiles''. Anfangs befindet sich nur eine Vorlage darin, die Datei ''template''.<br />
<br />
Anhand dieser Datei können jetzt unterschiedliche Profile erstellt werden. Profile können z.B. sein: ein Profil für Ethernet zuhause mit statischer IP-Adresse, eines für Ethernet mit DHCP für unterwegs, eines für die WLAN-Verbindung (verschlüsselt WPA), usw.<br />
<br />
Ich stelle hier zwei Profile vor, um das Prinzip deutlich zu machen. Kommentare zu den einzelnen Parametern finden sich in der ''template'' Datei.<br />
<br />
* Profil für Ethernet mit statischer IP-Adresse<br />
* WPA-verschlüsselte kabellose Verbindung<br />
<br />
<pre><br />
#/etc/network-profiles/home-lan<br />
<br />
# Profil: LAN-Zuhause mit statischer IP<br />
#<br />
DESCRIPTION="Home LAN "<br />
<br />
# Network Settings<br />
INTERFACE=eth0<br />
HOSTNAME=myhost<br />
<br />
# Interface Settings (use IFOPTS="dhcp" for DHCP)<br />
IFOPTS="192.168.1.10 netmask 255.255.255.0 broadcast 192.168.1.255"<br />
<br />
GATEWAY=192.168.1.1<br />
<br />
# DNS Settings (optional)<br />
DOMAIN=local.lan<br />
DNS1=192.168.1.1<br />
DNS2=<br />
</pre><br />
<br />
<pre><br />
#/etc/network-profiles/uni-wlan<br />
<br />
# Profil: Uni-Zugang mit WPA-Verschluesselung, IP ueber DHCP<br />
#<br />
DESCRIPTION="Uni WLAN"<br />
<br />
# Network Settings<br />
INTERFACE=ath0<br />
HOSTNAME=myhost<br />
<br />
# Interface Settings (use IFOPTS="dhcp" for DHCP)<br />
IFOPTS="dhcp"<br />
<br />
# DNS Settings (optional)<br />
#DOMAIN=localdomain<br />
#DNS1=192.168.0.1<br />
#DNS2=<br />
<br />
# Wireless Settings (optional)<br />
ESSID=UniESSID<br />
<br />
#KEY=<br />
#IWOPTS="mode managed essid $ESSID channel 11 key s:$KEY"<br />
<br />
WIFI_INTERFACE=ath0<br />
<br />
#WIFI_WAIT=5 # seconds to wait for the wireless card to<br />
# associate before bringing the interface up<br />
<br />
USEWPA="yes" # start wpa_supplicant with the profile<br />
WPAOPTS="-D wext" # use "" for normal operation or specify additional<br />
# options (eg, "-D ipw")<br />
# see /etc/wpa_supplicant.conf for configuration<br />
<br />
#AUTOWPA="yes" # automatically configure WPA<br />
<br />
#PASSKEY="" # wpa passkey/phrase. for use with AUTOWPA<br />
</pre><br />
<br />
Bei diesem letzten Beispiel kommt nun erstmals das Tool ''wpa_supplicant'' mit ins Spiel, welches die Authentifizierung und Verschlüsselung mit WPA/PSK ermöglicht.<br />
<br />
Durch den Parameter USEWPA=“yes“ ermöglichen wir das. Dieses Profil nutzt nun den Parameter ESSID um in der wpa_supplicant Konfigdatei ''/etc/wpa_supplicant.conf'' einen zu dieser ESSID passenden Eintrag zu finden.<br />
<br />
Zur Konfiguration von wpa_supplicant siehe den entsprechenden Abschnitt in diesem Artikel.<br />
<br />
Hinweis: die Parameter KEY= und IWOPTS= in den Profil-Dateien dienen bei einer Wlan-Verbindung den Angaben für offenes oder mit WEP-verschlüsselter Authentifizierung.<br />
<br />
Wie können wir jetzt mit diesen Profilen arbeiten?<br />
<br />
Voraussetzung dafür sind erstmal entsprechende Einträge in der ''/etc/rc.conf''. Hinweis: da wir die Netzwerk-Verbindungen komplett durch die Profiles regeln wollen/können brauchen wir in der rc.conf keinen Einträge für Ethernet- oder WLAN-Devices. Bis auf loopback Device (lo) können wir alles auskommentieren bzw. löschen.<br />
<br />
<pre><br />
#/etc/rc.conf<br />
<br />
lo="lo 127.0.0.1"<br />
INTERFACES=(lo)<br />
#<br />
NET_PROFILES=(menu)<br />
</pre><br />
<br />
Durch den Parameter NET_PROFILES wird die Profilwahl gesteuert. Wir haben hier folgende Optionen:<br />
<br />
* menu = bietet beim Bootvorgang ein Auswahl-Menü an. Dieses Menü wartet ca. 5 Sekunden auf eine Auswahl oder bootet danach das Profil, dessen Dateiname lexikalisch an erster Stelle kommt.<br />
Hinweis: Das automatische Menu-ANGEBOT FUNKTIONIERT NICHT, wenn "network" als Daemon in der rc.conf mit einem vorangestellten "@" während des Bootvorgangs in den Hintergrund verbannt wurde!<br />
* ''profildatei_name'' = Durch Angabe eines Profilnamens (z.B. obiges home-lan)<br />
<br />
Eine weitere Möglichkeit ist, in der ''rc.conf'' den Parameter NET_PROFILES wegzulassen und das gewünschte Profil als Bootparameter anzugeben bzw. in den Bootmanager einzutragen. Dieser Parameter heißt NET=''profildatei_name''<br />
<br />
Wir können auch nach dem Booten erstmal ganz ohne Netzwerk booten (also kein NET_PROFILES in der rc.conf und kein Bootparameter NET=), und dann später das gewünschte Profil per Hand aktivieren.<br />
<br />
Dieses nachträgliche Aktivieren oder auch das spätere Wechseln der Profile außerhalb des Bootvorgangs geschieht durch das Tool ''netcfg''. <br />
<br />
<pre><br />
netcfg --menu<br />
# ruft das Menü auf<br />
<br />
netcfg profil_name<br />
# startet das Profil profil_name<br />
<br />
netcfg --stopall<br />
# stoppt alle Netzwerkverbindungen<br />
<br />
# netcfg -h gibt noch weitere Optionen<br />
</pre><br />
<br />
Hinweis: bei Verwendung der Netzwerk-Profile kann immer nur ein Device aktiv sein, da jedes Profil genau ein Device regelt. Wenn analog unseren Beispielen oben Home-Lan aktiv ist und zu Uni-Wlan gewechselt wird, dann wird die Verbindung der aktiven Profiles beendet und das Device deaktiviert.<br />
<br />
=== wpa_supplicant ===<br />
wpa_supplicant ist zum einen eine Umgebung um verschlüsselte Wlan-Verbindungen zu ermöglichen, zum anderen ein Tool um diese Anmeldung auch durchführen zu können.<br />
<br />
wpa_supplicant kommt mit den gebräuchlichsten Authentifizierungs-Standards zurecht.<br />
<br />
wpa_supplicant wird installiert mit:<br />
<br />
pacman -S wpa_supplicant<br />
<br />
Die sehr ausführlich kommentierte Konfigurations-Datei liegt in /etc/wpa_supplicant.conf.<br />
<br />
Davon sollte man sich erstmal eine Sicherung machen um dann seine eigenen Netzwerke einzutragen.<br />
<br />
cp /etc/wpa_supplicant.conf /etc/wpa_supplicant.conf.org<br />
<br />
Unterhalb von „#example block“ sind jetzt Beispiel-Netze aufgeführt. Diese kann man als Grundlage für seine eigene Umgebung verwenden, sollte dann diese Beispiele aber löschen.<br />
<br />
Hier soll ein Beispiel gezeigt werden für ein WLAN-Netz, welches mit WPA-PSK verschlüsselt ist.<br />
<br />
Den Netzwerk-Namen „UniESSID“ und das Passwort anpassen.<br />
<br />
<pre><br />
network={<br />
ssid="UniESSID"<br />
key_mgmt=WPA-PSK<br />
proto=WPA<br />
pairwise=TKIP<br />
group=TKIP<br />
psk="klartext-passwort"<br />
}<br />
</pre><br />
<br />
Für jedes verschlüsselte WLAN, mit dem man sich verbinden will, muss nun solch ein network Block in dieser Konfigdatei existieren. Man kann diese (als root) schnell mit einem Editor (copy&paste) einfügen bzw. ändern. Es gibt aber auch eine grafische Oberfläche. Dazu später mehr.<br />
<br />
<br />
'''Starten als Daemon und Bedienung'''<br />
<br />
Momentan starten wir alle Tools testweise per Hand im Vordergrund um uns vertraut zu machen. Wir brauchen zwei Textkonsolen, in denen wir beidemal root sind. Ich gehe hier wieder von meinem WLAN-Device ath0 aus.<br />
<br />
wpa_supplicant:<br />
<br />
ifconfig ath0 up<br />
<br />
wpa_supplicant -iath0 -c/etc/wpa_supplicant.conf -d<br />
<br />
Das startet wpa_supplicant im Vordergrund im Debug-Modus (-d)<br />
<br />
In der zweiten Konsole bedienen wir jetzt den Daemon:<br />
<br />
wpa_cli<br />
<br />
gibt uns eine Bedienungsumgebung, in der wir Netze suchen, verbinden, trennen und auch neue Netze in die Konfig-Datei eintragen können. Die Bedienung ist typisch spartanisch, aber es funktioniert. Bei den meisten Befehlen müssen nur die ersten Buchstaben eingegeben werden, wenn es mehrere Alternativen gibt bekommen wir das mitgeteilt.<br />
<br />
help – zeigt uns alle möglichen Befehle<br />
scan – scannt nach verfügbaren Netzwerken<br />
scan_result – zeigt uns das Ergebniss des Scans (scan_r geht auch)<br />
list – zeigt uns unsere definierten Netzwerke aus der wpa_supplicant.conf<br />
select <nr> - wählt und aktiviert das bei list gezeigte Netzwerk mit der Nummer <nr>, select <ESSID> geht auch<br />
disconnect – trennt die Verbindung<br />
reassociate – nimmt die momentan gewählte Verbindung wieder auf.<br />
reconfigure – liest die Konfigdatei /etc/wpa_supplicant.conf neu ein.<br />
quit – beendet das wpa_cli Tool.<br />
<br />
Neben dem Interface lasssen sich die wpa_cli Kommandos auch direkt aufrufen, z.B.<br />
<br />
wpa_cli select 0<br />
<br />
Wenn mit obigen Kommandos die verschlüsselte Verbindung nun erfolgreich war (wpa_cli meldet uns das mit: CTRL-EVENT-CONNECTED, das Status-Fenster des Daemons mit: WPA: Key negotiation completed with), dann ist das erst die halbe Miete.<br />
<br />
Wie einleitend angeführt sind WLAN-Authentifizierung/Verbindung und TCP/IP zwei verschiedene Paar Schuhe. Um jetzt z.B. über einen WLAN-Router ins Internet zu kommen muss unser WLAN-Device noch eine IP bekommen und Routen und Nameserver angegeben werden.<br />
<br />
Wenn der Router DHCP anbietet reduziert sich dieser Aufwand auf ein simples:<br />
<br />
dhcpcd ath0<br />
<br />
Um die Nutzung von wpa_supplicant zu automatisieren bietet sich an:<br />
<br />
#/etc/rc.local<br />
<br />
wpa_supplicant -iath0 -c/etc/wpa_supplicant.conf -Dwext -B<br />
<br />
Nach dem Boot wird wpa_supplicant als Daemon (-B) automatisch gestartet und versucht sich automatisch mit dem am besten erreichbarem WLAN zu authentifizieren, welches entweder „offen“ ist oder in der Konfigdatei definiert ist.<br />
<br />
<br />
'''Die GUI zu wpa_supplicant'''<br />
<br />
Mit:<br />
<br />
pacman -S wpa_supplicant_gui<br />
<br />
installieren wir das Tool.<br />
<br />
Gestartet wird es mit:<br />
wpa_gui<br />
<br />
Um wpa_gui auch als Nicht-Root benutzen zu können:<br />
<br />
* start mittels kdesu/gksu und Eingabe des Root-Passworts<br />
* Über sudo und freischalten dieses Programms in /etc/sudoers<br />
<br />
Mit dieser GUI kann sich komfortabel zu jedem beliebigen WLAN verbunden werden, Netze und Einstellungen hinzugefügt, bearbeitet werden u.v.m.<br />
<br />
Lediglich die TCP/IP Netzwerkeinstellungen müssen ggf. von Hand jeweils angepasst werden.<br />
<br />
(NB: hier muss sicher noch einiges ausführlicher/besser dargestellt werden.)<br />
<br />
=== Networkmanager ===<br />
Die Installation und Konfiguration von NetworkManager wird [[Networkmanager|hier]] beschrieben.<br />
<br />
Networkmanager ist ein sehr interessantes Konzept. Es kümmert sich um die komplette Netzanbindung des Rechners (v.a. interessant für Laptops in wechselnden Umgebungen).<br />
* Es wird versucht, '''immer''' eine Netzverbindung aufrechtzuhalten bzw. aufzubauen.<br />
* Die Reihenfolge dabei ist:<br />
** Kabelgebundene Verbindung (Ethernet) vor WLan wegen der Geschwindigkeit.<br />
** Bei WLan wird nach bekannten Netzen gesucht und damit verbunden, ansonsten wird versucht sich mit offenen Netzen zu verbinden.<br />
** Wenn momentan keine WLan-Verbindung aufgebaut werden kann, wird permanent nach neuen Netzen gescannt.<br />
<br />
Der größte Nachteil von Networkmanager ist, dass nach/während des Bootvorgangs maximal eine kabelgebundene Ethernet-Verbindung (mit DHCP) zur Verfügung steht. Eine andere Verbindung (v.a. verschlüsseltes WLan) steht erst nach Einloggen eines Users und dem Starten eines der FrontEnds(knetworkmanager, gnome-network-manager) zur Verfügung, da Verbindungsdaten (Essid, Passwörter) per User geladen werden.<br><br />
Wer also Networkmanager z.B. mit WLan nutzen möchte kann z.Zt. keine Netzwerk-Shares (nfs, samba) in der /etc/fstab beim Booten einbinden. Nach dem Start des Frontends durch den User ist das aber durch den Dispatcher (siehe weiter unten) sehr wohl möglich.<br />
<br />
'''Nützliches rund um den Networkmanager'''<br />
<br />
Mit ''nm-tool'' kann man sich den Status der momentanen Verbindung und der vom Networkmanager verwalteten Devices anschauen.<br />
<br />
Das Start/Stop-Skript in /etc/rc.d bietet die Optionen alle Verbindungen zeitweilig zu stoppen und wieder aufzunehmen.<br />
* /etc/rc.d/networkmanager sleep trennt alle aktiven Verbindungen (die Devices werden auf Down gesetzt)<br />
* /etc/rc.d/networkmanager wake nimmt die Verbindung wieder auf bzw. initiert das Suchen nach einer Verbindung neu.<br />
Das kann man sich z.B. zu Nutze machen, wenn man nach dem Booten/Einloggen erstmal '''kein''' Netzwerk haben, sondern es später zuschalten möchte. Dazu kann man folgendes konfigurieren:<br />
#/etc/rc.local<br />
<br />
/etc/rc.d/networkmanager sleep<br />
Zum Aktivieren des Networkmanagers kann dann o.a. Startskript-Befehl mit wake genutzt werden. Oder im grafischen Frontend die Option "In Online-Modus wechseln".<br />
<br />
Ein wenig bekannter Zusatz ist der '''Networkmanager-Dispatcher'''. Durch Start dieses Daemons kann der Networkmanager Vorgänge auslösen, je nachdem ob ein Device (eth0, ath0, wlan0) UP oder DOWN gemeldet wird. Also z.B. auf das An-/Ab-Stöpseln des Ethernet-Kabels reagieren oder ob eine WLan-Verbindung aufgebaut wurde.<br />
<br />
Damit ist es z.B. möglich, nach dem Start NFS-Freigaben einzumounten - auch bei WLan-Verbindungen.<br />
<br />
Aktiviert wird der Dispatcher so:<br />
#/etc/rc.conf<br />
<br />
DAEMONS=(... dhcdbd networkmanager '''networkmanager-dispatcher''' ...)<br />
Skripte die, je nachdem ob ein Device UP oder DOWN ist, abgearbeitet werden, liegen in<br />
/etc/NetworkManager/dispatcher.d<br />
Nach der Installation liegen dort bereits zwei Skripte:<br />
* netfs<br />
* ntpdate<br />
Das Erste kümmert sich um die Einbindung aller Arten von Netzwerk-Mounts, die in der Datei /etc/fstab definiert sind. Es startet/stoppt dazu den ArchLinux-Mechanismus um die fstab-Datei gezielt nach Netzwerk-Mounts zu durchsuchen.<br><br />
Das zweite Skript würde die Uhrzeit anhand eines NTP(Zeit)-Servers angleichen, sofern das Paket ntp installiert ist.<br />
<br />
Eigene Skripte könnten z.B. so aufgebaut sein:<br />
<pre><br />
#/etc/NetworkManager/dispatcher.d/1-test<br />
<br />
#!/bin/sh<br />
#<br />
arping -c 3 192.168.1.2 | grep 00:12:8B:38:A0:74 > /dev/null<br />
AT_HOME_LAN=$?<br />
nm-tool | grep UniEssid > /dev/null<br />
AT_HOME_WLAN=$?<br />
<br />
case "$2" in<br />
up)<br />
if [ $AT_HOME_LAN == 0 ]; then<br />
echo "Home LAN verfügbar" >> /tmp/t.log<br />
else<br />
echo "Home LAN nicht verfügbar" >> /tmp/t.log<br />
fi<br />
if [ $AT_HOME_WLAN == 0 ]; then<br />
echo "Home WLAN verfügbar" >> /tmp/t.log<br />
else<br />
echo "Home WLAN nicht verfügbar" >> /tmp/t.log<br />
fi<br />
;;<br />
down)<br />
;;<br />
esac<br />
</pre><br />
Dazu sollte installiert sein:<br />
pacman -S arping<br />
Als IP-Adresse setzt man die ein, welche zu dem Rechner gehört auf dessen Verfügbarkeit man prüfen möchte. Damit jetzt nicht ein beliebiger Rechner mit dieser IP-Adresse irrtümlich für den Rechner zuhause gehalten wird, prüft man auch auf die MAC-Adresse. Das ist diese zwölfstellige Hexadezimal-Zahl, die durch Dopelpunkte getrennt wird.<br><br />
Die MAC-Adresse eines Rechners kann man z.B. so rauskriegen:<br />
ping -c 5 <ip_addr_des_testrechners><br />
arp -n<br />
Die Ausgabe des Arp-Caches zeigt uns nun auch die MAC/HW-Adresse, die wir zum Identifizieren "unseres" Rechners nehmen können.<br />
<br />
Ob "unser" WLAN verfügbar ist können wir leicht testen, indem wir nach der Essid in der Ausgabe von nm-tool suchen. Das Beispiel UniEssid durch die eigene ersetzen, bei Verwendung von Leerstellen in der Essid mit Anführungsstriche (") umhüllen.<br />
<br />
Das Skript macht jetzt nicht mehr als beim Zustandekommen einer Verbindung zu prüfen, ob LAN und WLAN "zuhause" sind und schreibt dieses Ergebniss in ein Logfile /tmp/t.log.<br><br />
Mit ein bisschen Shellprogrammierung-Kenntnisse kann das aber sehr leicht an eigene Bedürfnisse angepasst werden. Noch ein Hinweis: Networkmanager übergibt im Parameter $1 den Interface-Namen (z.B. eth0), im zweiten den Zustand (up, down). Damit ließe sich gezielt Aktionen basierend auf der Art der Netzwerkverbindung und dem Zustand erstellen.<br />
<br />
=== Wicd ===<br />
Wicd ist ein von Desktops unabhängiger Networkmanager. Man installiert ihn mit:<br />
<br />
pacman -Sy wicd<br />
<br />
Ist dies getan trägt man den Wicd-Daemon in die <code>rc.conf</code> ein:<br />
<br />
DAEMONS=(... wicd ...)<br />
<br />
Nach einem Neustart des Systems oder manuellen Starten des Daemons gibt es nun zwei Möglichkeiten seine Netzwerke zu verwalten:<br />
<br />
wicd-curses<br />
<br />
oder<br />
<br />
wicd-client<br />
<br />
Startet man den Wicd-Client wird ein Icon ins Tray eingefügt und man erhält eine hübsche GTK-Oberfläche.<br />
Die Curses-basierte Oberfläche startet man im Terminal.<br />
<br />
Die Bedienung läuft dann gleich ab: Es gibt ein Hauptfenster in dem die WLAN- und die Kabelverbindungen angezeigt werden. Über die Einträge der WLAN-APs kann man die Verbindung zu diesem konfigurieren (Statische DNS, Passwort etc.). Kabelnetzwerke werden standardmäßig angezeigt, wenn eines verfügbar ist. Mit Refresh wird nach neuen APs gesucht. Unter Preferences kann man seine Interfaces konfigueren, die zu verwenden Treiber einstellen usw.<br />
<br />
Eine Besonderheit ist die Verbindung zu versteckten APs dar: In der GTK-Oberfläche klickt man auf Netzwerk und dann auf Find Hidden-Network, in der Curses-Oberfläche muss man Shift-I tippen um zu dieser Funktion zu gelangen.<br />
<br />
=== Sonstige hilfreiche Tools ===<br />
In Arbeit<br />
<br />
* ifplugd<br />
* wlassistant<br />
* wifi-radar<br />
<br />
<br />
<br />
<br />
[[Kategorie:Unvollständig]]<br />
[[en:Wireless Setup]]</div>PSubhttps://wiki.archlinux.de/index.php?title=Grub-gfx&diff=10728Grub-gfx2010-09-06T21:22:03Z<p>PSub: /* Fertige Bilder konvertieren */ Wegen https://bbs.archlinux.de/viewtopic.php?id=17347</p>
<hr />
<div>Dieser Artikel beschreibt wie man seinen [[GRUB]] aufpeppen kann, so wie man es evtl. schon von einigen anderen Distributionen kennt z.B. Gentoo und Debian.<br />
<br />
[[Bild:Arch_Linux_Grub_Theme.png|thumb|200px|Arch Linux GRUB-Theme]]<br />
<br />
==Installation==<br />
Das entsprechende Paket ist im „community“-Repostitory vorhanden und kann aus diesem mittels [[Pacman]] installiert werden<br />
<br />
pacman -S grub-gfx<br />
<br />
Nach der installation des Paketes muss der Bootloader mittels <code>grub-install /dev/sdX</code> installiert werden, wobei <code>SDX</code> für die Festplatte steht, von der gebootet werden soll.<br />
<br />
==Konfiguration==<br />
GRUB-GFX erstellt bei der Installation eine komplett neue <code>menu.lst</code>. Entweder passt man diese auf seine Bedürfnisse an oder der etwas elegantere Weg, man kopiert das Backup zurück und passt nur eine Zeile an.<br />
<br />
Das Backup wieder einspielen:<br />
<br />
# cp /boot/grub/menu.lst.pacsave /boot/grub/menu.lst<br />
<br />
Die entsprechende Zeile in der <code>menu.lst</code> hinzufügen,<br />
Änderungen '''ohne /boot Partition''':<br />
<br />
[…]<br />
timeout 30<br />
default 0<br />
'''splashimage /boot/grub/splash.xpm.gz'''<br />
color light-blue/black light-cyan/blue<br />
[…]<br />
<br />
Änderungen '''mit /boot Partition''':[[Bild:Arch.gif|thumb|200px|GRUB-GFX Archlinux]]<br />
<br />
[…]<br />
timeout 30<br />
default 0<br />
'''splashimage /grub/splash.xpm.gz'''<br />
color light-blue/black light-cyan/blue<br />
[…]<br />
<br />
Nach einem Neustart des PC zeigt GRUB nun ein Hintergrundbild an.<br />
<br />
<br />
==Eigene Themes erstellen==<br />
GRUB-GFX benutzt gzip komprimierte xpm-Bilder in der Größe '''640x480''' Pixel mit maximal '''14 Farben'''.<br />
<br />
===Mit GIMP erstellen===<br />
Als Vorlagen 640x480 auswählen, ansonsten die Größe selbst eintragen.<br />
<br />
Sobald das Bild fertig ist muss man es noch auf 14 Farben bringen. Dazu klickt man mit rechts auf das Bild, „Bild → Modus → Indiziert“<br />
<br />
In diesem Menü lässt man die Voreinstellung für <code>Optimale Palette erzeugen</code> aktiv, man muss nur die 256 durch 14 ersetzen und anschließend auf <code>Umwandeln</code> klicken.<br />
<br />
Danach das Bild als xpm-Datei Abspeichern.<br />
<br />
Die DATEINAME.xpm jetzt noch als gzip packen. In die Konsole wechseln und in das entsprechende Verzeichnis, wo DATEINAME.xpm liegt.<br />
<br />
# gzip DATEINAME.xpm<br />
<br />
Neue Datei <code>DATEINAME.xpm.gz</code>, die Ursprungsdatei gibt es nicht mehr.<br />
<br />
Als root die <code>DATEINAME.xpm.gz</code> ins richtige GRUB-Verzeichnis verschieben. Falls man boot noch nicht gemountet hat sollte man es nun mounten.<br />
<br />
# mv PFAD_ZUM_BILD/DATEINAME.xpm.gz /boot/grub/<br />
<br />
Jetzt noch die <code>menu.lst</code> ändern, wie unter [[#Konfiguration]] beschrieben.<br />
<br />
===Fertige Bilder konvertieren===<br />
Im Paket <code>imagemagick</code> befindet sich das Programm <code>convert</code>, damit lassen sich fertige Bilder konvertieren.<br />
<br />
# pacman -S imagemagick<br />
<br />
Datei in xpm umwandeln und packen <br />
<br />
convert -colors 14 -resize 640x480 bild.png bild.xpm && gzip DATEINAME.xpm<br />
<br />
Als root die <code>DATEINAME.xpm.gz</code> ins richtige GRUB-Verzeichnis zu verschieben. Falls man boot noch nicht gemountet hat sollte man es nun mounten.<br />
<br />
# mv PFAD_ZUM_BILD/DATEINAME.xpm.gz /boot/grub/<br />
<br />
Jetzt noch die <code>menu.lst</code> ändern, wie unter [[#Konfiguration]] beschrieben.<br />
<br />
==Splash-Bilder==<br />
* [http://www.gnome-look.org/content/show.php?content=77116 Arch Linux GRUB Theme] - von [http://bbs.archlinux.org/profile.php?id=14836 valnour] aus dem englischen Forum<br />
* [http://www.schultz-net.dk/grub.html Jesper Schultz Grub SplashImages] - 35 Stück<br />
* [http://schragehome.de/splash/ Klaus-Peter Schrage GRUB splash images] - 13 Stück<br />
* [http://www.queervisions.com/arch/2007/04/9_grub_splash_i.html Grub Splash Images] - 9 Stück<br />
<br />
==Siehe auch==<br />
* [[GRUB]]<br />
* [[GRUB2]]<br />
<br />
==Weblinks==<br />
* [http://www.gnu.org/software/grub/ Homepage von GRUB] {{sprache|en}}<br />
<br />
[[Kategorie:Bootloader]]<br />
[[en:grub-gfx]]</div>PSubhttps://wiki.archlinux.de/index.php?title=ATI&diff=10727ATI2010-09-06T21:21:41Z<p>PSub: /* Fehlerbehebung */ Wegen https://bbs.archlinux.de/viewtopic.php?id=17347</p>
<hr />
<div>Für den Betrieb von ATI-Grafikkarten unter Linux gibt es die Möglichkeit der Benutzung zweier freier Treiber (ati, radeonhd). Auch existiert ein propritärer Treiber, der zwar volle 3D Unterstützung bietet, aber häufig das aktuellste X.org nicht unterstützt. Die Treiber unterscheiden sich in ihrem Funktionsumfang, wobei die freien Treiber in den meisten Fällen ausreichen sollten.<br />
<br />
==Open Source Treiber==<br />
===Installation===<br />
Das Treiberpaket ''xf86-video-ati'' wird mittels<br />
pacman -S xf86-video-ati<br />
installiert.<br />
<br />
Das Paket ''xf86-video-ati'' stellt den ''radeon'' Treiber bereit, der Grafikkarten von der Radeon 7000 Serie bis zur Radeon HD 5xxx Serie unterstützt (r100 - r800).<br />
Mehr Informationen finden sich auf der offizielle Seite von [http://www.x.org/wiki/radeon ''radeon''].<br />
<br />
Als Alternative lässt sich ''xf86-video-radeonhd'' verwenden, der wie oben beschrieben installiert wird. ''radeonhd'' unterstützt Grafikkarten von der Radeon X1xxx Serie bis zur Radeon HD 4xxx Serie (r500 - r700), allerdings wird KMS nicht unterstützt und muss deaktivert werden. Zudem scheint der Treiber derzeit nicht weiterentwickelt zu werden.<br />
Mehr Informationen finden sich auf der offizielle Seite von [http://www.x.org/wiki/radeonhd ''radeonhd''].<br />
<br />
===Konfiguration===<br />
Eine Konfiguration mittels der Datei ''xorg.conf'' ist nicht mehr notwendig. Das für Kernel Mode Setting ([[KMS]]) nötige drm-Modul (radeon) wird automatisch von [[udev]] geladen und es bedarf im Regelfall ebenfalls kein Eingreifen des Benutzers.<br />
<br />
{{Hinweis|Der Benutzer muss in der Gruppe '''video''' sein, um die 3D-Unterstützung, zu verwenden.}}<br />
<br />
'''Frühes Aktivieren von KMS:'''<br />
<br />
Damit die Bildschirmauflösung möglichst früh gesetzt werden kann, müssen die dazu nötigen Module und Dateien dem initramfs-Image hinzugefügt werden. Dazu muss in der Datei ''/etc/mkinitcpio.conf'' die Zeile ''MODULES'' geändert werden:<br />
MODULES="radeon"<br />
<br />
Anschließend muss noch das Image neu erstellt werden.<br />
mkinitcpio -p kernel26<br />
<br />
Der ''vga'' Parameter des Kernel sollte ebenfalls entfernt werden.<br />
<br />
====TV-Out====<br />
'''Derzeit unterstützt nur ''radeon'' TV-Out.'''<br />
<br />
Um die TV-Out Unterstützung auf Karten der Radeon HDxxxx Reihe (r6xx-r7xx) zu aktivieren, muss<br />
Option "ATOMTvOut" "TRUE"<br />
in ''Section "Device"'' in der Datei xorg.conf eingefügt werden.<br />
<br />
Der Ausgang wird mittels '''xrandr''' konfiguriert:<br />
xrandr --output S-video --set load_detection 1<br />
xrandr --addmode S-video 800x600<br />
xrandr --output S-video --set tv_standard pal<br />
<br />
Aktiviert wird der Ausgang mit:<br />
xrandr --output S-video --mode 800x600<br />
<br />
Ausgeschaltet wird der Ausgang mit:<br />
xrandr --output S-video --off<br />
<br />
Leider kann der Inhalt eines XVideo-Bereichs (z.B. DVD-Wiedergabefenster) nur entweder auf dem PC selbst oder aber auf dem TV-Gerät ausgegeben werden. Das Umschalten geschieht mit [http://aur.archlinux.org/packages.php?ID=22671 xvattr], welches man aus dem [[AUR]] installieren kann.<br />
<br />
*Video-Ausgabe auf TV<br />
xvattr -a XV_CRTC -v 1<br />
<br />
*Video-Ausgabe auf PC<br />
xvattr -a XV_CRTC -v 0<br />
<br />
Alternativ zur Nutzung von ''xvattr'' kann man auch den Desktop erweitern und dann das Video Fenster auf den Fernseher verschieben.<br />
So kann man den PC auch während der Video-Wiedergabe weiterbenutzen.<br />
Das wird dann ebenfalls mit xrandr gemacht. Zum Beispiel so:<br />
xrandr --output S-video --right-of LVDS <br />
Das erweitert den Desktop auf der rechten Seite. Man kann dann also Fenster rechts aus dem Bild schieben und sie erscheinen dann auf dem Fernseher. Es kann auch sein, dass man statt ''LVDS'' ''VGA-0'' oder ''VGA'' nehmen muss. Das kann man herausfinden indem man sich die Ausgabe von ''xrandr -q'' anschaut.<br />
<br />
Damit das ganze funktioniert muss man in der xorg.conf in der Screen Section die maximale virtuelle Auflösung (Monitor + TV) angeben.<br />
Das sieht dann z.B. so aus:<br />
Section "Screen"<br />
Identifier "Default Screen"<br />
Device "ATI Technologies Inc RV350 [Mobility Radeon 9600 M10]"<br />
Monitor "LCD-Display"<br />
DefaultDepth 24<br />
SubSection "Display"<br />
Depth 24<br />
Modes "1280x800"<br />
'''Virtual 2080 800'''<br />
EndSubSection<br />
EndSection<br />
Die Werte für '''Virtual''' ergeben sich aus der Auflösung des Monitors (hier 1280x800) und der des TV-Ausgangs (hier 800x600).<br />
Also 2080 = 1280 + 800 und da in diesem Fall die Vertikale Auflösung des TV-Ausgangs (600) kleiner ist als die des Monitors (800) und der Desktop nach rechts erweitert wird, reicht eine maximale virtuelle Vertikale Auflösung von 800.<br />
<br />
'''Bild nur schwarz-weiss'''<br />
<br />
Falls das Bild auf dem Fernseher nur schwarz-weiss ist, liegt das vermutlich am verwendeten Kabel.<br /> <br />
Hier (Acer Extensa 3000, Mobility Radeon 9700) verwende ich ein S-VHS Kabel und einen S-VHS -> SCART Adapter. Nach Ablöten bzw. Entfernen der Pins 13 und 17 im SCART Adapter habe ich nun ein farbiges Bild.<br />
Ich weiss nicht ob das immer funktioniert, aber einen Versuch ist es auf jeden Fall Wert. Es gibt aber auch fertige Kabel/Adapter zu kaufen, die das Problem beheben. Zum Beispiel das "PC-VIDEO-Verbindungsset" von HAMA.<br />
<br />
===Fehlerbehebung===<br />
Fehler lassen sich in der Datei ''/var/log/Xorg.0.log'' finden.<br />
<br />
Für die Behebung des Fehlers<br />
(EE) Failed to load /usr/lib/xorg/modules/extensions//libdri.so<br />
(EE) Failed to load module "dri" (loader failed, 7)<br />
(EE) RADEONHD(0): RHDDRIVersionCheck: symbol DRIQueryVersion not available.(libdri.a is too old)<br />
(WW) RADEONHD(0): RHDDRIPreInit: Version check failed. Disabling DRI.<br />
muss ''xorg-server'' neu installiert werden:<br />
pacman -S xorg-server<br />
<br />
In Zusammenhang mit Kernelmodesetting (KMS) kann es noch zu Problemen kommen. Auch bei Verwendung von ''xf86-video-radeonhd'' muss KMS deaktiviert werden. Dies geschieht durch<br />
radeon.modeset=0<br />
was dem Kernel als Parameter in Grub übergeben werden.<br />
<br />
==Proprietärer Treiber==<br />
Zu beachten ist, dass obwohl das Treiberpaket ''catalyst'' heißt, der Treiber und das nötige Kernelmodul ''fglrx'' heißen.<br />
<br />
===Installation=== <br />
{{Hinweis|Falls einer der freien Treiber installiert war, müssen die Pakete ''libgl'', ''ati-dri'' und ''xf86-video-ati'' oder ''xf86-video-radeonhd'' zuerst entfernt werden! Sollte dies wegen Abhängigkeitsproblemen nicht funktionieren, kann die Option 'd' verwendet werden. (pacman -Rd libgl ati-dri xf86-video-ati)}}<br />
<br />
Der proprietäre Treiber ist im [http://aur.archlinux.org/packages.php?ID=22899 AUR] zu finden und kann mittels [[Abs|ABS]] erstellt werden. Eine Aktualisierung des Kernels oder von X.org kann die Neuerstellung dieser Pakete notwendig machen.<br />
<br />
Der aktuelle proprietäre Treiber unterstützt nur noch Karten ab der HD2xxx-Serie (r600). Für ältere Grafikkarten muss einer der [[#Open_Source_Treiber|freien Treiber]] verwendet werden.<br />
<br />
===Konfiguration===<br />
Die Datei xorg.conf muss folgendermaßen editiert werden:<br />
<br />
'''Device Section'''<br />
<br />
Section "Device"<br />
Identifier "Device"<br />
Driver "fglrx"<br />
EndSection<br />
<br />
{{Hinweis|Der Benutzer muss in der Gruppe '''video''' sein, um die 3D-Unterstützung zu verwenden.}}<br />
<br />
=== Fehlerbehebung ===<br />
Fehler lassen sich in der Datei ''/var/log/Xorg.0.log'' finden.<br />
<br />
Wenn Xorg nicht startet und die Fehlermeldung zurückgibt, dass die eingestellte 8-Bit-Farbtiefe von fglrx nicht unterstützt werde, muss man die „Screen“-Sektion um folgenden Eintrag erweitern.<br />
<br />
DefaultDepth 24<br />
<br />
==Siehe auch==<br />
<br />
* [[XRandR]]<br />
* [[X]]<br />
<br />
==Weblinks==<br />
<br />
* [http://www.x.org/wiki/radeon Offizielle Seite von ''radeon''] {{Sprache|en}}<br />
* [http://www.x.org/wiki/radeonhd Offizielle Seite von ''radeonhd''] {{Sprache|en}}<br />
<br />
[[Kategorie:Hardware]]<br />
[[Kategorie:Grafikkarten]]</div>PSubhttps://wiki.archlinux.de/index.php?title=Emacs&diff=10726Emacs2010-09-06T21:20:40Z<p>PSub: /* WWW in emacs */ Wegen https://bbs.archlinux.de/viewtopic.php?id=17347</p>
<hr />
<div>[[Kategorie:Editoren]]<br />
Emacs ist<br />
* ein sehr umfangreicher und mächtiger, enorm weit verbreiteter '''Editor''',<br />
* eine '''Programmierplattform und Laufzeitumgebung''' für Lisp-Anwendungen, beispielsweise News- und Mail-Clients,<br />
* eine offene '''Entwicklungsumgebung'''.<br />
Manche witzeln, er sei ein eigenes Betriebssystem. Die folgende Präsentation gibt mit vielen Screenshots einen guten Überblick [http://stuff.mit.edu/iap/2009/emacs/part1.html].<br />
<br />
Die Programmierung am Emacs wurde 1984 von Richard Stallman in Lisp begonnen. Emacs steht unter der GPL.<br />
<br />
'''Abgrenzung''': Es kann nicht Sinn dieser Abhandlung sein, Emacs in seiner Funktion zu erklären oder gar zu dokumentieren. Zu Emacs gibt es tonnenweise Material im Internet (siehe Links), teilweise auch auf Deutsch, so daß man sich jederzeit konkret und detailliert informieren kann. Ziel ist hier, die Installation und Konfiguration zu erläutern und einen Überblick über die wichtigsten Funktionen zu geben, was als Anregung zum Ausprobieren verstanden werden soll. Arch way, erst machen, dann fragen und so ...<br />
<br />
== Installation ==<br />
Emacs kann mithilfe von [[pacman]] installiert werden:<br />
pacman -S emacs<br />
Diese Binärdateien sind gegen [[GTK]] gelinkt und enthalten die typischen Dekorationen und Stile für Menü, Toolbar, Scrollbars usw., zudem auch die üblichen Datei-Dialoge.<br />
<br />
Wer Emacs ohne GTK betreiben will, kann sich problemlos die Quellen beschaffen und selbst compilieren. Es besteht per configure-Option die Möglichkeit, die Verwendung der Motif-Bibliotheken zu erzwingen (diese stehen als pacman-Paket openmotif oder lesstif zur Verfügung) oder ganz auf die Verwendung eines Toolkits zu verzichten und rein für X11 zu compilieren, was Emacs ein rustikaleres Aussehen gibt, aber möglicherweise eine halbe Sekunde Ladezeit spart.<br />
<br />
Es besteht sogar die Möglichkeit, ganz ohne X-Bibliotheken auszukommen. Die entsprechenden Pakete haben dann ein -nox im Paketnamen.<br />
<br />
== Starten ==<br />
Um Emacs zu starten, muß man nur<br />
emacs<br />
in die Konsole eingeben. Unter '''X11''' wird Emacs als X11-Programm in einem neuen X11-Fenster gestartet. Es wäre ratsam, in diesem Fall emacs mit & zu starten:<br />
emacs &<br />
da er sonst das Terminal blockiert, von dem aus der Aufruf erfolgte. Wenn man Emacs unter X11 im aktuellen Terminal starten möchte, ohne daß ein neues Fenster geöffnet wird, so kann man<br />
emacs -nw <br />
eingeben, dann in jedem Falle ohne &.<br />
<br />
Sofern gar '''kein X11''' läuft, kann man Emacs auch auf der Kommandozeile starten, wobei der Zusatz -nw nicht notwendig ist. Möglicherweise funktionieren allerdings einige Tasten anders (ausprobieren). Das Menü wird aus Platzgründen normalerweise nicht angezeigt, man kann es mit der Funktionstaste F10 hervorholen.<br />
<br />
Emacs bietet ein Modell an, bei dem quasi ein emacs-Dämon als '''Server''' läuft, während die später interaktiv vom Benutzer gestarteten emacs-Prozesse jeweils '''Clients''' dieses Servers werden. Der Vorteil liegt vor allem in geringerer Ladezeit. Näheres hier [http://www.gnu.org/software/emacs/manual/html_node/emacs/Emacs-Server.html#Emacs-Server]<br />
<br />
Man wird allerdings selten Emacs immer und immer wieder starten, wie man es vielleicht von [[vi]] her kennt. Emacs bietet (beispielsweise mit dired) andere Möglichkeiten an, schnell Dateien zu öffnen, so daß das ständige Laden eigentlich überflüssig wird. Viele Benutzer haben ihren Emacs stunden- und tagelang offen. Eine Frage des persönlichen Geschmacks.<br />
<br />
== Bedienung ==<br />
Emacs wird üblicherweise vollständig über die '''Tastatur''' gesteuert. Er besitzt die Besonderheit, daß auch mehrere separate Tasten(kombinationen) hintereinander einen einzelnen Befehl auslösen können, beispielsweise nacheinander C-x und C-f (Datei öffnen). Tastenkombinationen können zudem (zumindest auf europäischen Tastaturen) auch aus drei Tasten bestehen, beispielsweise M-% (Suchen und Ersetzen), was auf einer deutschen oder schweizer Tastatur zu S-M-5 wird. (Zur Notation von Tastenkombinationen siehe hier [http://www.gnu.org/software/emacs/manual/html_node/emacs/User-Input.html#User-Input] und [http://www.gnu.org/software/emacs/manual/html_node/emacs/Keys.html#Keys])<br />
<br />
Die enorme Anzahl der Tastenkombinationen und ihre oft merkwürdige Anordnung auf der Tastatur haben in den letzten 20 Jahren zu viel Spott geführt. Man benötigt aber in der Tat nur einen kleinen Teil davon, wenige Prozent, und diese kann man lernen, es ist weit weniger schwer als es zunächst aussieht.<br />
<br />
Eine vollständige, aus der jeweils aktuellen Konfiguration des Editors heraus gebildete Liste aller Tastenkombinationen erreicht man mit<br />
C-h b<br />
Die Tastenkombinationen sind dort mit den durch sie ausgelösten Lisp-Funktionen aufgeführt, auf welche auch hypertextartig geklickt werden kann, um an nähere Informationen zu gelangen.<br />
<br />
Es existiert darüberhinaus eine zentrale Möglichkeit, im sog. '''Mini-Buffer''', den man über M-x erreicht, eine Lisp-Funktion mit ihrem Namen und ggf. Argumenten anzugeben und auszuführen. Dies scheint oft die komfortablere Möglichkeit, da man sich ggf. eher noch an verbale Begriffe erinnert als an Tastenkombinationen.<br />
<br />
Aufgrund der begrenzten Möglichkeiten, die ihre zwei oder drei Knöpfe bieten, gibt es nur wenige Funktionen, die auf der '''Maus''' liegen. Allerdings sind die Mausknöpfe auch mehrfach, nämlich noch im Zusammenhang mit Shift und Ctrl belegt.<br />
<br />
Ein sehr gut brauchbares '''Tutorial''' findet man im Editor selbst:<br />
C-h t<br />
oder im Help-Menü gleich der erste Eintrag. Es lohnt sich, dieses mal abzuarbeiten. Siehe ferner auch hier [http://www.fh-frankfurt.de/de/.media/~czermin/emacs_tutorial]<br />
<br />
Weitere Hinweise zur Bedienung gibt emacs selbst auf seinem Startbildschirm.<br />
<br />
== Emacs konfigurieren ==<br />
In emacs ist praktisch alles konfigurierbar. Und es gibt nicht zwei emacse, die gleich konfiguriert sind. So wird jeder emacs zu einem ganz individuellen Werkzeug, abgestimmt auf die persönlichen Bedürfnisse und Fähigkeiten seines Benutzers.<br />
<br />
=== Konfigurationsdateien ===<br />
Emacs selbst entnimmt seine Konfiguration aus der Datei ~/'''.emacs''', die auch ~/.emacs.el heißen darf, denn es ist eine echte Lisp-Datei. Emacs liest außerdem die ~/.Xdefaults.<br />
<br />
Komponenten von emacs besitzen ggf. eigene Konfigurationsdateien, vor allem Gnus gleich eine ganze Liste: ~/'''.gnus''' oder ~/.gnus.el, dazu ~/.authinfo, ~/.newsrc, ~/.newsrc.eld. Die letzten beiden kann man getrost ignorieren, sie enthalten vollautomatisch geführte Metainformationen (lieber nicht darin schreiben).<br />
<br />
Optionen sind nichts weiter als mit Werten belegte Lisp-Variablen. Einstellungen machen heißt also Variablen setzen. Dies kann man an verschiedenen Orten innerhalb der Konfigurationsdateien machen und auch auf verschiedene Arten.<br />
<br />
Man kann, sofern man weiß, was man tut, die gesamte Konfiguration in diesen Dateien von Hand erledigen. Dies ist praktisch, wenn man beispielsweise auch kleine Code-Blöcke (Lamda-Funktionen) usw. benutzen will. Üblicherweise benutzt man jedoch emacs selbst, um sich ''menügesteuert'' oder über sog. ''Customizing'' zu konfigurieren. Die dabei gemachten Einstellungen gelangen dann in diese Dateien und können später (auch von Hand) bearbeitet werden.<br />
<br />
=== Menügesteuerte Konfiguration ===<br />
Das emacs-Menü "Options" erlaubt das Setzen bestimmter, häufig gebrauchter Optionen, ohne daß man erst aufwendig danach suchen müßte. Meist betreffen sie das Aussehen oder grundlegende Verhaltensweisen von emacs, beispielsweise ob der Cursor blinken oder ob Scrollbars angezeigt werden sollen. Solche sind selbsterklärend. Allerdings stellt man unter "Options|Mule|Set Language Environment" auch ziemlich wichtige Dinge wie den standardmäßig verwendeten Zeichensatz ein, mit dem neu erstellte Dateien gespeichert werden. Auch die Anzeige von Umlauten kann davon abhängen.<br />
<br />
Werden im Options-Menü Einstellungen verändert, muß man diese mit dem Menüpunkt "Options|Save Options" explizit speichern, sonst gehen sie beim Programmende verloren. Diese Optionen gelangen nach ~/.emacs, die jetzt ggf. erstellt wird. Eine bereits bestehende Datei wird nicht überschrieben, sondern erweitert.<br />
<br />
=== Customizing ===<br />
Customizing ist nichts anderes als das Setzen von Optionen, allerdings mit Hilfe des emacs-eigenen, hierarchisch organisierten ''Customization Browsers''. Man wird ihn schätzen lernen. Seine Handhabung ist allerdings wegen nicht immer gegebener Strenge bzgl. der Hierarchie auch nicht unproblematisch. (Manche Einstellungen erscheinen an mehreren Orten.) Man öffnet ihn am besten mit dem Menüpunkt "Options|Customize Emacs|Browse Customization Groups" oder<br />
M-x customize-browse RET<br />
Ein Baum mit expandierbaren Knoten sollte angezeigt werden. (Die [+]-Zeichen sind anklickbar.) Die eigentlichen Optionen stehen in den Blättern dieses Baumes. Man klicke beispielsweise auf [+] vor "Programming" und dann auf das [+] vor "Languages" und es öffnet sich eine lange Liste von Programmiersprachen, für die man jetzt ganz individuelle Einstellungen vornehmen kann, unter "C" beispielsweise den "C Basic Offset", d.h. die standardmäßige Tabulatorbreite, üblicherweise 8 Zeichen.<br />
<br />
=== Häufig gemachte Einstellungen ===<br />
'''.emacs'''<br />
(custom-set-variables<br />
'(auto-save-default nil) ; Dateien nie zwischenspeichern<br />
'(blink-cursor-mode nil nil (frame)) ; Cursor nicht blinken lassen<br />
'(c-backspace-function (quote backward-delete-char)) ; cc-mode: Backspace ist Backspace (und nichts anderes!)<br />
'(c-basic-offset 8) ; cc-mode: Tabulatorbreite<br />
'(c-syntactic-indentation nil) ; cc-mode: keine Indentation<br />
'(case-fold-search nil) ; Suchen am Ende der Datei beenden<br />
'(column-number-mode t) ; Zeilennummer in Statuszeile anzeigen<br />
'(compilation-scroll-output t) ; im compilation buffer scrollen<br />
'(current-language-environment "Latin-9") ; '''Zeichensatz'''<br />
'(delete-selection-mode t nil (delsel)) ; '''markierten Text mit Entf löschen'''<br />
'(dired-recursive-deletes (quote top)) ; '''dired: Verzeichnisse rekursiv löschen'''<br />
'(display-time-mode t) ; Uhrzeit in Statuszeile anzeigen<br />
'(gdb-many-windows t) ; '''Debugger mit komplexem Layout starten'''<br />
'(global-font-lock-mode t nil (font-lock)) ; '''font-locking einschalten, wenn's geht'''<br />
'(gnus-inhibit-startup-message t) ; für Gnus keinen startup screen anzeien<br />
'(inhibit-startup-screen t) ; für emacs keinen startup screen anzeigen<br />
'(make-backup-files nil) ; keine doofen backup files<br />
'(mouse-autoselect-window t) ; Eingabefokus wandert mit der Maus mit<br />
'(require-final-newline (quote ask)) ; Zeilenende an letzter Zeile erzwingen<br />
'(scroll-bar-mode nil) ; keine scrollbars<br />
'(sentence-end-double-space nil) ; keine zwei Leerzeichen nach einem .<br />
'(show-paren-mode t nil (paren)) ; '''zusammengehörende Klammern anzeigen ...'''<br />
'(show-paren-style (quote expression)) ; '''... und zwar durch farbige Markierung'''<br />
'(show-trailing-whitespace t) ; Leerzeichen am Zeilenende anzeigen<br />
'(tool-bar-mode nil nil (tool-bar)) ; keine Toolbar<br />
'(transient-mark-mode t) ; '''sichtbare Markierung von Text'''<br />
'(truncate-lines t) ; '''lange Zeilen nicht umbrechen, sondern abschneiden'''<br />
'(visible-bell t) ; nicht piepsen<br />
'(x-stretch-cursor t) ; Cursor bei Tabulatoren breit machen<br />
)<br />
===Tipps und Tricks ===<br />
Mit der Zeile<br />
(fset 'yes-or-no-p 'y-or-n-p)<br />
lassen sich gelegentlich vollzogene Rückfragen, die eigentlich mit "yes RET" oder "no RET" beantwortet werden müssen, mit einem wesentlich bequemeren "y" oder "n" beantworten, ohne RET.<br />
<br />
Als sehr lästig mag man auch das Bestätigen beim Schließen eines Buffers über C-x k empfinden. Man kann dies elegant verhindern, indem man C-x k auf eine andere Funktion legt, die immer den aktuellen Buffer schließt, ohne diese dumme Rückfrage:<br />
(global-set-key (read-kbd-macro "C-x k") 'kill-this-buffer-and-window)<br />
Die Funktion kill-this-buffer-and-window hat folgendes Aussehen:<br />
(defun kill-this-buffer-and-window ()<br />
"Kill the current buffer and delete the selected window."<br />
(interactive)<br />
(let (buffer current-buffer)<br />
(if (kill-buffer (current-buffer))<br />
(if (> (count-windows) 1)<br />
(delete-window (selected-window))))))<br />
<br />
Möglicherweise funktioniert im Mini-buffer die Dateinamensvervollständigung nicht auf Anhieb. Wenn man mit C-x C-f eine Datei öffnen will und deren Namen nicht genau kennt, kann man emacs eine Liste von in Frage kommenden Dateien anzeigen lassen. Mit den folgenden zwei Zeilen kann man dies mit der Leertaste auslösen:<br />
(define-key minibuffer-local-filename-completion-map " " 'minibuffer-complete-word)<br />
(define-key minibuffer-local-must-match-filename-map " " 'minibuffer-complete-word)<br />
<br />
Die oben in der Tabelle unter "Häufig gemachte Einstellungen" genannten Variablen <code>auto-save-default</code> und <code>make-backup-files</code> auf <code>nil</code> zu setzen, geht manchem vielleicht zu weit. Backups von den gerade geänderten Dateien zu haben, kann manchmal doch ganz angenehm sein, sie stören allerdings, wenn sie im aktuellen Verzeichnis angelegt werden. Mit der folgenden Funktion kann ein benutzerspezifisches Verzeichnis unter <code>/tmp</code> angelegt werden, in das die Dateien und Autosave-Metadaten abgelegt werden.<br />
<br />
<pre><br />
(defvar user-temporary-file-directory<br />
(concat temporary-file-directory user-login-name "/"))<br />
(make-directory user-temporary-file-directory t)<br />
(setq backup-by-copying t)<br />
(setq backup-directory-alist<br />
`(("." . ,user-temporary-file-directory)<br />
(,tramp-file-name-regexp nil)))<br />
(setq auto-save-list-file-prefix<br />
(concat user-temporary-file-directory ".auto-saves-"))<br />
(setq auto-save-file-name-transforms<br />
`((".*" ,user-temporary-file-directory t)))<br />
</pre><br />
Es werden nun unter <code>/tmp/<benutzer></code> Dateien als Backup angelegt, deren Name sehr lang werden kann: Der Pfad wird mitgespeichert, indem die Slashes zu Ausrufungszeichen umgewandelt werden. <br />
<br />
<br />
Falls man im Emacs als normaler Benutzer eingeloggt ist und eine Datei bearbeiten möchte, die root gehört, so ist dies normalerweise nicht ohne Öffnen einer root-Shell und Start von Emacs aus dieser Shell heraus möglich. Da Emacs recht lange zum Start braucht, ist dies eine unschöne Sache.<br />
<br />
Mit folgendem Lisp-Code kann man es aber auch einfacher und flinker haben. Benötigt wird allerdings <code>sudo</code> und ein Eintrag der folgenden Art in der <code>/etc/sudoers</code>:<br />
<pre><br />
<user> ALL=(ALL) /bin/bash<br />
</pre><br />
(wenn man will auch mit :NOPASSWD, aber das ist nicht empfehlenswert), wobei dort die Loginshell von root einzutragen ist.<br />
<br />
Der Lisp-Code ist dann<br />
<pre><br />
(defun find-alternative-file-with-sudo ()<br />
"Open current buffer as root!"<br />
(interactive)<br />
(when buffer-file-name<br />
(find-alternate-file<br />
(concat "/sudo:root@localhost:"<br />
buffer-file-name))))<br />
(global-set-key (kbd "C-x C-v") 'find-alternative-file-with-sudo)<br />
</pre><br />
Man kann natürlich eine andere Tastenkombination als C-x C-v nehmen.<br />
<br />
<br />
Wer viel mit mehreren Fenstern arbeitet, kann mit Hilfe der Option<br />
<pre>(windmove-default-keybindings)</pre> <br />
ein einfacheres Durchschalten der Fenster mittels Shift-Cursortaste aktivieren.<br />
<br />
== Funktionsüberblick ==<br />
=== Dateiverwaltung in Emacs ===<br />
Es gibt mehrere Implementierungen von Dateiverwaltungen unter Emacs (selbst solche mit zwei gegenüberliegenden Seiten). Die bekannteste davon, die auch standardmäßig mit jedem Emacs mitgeliefert wird, ist '''dired''' (''directory editor''). Man startet dired über<br />
M-x dired RET oder C-x d<br />
wobei man in letzterem Falle noch das Startverzeichnis bekanntgeben oder RET drücken muß. Dired listet dann augenblicklich in einem eigenen Puffer die Dateien und Verzeichnisse unterhalb des Startverzeichnisses auf, meist so wie "ls -alF" und hoffentlich auch in Farbe. Auf diesen Einträgen kann man eine Vielzahl an üblichen Datei- bzw. Verzeichnisoperationen ausführen. Erwähnt sei die Möglichkeit, auch mehrere Verzeichnisse untereinander in einem dired-buffer darzustellen, was oft sehr praktisch ist.<br />
<br />
=== Shell in Emacs ===<br />
Es gibt zwei Implementierungen für shell-Betriebsarten unter Emacs: '''shell''' und '''eshell'''.<br />
M-x shell RET oder M-x eshell RET<br />
Man kann nicht sagen, welche besser oder komfortabler sei - sie sind ''verschieden''. Beide Varianten nehmen (wie in einem Terminal) an einem Prompt gewöhnliche Benutzereingaben entgegen, führen diese aus und stellen die Ausgaben wieder im gleichen buffer dar.<br />
<br />
Der wesentliche Unterschied zwischen beiden Varianten ist, daß shell tatsächlich im Hintergrund eine default-sh des Benutzers startet, meist also [[bash]], mit vorschriftsmäßiger Initialisierung, so daß also beispielsweise auch in .bashrc definierte Aliase gleich funktionieren, während eshell in Lisp programmiert ist und nur die eingegebenen Kommandos als externe Prozesse startet (und damit in gewissen Betriebssystemen die einzige Möglichkeit ist, ohne große Aufwände zu einer vernünftigen Shell zu kommen). Eshell kann deshalb auch einfach über Schließen des Puffers (C-x k RET) beendet werden, während man in shell explizit exit schreiben oder Ctrl-D drücken muß, um den im Hintergrund laufenden sh-Prozeß zu beenden, und erst dann den buffer schließen darf.<br />
Wer [[zsh]] als Standard-Shell benutzt, sollte für eine korrekte Darstellung der Prompt folgende Zeile zu seiner .emacs hinzufügen:<br />
<br />
(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on) <br />
<br />
Hey, man kann in eshell (nicht in shell) sogar [[vim]] starten! (Na, wenn das nicht etwas ist, auf das emacs-Benutzer lange gewartet haben…)<br />
<br />
=== Emacs als Entwicklungsumgebung ===<br />
Man kann emacs hervorragend als Entwicklungsumgebung benutzen, sofern man unter "entwickeln" Quelltexte editieren, compilieren und debuggen meint. Emacs bietet für fast alle dieser Vorgänge hilfreiche Unterstützungen an, ohne daß man allerdings von echter Integration sprechen könnte. Der Vorteil liegt in der Offenheit in so ziemlich jeder Hinsicht.<br />
<br />
==== Editieren ====<br />
Das Editieren von Quelltexten findet in normalen Textbuffern statt. Emacs lädt verschiedene Modi, sobald er erkennt, daß es sich um eine Quelldatei eines bestimmten Typs handelt, um beispielsweise Syntax Highlighting und Indenting (sog. ''font-locking'') durchzuführen. So wird bei Dateien mit der Endung .c oder .cc (.cpp, .c++, .cxx, .C, .h, .hpp, .H, ...) automatisch der cc-mode geladen, der C- und C++-Dateien farbig anzeigt. Ähnliches gilt für Java-, Lisp- oder XML- und unzählige andere Dateien.<br />
<br />
Das Indenting (automatisches Einrücken) ist nicht jedermanns Sache. Es verwirrt auch leicht oder wird lästig, wenn es nicht den eigenen Gewohnheiten entspricht. Man kann es in gewissen Grenzen konfigurieren. Einige Modi bieten die Möglichkeit, es ganz abzuschalten, beispielsweise der cc-mode: (c-syntactic-indentation nil).<br />
<br />
Es macht sich sehr gut (und ist für die meisten Vorhaben völlig ausreichend), wenn man einen dired buffer benutzt und darin die Quelldateien auflistet. Dann kann man sehr schnell von einer Datei zur anderen wechseln. Dired kann übrigens auch als Client für Versionskontrollsysteme ([[cvs]], weitere?) benutzt werden.<br />
<br />
==== Browser für Quellcode ====<br />
Wer niveauvollere Möglichkeiten sucht, in seinen Quelltexten zu navigieren, dem stehen verschiedene Varianten zur Verfügung.<br />
<br />
Wer gewohnt ist, mit '''tags''' (beispielsweise [[ctags]]) zu arbeiten, kann seine tags-Dateien unter emacs benutzen:<br />
M-x tags-search RET oder M-x tags-apropos RET<br />
emacs listet daraufhin alle Vorkommen des gesuchten tags in einem eigenen buffer auf, so daß man sie einfach durchlaufen kann.<br />
<br />
Etwas anderes ist die '''Speedbar'''.<br />
M-x speedbar RET<br />
Dies öffnet ein (normalerweise separates) Fenster, das die aktuelle Quelldatei (oder ein ganzes Verzeichnis) nach bestimmten Regeln parst und quasi ein dynamisches Inhaltsverzeichnis mit den darin gefundenen Klassen und Funktionen anzeigt (screenshot [[http://cedet.sourceforge.net/img-gen/speedbar-3.png]]). Die Speedbar erfordert überlicherweise keinerlei Konfiguration und zeigt sofort brauchbare Ergebnisse, um sehr schnell zu navigieren. Es gibt mehrere Versuche, die Speedbar in einen buffer des aktuellen Fensters zu integrieren, damit nicht ein separates Fenster auf dem Bildschirm geöffnet wird (siehe [[http://www.emacswiki.org/emacs/sr-speedbar.el]]).<br />
<br />
Ein vergleichsweise komplexes Werkzeug ist der '''Emacs Code Browser''' (ECB [[http://ecb.sourceforge.net/]], screenshot [http://sourceforge.net/dbimage.php?id=215933]), der (zusammen mit der Bibliothek cedet) separat installiert werden muß:<br />
pacman -S cedet ecb<br />
Nicht vergessen, einen load-path in das Verzeichnis zu setzen. Dann kann man mit<br />
M-x ecb RET<br />
den ECB öffnen und erhält mehrere kleine Puffer, die Verschiedenes anzeigen. Man muß später noch ein wenig daran konfigurieren. Im Gegensatz zu Speedbar legt ECB Metainformationen in eigenen Dateien ab, weshalb ECB bzgl. der Quelldateien auch dateiübergreifende Informationen liefern und Operationen ausführen kann. ECB geht allerdings auf Kosten der Performance.<br />
<br />
==== Compilieren ====<br />
Das Compilieren (und Linken und alles, was man noch so darunter versteht) startet man unter emacs mit<br />
M-x compile RET<br />
Dies ruft normalerweise [[make]] auf, so daß ein Makefile im aktuellen Verzeichnis existieren sollte. Wer ein anderes Build-Werkzeug verwendet, kann dies konfigurieren. Die Ausgaben dieses Werkzeugs gelangen in den ''compilation buffer'', wo eventuelle Fehler später leicht durchlaufen werden können. In den übrigen Puffern kann man selbstverständlich weitereditieren.<br />
<br />
==== Debuggen ====<br />
Das Debuggen erfolgt üblicherweise mit [[gdb]], wofür emacs ein eigenes Frontend zur Verfügung stellt, den '''Grand Unified Debugger''' (GUD). Man startet ihn mit<br />
M-x gdb RET<br />
wobei nach dem Namen des executables gefragt wird, was man meist mit RET bestätigen kann. Man bekommt zunächst zwei Puffer, in einem läuft gdb mit seinem Prompt, in dem anderen wird die aktuelle Ausführungsposition in einer Quelldatei angezeigt.<br />
<br />
GUD beherrscht allerdings noch eine wesentlich komfortablere Darstellungsform mit Toolbar und mehreren kleinen Puffern, wo auch der stack frame, lokale Variablen, Watches usw. dargestellt werden (screenshot [[http://www.nick.uklinux.net/screenshot.png]]). Dazu muß man GUD aber explizit konfigurieren: (gdb-many-windows t).<br />
<br />
=== Emacs und (La)TeX ===<br />
Da sowohl emacs als auch TeX und LaTeX schon recht alt sind, nimmt es nicht wunder, dass es mehrere Versuche gegeben hat, die beiden Systeme miteinander zu verheiraten. Mitgeliefert mit emacs wird ein <code>tex-mode</code> und ein <code>latex-mode</code>. Weithin durchgesetzt hat sich allerdings das Paket AucTeX, da es wesentlich mächtiger und benutzerfreundlicher ist als die ursprünglichen Modi.<br />
<br />
AucTeX kann mit<br />
<pre><br />
pacman -S auctex<br />
</pre><br />
installiert werden.<br />
<br />
Die Aktivierung im emacs erfolgt z.B. über Einträge in der Datei <code>~/.emacs</code><br />
<pre><br />
;; Auctex<br />
(load "auctex.el" nil t t)<br />
(load "preview-latex.el" nil t t)<br />
(setq auto-mode-alist (cons '("\\.tex$" . LaTeX-mode) auto-mode-alist)<br />
auto-mode-alist (cons '("\\.dtx$" . LaTeX-mode) auto-mode-alist))<br />
</pre><br />
<br />
Dies stellt einen TeX-mode für Plain TeX, einen LaTeX-mode und inzwischen auch einen ConTeXt-mode zur Verfügung, und verknüpft Dateien mit den Endungen .tex bzw .dtx mit diesen Modi (man beachte die andere Schreibweisen). Die alten, emacs-eigenen Modi bleiben aber verfügbar. <br />
<br />
AucTeX kann über Menüs bedient und angepasst werden. Diese Menüs wird man für seltener benutzte Dinge auch nutzen wollen, aber für die grundlegenden Dinge muss man sich nur eine Tastenkombination merken: <code>C-c C-c</code> startet einen LaTeX (oder modiabhängig einen TeX-Lauf, wenn es nötig ist; ist es nicht nötig, bietet AucTeX gleich einen Viewer (Standard ist xpdf) an.<br />
<br />
Ansonsten gibt es zu AucTeX eine umfangreiche Dokumentation im Info-Format. <br />
<br />
Eine Möglichkeit, emacs selbst als Previewer für pdf-Dateien zu benutzen, wurde im englischsprachigen Forum zu Arch Linux aufgezeigt. Er nutzt den doc-view-mode, den emacs 23 erstmals liefert. Es ist damit sogar möglich, eine rudimentäre SyncTeX-Funktionalität (naja, fast) herzustellen. <br />
<br />
Zunächst ist folgender Code, sofern noch nicht vorhanden, in die <code>.emacs</code> einzufügen:<br />
<pre><br />
(server-start)<br />
(add-hook 'doc-view-mode-hook 'auto-revert-mode)<br />
</pre><br />
Dies startet zum einen emacs als Server (so dass das Programm <code>emacsclient</code> funktioniert), zum anderen sorgt es dafür, dass Änderungen an pdf-Dateien (z.B. nach einem LaTeX-Lauf) automatisch zu einer Aktualisierung des entsprechenden Buffers führen.<br />
<br />
Dann muss man noch über das AucTeX-Menü folgende Anpassung vornehmen: <br />
<pre><br />
LaTeX->Customize AUCTeX->(expand)->Tex command->Tex output view style<br />
</pre><br />
In dem Annpassungsbuffer nach <code>^pdf</code> suchen und das dort konfigurierte Kommando ändern zu:<br />
<pre><br />
emacsclient -e "(find-file \"%o\")"<br />
</pre><br />
<br />
Mit dvi-Dateien funktioniert dies möglicherweise völlig analog.<br />
<br />
=== News und Mail in emacs ===<br />
Emacs besitzt standardmäßig mehrere mail-Betriebsarten ('''mail''', '''mh''', '''rmail''') unterschiedlichen Funktionsumfangs, sowie einen universalen mail/news/rss-Client in Lisp ('''Gnus'''). Letzterer ist die umfassendste Variante, erfordert aber auch die komplexeste Konfiguration sowie einige Übung im Umgang. Dafür erhält man eines der leistungsfähigsten Programme dieser Art auf der Welt (screenshots [[http://upload.wikimedia.org/wikipedia/commons/c/c3/Gnus-reading-news.png]], [[http://stuff.mit.edu/iap/2009/emacs/images/gnus.png]]).<br />
<br />
M-x mail RET<br />
öffnet einen Puffer, in dem man eine E-Mail-Nachricht schreiben kann. Oben stehen ein paar Headerzeilen, die man ausfüllt, darunter der Text der Nachricht. Mit C-c C-c kann man diese Nachricht dann abschicken, wobei sie dem default-Programm zum Senden vom E-Mail übergeben wird, wahrscheinlich [[sendmail]], möglicherweise aber auch einer GUI-Applikation wie [[Thunderbird]].<br />
<br />
<br />
(wer kennt sich mit '''mh''' und/oder '''rmail''' aus? Ein paar Worte bitte ...)<br />
<br />
<br />
M-x gnus RET<br />
öffnet Gnus. man gelangt in den sog. ''group buffer'', in welchem (ggf. thematisch sortiert) die news groups aufgelistet sind, die der Benutzer abboniert hat. Dort erscheinen auch seine E-Mail-Postfächer sowie RSS-feeds. Jeweils neu eingetroffene Nachrichten werden hinter diesen Gruppen als Anzahl angezeigt und man kann durch RET in den ''summary buffer'' wechseln, um die Subjects und Poster der neuen Nachrichten zu sehen. Im summary buffer kann man wiederum RET drücken und gelangt in den ''article buffer'', wo man die ausgewählte Nachricht lesen und auch beantworten kann.<br />
<br />
Gnus kann POP3- und IMAP-Postfächer und selbst den Inhalt von Verzeichnissen auf der Festplatte abfragen, ist in der Lage, beim Senden und Empfangen verschiedene Verschlüsselungen anzuwenden und kann bedingt auch HTML rendern oder Artikel "waschen" (insbesondere solche, die von Outlook stammen). Gnus kann auch mit Hilfe des ''Gnus Agent'' als Offline-News-Reader eingesetzt werden. Dabei werden die Artikel lokal in einem Verzeichnis(baum) gespeichert. Gnus besitzt ausgeklügelte Filter- und Scoring-Möglichkeiten.<br />
<br />
Der Leistungsumfang von Gnus ist so vielfältig, daß ihm ein eigenes Manual gewidmet ist [http://www.gnu.org/software/emacs/manual/html_node/gnus/index.html]. Es lohnt sich, dieses Manual durchzuarbeiten, um die obligatorische Konfiguration durchführen zu können. Die resultierende Konfigurationsdatei .gnus ist zwar meist überschaubar, allerdings etwas knifflig in der Erstellung. Erschwert wird die Konfiguration dadurch, daß Gnus auf anderen Komponenten (message) aufbaut, die separat konfiguriert werden. Siehe ferner auch hier [http://www.emacswiki.org/cgi-bin/wiki/CategoryGnus]<br />
<br />
=== WWW in emacs ===<br />
Eine sehr interessante Erweiterung für Emacs ist das Lisp-Paket '''emacs-w3m''' [[http://emacs-w3m.namazu.org/]], eine Schicht, die es erlaubt, den Textbrowser [[w3m]] in Emacs laufen zu lassen, d.h. von Emacs aus vollständig zu bedienen. Man muß dann Emacs nicht mehr verlassen, um mal schnell eine Internetsuche durchzuführen.<br />
<br />
emacs-w3m wird nicht mitgeliefert. w3m (der eigentliche Browser) und emacs-w3m können über pacman installiert werden:<br />
pacman -S w3m emacs-w3m<br />
Man muß anschließend sehr wahrscheinlich einen load-path in seine .emacs einfügen, damit Emacs das Paket findet. Man startet emacs-w3m über<br />
M-x w3m RET<br />
Man kann emacs-w3m später konfigurieren, es wird aber auch ohne Konfiguration schon brauchbare Ergebnisse liefern.<br />
<br />
=== Weitere Betriebsarten ===<br />
* Chatten<br />
* Calendar<br />
* Todo-Listen<br />
* Lisp-Interpreter<br />
* Spiele<br />
* Twitter<br />
<br />
=== Emacs erweitern ===<br />
Emacs ist offen für Erweiterungen in Lisp. Man kann entweder bestehende Lisp-Dateien und -Pakete hinzufügen oder selbst welche schreiben. Es existieren zahlreiche Verzeichnisse, auf denen man sehr interessante Pakete für die unterschiedlichsten Zwecke findet, besonders die Emacs Lisp List (ELL [http://www.damtp.cam.ac.uk/user/sje30/emacs/ell.html]), die seit vielen Jahren schon existiert und immer noch gepflegt wird.<br />
<br />
Auf Unix-artigen Systemen wird man nicht im globalen Lisp-Verzeichnis Änderungen vornehmen wollen oder dürfen. Deshalb ist es ratsam, im home-Verzeichnis des Benutzers ein lokales Lisp-Verzeichnis anzulegen. Dieses ist in der .emacs mit einem load-path zu konfigurieren, damit emacs auch dort nach Lisp-Dateien sucht.<br />
<br />
Es empfiehlt sich, die dort liegenden .el-Dateien in .elc-Dateien zu compilieren, um die Ausführung etwas zu beschleunigen.<br />
<br />
== Dokumentation ==<br />
Emacs ist ''self documenting'', d.h. in jedem Belang ausführlich dokumentiert. Diese Dokumentation ist jederzeit im Editor selbst abrufbar. Man startet sie über<br />
C-h r<br />
und gelangt in den Emacs-eigenen Info-Browser. Den Umgang mit dem Info-System, der im GNU-Projekt allgemein verwendeten, hypertextartigen Alternative zu Man-Pages, muß man etwas üben. Die dazu nötigen Tasten stehen am oberen Rand des Puffers. Merken muß man sich vor allem u (up).<br />
<br />
Es gibt auch eine FAQ-Liste, die man über<br />
C-h C-f<br />
erreicht.<br />
<br />
Für elisp-Programmierer interessant sind außerdem die Funktionen ''describe-variable'' und '' describe-function''. Hier kann man Infos zu definierten Variablen bzw. Funktionen bekommen, deren Namen man allerdings ungefähr kennen muss.<br />
<br />
== Links ==<br />
* Gnu Emacs Manual (entspricht den mitgelieferten Info-Seiten, nur hier in HTML) [http://www.gnu.org/software/emacs/manual/html_node/emacs/index.html]<br />
* Gnu Emacs verwandte Seiten [http://www.gnu.org/software/emacs/manual]<br />
* Emacs-Einsteiger-Dokumentation auf SelfLinux [http://www.selflinux.org/selflinux/html/emacs.html]<br />
* EmacsWiki [http://www.emacswiki.org/cgi-bin/wiki/SiteMap]<br />
* Emacs Lisp List [http://www.damtp.cam.ac.uk/user/sje30/emacs/ell.html]<br />
* Eine Liste mit interessanten Erweiterungen (Lisp) [http://www.splode.com/~friedman/software/emacs-lisp/#ui]</div>PSubhttps://wiki.archlinux.de/index.php?title=Emacs&diff=10725Emacs2010-09-06T21:20:18Z<p>PSub: /* Browser für Quellcode */ Wegen https://bbs.archlinux.de/viewtopic.php?id=17347</p>
<hr />
<div>[[Kategorie:Editoren]]<br />
Emacs ist<br />
* ein sehr umfangreicher und mächtiger, enorm weit verbreiteter '''Editor''',<br />
* eine '''Programmierplattform und Laufzeitumgebung''' für Lisp-Anwendungen, beispielsweise News- und Mail-Clients,<br />
* eine offene '''Entwicklungsumgebung'''.<br />
Manche witzeln, er sei ein eigenes Betriebssystem. Die folgende Präsentation gibt mit vielen Screenshots einen guten Überblick [http://stuff.mit.edu/iap/2009/emacs/part1.html].<br />
<br />
Die Programmierung am Emacs wurde 1984 von Richard Stallman in Lisp begonnen. Emacs steht unter der GPL.<br />
<br />
'''Abgrenzung''': Es kann nicht Sinn dieser Abhandlung sein, Emacs in seiner Funktion zu erklären oder gar zu dokumentieren. Zu Emacs gibt es tonnenweise Material im Internet (siehe Links), teilweise auch auf Deutsch, so daß man sich jederzeit konkret und detailliert informieren kann. Ziel ist hier, die Installation und Konfiguration zu erläutern und einen Überblick über die wichtigsten Funktionen zu geben, was als Anregung zum Ausprobieren verstanden werden soll. Arch way, erst machen, dann fragen und so ...<br />
<br />
== Installation ==<br />
Emacs kann mithilfe von [[pacman]] installiert werden:<br />
pacman -S emacs<br />
Diese Binärdateien sind gegen [[GTK]] gelinkt und enthalten die typischen Dekorationen und Stile für Menü, Toolbar, Scrollbars usw., zudem auch die üblichen Datei-Dialoge.<br />
<br />
Wer Emacs ohne GTK betreiben will, kann sich problemlos die Quellen beschaffen und selbst compilieren. Es besteht per configure-Option die Möglichkeit, die Verwendung der Motif-Bibliotheken zu erzwingen (diese stehen als pacman-Paket openmotif oder lesstif zur Verfügung) oder ganz auf die Verwendung eines Toolkits zu verzichten und rein für X11 zu compilieren, was Emacs ein rustikaleres Aussehen gibt, aber möglicherweise eine halbe Sekunde Ladezeit spart.<br />
<br />
Es besteht sogar die Möglichkeit, ganz ohne X-Bibliotheken auszukommen. Die entsprechenden Pakete haben dann ein -nox im Paketnamen.<br />
<br />
== Starten ==<br />
Um Emacs zu starten, muß man nur<br />
emacs<br />
in die Konsole eingeben. Unter '''X11''' wird Emacs als X11-Programm in einem neuen X11-Fenster gestartet. Es wäre ratsam, in diesem Fall emacs mit & zu starten:<br />
emacs &<br />
da er sonst das Terminal blockiert, von dem aus der Aufruf erfolgte. Wenn man Emacs unter X11 im aktuellen Terminal starten möchte, ohne daß ein neues Fenster geöffnet wird, so kann man<br />
emacs -nw <br />
eingeben, dann in jedem Falle ohne &.<br />
<br />
Sofern gar '''kein X11''' läuft, kann man Emacs auch auf der Kommandozeile starten, wobei der Zusatz -nw nicht notwendig ist. Möglicherweise funktionieren allerdings einige Tasten anders (ausprobieren). Das Menü wird aus Platzgründen normalerweise nicht angezeigt, man kann es mit der Funktionstaste F10 hervorholen.<br />
<br />
Emacs bietet ein Modell an, bei dem quasi ein emacs-Dämon als '''Server''' läuft, während die später interaktiv vom Benutzer gestarteten emacs-Prozesse jeweils '''Clients''' dieses Servers werden. Der Vorteil liegt vor allem in geringerer Ladezeit. Näheres hier [http://www.gnu.org/software/emacs/manual/html_node/emacs/Emacs-Server.html#Emacs-Server]<br />
<br />
Man wird allerdings selten Emacs immer und immer wieder starten, wie man es vielleicht von [[vi]] her kennt. Emacs bietet (beispielsweise mit dired) andere Möglichkeiten an, schnell Dateien zu öffnen, so daß das ständige Laden eigentlich überflüssig wird. Viele Benutzer haben ihren Emacs stunden- und tagelang offen. Eine Frage des persönlichen Geschmacks.<br />
<br />
== Bedienung ==<br />
Emacs wird üblicherweise vollständig über die '''Tastatur''' gesteuert. Er besitzt die Besonderheit, daß auch mehrere separate Tasten(kombinationen) hintereinander einen einzelnen Befehl auslösen können, beispielsweise nacheinander C-x und C-f (Datei öffnen). Tastenkombinationen können zudem (zumindest auf europäischen Tastaturen) auch aus drei Tasten bestehen, beispielsweise M-% (Suchen und Ersetzen), was auf einer deutschen oder schweizer Tastatur zu S-M-5 wird. (Zur Notation von Tastenkombinationen siehe hier [http://www.gnu.org/software/emacs/manual/html_node/emacs/User-Input.html#User-Input] und [http://www.gnu.org/software/emacs/manual/html_node/emacs/Keys.html#Keys])<br />
<br />
Die enorme Anzahl der Tastenkombinationen und ihre oft merkwürdige Anordnung auf der Tastatur haben in den letzten 20 Jahren zu viel Spott geführt. Man benötigt aber in der Tat nur einen kleinen Teil davon, wenige Prozent, und diese kann man lernen, es ist weit weniger schwer als es zunächst aussieht.<br />
<br />
Eine vollständige, aus der jeweils aktuellen Konfiguration des Editors heraus gebildete Liste aller Tastenkombinationen erreicht man mit<br />
C-h b<br />
Die Tastenkombinationen sind dort mit den durch sie ausgelösten Lisp-Funktionen aufgeführt, auf welche auch hypertextartig geklickt werden kann, um an nähere Informationen zu gelangen.<br />
<br />
Es existiert darüberhinaus eine zentrale Möglichkeit, im sog. '''Mini-Buffer''', den man über M-x erreicht, eine Lisp-Funktion mit ihrem Namen und ggf. Argumenten anzugeben und auszuführen. Dies scheint oft die komfortablere Möglichkeit, da man sich ggf. eher noch an verbale Begriffe erinnert als an Tastenkombinationen.<br />
<br />
Aufgrund der begrenzten Möglichkeiten, die ihre zwei oder drei Knöpfe bieten, gibt es nur wenige Funktionen, die auf der '''Maus''' liegen. Allerdings sind die Mausknöpfe auch mehrfach, nämlich noch im Zusammenhang mit Shift und Ctrl belegt.<br />
<br />
Ein sehr gut brauchbares '''Tutorial''' findet man im Editor selbst:<br />
C-h t<br />
oder im Help-Menü gleich der erste Eintrag. Es lohnt sich, dieses mal abzuarbeiten. Siehe ferner auch hier [http://www.fh-frankfurt.de/de/.media/~czermin/emacs_tutorial]<br />
<br />
Weitere Hinweise zur Bedienung gibt emacs selbst auf seinem Startbildschirm.<br />
<br />
== Emacs konfigurieren ==<br />
In emacs ist praktisch alles konfigurierbar. Und es gibt nicht zwei emacse, die gleich konfiguriert sind. So wird jeder emacs zu einem ganz individuellen Werkzeug, abgestimmt auf die persönlichen Bedürfnisse und Fähigkeiten seines Benutzers.<br />
<br />
=== Konfigurationsdateien ===<br />
Emacs selbst entnimmt seine Konfiguration aus der Datei ~/'''.emacs''', die auch ~/.emacs.el heißen darf, denn es ist eine echte Lisp-Datei. Emacs liest außerdem die ~/.Xdefaults.<br />
<br />
Komponenten von emacs besitzen ggf. eigene Konfigurationsdateien, vor allem Gnus gleich eine ganze Liste: ~/'''.gnus''' oder ~/.gnus.el, dazu ~/.authinfo, ~/.newsrc, ~/.newsrc.eld. Die letzten beiden kann man getrost ignorieren, sie enthalten vollautomatisch geführte Metainformationen (lieber nicht darin schreiben).<br />
<br />
Optionen sind nichts weiter als mit Werten belegte Lisp-Variablen. Einstellungen machen heißt also Variablen setzen. Dies kann man an verschiedenen Orten innerhalb der Konfigurationsdateien machen und auch auf verschiedene Arten.<br />
<br />
Man kann, sofern man weiß, was man tut, die gesamte Konfiguration in diesen Dateien von Hand erledigen. Dies ist praktisch, wenn man beispielsweise auch kleine Code-Blöcke (Lamda-Funktionen) usw. benutzen will. Üblicherweise benutzt man jedoch emacs selbst, um sich ''menügesteuert'' oder über sog. ''Customizing'' zu konfigurieren. Die dabei gemachten Einstellungen gelangen dann in diese Dateien und können später (auch von Hand) bearbeitet werden.<br />
<br />
=== Menügesteuerte Konfiguration ===<br />
Das emacs-Menü "Options" erlaubt das Setzen bestimmter, häufig gebrauchter Optionen, ohne daß man erst aufwendig danach suchen müßte. Meist betreffen sie das Aussehen oder grundlegende Verhaltensweisen von emacs, beispielsweise ob der Cursor blinken oder ob Scrollbars angezeigt werden sollen. Solche sind selbsterklärend. Allerdings stellt man unter "Options|Mule|Set Language Environment" auch ziemlich wichtige Dinge wie den standardmäßig verwendeten Zeichensatz ein, mit dem neu erstellte Dateien gespeichert werden. Auch die Anzeige von Umlauten kann davon abhängen.<br />
<br />
Werden im Options-Menü Einstellungen verändert, muß man diese mit dem Menüpunkt "Options|Save Options" explizit speichern, sonst gehen sie beim Programmende verloren. Diese Optionen gelangen nach ~/.emacs, die jetzt ggf. erstellt wird. Eine bereits bestehende Datei wird nicht überschrieben, sondern erweitert.<br />
<br />
=== Customizing ===<br />
Customizing ist nichts anderes als das Setzen von Optionen, allerdings mit Hilfe des emacs-eigenen, hierarchisch organisierten ''Customization Browsers''. Man wird ihn schätzen lernen. Seine Handhabung ist allerdings wegen nicht immer gegebener Strenge bzgl. der Hierarchie auch nicht unproblematisch. (Manche Einstellungen erscheinen an mehreren Orten.) Man öffnet ihn am besten mit dem Menüpunkt "Options|Customize Emacs|Browse Customization Groups" oder<br />
M-x customize-browse RET<br />
Ein Baum mit expandierbaren Knoten sollte angezeigt werden. (Die [+]-Zeichen sind anklickbar.) Die eigentlichen Optionen stehen in den Blättern dieses Baumes. Man klicke beispielsweise auf [+] vor "Programming" und dann auf das [+] vor "Languages" und es öffnet sich eine lange Liste von Programmiersprachen, für die man jetzt ganz individuelle Einstellungen vornehmen kann, unter "C" beispielsweise den "C Basic Offset", d.h. die standardmäßige Tabulatorbreite, üblicherweise 8 Zeichen.<br />
<br />
=== Häufig gemachte Einstellungen ===<br />
'''.emacs'''<br />
(custom-set-variables<br />
'(auto-save-default nil) ; Dateien nie zwischenspeichern<br />
'(blink-cursor-mode nil nil (frame)) ; Cursor nicht blinken lassen<br />
'(c-backspace-function (quote backward-delete-char)) ; cc-mode: Backspace ist Backspace (und nichts anderes!)<br />
'(c-basic-offset 8) ; cc-mode: Tabulatorbreite<br />
'(c-syntactic-indentation nil) ; cc-mode: keine Indentation<br />
'(case-fold-search nil) ; Suchen am Ende der Datei beenden<br />
'(column-number-mode t) ; Zeilennummer in Statuszeile anzeigen<br />
'(compilation-scroll-output t) ; im compilation buffer scrollen<br />
'(current-language-environment "Latin-9") ; '''Zeichensatz'''<br />
'(delete-selection-mode t nil (delsel)) ; '''markierten Text mit Entf löschen'''<br />
'(dired-recursive-deletes (quote top)) ; '''dired: Verzeichnisse rekursiv löschen'''<br />
'(display-time-mode t) ; Uhrzeit in Statuszeile anzeigen<br />
'(gdb-many-windows t) ; '''Debugger mit komplexem Layout starten'''<br />
'(global-font-lock-mode t nil (font-lock)) ; '''font-locking einschalten, wenn's geht'''<br />
'(gnus-inhibit-startup-message t) ; für Gnus keinen startup screen anzeien<br />
'(inhibit-startup-screen t) ; für emacs keinen startup screen anzeigen<br />
'(make-backup-files nil) ; keine doofen backup files<br />
'(mouse-autoselect-window t) ; Eingabefokus wandert mit der Maus mit<br />
'(require-final-newline (quote ask)) ; Zeilenende an letzter Zeile erzwingen<br />
'(scroll-bar-mode nil) ; keine scrollbars<br />
'(sentence-end-double-space nil) ; keine zwei Leerzeichen nach einem .<br />
'(show-paren-mode t nil (paren)) ; '''zusammengehörende Klammern anzeigen ...'''<br />
'(show-paren-style (quote expression)) ; '''... und zwar durch farbige Markierung'''<br />
'(show-trailing-whitespace t) ; Leerzeichen am Zeilenende anzeigen<br />
'(tool-bar-mode nil nil (tool-bar)) ; keine Toolbar<br />
'(transient-mark-mode t) ; '''sichtbare Markierung von Text'''<br />
'(truncate-lines t) ; '''lange Zeilen nicht umbrechen, sondern abschneiden'''<br />
'(visible-bell t) ; nicht piepsen<br />
'(x-stretch-cursor t) ; Cursor bei Tabulatoren breit machen<br />
)<br />
===Tipps und Tricks ===<br />
Mit der Zeile<br />
(fset 'yes-or-no-p 'y-or-n-p)<br />
lassen sich gelegentlich vollzogene Rückfragen, die eigentlich mit "yes RET" oder "no RET" beantwortet werden müssen, mit einem wesentlich bequemeren "y" oder "n" beantworten, ohne RET.<br />
<br />
Als sehr lästig mag man auch das Bestätigen beim Schließen eines Buffers über C-x k empfinden. Man kann dies elegant verhindern, indem man C-x k auf eine andere Funktion legt, die immer den aktuellen Buffer schließt, ohne diese dumme Rückfrage:<br />
(global-set-key (read-kbd-macro "C-x k") 'kill-this-buffer-and-window)<br />
Die Funktion kill-this-buffer-and-window hat folgendes Aussehen:<br />
(defun kill-this-buffer-and-window ()<br />
"Kill the current buffer and delete the selected window."<br />
(interactive)<br />
(let (buffer current-buffer)<br />
(if (kill-buffer (current-buffer))<br />
(if (> (count-windows) 1)<br />
(delete-window (selected-window))))))<br />
<br />
Möglicherweise funktioniert im Mini-buffer die Dateinamensvervollständigung nicht auf Anhieb. Wenn man mit C-x C-f eine Datei öffnen will und deren Namen nicht genau kennt, kann man emacs eine Liste von in Frage kommenden Dateien anzeigen lassen. Mit den folgenden zwei Zeilen kann man dies mit der Leertaste auslösen:<br />
(define-key minibuffer-local-filename-completion-map " " 'minibuffer-complete-word)<br />
(define-key minibuffer-local-must-match-filename-map " " 'minibuffer-complete-word)<br />
<br />
Die oben in der Tabelle unter "Häufig gemachte Einstellungen" genannten Variablen <code>auto-save-default</code> und <code>make-backup-files</code> auf <code>nil</code> zu setzen, geht manchem vielleicht zu weit. Backups von den gerade geänderten Dateien zu haben, kann manchmal doch ganz angenehm sein, sie stören allerdings, wenn sie im aktuellen Verzeichnis angelegt werden. Mit der folgenden Funktion kann ein benutzerspezifisches Verzeichnis unter <code>/tmp</code> angelegt werden, in das die Dateien und Autosave-Metadaten abgelegt werden.<br />
<br />
<pre><br />
(defvar user-temporary-file-directory<br />
(concat temporary-file-directory user-login-name "/"))<br />
(make-directory user-temporary-file-directory t)<br />
(setq backup-by-copying t)<br />
(setq backup-directory-alist<br />
`(("." . ,user-temporary-file-directory)<br />
(,tramp-file-name-regexp nil)))<br />
(setq auto-save-list-file-prefix<br />
(concat user-temporary-file-directory ".auto-saves-"))<br />
(setq auto-save-file-name-transforms<br />
`((".*" ,user-temporary-file-directory t)))<br />
</pre><br />
Es werden nun unter <code>/tmp/<benutzer></code> Dateien als Backup angelegt, deren Name sehr lang werden kann: Der Pfad wird mitgespeichert, indem die Slashes zu Ausrufungszeichen umgewandelt werden. <br />
<br />
<br />
Falls man im Emacs als normaler Benutzer eingeloggt ist und eine Datei bearbeiten möchte, die root gehört, so ist dies normalerweise nicht ohne Öffnen einer root-Shell und Start von Emacs aus dieser Shell heraus möglich. Da Emacs recht lange zum Start braucht, ist dies eine unschöne Sache.<br />
<br />
Mit folgendem Lisp-Code kann man es aber auch einfacher und flinker haben. Benötigt wird allerdings <code>sudo</code> und ein Eintrag der folgenden Art in der <code>/etc/sudoers</code>:<br />
<pre><br />
<user> ALL=(ALL) /bin/bash<br />
</pre><br />
(wenn man will auch mit :NOPASSWD, aber das ist nicht empfehlenswert), wobei dort die Loginshell von root einzutragen ist.<br />
<br />
Der Lisp-Code ist dann<br />
<pre><br />
(defun find-alternative-file-with-sudo ()<br />
"Open current buffer as root!"<br />
(interactive)<br />
(when buffer-file-name<br />
(find-alternate-file<br />
(concat "/sudo:root@localhost:"<br />
buffer-file-name))))<br />
(global-set-key (kbd "C-x C-v") 'find-alternative-file-with-sudo)<br />
</pre><br />
Man kann natürlich eine andere Tastenkombination als C-x C-v nehmen.<br />
<br />
<br />
Wer viel mit mehreren Fenstern arbeitet, kann mit Hilfe der Option<br />
<pre>(windmove-default-keybindings)</pre> <br />
ein einfacheres Durchschalten der Fenster mittels Shift-Cursortaste aktivieren.<br />
<br />
== Funktionsüberblick ==<br />
=== Dateiverwaltung in Emacs ===<br />
Es gibt mehrere Implementierungen von Dateiverwaltungen unter Emacs (selbst solche mit zwei gegenüberliegenden Seiten). Die bekannteste davon, die auch standardmäßig mit jedem Emacs mitgeliefert wird, ist '''dired''' (''directory editor''). Man startet dired über<br />
M-x dired RET oder C-x d<br />
wobei man in letzterem Falle noch das Startverzeichnis bekanntgeben oder RET drücken muß. Dired listet dann augenblicklich in einem eigenen Puffer die Dateien und Verzeichnisse unterhalb des Startverzeichnisses auf, meist so wie "ls -alF" und hoffentlich auch in Farbe. Auf diesen Einträgen kann man eine Vielzahl an üblichen Datei- bzw. Verzeichnisoperationen ausführen. Erwähnt sei die Möglichkeit, auch mehrere Verzeichnisse untereinander in einem dired-buffer darzustellen, was oft sehr praktisch ist.<br />
<br />
=== Shell in Emacs ===<br />
Es gibt zwei Implementierungen für shell-Betriebsarten unter Emacs: '''shell''' und '''eshell'''.<br />
M-x shell RET oder M-x eshell RET<br />
Man kann nicht sagen, welche besser oder komfortabler sei - sie sind ''verschieden''. Beide Varianten nehmen (wie in einem Terminal) an einem Prompt gewöhnliche Benutzereingaben entgegen, führen diese aus und stellen die Ausgaben wieder im gleichen buffer dar.<br />
<br />
Der wesentliche Unterschied zwischen beiden Varianten ist, daß shell tatsächlich im Hintergrund eine default-sh des Benutzers startet, meist also [[bash]], mit vorschriftsmäßiger Initialisierung, so daß also beispielsweise auch in .bashrc definierte Aliase gleich funktionieren, während eshell in Lisp programmiert ist und nur die eingegebenen Kommandos als externe Prozesse startet (und damit in gewissen Betriebssystemen die einzige Möglichkeit ist, ohne große Aufwände zu einer vernünftigen Shell zu kommen). Eshell kann deshalb auch einfach über Schließen des Puffers (C-x k RET) beendet werden, während man in shell explizit exit schreiben oder Ctrl-D drücken muß, um den im Hintergrund laufenden sh-Prozeß zu beenden, und erst dann den buffer schließen darf.<br />
Wer [[zsh]] als Standard-Shell benutzt, sollte für eine korrekte Darstellung der Prompt folgende Zeile zu seiner .emacs hinzufügen:<br />
<br />
(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on) <br />
<br />
Hey, man kann in eshell (nicht in shell) sogar [[vim]] starten! (Na, wenn das nicht etwas ist, auf das emacs-Benutzer lange gewartet haben…)<br />
<br />
=== Emacs als Entwicklungsumgebung ===<br />
Man kann emacs hervorragend als Entwicklungsumgebung benutzen, sofern man unter "entwickeln" Quelltexte editieren, compilieren und debuggen meint. Emacs bietet für fast alle dieser Vorgänge hilfreiche Unterstützungen an, ohne daß man allerdings von echter Integration sprechen könnte. Der Vorteil liegt in der Offenheit in so ziemlich jeder Hinsicht.<br />
<br />
==== Editieren ====<br />
Das Editieren von Quelltexten findet in normalen Textbuffern statt. Emacs lädt verschiedene Modi, sobald er erkennt, daß es sich um eine Quelldatei eines bestimmten Typs handelt, um beispielsweise Syntax Highlighting und Indenting (sog. ''font-locking'') durchzuführen. So wird bei Dateien mit der Endung .c oder .cc (.cpp, .c++, .cxx, .C, .h, .hpp, .H, ...) automatisch der cc-mode geladen, der C- und C++-Dateien farbig anzeigt. Ähnliches gilt für Java-, Lisp- oder XML- und unzählige andere Dateien.<br />
<br />
Das Indenting (automatisches Einrücken) ist nicht jedermanns Sache. Es verwirrt auch leicht oder wird lästig, wenn es nicht den eigenen Gewohnheiten entspricht. Man kann es in gewissen Grenzen konfigurieren. Einige Modi bieten die Möglichkeit, es ganz abzuschalten, beispielsweise der cc-mode: (c-syntactic-indentation nil).<br />
<br />
Es macht sich sehr gut (und ist für die meisten Vorhaben völlig ausreichend), wenn man einen dired buffer benutzt und darin die Quelldateien auflistet. Dann kann man sehr schnell von einer Datei zur anderen wechseln. Dired kann übrigens auch als Client für Versionskontrollsysteme ([[cvs]], weitere?) benutzt werden.<br />
<br />
==== Browser für Quellcode ====<br />
Wer niveauvollere Möglichkeiten sucht, in seinen Quelltexten zu navigieren, dem stehen verschiedene Varianten zur Verfügung.<br />
<br />
Wer gewohnt ist, mit '''tags''' (beispielsweise [[ctags]]) zu arbeiten, kann seine tags-Dateien unter emacs benutzen:<br />
M-x tags-search RET oder M-x tags-apropos RET<br />
emacs listet daraufhin alle Vorkommen des gesuchten tags in einem eigenen buffer auf, so daß man sie einfach durchlaufen kann.<br />
<br />
Etwas anderes ist die '''Speedbar'''.<br />
M-x speedbar RET<br />
Dies öffnet ein (normalerweise separates) Fenster, das die aktuelle Quelldatei (oder ein ganzes Verzeichnis) nach bestimmten Regeln parst und quasi ein dynamisches Inhaltsverzeichnis mit den darin gefundenen Klassen und Funktionen anzeigt (screenshot [[http://cedet.sourceforge.net/img-gen/speedbar-3.png]]). Die Speedbar erfordert überlicherweise keinerlei Konfiguration und zeigt sofort brauchbare Ergebnisse, um sehr schnell zu navigieren. Es gibt mehrere Versuche, die Speedbar in einen buffer des aktuellen Fensters zu integrieren, damit nicht ein separates Fenster auf dem Bildschirm geöffnet wird (siehe [[http://www.emacswiki.org/emacs/sr-speedbar.el]]).<br />
<br />
Ein vergleichsweise komplexes Werkzeug ist der '''Emacs Code Browser''' (ECB [[http://ecb.sourceforge.net/]], screenshot [http://sourceforge.net/dbimage.php?id=215933]), der (zusammen mit der Bibliothek cedet) separat installiert werden muß:<br />
pacman -S cedet ecb<br />
Nicht vergessen, einen load-path in das Verzeichnis zu setzen. Dann kann man mit<br />
M-x ecb RET<br />
den ECB öffnen und erhält mehrere kleine Puffer, die Verschiedenes anzeigen. Man muß später noch ein wenig daran konfigurieren. Im Gegensatz zu Speedbar legt ECB Metainformationen in eigenen Dateien ab, weshalb ECB bzgl. der Quelldateien auch dateiübergreifende Informationen liefern und Operationen ausführen kann. ECB geht allerdings auf Kosten der Performance.<br />
<br />
==== Compilieren ====<br />
Das Compilieren (und Linken und alles, was man noch so darunter versteht) startet man unter emacs mit<br />
M-x compile RET<br />
Dies ruft normalerweise [[make]] auf, so daß ein Makefile im aktuellen Verzeichnis existieren sollte. Wer ein anderes Build-Werkzeug verwendet, kann dies konfigurieren. Die Ausgaben dieses Werkzeugs gelangen in den ''compilation buffer'', wo eventuelle Fehler später leicht durchlaufen werden können. In den übrigen Puffern kann man selbstverständlich weitereditieren.<br />
<br />
==== Debuggen ====<br />
Das Debuggen erfolgt üblicherweise mit [[gdb]], wofür emacs ein eigenes Frontend zur Verfügung stellt, den '''Grand Unified Debugger''' (GUD). Man startet ihn mit<br />
M-x gdb RET<br />
wobei nach dem Namen des executables gefragt wird, was man meist mit RET bestätigen kann. Man bekommt zunächst zwei Puffer, in einem läuft gdb mit seinem Prompt, in dem anderen wird die aktuelle Ausführungsposition in einer Quelldatei angezeigt.<br />
<br />
GUD beherrscht allerdings noch eine wesentlich komfortablere Darstellungsform mit Toolbar und mehreren kleinen Puffern, wo auch der stack frame, lokale Variablen, Watches usw. dargestellt werden (screenshot [[http://www.nick.uklinux.net/screenshot.png]]). Dazu muß man GUD aber explizit konfigurieren: (gdb-many-windows t).<br />
<br />
=== Emacs und (La)TeX ===<br />
Da sowohl emacs als auch TeX und LaTeX schon recht alt sind, nimmt es nicht wunder, dass es mehrere Versuche gegeben hat, die beiden Systeme miteinander zu verheiraten. Mitgeliefert mit emacs wird ein <code>tex-mode</code> und ein <code>latex-mode</code>. Weithin durchgesetzt hat sich allerdings das Paket AucTeX, da es wesentlich mächtiger und benutzerfreundlicher ist als die ursprünglichen Modi.<br />
<br />
AucTeX kann mit<br />
<pre><br />
pacman -S auctex<br />
</pre><br />
installiert werden.<br />
<br />
Die Aktivierung im emacs erfolgt z.B. über Einträge in der Datei <code>~/.emacs</code><br />
<pre><br />
;; Auctex<br />
(load "auctex.el" nil t t)<br />
(load "preview-latex.el" nil t t)<br />
(setq auto-mode-alist (cons '("\\.tex$" . LaTeX-mode) auto-mode-alist)<br />
auto-mode-alist (cons '("\\.dtx$" . LaTeX-mode) auto-mode-alist))<br />
</pre><br />
<br />
Dies stellt einen TeX-mode für Plain TeX, einen LaTeX-mode und inzwischen auch einen ConTeXt-mode zur Verfügung, und verknüpft Dateien mit den Endungen .tex bzw .dtx mit diesen Modi (man beachte die andere Schreibweisen). Die alten, emacs-eigenen Modi bleiben aber verfügbar. <br />
<br />
AucTeX kann über Menüs bedient und angepasst werden. Diese Menüs wird man für seltener benutzte Dinge auch nutzen wollen, aber für die grundlegenden Dinge muss man sich nur eine Tastenkombination merken: <code>C-c C-c</code> startet einen LaTeX (oder modiabhängig einen TeX-Lauf, wenn es nötig ist; ist es nicht nötig, bietet AucTeX gleich einen Viewer (Standard ist xpdf) an.<br />
<br />
Ansonsten gibt es zu AucTeX eine umfangreiche Dokumentation im Info-Format. <br />
<br />
Eine Möglichkeit, emacs selbst als Previewer für pdf-Dateien zu benutzen, wurde im englischsprachigen Forum zu Arch Linux aufgezeigt. Er nutzt den doc-view-mode, den emacs 23 erstmals liefert. Es ist damit sogar möglich, eine rudimentäre SyncTeX-Funktionalität (naja, fast) herzustellen. <br />
<br />
Zunächst ist folgender Code, sofern noch nicht vorhanden, in die <code>.emacs</code> einzufügen:<br />
<pre><br />
(server-start)<br />
(add-hook 'doc-view-mode-hook 'auto-revert-mode)<br />
</pre><br />
Dies startet zum einen emacs als Server (so dass das Programm <code>emacsclient</code> funktioniert), zum anderen sorgt es dafür, dass Änderungen an pdf-Dateien (z.B. nach einem LaTeX-Lauf) automatisch zu einer Aktualisierung des entsprechenden Buffers führen.<br />
<br />
Dann muss man noch über das AucTeX-Menü folgende Anpassung vornehmen: <br />
<pre><br />
LaTeX->Customize AUCTeX->(expand)->Tex command->Tex output view style<br />
</pre><br />
In dem Annpassungsbuffer nach <code>^pdf</code> suchen und das dort konfigurierte Kommando ändern zu:<br />
<pre><br />
emacsclient -e "(find-file \"%o\")"<br />
</pre><br />
<br />
Mit dvi-Dateien funktioniert dies möglicherweise völlig analog.<br />
<br />
=== News und Mail in emacs ===<br />
Emacs besitzt standardmäßig mehrere mail-Betriebsarten ('''mail''', '''mh''', '''rmail''') unterschiedlichen Funktionsumfangs, sowie einen universalen mail/news/rss-Client in Lisp ('''Gnus'''). Letzterer ist die umfassendste Variante, erfordert aber auch die komplexeste Konfiguration sowie einige Übung im Umgang. Dafür erhält man eines der leistungsfähigsten Programme dieser Art auf der Welt (screenshots [[http://upload.wikimedia.org/wikipedia/commons/c/c3/Gnus-reading-news.png]], [[http://stuff.mit.edu/iap/2009/emacs/images/gnus.png]]).<br />
<br />
M-x mail RET<br />
öffnet einen Puffer, in dem man eine E-Mail-Nachricht schreiben kann. Oben stehen ein paar Headerzeilen, die man ausfüllt, darunter der Text der Nachricht. Mit C-c C-c kann man diese Nachricht dann abschicken, wobei sie dem default-Programm zum Senden vom E-Mail übergeben wird, wahrscheinlich [[sendmail]], möglicherweise aber auch einer GUI-Applikation wie [[Thunderbird]].<br />
<br />
<br />
(wer kennt sich mit '''mh''' und/oder '''rmail''' aus? Ein paar Worte bitte ...)<br />
<br />
<br />
M-x gnus RET<br />
öffnet Gnus. man gelangt in den sog. ''group buffer'', in welchem (ggf. thematisch sortiert) die news groups aufgelistet sind, die der Benutzer abboniert hat. Dort erscheinen auch seine E-Mail-Postfächer sowie RSS-feeds. Jeweils neu eingetroffene Nachrichten werden hinter diesen Gruppen als Anzahl angezeigt und man kann durch RET in den ''summary buffer'' wechseln, um die Subjects und Poster der neuen Nachrichten zu sehen. Im summary buffer kann man wiederum RET drücken und gelangt in den ''article buffer'', wo man die ausgewählte Nachricht lesen und auch beantworten kann.<br />
<br />
Gnus kann POP3- und IMAP-Postfächer und selbst den Inhalt von Verzeichnissen auf der Festplatte abfragen, ist in der Lage, beim Senden und Empfangen verschiedene Verschlüsselungen anzuwenden und kann bedingt auch HTML rendern oder Artikel "waschen" (insbesondere solche, die von Outlook stammen). Gnus kann auch mit Hilfe des ''Gnus Agent'' als Offline-News-Reader eingesetzt werden. Dabei werden die Artikel lokal in einem Verzeichnis(baum) gespeichert. Gnus besitzt ausgeklügelte Filter- und Scoring-Möglichkeiten.<br />
<br />
Der Leistungsumfang von Gnus ist so vielfältig, daß ihm ein eigenes Manual gewidmet ist [http://www.gnu.org/software/emacs/manual/html_node/gnus/index.html]. Es lohnt sich, dieses Manual durchzuarbeiten, um die obligatorische Konfiguration durchführen zu können. Die resultierende Konfigurationsdatei .gnus ist zwar meist überschaubar, allerdings etwas knifflig in der Erstellung. Erschwert wird die Konfiguration dadurch, daß Gnus auf anderen Komponenten (message) aufbaut, die separat konfiguriert werden. Siehe ferner auch hier [http://www.emacswiki.org/cgi-bin/wiki/CategoryGnus]<br />
<br />
=== WWW in emacs ===<br />
Eine sehr interessante Erweiterung für Emacs ist das Lisp-Paket '''emacs-w3m''' [[http://emacs-w3m.namazu.org/]], eine Schicht, die es erlaubt, den Textbrowser [[w3m]] in Emacs laufen zu lassen, d.h. von Emacs aus vollständig zu bedienen. Man muß dann Emacs nicht mehr verlassen, um mal schnell eine Internetsuche durchzuführen.<br />
<br />
emacs-w3m wird nicht mitgeliefert. w3m (der eigentliche Browser) und emacs-w3m können über pacman installiert werden:<br />
pacman -Sy w3m emacs-w3m<br />
Man muß anschließend sehr wahrscheinlich einen load-path in seine .emacs einfügen, damit Emacs das Paket findet. Man startet emacs-w3m über<br />
M-x w3m RET<br />
Man kann emacs-w3m später konfigurieren, es wird aber auch ohne Konfiguration schon brauchbare Ergebnisse liefern.<br />
<br />
=== Weitere Betriebsarten ===<br />
* Chatten<br />
* Calendar<br />
* Todo-Listen<br />
* Lisp-Interpreter<br />
* Spiele<br />
* Twitter<br />
<br />
=== Emacs erweitern ===<br />
Emacs ist offen für Erweiterungen in Lisp. Man kann entweder bestehende Lisp-Dateien und -Pakete hinzufügen oder selbst welche schreiben. Es existieren zahlreiche Verzeichnisse, auf denen man sehr interessante Pakete für die unterschiedlichsten Zwecke findet, besonders die Emacs Lisp List (ELL [http://www.damtp.cam.ac.uk/user/sje30/emacs/ell.html]), die seit vielen Jahren schon existiert und immer noch gepflegt wird.<br />
<br />
Auf Unix-artigen Systemen wird man nicht im globalen Lisp-Verzeichnis Änderungen vornehmen wollen oder dürfen. Deshalb ist es ratsam, im home-Verzeichnis des Benutzers ein lokales Lisp-Verzeichnis anzulegen. Dieses ist in der .emacs mit einem load-path zu konfigurieren, damit emacs auch dort nach Lisp-Dateien sucht.<br />
<br />
Es empfiehlt sich, die dort liegenden .el-Dateien in .elc-Dateien zu compilieren, um die Ausführung etwas zu beschleunigen.<br />
<br />
== Dokumentation ==<br />
Emacs ist ''self documenting'', d.h. in jedem Belang ausführlich dokumentiert. Diese Dokumentation ist jederzeit im Editor selbst abrufbar. Man startet sie über<br />
C-h r<br />
und gelangt in den Emacs-eigenen Info-Browser. Den Umgang mit dem Info-System, der im GNU-Projekt allgemein verwendeten, hypertextartigen Alternative zu Man-Pages, muß man etwas üben. Die dazu nötigen Tasten stehen am oberen Rand des Puffers. Merken muß man sich vor allem u (up).<br />
<br />
Es gibt auch eine FAQ-Liste, die man über<br />
C-h C-f<br />
erreicht.<br />
<br />
Für elisp-Programmierer interessant sind außerdem die Funktionen ''describe-variable'' und '' describe-function''. Hier kann man Infos zu definierten Variablen bzw. Funktionen bekommen, deren Namen man allerdings ungefähr kennen muss.<br />
<br />
== Links ==<br />
* Gnu Emacs Manual (entspricht den mitgelieferten Info-Seiten, nur hier in HTML) [http://www.gnu.org/software/emacs/manual/html_node/emacs/index.html]<br />
* Gnu Emacs verwandte Seiten [http://www.gnu.org/software/emacs/manual]<br />
* Emacs-Einsteiger-Dokumentation auf SelfLinux [http://www.selflinux.org/selflinux/html/emacs.html]<br />
* EmacsWiki [http://www.emacswiki.org/cgi-bin/wiki/SiteMap]<br />
* Emacs Lisp List [http://www.damtp.cam.ac.uk/user/sje30/emacs/ell.html]<br />
* Eine Liste mit interessanten Erweiterungen (Lisp) [http://www.splode.com/~friedman/software/emacs-lisp/#ui]</div>PSubhttps://wiki.archlinux.de/index.php?title=Urban_Terror&diff=10724Urban Terror2010-09-06T21:19:47Z<p>PSub: /* cURL could not be loaded */ Wegen https://bbs.archlinux.de/viewtopic.php?id=17347</p>
<hr />
<div>{{righttoc}}<br />
Urban Terror ist ein Online-Shooter in der Egoperspektive, der Taktikelemente enthält. Urban Terror (im folgenden UrT abgekürzt) wird von einem Entwicklerteam mit dem Namen [http://frozensand.com Frozen Sand] aktiv weiterentwickelt. UrT ist als Mod von Quake III Arena entstanden, mittlerweile aber auch ohne spielbar.<br />
<br />
== Installation ==<br />
Es gibt einen PKGBUILD im [[AUR]] oder Pakete im [[Online_Shooter#Arch_Linux_User_Gaming_Repository|Arch Gaming Repository]].<br />
Das Paket kann man ganz einfach aus dem AUR mit [[Yaourt]] installieren:<br />
yaourt -S urbanterror<br />
<br />
== Das Spiel ==<br />
=== Spielmodi ===<br />
{| {{prettytable}}<br />
|style="width:30%;background-color:#E5E5E5"|'''Modus''' <br />
|style="width:70%;background-color:#E5E5E5"|'''Beschreibung''' <br />
|-<br />
|Free for All(FFA, DM)<br />
|Jeder gegen Jeden, mit Respawn<br />
|-<br />
|Team Deathmatch(TDM)<br />
|2 Teams spielen gegeneinander, mit Respawn<br />
|-<br />
|Team Survivor(TS)<br />
|2 Teams spielen gegeneinander, ohne Respawn<br />
|-<br />
|Capture the Flag(CTF)<br />
|2 Teams klauen sich gegenseitig die Flagge, mit Respawn<br />
|-<br />
|Capture and Hold(CAH)<br />
|2 Teams versuchen, die 2 Flaggenpunkte so lange wie möglich am Stück zu halten<br />
|-<br />
|Follow the Leader(FTL)<br />
|ein Leader in jeder Runde per Zufall bestimmt, Punkte sammeln für 2 Dinge: Leader berührt die gegnerische Flagge, das Gegnerteam ist tot(mehr Punkte wenn der eigene Leader noch lebt), ohne Respawn<br />
|-<br />
|Bomb-Mode(BM)<br />
|1 team muss die Bombe platzieren, das andere Team muss das verhindern oder die Bombe entschärfen<br />
|-<br />
|}<br />
<br />
=== Waffen ===<br />
{| {{prettytable}}<br />
|style="background-color:#E5E5E5"|'''Waffe''' <br />
|style="background-color:#E5E5E5"|'''Beschreibung'''<br />
|style="background-color:#E5E5E5"|'''Erweiterungen'''<br />
|-<br />
|KaBar Next Generation Knife<br />
|6¼" Messer, Grundausrüstung<br />
|Keine<br />
|-<br />
|BERETTA 92FS<br />
|Pistole, 9 X 19mm Kaliber, 15 Schuss/Magazin, Automatik<br />
|Laser, Schalldämpfer<br />
|-<br />
|IMI .50 AE Desert Eagle<br />
|Pistole, .50 AE Kaliber, 7 Schuss/Magazin, Automatik<br />
|Laser<br />
|-<br />
|Franchi SPAS12 Shotgun<br />
|Shotgun, 12/70 Round Kaliber, 8 Schuss/Magazin, Automatik<br />
|Keine<br />
|-<br />
|Heckler & Koch MP5K<br />
|Maschinenpistole, .45 ACP, 25 Schuss/Magazin, Automatik<br />
|Laser, Schalldämpfer<br />
|-<br />
|Heckler & Koch UMP45<br />
|Maschinenpistole, 9 x 19mm Kaliber, 30 Schuss/Magazin, Automatik<br />
|Laser, Schalldämpfer<br />
|-<br />
|Heckler & Koch HK69<br />
|Granatwerfer, 40mm Kaliber, 1 Schuss(4 Granaten)<br />
|Keine<br />
|-<br />
|Colt M4 Carbine<br />
|Sturmgewehr, 5.56 x 45 NATO Kaliber, 30 Schuss/Magazin, Automatik<br />
|Laser, Schalldämpfer<br />
|-<br />
|ZM Weapons LR300ML<br />
|Sturmgewehr, 5.56 x 45 NATO Kaliber, 30 Schuss/Magazin, Automatik<br />
|Laser, Schalldämpfer<br />
|-<br />
|Kalashnikov AK-103<br />
|Sturmgewehr, 7.62 x 29 Kaliber, 30 Schuss/Magazin, Automatik<br />
|Laser, Schalldämpfer<br />
|-<br />
|Heckler & Koch G36<br />
|Sturmgewehr, 5.56 x 45 NATO Kaliber, 30 Schuss/Magazin, Automatik<br />
|Schalldämpfer<br />
|-<br />
|IMI NEGEV LMG<br />
|Maschinengewehr, 5.56 Kaliber, 90 Schuss/Magazin, Automatik, Keine Sekundärwaffe<br />
|Schalldämpfer<br />
|-<br />
|Heckler & Koch PSG-1<br />
|Sniperrifle, 7.62 x 51 NATO Kaliber, 8 Schuss/Magazin, Automatik<br />
|Schalldämpfer<br />
|-<br />
|Remington SR-8<br />
|Sniperrifle, .338 Lapua Magnum Round Kaliber, 5 Schuss/Magazin, Auswerfen der Hülse nach jedem Schuss<br />
|Keine<br />
|-<br />
|}<br />
Man kann 3 Waffen mitführen: 1 Primärwaffe (alle außer den Pistolen), 1 Sekundärwaffe (die Shotgun oder eine der Maschinenpistolen) und eine Pistole.<br />
<br />
=== Erweiterungen ===<br />
{| {{prettytable}}<br />
|style="background-color:#E5E5E5"|'''Name'''<br />
|style="background-color:#E5E5E5"|'''Nutzen'''<br />
|-<br />
|Kevlar Helm und Weste<br />
|Schutz<br />
|-<br />
|Granate<br />
|Gegner hinter Deckung hervorlocken, mehreren Gegnern auf einmal Schaden<br />
|-<br />
|Rauchgranate<br />
|Tarnung<br />
|-<br />
|Schalldämpfer<br />
|Dämpft den Knall<br />
|-<br />
|Laser<br />
|Verringert Streuung<br />
|-<br />
|Sehhilfe<br />
|Erleichtert das aufspüren von anderen Spielern<br />
|-<br />
|Medkit<br />
|Zum Heilen von Teammitgliedern oder sich selbst<br />
|-<br />
|Extra Ammunition<br />
|Verdoppelt die Anzahl verfügbarer Magazine<br />
|}<br />
<br />
== Troubleshooting ==<br />
=== cURL could not be loaded ===<br />
Wenn beim nachladen von Maps der Fehler ''Could not autodownload map, because cURL library could not be loaded'' erscheint, muss das Paket curl mit '''pacman -S curl''' installiert werden. Wenn es dann immer noch nicht geht, muss die Konsole geöffnet werden (im Hauptmenu ''Shift'' + ''Esc'' drücken) und '''/cl_curllib /usr/lib/libcurl.so''' eingegeben werden. Spätestens jetzt sollte es funktionieren.<br />
<br />
== Siehe auch==<br />
*[[Online_Shooter|Online Shooter]]<br />
<br />
== Weblinks==<br />
* http://iourbanterror.de Deutsche Site<br />
* http://urbanterror.net Offizielle Site<br />
<br />
[[Kategorie:Spiele]]</div>PSubhttps://wiki.archlinux.de/index.php?title=Numlock&diff=10723Numlock2010-09-06T21:19:16Z<p>PSub: /* X-Server */ Wegen https://bbs.archlinux.de/viewtopic.php?id=17347</p>
<hr />
<div>{{righttoc}}<br />
Auf Tastaturen mit separatem Nummerfeld gibt es eine Taste, mit der man zwischen den über das Nummernfeld eingebbaren Zahlen, sowie den Alternativ-Belegungen der dort befindlichen Tasten hin-und-her schalten kann. Diese Taste wird mit ''Numlock'' bezeichnet, und findet sich üblicher Weise oben links auf dem rechtsseitig angeordneten Nummernfeld.<br />
<br />
Das Problem ist allerdings, dass das Nummernfeld standardmäßig nur die Alternativbelegung bereitstellt, so dass man Numlock jedes mal erst einschalten muss, wenn man es verwenden will. Dieses ständige Einschalten-Müssen kann man aber auch automatisieren.<br />
<br />
== Beim Start automatisch ==<br />
Wenn man an seinem Computer mit nur einer Tastatur arbeitet (was ja nicht unüblich ist …) will man Numlock eventuell automatisch aktiviert haben, so dass man direkt nach dem Systemstart auf das Nummernfeld zugreifen kann, ohne, dass man es erst aktivieren muss.<br />
<br />
=== Virtuelle Konsolen ===<br />
Um Numlock an den virtuellen Konsolen automatisch zu aktivieren, bedient man sich des Standard-Programms „setleds“, sowie eines Eintrages in der Datei „/etc/rc.local“. Diese Datei wird nach jedem standardmäßigem Systemstart ausgeführt und aktiviert somit Numlock.<br />
<br />
for tty in /dev/tty*; do<br />
/usr/bin/setleds -D +num < "$tty"<br />
done<br />
<br />
Diese for-Schleife durchläuft alle verfügbaren virtuellen Konsolen in „/dev“, wo diese als Gerätedateien verzeichnet sind. Je Konsole wird dann „setleds“ ausgeführt und mittels Umleitung an die jeweilige virtuelle Konsole gesendet.<br />
<br />
Will man nur eine Konsole so behandeln, reicht ein einfaches …<br />
<br />
/usr/bin/setleds -D +num < /dev/ttyX<br />
<br />
… wobei „X“ durch die jeweilige Konsolennummer ersetzt werden muss. „/dev/tty1“ ist zum Beispiel die erste Konsole, die man nach einem standardmäßigen Bootvorgang vor sich hat.<br />
<br />
=== X-Server ===<br />
Die Einstellungen per „setleds“ gelten nur für die virtuellen Konsolen, nicht aber für den X-Server. Hier bedarf es eines Zusatzprogramms. Zum Beispiel „numlockx“, das genau für diesen einen Zweck geschaffen wurde, Numlock an und aus zu schalten.<br />
<br />
pacman -S numlockx<br />
<br />
Das Programm verfügt über drei Parameter: „on“, „off“ und „toggle“. „on“ aktiviert Numlock, „off“ deaktivert es, und „toggle“ schaltet in den jeweils anderen Modus. Wenn Numlock aktiviert ist, schaltet „toggle“ es aus, wenn Numlock deaktiviert ist, schaltet „toggle“ es ein.<br />
<br />
numlockx on<br />
<br />
Dies aktiviert Numlock unter [[X]]. Allerdings nur, wenn es auch unter X aufgerufen wurde. Wenn es nicht unter X aufgerufen wurde, gibt es lediglich eine Fehlermeldung, sofern man nicht das ''Display'' angegeben hat.<br />
<br />
==== Login-Manager ====<br />
Den Befehl „numlockx on“ kann man natürlich auch in die Konfigurationsdateien des verwendeten Login-Managers schreiben. Bei [[KDM]], dem [[Login-Manager]] von [[KDE]], ist dies die Datei „/usr/share/config/kdm/Xsetup“.<br />
<br />
Unter [[GDM]] wird die Anweisung in der Datei „/etc/gdm/Init/Default“ definiert. Dort wird sie gemäß den GDM-Vorgaben eingetragen und wird von nun an bei jedem GDM-Start ausgeführt, und Numlock damit eingeschaltet.<br />
<br />
Um die Anweisung in [[Login-Manager#SLiM|SLiM]] zu definieren, muss man die Datei „/etc/slim.conf“ bearbeiten, und die Anweisung gemäß der Vorgaben in die Datei schreiben.<br />
<br />
==== Autostart ====<br />
Selbstversändlich kann man „numlockx on“ auch in die Autostart-Datei der verwendeten [[:Kategorie:Desktopumgebung|Desktopumgebung]] oder in die „.xinitrc“ schreiben. Die Autostart-Datei des Desktopmanagers ist der Definition in der „.xinitrc“ aber vorzuziehen.<br />
<br />
Unter KDE erstellt man eine Datei „~/.kde/Autostart/numlockx“, wobei der Dateiname nicht von Bedeutung ist. In diese Datei schreibt man …<br />
<br />
#!/bin/bash<br />
numlockx on<br />
<br />
… und macht diese mittels „chmod +x dateiname“ ausführbar. Unter [[GNOME]] kann man ein Autostart-Programm nebst Startparametern über „System → Einstellungen → Sitzung“ der Sitzung, bzw. den Autostartprogrammen hinzufügen. Unter [[Openbox]] muss der Eintrag in die „~/.config/openbox/autostart.sh“ gesetzt werden.<br />
<br />
== USB-Tastatur beim Einstecken ==<br />
{{Unvollständig}}<br />
Arbeitet man an einem Laptop, an das man gelegentlich per USB eine vollwertige Tastatur anschließt, schaltet man vermutlich häufig zwischen Numlock hin-und-her, da die Notebook-Tastatur für gewöhnlich ja keinen separaten Nummernfeld hat, kann ein eingeschaltetes Numlock mitunter merkwürdige Ergebnisse produzieren. Ausgeschaltetes Numlock auf der vollwertigen Tastatur ist aber auch nicht so schön<br />
<br />
=== Vorbereitungen ===<br />
Damit das automatische Aktivieren und Deaktivieren von Numlock beim einstecken bzw, abziehen einer USB-Tastatur am Laptop funktioniert, müssen [[udev]] und „numlockx“ installiert sein und ordnungsgemäß funktionieren.<br />
<br />
pacman -Sy udev numlockx<br />
<br />
Wenn „udev“ ordnungsgemäß funktioniert und man mittels „numlockx“ Numlock ein- und ausschalten kann, steht einer Automation nichts mehr im Wege.<br />
<br />
=== Einrichtung ===<br />
Damit der Vorgang funktioniert, bedarf es eines Skriptes, über das je nach Vorgang (einstecken oder abziehen der USB-Tastatur) der entsprechende Programmaufruf ausgeführt wird. Dieses Script sieht wie folgt aus:<br />
<br />
#!/bin/sh<br />
case "$1" in<br />
on)<br />
export DISPLAY=':0.0'; /usr/bin/numlockx on<br />
;;<br />
off)<br />
export DISPLAY=':0.0'; /usr/bin/numlockx off<br />
;;<br />
esac<br />
exit 0<br />
<br />
Gespeichert wird das Script zum Besipiel als „/usr/local/bin/numl“. Der Dateiname ist dabei allerdings unrelevant, man muss die Datei nur wiederfinden können. Zusätzlich zu dieser Datei bedarf es noch einer Regel für udev. Diese Regel wird unter „/etc/udev/rules.d/25-usbkeyboard.rules“ erstellt und sieht wie folgt aus:<br />
<br />
ACTION=="add", SUBSYSTEM=="input", ATTRS{idProduct}=="1003",<br />
ATTRS{idVendor}=="05ac", RUN+="/usr/local/bin/numl on",<br />
ENV{REMOVE_CMD}="/usr/local/bin/numl off"<br />
<br />
'''''Achtung:''' Die Zeilenumbrüche hier sind nur aus designtechnischen Gründen für das Wiki vorhanden und müssen beim erstellen der Regel ersatzlos entfernt werden.''<br />
<br />
Die Werte „idProduct“ und „idVendor“, im Script besipielhaft mit „1003“ bzw. „05ac“ müssen an die eigenen, tatäschlichen Werte angepasst werden. Abfragen kann man die Werte mittels „udevinfo“<br />
<br />
udevinfo -a -p /sys/class/input/eventN<br />
<br />
„N“ muss durch eine event-Nummer ersetzt werden. Durch ein wenig herumprobieren bekommt man hier mit die Produkt-ID und die Hersteller-ID heraus. Diese Werte trägt man dann in die udev-Regel ein.<br />
<br />
Nun muss nur noch vor em Aufruf des Fenstermanagers in der „.xinitrc“ die Zeile …<br />
<br />
xhost +local:<br />
<br />
… eingefügt werden, und ein Neustart von „udev“ vorgenommen werden, danach sollte beim Einstecken der USB-Tastatur Numlock automatisch eingeschaltet werden, und beim Abziehen der USB-Tastatur Numlock wieder ausgeschaltet werden.<br />
<br />
== Todo ==<br />
* udev oder evdev fürs automatische Aktivieren? [[Diskussion:Numlock|Siehe Diskussionsseite]]<br />
<br />
[[Kategorie:Systemverwaltung]]<br />
[[Kategorie:X11]]<br />
[[Kategorie:Konsole]]<br />
[[Kategorie:Unvollständig]]<br />
[[en:Activating Numlock on Bootup]]</div>PSubhttps://wiki.archlinux.de/index.php?title=Arch_Linux_auf_einem_Root-Server&diff=10722Arch Linux auf einem Root-Server2010-09-06T21:18:46Z<p>PSub: /* Pacman aktualisieren */ Wegen https://bbs.archlinux.de/viewtopic.php?id=17347</p>
<hr />
<div>{{unvollständig}}<br />
{{righttoc}}<br />
Diese Anleitung beschreibt die Installation von Arch Linux auf einem dedicated Root-Server aus einem Rescue-System auf Basis eigener Erfahrungen. Basierend auf der Anleitung von [http://wiki.archlinux.org/index.php/Install_From_Existing_Linux], welche aber nicht 1:1 übersetzt wurde.<br />
==Anmerkungen==<br />
Entsprechend der später verwendeten Architektur sollte auch das Rettungssystem diese bereits verwenden. Bei Hetzner kann man zwischen einem 32-Bit und einem 64-Bit Rettungssystem auswählen. Bis 3 GB RAM sollte das 32-Bit System ( so auch die i686er Variante von Arch ) vollkommen ausreichen. Vorausgesetzt man braucht keine Datenbanken mit mehreren 100 MByte Größe. Diese Anleitung beschreibt die Nutzung der i686-Variante, kann aber auf die x86_64 1:1 übernommen werden - Bis auf die Pakete.<br />
==Vorbereitung==<br />
===Partitionierung===<br />
Für diese Anleitung wird ein Software-RAID 1 aufgebaut, welches eine erhöhte Datensicherheit bietet. Die Partitionierung kann mit cfdisk oder fdisk erfolgen. Bevorzugt lege ich auf meinen Servern immer folgendes Partionsschemata an:<br /><br />
* /dev/sda1 - 100 MB - linuxraid autodetect - /boot<br />
* /dev/sda2 - 1 GB - linuxraid autodetect - swap<br />
* /dev/sda3 - rest - linuxraid autodetect - /<br />
Dies muss auf beiden Festplatten erfolgen!<br />
===Erstellung der RAID-Arrays===<br />
'''Info'''<br /><br />
Sollte RAID später Probleme machen, dann mal RAID weg lassen.<br /><br /><br />
Mit mdadm erstellen wir nun das RAID Array für /boot, / und swap.<br /><br />
Bevor das RAID Array erstellt werden kann, müssen die entsprechenden Module geladen werden:<br /><br /><br />
<code>modprobe raid1</code><br /><br />
Später / ...<br /><br />
<code>mdadm --create /dev/md0 --level 1 --raid-devices 2 /dev/sda3 /dev/sdb3</code><br /><br />
Später /boot ...<br /><br />
<code>mdadm --create /dev/md1 --level 1 --raid-devices 2 /dev/sda1 /dev/sdb1</code><br /><br />
Später swap ...<br /><br />
<code>mdadm --create /dev/md2 --level 1 --raid-devices 2 /dev/sda2 /dev/sdb2</code><br /><br />
<br />
===Erstellung der Dateisysteme===<br />
Damit wir später archlinux installieren und noch später auch booten können, müssen nun die entsprechenden Dateisystem erstellt werden. Für /boot sowie für / wird das ext3-Dateisystem benutzt.<br /><br /><br />
<code>mkfs.ext3 /dev/md0</code><br /><br />
<code>mkfs.ext3 /dev/md1</code><br /><br />
<code>mkswap /dev/md2</code><br /><br />
===Mounten===<br />
Nun müssen die einzelnen Partitionen (RAID Arrays) gemountet werden. Hierzu wird vorher unter /mnt das Verzeichnis ''archlinux'' erstellt:<br /><br /><br />
<code>mkdir -p /mnt/archlinux</code><br /><br />
<code>mount -t ext3 /dev/md0 /mnt/archlinux</code><br /><br />
<code>mkdir -p /mnt/archlinux/boot</code><br /><br />
<code>mount -t ext3 /dev/md1 /mnt/archlinux/boot</code><br /><br />
===Notwendige Pakete downloaden===<br />
Damit wir später Arch mit pacman installieren können, muss dieses nun nach /tmp/archlinux gedownloaded werden:<br /><br /><br />
<code>mkdir -p /tmp/archlinux</code><br /><br />
<code>cd /tmp/archlinux</code><br /><br />
<code>wget ftp://ftp.archlinux.org/core/os/i686/pacman-3.2.1-2-i686.pkg.tar.gz</code><br /><br />
<code>wget ftp://ftp.archlinux.org/core/os/i686/pacman-mirrorlist-20081213-1-i686.pkg.tar.gz</code><br /><br />
<code>tar xzvf pacman-3.2.1-2-i686.pkg.tar.gz</code><br /><br />
<code>tar xzvf pacman-mirrorlist-20081213-1-i686.pkg.tar.gz</code><br /><br /><br />
Da pacman nicht statisch auf Libs gelinkt ist, benötigen wir noch die statisch gelinkte.<br /><br /><br />
<code><br />
cd /tmp/archlinux<br /><br />
wget http://repo.archlinux.fr/i686/pacman-static-3.2.2-1.pkg.tar.gz<br /><br />
tar xzvf pacman-static-3.2.1-1-i686.pkg.tar.gz<br />
</code><br /><br />
<br />
===Benötigte Dateien ins Host-System kopieren===<br />
Da in der Regel die Rescue-Systeme von dedicated Root-Servern ein Netzwerkimage haben, können die Dateien von Pacman direkt nach / kopiert werden:<br /><br />
<code>tar xf /tmp/archlinux/pacman-*.pkg.tar.gz -C /</code><br /><br />
<br />
===Pacman konfigurieren===<br />
Nun müssen die Dateien /etc/pacman.conf und /etc/pacman.d/mirrorlist den Bedürfnissen angepasst werden.<br />
==Installation von Arch Linux==<br />
===Pacman aktualisieren===<br />
mkdir -p /mnt/archlinux/var/lib/pacman<br />
pacman.static -S -r /mnt/archlinux<br />
pacman.static -S pacman -r /mnt/archlinux<br />
<br />
===Basissystem installieren===<br />
pacman.static -S base -r /mnt/archlinux<br />
<br />
===System vorbereiten===<br />
Nun wird es richtig ernst, denn wir bereiten das System für das chroot vor. Vorher muss aber sichergestellt werden, dass die richtigen nodes in /dev für udev erstellt wurden:<br /><br />
<code><br />
ls -alF /mnt/archlinux/dev<br />
</code><br /><br />
» Das sollte dann ausgegeben werden:<br /><br />
<code><br />
crw------- 1 root root 5, 1 2008-12-27 21:40 console<br /><br />
crw-rw-rw- 1 root root 1, 3 2008-12-27 21:42 null<br /><br />
crw-rw-rw- 1 root root 1, 5 2008-12-27 21:40 zero<br /><br />
</code><br />
» Nun müssen weitere Dateisystem eingebunden werden:<br /><br />
<code><br />
mount -o bind /dev /mnt/archlinux/dev<br /><br />
mount -t proc none /mnt/archlinux/proc<br /><br />
mount -o bind /sys /mnt/archlinux/sys<br /><br />
</code><br />
» /etc/resolv.conf kopieren<br /><br />
<code>cp -r /etc/resolv.conf /mnt/archlinux/etc/resolv.conf</code><br /><br />
» /etc/pacman.d/mirrorlist kopieren<br /><br />
<code>cp -r /etc/pacman.d/mirrorlist /mnt/archlinux/etc/pacman.d/mirrorlist</code><br /><br />
» Enter the chroot<br /><br />
<code>chroot /mnt/archlinux /bin/bash</code><br /><br />
» Den Rest installieren<br /><br />
<code><br />
pacman -Sy kernel26<br /><br />
pacman -S openssh<br /><br />
pacman -S <paket><br />
</code><br /><br />
Das Paket ''openssh'' muss installiert werden, sofern keine Remote-Console an den Server gekoppelt ist.<br /><br />
<br />
===System einrichten===<br />
* /etc/rc.conf<br />
* /etc/fstab<br />
<code><br />
/dev/md0 / ext3 defaults 0 0<br /><br />
/dev/md1 /boot ext3 defaults 0 0<br /><br />
/dev/md2 swap swap defaults 0 0<br />
</code><br />
* /etc/mkinitcpio.conf<br />
* /etc/modprobe.d/modprobe.conf<br />
* /etc/resolv.conf<br />
* /etc/hosts<br />
* /etc/hosts.deny<br />
<code># ALL: ALL: DENY</code><br />
* /etc/hosts.allow<br />
<code>ALL: ALL: ALLOW</code><br />
* /etc/locale.gen<br />
Wenn alle Konfigurationsdateien bearbeitet wurden und die notwendigen Locales in /etc/locale.gen freigeschalten wurden (# vor Zeile weg), können die notwendigen Locales erstellt werden:<br /><br />
<code>locale-gen</code><br />
===Installation von Grub===<br />
» Damit Grub innerhalb des chroot installiert werden kann<br /><br />
<code>grep -v rootfs /proc/mounts > /etc/mtab</code><br />
» /boot/grub/menu.lst bearbeiten<br /><br />
» Kernelzeile muss am Ende folgendes enthalten<br /><br />
<code>md=1,/dev/sda1,/dev/sdb1 md=0,/dev/sda3,/dev/sdb3, md=2,/dev/sda2,/dev/sdb2</code><br />
» Grub installieren<br /><br />
<code><br />
grub<br /><br />
grub> find /boot/grub/stage1<br /><br />
grub> root (hd0,0)<br /><br />
grub> setup (hd0)<br /><br />
grub> quit<br />
</code><br />
===Installation fertig===<br />
Wenn alles eingerichtet und installiert ist, kann das System rebootet werden.<br /><br />
Bei Hetzner ist es nun angebracht sich eine LARA anschließen zu lassen, da ich persönlich bsp. Probleme hatte.<br /><br />
== Bekannte Probleme ==<br />
* Derzeit keine.<br />
<br />
==Fragen oder Anregungen==<br />
Ihr habt Fragen oder Anregungen oder möchtet etwas ergänzen? Keine Scheu, ich beiße keinem dem Kopf ab!<br />
==Quellen==<br />
Hauptquelle war das englische HowTo unter http://wiki.archlinux.org/index.php/Install_From_Existing_Linux<br /><br />
--[[Benutzer:Igprolin|Igprolin]] 15:28, 1. Jan. 2009 (CET)<br />
[[Kategorie:Installation]]</div>PSubhttps://wiki.archlinux.de/index.php?title=Arch_Linux_auf_einem_Root-Server&diff=10721Arch Linux auf einem Root-Server2010-09-06T21:18:02Z<p>PSub: /* Basissystem installieren */ Wegen https://bbs.archlinux.de/viewtopic.php?id=17347</p>
<hr />
<div>{{unvollständig}}<br />
{{righttoc}}<br />
Diese Anleitung beschreibt die Installation von Arch Linux auf einem dedicated Root-Server aus einem Rescue-System auf Basis eigener Erfahrungen. Basierend auf der Anleitung von [http://wiki.archlinux.org/index.php/Install_From_Existing_Linux], welche aber nicht 1:1 übersetzt wurde.<br />
==Anmerkungen==<br />
Entsprechend der später verwendeten Architektur sollte auch das Rettungssystem diese bereits verwenden. Bei Hetzner kann man zwischen einem 32-Bit und einem 64-Bit Rettungssystem auswählen. Bis 3 GB RAM sollte das 32-Bit System ( so auch die i686er Variante von Arch ) vollkommen ausreichen. Vorausgesetzt man braucht keine Datenbanken mit mehreren 100 MByte Größe. Diese Anleitung beschreibt die Nutzung der i686-Variante, kann aber auf die x86_64 1:1 übernommen werden - Bis auf die Pakete.<br />
==Vorbereitung==<br />
===Partitionierung===<br />
Für diese Anleitung wird ein Software-RAID 1 aufgebaut, welches eine erhöhte Datensicherheit bietet. Die Partitionierung kann mit cfdisk oder fdisk erfolgen. Bevorzugt lege ich auf meinen Servern immer folgendes Partionsschemata an:<br /><br />
* /dev/sda1 - 100 MB - linuxraid autodetect - /boot<br />
* /dev/sda2 - 1 GB - linuxraid autodetect - swap<br />
* /dev/sda3 - rest - linuxraid autodetect - /<br />
Dies muss auf beiden Festplatten erfolgen!<br />
===Erstellung der RAID-Arrays===<br />
'''Info'''<br /><br />
Sollte RAID später Probleme machen, dann mal RAID weg lassen.<br /><br /><br />
Mit mdadm erstellen wir nun das RAID Array für /boot, / und swap.<br /><br />
Bevor das RAID Array erstellt werden kann, müssen die entsprechenden Module geladen werden:<br /><br /><br />
<code>modprobe raid1</code><br /><br />
Später / ...<br /><br />
<code>mdadm --create /dev/md0 --level 1 --raid-devices 2 /dev/sda3 /dev/sdb3</code><br /><br />
Später /boot ...<br /><br />
<code>mdadm --create /dev/md1 --level 1 --raid-devices 2 /dev/sda1 /dev/sdb1</code><br /><br />
Später swap ...<br /><br />
<code>mdadm --create /dev/md2 --level 1 --raid-devices 2 /dev/sda2 /dev/sdb2</code><br /><br />
<br />
===Erstellung der Dateisysteme===<br />
Damit wir später archlinux installieren und noch später auch booten können, müssen nun die entsprechenden Dateisystem erstellt werden. Für /boot sowie für / wird das ext3-Dateisystem benutzt.<br /><br /><br />
<code>mkfs.ext3 /dev/md0</code><br /><br />
<code>mkfs.ext3 /dev/md1</code><br /><br />
<code>mkswap /dev/md2</code><br /><br />
===Mounten===<br />
Nun müssen die einzelnen Partitionen (RAID Arrays) gemountet werden. Hierzu wird vorher unter /mnt das Verzeichnis ''archlinux'' erstellt:<br /><br /><br />
<code>mkdir -p /mnt/archlinux</code><br /><br />
<code>mount -t ext3 /dev/md0 /mnt/archlinux</code><br /><br />
<code>mkdir -p /mnt/archlinux/boot</code><br /><br />
<code>mount -t ext3 /dev/md1 /mnt/archlinux/boot</code><br /><br />
===Notwendige Pakete downloaden===<br />
Damit wir später Arch mit pacman installieren können, muss dieses nun nach /tmp/archlinux gedownloaded werden:<br /><br /><br />
<code>mkdir -p /tmp/archlinux</code><br /><br />
<code>cd /tmp/archlinux</code><br /><br />
<code>wget ftp://ftp.archlinux.org/core/os/i686/pacman-3.2.1-2-i686.pkg.tar.gz</code><br /><br />
<code>wget ftp://ftp.archlinux.org/core/os/i686/pacman-mirrorlist-20081213-1-i686.pkg.tar.gz</code><br /><br />
<code>tar xzvf pacman-3.2.1-2-i686.pkg.tar.gz</code><br /><br />
<code>tar xzvf pacman-mirrorlist-20081213-1-i686.pkg.tar.gz</code><br /><br /><br />
Da pacman nicht statisch auf Libs gelinkt ist, benötigen wir noch die statisch gelinkte.<br /><br /><br />
<code><br />
cd /tmp/archlinux<br /><br />
wget http://repo.archlinux.fr/i686/pacman-static-3.2.2-1.pkg.tar.gz<br /><br />
tar xzvf pacman-static-3.2.1-1-i686.pkg.tar.gz<br />
</code><br /><br />
<br />
===Benötigte Dateien ins Host-System kopieren===<br />
Da in der Regel die Rescue-Systeme von dedicated Root-Servern ein Netzwerkimage haben, können die Dateien von Pacman direkt nach / kopiert werden:<br /><br />
<code>tar xf /tmp/archlinux/pacman-*.pkg.tar.gz -C /</code><br /><br />
<br />
===Pacman konfigurieren===<br />
Nun müssen die Dateien /etc/pacman.conf und /etc/pacman.d/mirrorlist den Bedürfnissen angepasst werden.<br />
==Installation von Arch Linux==<br />
===Pacman aktualisieren===<br />
<code>mkdir -p /mnt/archlinux/var/lib/pacman</code><br /><br />
<code>pacman.static -Sy -r /mnt/archlinux</code><br /><br />
<code>pacman.static -S pacman -r /mnt/archlinux</code><br /><br />
===Basissystem installieren===<br />
pacman.static -S base -r /mnt/archlinux<br />
<br />
===System vorbereiten===<br />
Nun wird es richtig ernst, denn wir bereiten das System für das chroot vor. Vorher muss aber sichergestellt werden, dass die richtigen nodes in /dev für udev erstellt wurden:<br /><br />
<code><br />
ls -alF /mnt/archlinux/dev<br />
</code><br /><br />
» Das sollte dann ausgegeben werden:<br /><br />
<code><br />
crw------- 1 root root 5, 1 2008-12-27 21:40 console<br /><br />
crw-rw-rw- 1 root root 1, 3 2008-12-27 21:42 null<br /><br />
crw-rw-rw- 1 root root 1, 5 2008-12-27 21:40 zero<br /><br />
</code><br />
» Nun müssen weitere Dateisystem eingebunden werden:<br /><br />
<code><br />
mount -o bind /dev /mnt/archlinux/dev<br /><br />
mount -t proc none /mnt/archlinux/proc<br /><br />
mount -o bind /sys /mnt/archlinux/sys<br /><br />
</code><br />
» /etc/resolv.conf kopieren<br /><br />
<code>cp -r /etc/resolv.conf /mnt/archlinux/etc/resolv.conf</code><br /><br />
» /etc/pacman.d/mirrorlist kopieren<br /><br />
<code>cp -r /etc/pacman.d/mirrorlist /mnt/archlinux/etc/pacman.d/mirrorlist</code><br /><br />
» Enter the chroot<br /><br />
<code>chroot /mnt/archlinux /bin/bash</code><br /><br />
» Den Rest installieren<br /><br />
<code><br />
pacman -Sy kernel26<br /><br />
pacman -S openssh<br /><br />
pacman -S <paket><br />
</code><br /><br />
Das Paket ''openssh'' muss installiert werden, sofern keine Remote-Console an den Server gekoppelt ist.<br /><br />
<br />
===System einrichten===<br />
* /etc/rc.conf<br />
* /etc/fstab<br />
<code><br />
/dev/md0 / ext3 defaults 0 0<br /><br />
/dev/md1 /boot ext3 defaults 0 0<br /><br />
/dev/md2 swap swap defaults 0 0<br />
</code><br />
* /etc/mkinitcpio.conf<br />
* /etc/modprobe.d/modprobe.conf<br />
* /etc/resolv.conf<br />
* /etc/hosts<br />
* /etc/hosts.deny<br />
<code># ALL: ALL: DENY</code><br />
* /etc/hosts.allow<br />
<code>ALL: ALL: ALLOW</code><br />
* /etc/locale.gen<br />
Wenn alle Konfigurationsdateien bearbeitet wurden und die notwendigen Locales in /etc/locale.gen freigeschalten wurden (# vor Zeile weg), können die notwendigen Locales erstellt werden:<br /><br />
<code>locale-gen</code><br />
===Installation von Grub===<br />
» Damit Grub innerhalb des chroot installiert werden kann<br /><br />
<code>grep -v rootfs /proc/mounts > /etc/mtab</code><br />
» /boot/grub/menu.lst bearbeiten<br /><br />
» Kernelzeile muss am Ende folgendes enthalten<br /><br />
<code>md=1,/dev/sda1,/dev/sdb1 md=0,/dev/sda3,/dev/sdb3, md=2,/dev/sda2,/dev/sdb2</code><br />
» Grub installieren<br /><br />
<code><br />
grub<br /><br />
grub> find /boot/grub/stage1<br /><br />
grub> root (hd0,0)<br /><br />
grub> setup (hd0)<br /><br />
grub> quit<br />
</code><br />
===Installation fertig===<br />
Wenn alles eingerichtet und installiert ist, kann das System rebootet werden.<br /><br />
Bei Hetzner ist es nun angebracht sich eine LARA anschließen zu lassen, da ich persönlich bsp. Probleme hatte.<br /><br />
== Bekannte Probleme ==<br />
* Derzeit keine.<br />
<br />
==Fragen oder Anregungen==<br />
Ihr habt Fragen oder Anregungen oder möchtet etwas ergänzen? Keine Scheu, ich beiße keinem dem Kopf ab!<br />
==Quellen==<br />
Hauptquelle war das englische HowTo unter http://wiki.archlinux.org/index.php/Install_From_Existing_Linux<br /><br />
--[[Benutzer:Igprolin|Igprolin]] 15:28, 1. Jan. 2009 (CET)<br />
[[Kategorie:Installation]]</div>PSubhttps://wiki.archlinux.de/index.php?title=WLAN&diff=10719WLAN2010-09-06T21:16:01Z<p>PSub: /* Netzwerk-Profile */ Wegen https://bbs.archlinux.de/viewtopic.php?id=17347</p>
<hr />
<div>== (W)LAN und Arch Linux ==<br />
Methoden der Authentifizierung - welches Tool für was?<br />
<br />
Dieser Artikel beschreibt Möglichkeiten, sich teils automatisiert zu auswählbaren Netzwerken zu verbinden und diese dann zu nutzen. Hauptaugenmerk liegt dabei auf kabellosen WLAN-Verbindungen, aber etliche Konzepte/Tools lassen sich auch für kabelgebundene Verbindungen nutzen, teils gleichzeitig oder im Wechsel.<br />
<br />
=== Überblick ===<br />
Es wird in diesem Artikel davon ausgegangen, dass die Wireless-Netzkarte schon erkannt ist, das Modul(Treiber) für die Karte also geladen ist. Nützliche Befehle um das zu erkennen sind (als root ausführen):<br />
<br />
ifconfig -a<br />
<br />
zeigt alle Netzwerkgeräte<br />
<br />
iwconfig<br />
<br />
zeigt auch alle Netzwerkgeräte, prüft aber darauf, welches mit den kabellosen Erweiterungen (wireless extensions) umgehen kann, also wlan-fähig ist.<br />
<br />
Wichtig zu wissen ist, welchen Namen die WLAN-Karte hat. Gebräuchlich sind z.B. wlan0, eth1, ath0 (üblich bei Atheros Chips), ra0 (üblich bei RaLink Chips).<br />
Die Nummern hinter den Textbezeichnern können varieren.<br />
Ich gehe in diesem Artikel von meiner WLAN-Cardbus-Karte aus, welche den Device-Namen ath0 hat. Ihr müsst das an euren Kartenbezeichner anpassen.<br />
<br />
iwlist ath0 scan<br />
<br />
Scannt die momentan erreichbaren WLAN-Netze bzw. AccessPoints.<br />
<br />
Was wir jetzt wollen ist, uns kabellos mit einer Gegenstelle zu verbinden und über diese Verbindung den Netzwerkverkehr (hier TCP/IP) zu transportieren. Wichtig dabei: Es handelt sich um zwei separate Vorgänge.<br />
<br />
Die Verbindung zu einer Gegenstelle herzustellen ist vergleichbar bei einer kabelgebundenen Verbindung mit dem Einstecken des Kabels in einen Hub/Switch. Ohne diese physikalische Teilnahme am LAN kann auf der logischen (Software)-Ebene kein Netzwerkprotokoll transportiert werden (hier TCP/IP, z.B. eine IP-Adresse beziehen).<br />
<br />
Um nun kabellos diese "physikalische" Verbindung (den "Link") aufzubauen gibt es eigene Befehle und Konzepte, die sich aber je nach Art dieser Verbindung unterscheiden.Das Medium Funkübertragung bringt es mit sich, dass wir nicht bestimmen können - im Gegensatz zur kabelgebundenen Verbindung - wer ausschließlich unsere Daten bekommt bzw. von wem wir diese erhalten. Ähnlich wie Radio werden Signale in den Äther verschickt und jeder mit einem geeigneten Empfänger kann diese Daten nutzen.In der Regel bestimmt unsere Gegenstelle (meist ein AccessPoint), wie wir die Verbindung dahin aufbauen können. Meist gebraucht dabei sind:<br />
<br />
'''Open (Offen)'''<br />
<br />
Die Gegenstelle verlangt keinerlei Authentifizierung (Passwort o.ä.), die Übertragung der Daten geschieht unverschlüsselt.<br />
<br />
'''WEP'''<br />
<br />
Die Gegenstelle verlangt ein Passwort und die Daten werden verschlüsselt übertragen. Diese Art der Übertragung ist mittlerweile als sehr unsicher einzustufen, da durch Mithören der Funkdaten sehr einfach der Schlüssel (das Passwort) errechenbar ist.<br />
<br />
'''WPA/PSK'''<br />
<br />
Die Gegenstelle verlangt ein Passwort und die Daten werden verschlüsselt übertragen. Diese Art der Verschlüsselung macht es "Mithörern" wesentlich schwerer bis nahezu unmöglich, anhand der mitgehörten Daten den Schlüssel zu errechnen. Es ist die im Privatbereich bevorzugte Methode der Funkdaten-Verschlüsselung.<br />
<br />
Welches Wlan-Konzept bei ArchLinux eignet sich für welche Übertragung:<br />
{| class="prettytable"<br />
| <center>'''Methode'''</center><br />
| <center>'''Open'''</center><br />
| <center>'''WEP'''</center><br />
| <center>'''WPA'''</center><br />
<br />
|-<br />
| rc.conf<br />
| <center>X</center><br />
| <center>X</center><br />
| <center>-</center><br />
<br />
|-<br />
| Netzwerk-Profile<br />
| <center>X</center><br />
| <center>X</center><br />
| <center>X</center><br />
<br />
|-<br />
| wpa_supplicant<br />
| <center>X</center><br />
| <center>X</center><br />
| <center>X</center><br />
<br />
|-<br />
| Networkmanager<br />
| <center>X</center><br />
| <center>X</center><br />
| <center>X</center><br />
<br />
|}<br />
<br />
Weiterhin ist wichtig bei der Suche nach der geeigneten Methode zu wissen: Befinde ich mich immer/meist an einer Stelle (Zuhause oder Zuhause/Büro) oder bin ich oft/meist mobil in unterschiedlichen Netzen unterwegs ("road warrior"). Verbinde ich mich also meist zu festen, bekannten Netzwerken oder bewege ich mich oft in "unbekanntem" Gebiet (Hot-Spots, Service). Für die nachfolgend vorgestellten Konzepte ist es dabei auch meist unerheblich, ob die Verbindung kabelgebunden (Ethernet) oder kabellos (WLan) geschieht. Oder beides. Sowohl Ethernet als auch WLan können von dem einen oder anderen Konzept profitieren.<br />
<br />
Legende:<br />
<br />
''Fest'' = immer die gleiche Verbindung zu EINER Gegenstelle<br><br />
''Mehrere'' = verschiedene Verbindungen wählbar, diese sind aber vordefiniert.<br><br />
''Mobil'' = verschiedene Verbindungen, die auch zeitnah erstellt werden können.<br><br />
<nowiki>* = es gibt Einschränkungen</nowiki><br />
<br />
{| class="prettytable"<br />
| <center>'''Methode'''</center><br />
| <center>'''Fest'''</center><br />
| <center>'''Mehrere'''</center><br />
| <center>'''Mobil'''</center><br />
<br />
|-<br />
| rc.conf<br />
| <center>X</center><br />
| <center>-</center><br />
| <center>-</center><br />
<br />
|-<br />
| Netzwerk-Profile<br />
| <center>X</center><br />
| <center>X</center><br />
| <center>-*¹</center><br />
<br />
|-<br />
| wpa_supplicant<br />
| <center>X</center><br />
| <center>X</center><br />
| <center>X*²</center><br />
<br />
|-<br />
| Networkmanager<br />
| <center>X</center><br />
| <center>X</center><br />
| <center>X</center><br />
<br />
|}<br />
<nowiki>*¹ = bezieht sich auf das händische Editieren einer Konfig-Datei</nowiki><br><br />
<nowiki>*² = bezieht sich auf das Tool ====>"wpa_gui"</nowiki><br />
<br />
Ein weiteres Kriterium für die bevorzugte Methode ist, ob das System selbständig prüfen soll, ob sich eine Netzwerkverbindung geändert hat und ggf. daraufhin bestimmte Aktionen auslösen soll. Oder ob diese Aufgabe der jeweilige Benutzer entscheiden will/muss.<br />
<br />
Das kann z.B. der Wechsel von kabelgebundener Verbindung (Ethernet) zu WLan sein (Notebook aus der Docking-Station genommen). Oder ob per WLan automatisch eine Verbindung aufgebaut wird sobald eine bekannte Funkzelle gefunden wird.<br />
<br />
Legende:<br />
<br />
<nowiki>* = es gibt Einschränkungen</nowiki><br />
<br />
{| class="prettytable"<br />
| <center>'''Methode'''</center><br />
| <center>'''Benutzer'''</center><br />
| <center>'''Automatisch'''</center><br />
<br />
|-<br />
| rc.conf<br />
| <center>X</center><br />
| <center>-*</center><br />
<br />
|-<br />
| Netzwerk-Profile<br />
| <center>X</center><br />
| <center>-*</center><br />
<br />
|-<br />
| wpa_supplicant<br />
| <center>X</center><br />
| <center>-*</center><br />
<br />
|-<br />
| Networkmanager<br />
| <center>X</center><br />
| <center>X</center><br />
<br />
|}<br />
<nowiki>* = bezieht sich auf die Nutzung des Tools ====>"ifplugd"</nowiki><br />
<br />
Ein weiteres Kriterium kann sein, ob direkt nach dem Booten eine WLan-Verbindung bestehen soll um z.B. NFS/Samba-Freigaben zu mounten oder Dienste anzubieten ohne dass ein User angemeldet ist.<br />
<br />
Legende:<br><br />
<nowiki>* = es gibt Einschränkungen</nowiki><br />
<br />
{| class="prettytable"<br />
| <center>'''Methode'''</center><br />
| <center>'''Ja'''</center><br />
| <center>'''Nein'''</center><br />
<br />
|-<br />
| rc.conf<br />
| <center>X</center><br />
| <br />
<br />
|-<br />
| Netzwerk-Profile<br />
| <center>X</center><br />
| <br />
<br />
|-<br />
| wpa_supplicant<br />
| <center>X</center><br />
| <br />
<br />
|-<br />
| Networkmanager<br />
| <br />
| <center>X*</center><br />
<br />
|}<br />
<nowiki>* = eine kabelgebundene Ethernet-Verbindung ist nach dem Booten möglich, aber WLan-Verbindungen erfordern dass ein User angemeldet ist und ein Windowmanager läuft, da die Authentifizierungs-Daten aus dem Gnome-Keyring oder bei KDE über den kwallet-Schlüsselring benötigt werden.</nowiki><br />
<br />
== Konzepte ==<br />
=== rc.conf (Arch Linux WLan Einstellungen) ===<br />
Diese Methode ist am geeignetsten, um sich immer zu einer vorgegebenen Gegenstelle zu verbinden, wobei diese Verbindung unverschlüsselt oder allerhöchstens durch WEP abgesichert ist.<br />
<br />
Dazu wird das Netzdevice in der Datei ''/etc/rc.conf'' bekannt gemacht.<br />
<br />
(Hier anhand meines Devices ''ath0'')<br />
<br />
Für eine dynamische IP-Vergabe, DHCP-Server im Netz:<br />
<br />
<tt>ath0="dhcp"</tt><br />
<br />
Für eine statische IP:<br />
<br />
<tt>ath0="ath0 192.168.1.100 ... "</tt><br />
<br />
Im Netzwerk-Bootscript bei Arch Linux gibt es einen Teil, der kabellose Netzwerkkarten besonders behandelt (den "Link" aufbaut). Das kabellose Device wird dabei genauso eingerichtet wie eine normale Ethernet-Karte. Über Zusatzeinstellungen in einer Extra-Datei ''/etc/conf.d/wireless'' wird dieses Device als WLan-Device eingerichtet.<br />
<br />
Um sich also zum eigenen AccessPoint mit der Kennung(ESSID) "MyHome" zu verbinden und nach erfolgreicher Verbindung darüber eine IP dynamisch zugewiesen zu bekommen:<br />
<pre><br />
#/etc/rc.conf<br />
ath0="dhcp"<br />
<br />
INTERFACES=(lo eth0 '''ath0''')<br />
<br />
#/etc/conf.d/wireless<br />
wlan_ath0="ath0 essid MyHome"<br />
# Für eine WEP-Verbindung mit Passwort:<br />
wlan_ath0="ath0 essid Myhome key 12345678"<br />
# bzw. der Schlüssel als Klartext:<br />
wlan_ath0="ath0 essid Myhome key s:klartextpasswort"<br />
</pre><br />
<br />
Testen und per Hand diese Verbindung aufbauen:<br />
/etc/rc.d/network ifdown ath0<br />
<br />
/etc/rc.d/network ifup ath0<br />
<br />
Wenn alles funktioniert hat, dann sollte jetzt:<br />
<br />
ifconfig ath0<br />
<br />
die WLan-Karte als UP mit der zugewiesenen Ip-Adresse zeigen<br />
<br />
route -n<br />
<br />
sollte ein Default-Gateway (UG) mit der Destinantion 0.0.0.0 zeigen.<br />
<br />
cat /etc/resolv.conf<br />
<br />
sollte uns einen oder mehrere Nameserver zeigen.<br />
<br />
ping www.google.de<br />
<br />
sollte mit Antwortpaketen beantwortet werden.<br />
<br />
<br />
Wenn es Probleme gibt:<br />
<br />
Logdatei /var/log/everything.log auswerten<br />
<br />
Siehe auch Wiki-Artikel [[Netzwerkprobleme]]<br />
<br />
=== Netzwerk-Profile ===<br />
<br />
{{Unvollständig}}<br />
'''ACHTUNG: dieser Teil ist nur noch vom Prinzip her gültig!'''<br><br />
'''netcfg ist durch netcfg2 abgelöst, Hinweise dazu siehe bitte: ''' [http://wiki.archlinux.org/index.php/Netcfg netcfg]<br />
<br />
Diese Methode erlaubt während des Bootvorgangs oder nachträglich das Wählen zwischen unterschiedlichen Netzwerkverbindungen (egal ob Ethernet oder Wlan). Hierbei kann für Wlan auch eine WPA-verschlüsselte Verbindung eingerichtet werde.<br />
<br />
Für WPA wird gebraucht:<br />
<br />
pacman -S wpa_supplicant<br />
<br />
Die verschiedenen Profile liegen in ''/etc/network-profiles''. Anfangs befindet sich nur eine Vorlage darin, die Datei ''template''.<br />
<br />
Anhand dieser Datei können jetzt unterschiedliche Profile erstellt werden. Profile können z.B. sein: ein Profil für Ethernet zuhause mit statischer IP-Adresse, eines für Ethernet mit DHCP für unterwegs, eines für die WLAN-Verbindung (verschlüsselt WPA), usw.<br />
<br />
Ich stelle hier zwei Profile vor, um das Prinzip deutlich zu machen. Kommentare zu den einzelnen Parametern finden sich in der ''template'' Datei.<br />
<br />
* Profil für Ethernet mit statischer IP-Adresse<br />
* WPA-verschlüsselte kabellose Verbindung<br />
<br />
<pre><br />
#/etc/network-profiles/home-lan<br />
<br />
# Profil: LAN-Zuhause mit statischer IP<br />
#<br />
DESCRIPTION="Home LAN "<br />
<br />
# Network Settings<br />
INTERFACE=eth0<br />
HOSTNAME=myhost<br />
<br />
# Interface Settings (use IFOPTS="dhcp" for DHCP)<br />
IFOPTS="192.168.1.10 netmask 255.255.255.0 broadcast 192.168.1.255"<br />
<br />
GATEWAY=192.168.1.1<br />
<br />
# DNS Settings (optional)<br />
DOMAIN=local.lan<br />
DNS1=192.168.1.1<br />
DNS2=<br />
</pre><br />
<br />
<pre><br />
#/etc/network-profiles/uni-wlan<br />
<br />
# Profil: Uni-Zugang mit WPA-Verschluesselung, IP ueber DHCP<br />
#<br />
DESCRIPTION="Uni WLAN"<br />
<br />
# Network Settings<br />
INTERFACE=ath0<br />
HOSTNAME=myhost<br />
<br />
# Interface Settings (use IFOPTS="dhcp" for DHCP)<br />
IFOPTS="dhcp"<br />
<br />
# DNS Settings (optional)<br />
#DOMAIN=localdomain<br />
#DNS1=192.168.0.1<br />
#DNS2=<br />
<br />
# Wireless Settings (optional)<br />
ESSID=UniESSID<br />
<br />
#KEY=<br />
#IWOPTS="mode managed essid $ESSID channel 11 key s:$KEY"<br />
<br />
WIFI_INTERFACE=ath0<br />
<br />
#WIFI_WAIT=5 # seconds to wait for the wireless card to<br />
# associate before bringing the interface up<br />
<br />
USEWPA="yes" # start wpa_supplicant with the profile<br />
WPAOPTS="-D wext" # use "" for normal operation or specify additional<br />
# options (eg, "-D ipw")<br />
# see /etc/wpa_supplicant.conf for configuration<br />
<br />
#AUTOWPA="yes" # automatically configure WPA<br />
<br />
#PASSKEY="" # wpa passkey/phrase. for use with AUTOWPA<br />
</pre><br />
<br />
Bei diesem letzten Beispiel kommt nun erstmals das Tool ''wpa_supplicant'' mit ins Spiel, welches die Authentifizierung und Verschlüsselung mit WPA/PSK ermöglicht.<br />
<br />
Durch den Parameter USEWPA=“yes“ ermöglichen wir das. Dieses Profil nutzt nun den Parameter ESSID um in der wpa_supplicant Konfigdatei ''/etc/wpa_supplicant.conf'' einen zu dieser ESSID passenden Eintrag zu finden.<br />
<br />
Zur Konfiguration von wpa_supplicant siehe den entsprechenden Abschnitt in diesem Artikel.<br />
<br />
Hinweis: die Parameter KEY= und IWOPTS= in den Profil-Dateien dienen bei einer Wlan-Verbindung den Angaben für offenes oder mit WEP-verschlüsselter Authentifizierung.<br />
<br />
Wie können wir jetzt mit diesen Profilen arbeiten?<br />
<br />
Voraussetzung dafür sind erstmal entsprechende Einträge in der ''/etc/rc.conf''. Hinweis: da wir die Netzwerk-Verbindungen komplett durch die Profiles regeln wollen/können brauchen wir in der rc.conf keinen Einträge für Ethernet- oder WLAN-Devices. Bis auf loopback Device (lo) können wir alles auskommentieren bzw. löschen.<br />
<br />
<pre><br />
#/etc/rc.conf<br />
<br />
lo="lo 127.0.0.1"<br />
INTERFACES=(lo)<br />
#<br />
NET_PROFILES=(menu)<br />
</pre><br />
<br />
Durch den Parameter NET_PROFILES wird die Profilwahl gesteuert. Wir haben hier folgende Optionen:<br />
<br />
* menu = bietet beim Bootvorgang ein Auswahl-Menü an. Dieses Menü wartet ca. 5 Sekunden auf eine Auswahl oder bootet danach das Profil, dessen Dateiname lexikalisch an erster Stelle kommt.<br />
Hinweis: Das automatische Menu-ANGEBOT FUNKTIONIERT NICHT, wenn "network" als Daemon in der rc.conf mit einem vorangestellten "@" während des Bootvorgangs in den Hintergrund verbannt wurde!<br />
* ''profildatei_name'' = Durch Angabe eines Profilnamens (z.B. obiges home-lan)<br />
<br />
Eine weitere Möglichkeit ist, in der ''rc.conf'' den Parameter NET_PROFILES wegzulassen und das gewünschte Profil als Bootparameter anzugeben bzw. in den Bootmanager einzutragen. Dieser Parameter heißt NET=''profildatei_name''<br />
<br />
Wir können auch nach dem Booten erstmal ganz ohne Netzwerk booten (also kein NET_PROFILES in der rc.conf und kein Bootparameter NET=), und dann später das gewünschte Profil per Hand aktivieren.<br />
<br />
Dieses nachträgliche Aktivieren oder auch das spätere Wechseln der Profile außerhalb des Bootvorgangs geschieht durch das Tool ''netcfg''. <br />
<br />
<pre><br />
netcfg --menu<br />
# ruft das Menü auf<br />
<br />
netcfg profil_name<br />
# startet das Profil profil_name<br />
<br />
netcfg --stopall<br />
# stoppt alle Netzwerkverbindungen<br />
<br />
# netcfg -h gibt noch weitere Optionen<br />
</pre><br />
<br />
Hinweis: bei Verwendung der Netzwerk-Profile kann immer nur ein Device aktiv sein, da jedes Profil genau ein Device regelt. Wenn analog unseren Beispielen oben Home-Lan aktiv ist und zu Uni-Wlan gewechselt wird, dann wird die Verbindung der aktiven Profiles beendet und das Device deaktiviert.<br />
<br />
=== wpa_supplicant ===<br />
wpa_supplicant ist zum einen eine Umgebung um verschlüsselte Wlan-Verbindungen zu ermöglichen, zum anderen ein Tool um diese Anmeldung auch durchführen zu können.<br />
<br />
wpa_supplicant kommt mit den gebräuchlichsten Authentifizierungs-Standards zurecht.<br />
<br />
wpa_supplicant wird installiert mit:<br />
<br />
pacman -Sy wpa_supplicant<br />
<br />
Die sehr ausführlich kommentierte Konfigurations-Datei liegt in /etc/wpa_supplicant.conf.<br />
<br />
Davon sollte man sich erstmal eine Sicherung machen um dann seine eigenen Netzwerke einzutragen.<br />
<br />
cp /etc/wpa_supplicant.conf /etc/wpa_supplicant.conf.org<br />
<br />
Unterhalb von „#example block“ sind jetzt Beispiel-Netze aufgeführt. Diese kann man als Grundlage für seine eigene Umgebung verwenden, sollte dann diese Beispiele aber löschen.<br />
<br />
Hier soll ein Beispiel gezeigt werden für ein WLAN-Netz, welches mit WPA-PSK verschlüsselt ist.<br />
<br />
Den Netzwerk-Namen „UniESSID“ und das Passwort anpassen.<br />
<br />
<pre><br />
network={<br />
ssid="UniESSID"<br />
key_mgmt=WPA-PSK<br />
proto=WPA<br />
pairwise=TKIP<br />
group=TKIP<br />
psk="klartext-passwort"<br />
}<br />
</pre><br />
<br />
Für jedes verschlüsselte WLAN, mit dem man sich verbinden will, muss nun solch ein network Block in dieser Konfigdatei existieren. Man kann diese (als root) schnell mit einem Editor (copy&paste) einfügen bzw. ändern. Es gibt aber auch eine grafische Oberfläche. Dazu später mehr.<br />
<br />
<br />
'''Starten als Daemon und Bedienung'''<br />
<br />
Momentan starten wir alle Tools testweise per Hand im Vordergrund um uns vertraut zu machen. Wir brauchen zwei Textkonsolen, in denen wir beidemal root sind. Ich gehe hier wieder von meinem WLAN-Device ath0 aus.<br />
<br />
wpa_supplicant:<br />
<br />
ifconfig ath0 up<br />
<br />
wpa_supplicant -iath0 -c/etc/wpa_supplicant.conf -d<br />
<br />
Das startet wpa_supplicant im Vordergrund im Debug-Modus (-d)<br />
<br />
In der zweiten Konsole bedienen wir jetzt den Daemon:<br />
<br />
wpa_cli<br />
<br />
gibt uns eine Bedienungsumgebung, in der wir Netze suchen, verbinden, trennen und auch neue Netze in die Konfig-Datei eintragen können. Die Bedienung ist typisch spartanisch, aber es funktioniert. Bei den meisten Befehlen müssen nur die ersten Buchstaben eingegeben werden, wenn es mehrere Alternativen gibt bekommen wir das mitgeteilt.<br />
<br />
help – zeigt uns alle möglichen Befehle<br />
scan – scannt nach verfügbaren Netzwerken<br />
scan_result – zeigt uns das Ergebniss des Scans (scan_r geht auch)<br />
list – zeigt uns unsere definierten Netzwerke aus der wpa_supplicant.conf<br />
select <nr> - wählt und aktiviert das bei list gezeigte Netzwerk mit der Nummer <nr>, select <ESSID> geht auch<br />
disconnect – trennt die Verbindung<br />
reassociate – nimmt die momentan gewählte Verbindung wieder auf.<br />
reconfigure – liest die Konfigdatei /etc/wpa_supplicant.conf neu ein.<br />
quit – beendet das wpa_cli Tool.<br />
<br />
Neben dem Interface lasssen sich die wpa_cli Kommandos auch direkt aufrufen, z.B.<br />
<br />
wpa_cli select 0<br />
<br />
Wenn mit obigen Kommandos die verschlüsselte Verbindung nun erfolgreich war (wpa_cli meldet uns das mit: CTRL-EVENT-CONNECTED, das Status-Fenster des Daemons mit: WPA: Key negotiation completed with), dann ist das erst die halbe Miete.<br />
<br />
Wie einleitend angeführt sind WLAN-Authentifizierung/Verbindung und TCP/IP zwei verschiedene Paar Schuhe. Um jetzt z.B. über einen WLAN-Router ins Internet zu kommen muss unser WLAN-Device noch eine IP bekommen und Routen und Nameserver angegeben werden.<br />
<br />
Wenn der Router DHCP anbietet reduziert sich dieser Aufwand auf ein simples:<br />
<br />
dhcpcd ath0<br />
<br />
Um die Nutzung von wpa_supplicant zu automatisieren bietet sich an:<br />
<br />
#/etc/rc.local<br />
<br />
wpa_supplicant -iath0 -c/etc/wpa_supplicant.conf -Dwext -B<br />
<br />
Nach dem Boot wird wpa_supplicant als Daemon (-B) automatisch gestartet und versucht sich automatisch mit dem am besten erreichbarem WLAN zu authentifizieren, welches entweder „offen“ ist oder in der Konfigdatei definiert ist.<br />
<br />
<br />
'''Die GUI zu wpa_supplicant'''<br />
<br />
Mit:<br />
<br />
pacman -S wpa_supplicant_gui<br />
<br />
installieren wir das Tool.<br />
<br />
Gestartet wird es mit:<br />
wpa_gui<br />
<br />
Um wpa_gui auch als Nicht-Root benutzen zu können:<br />
<br />
* start mittels kdesu/gksu und Eingabe des Root-Passworts<br />
* Über sudo und freischalten dieses Programms in /etc/sudoers<br />
<br />
Mit dieser GUI kann sich komfortabel zu jedem beliebigen WLAN verbunden werden, Netze und Einstellungen hinzugefügt, bearbeitet werden u.v.m.<br />
<br />
Lediglich die TCP/IP Netzwerkeinstellungen müssen ggf. von Hand jeweils angepasst werden.<br />
<br />
(NB: hier muss sicher noch einiges ausführlicher/besser dargestellt werden.)<br />
<br />
=== Networkmanager ===<br />
Die Installation und Konfiguration von NetworkManager wird [[Networkmanager|hier]] beschrieben.<br />
<br />
Networkmanager ist ein sehr interessantes Konzept. Es kümmert sich um die komplette Netzanbindung des Rechners (v.a. interessant für Laptops in wechselnden Umgebungen).<br />
* Es wird versucht, '''immer''' eine Netzverbindung aufrechtzuhalten bzw. aufzubauen.<br />
* Die Reihenfolge dabei ist:<br />
** Kabelgebundene Verbindung (Ethernet) vor WLan wegen der Geschwindigkeit.<br />
** Bei WLan wird nach bekannten Netzen gesucht und damit verbunden, ansonsten wird versucht sich mit offenen Netzen zu verbinden.<br />
** Wenn momentan keine WLan-Verbindung aufgebaut werden kann, wird permanent nach neuen Netzen gescannt.<br />
<br />
Der größte Nachteil von Networkmanager ist, dass nach/während des Bootvorgangs maximal eine kabelgebundene Ethernet-Verbindung (mit DHCP) zur Verfügung steht. Eine andere Verbindung (v.a. verschlüsseltes WLan) steht erst nach Einloggen eines Users und dem Starten eines der FrontEnds(knetworkmanager, gnome-network-manager) zur Verfügung, da Verbindungsdaten (Essid, Passwörter) per User geladen werden.<br><br />
Wer also Networkmanager z.B. mit WLan nutzen möchte kann z.Zt. keine Netzwerk-Shares (nfs, samba) in der /etc/fstab beim Booten einbinden. Nach dem Start des Frontends durch den User ist das aber durch den Dispatcher (siehe weiter unten) sehr wohl möglich.<br />
<br />
'''Nützliches rund um den Networkmanager'''<br />
<br />
Mit ''nm-tool'' kann man sich den Status der momentanen Verbindung und der vom Networkmanager verwalteten Devices anschauen.<br />
<br />
Das Start/Stop-Skript in /etc/rc.d bietet die Optionen alle Verbindungen zeitweilig zu stoppen und wieder aufzunehmen.<br />
* /etc/rc.d/networkmanager sleep trennt alle aktiven Verbindungen (die Devices werden auf Down gesetzt)<br />
* /etc/rc.d/networkmanager wake nimmt die Verbindung wieder auf bzw. initiert das Suchen nach einer Verbindung neu.<br />
Das kann man sich z.B. zu Nutze machen, wenn man nach dem Booten/Einloggen erstmal '''kein''' Netzwerk haben, sondern es später zuschalten möchte. Dazu kann man folgendes konfigurieren:<br />
#/etc/rc.local<br />
<br />
/etc/rc.d/networkmanager sleep<br />
Zum Aktivieren des Networkmanagers kann dann o.a. Startskript-Befehl mit wake genutzt werden. Oder im grafischen Frontend die Option "In Online-Modus wechseln".<br />
<br />
Ein wenig bekannter Zusatz ist der '''Networkmanager-Dispatcher'''. Durch Start dieses Daemons kann der Networkmanager Vorgänge auslösen, je nachdem ob ein Device (eth0, ath0, wlan0) UP oder DOWN gemeldet wird. Also z.B. auf das An-/Ab-Stöpseln des Ethernet-Kabels reagieren oder ob eine WLan-Verbindung aufgebaut wurde.<br />
<br />
Damit ist es z.B. möglich, nach dem Start NFS-Freigaben einzumounten - auch bei WLan-Verbindungen.<br />
<br />
Aktiviert wird der Dispatcher so:<br />
#/etc/rc.conf<br />
<br />
DAEMONS=(... dhcdbd networkmanager '''networkmanager-dispatcher''' ...)<br />
Skripte die, je nachdem ob ein Device UP oder DOWN ist, abgearbeitet werden, liegen in<br />
/etc/NetworkManager/dispatcher.d<br />
Nach der Installation liegen dort bereits zwei Skripte:<br />
* netfs<br />
* ntpdate<br />
Das Erste kümmert sich um die Einbindung aller Arten von Netzwerk-Mounts, die in der Datei /etc/fstab definiert sind. Es startet/stoppt dazu den ArchLinux-Mechanismus um die fstab-Datei gezielt nach Netzwerk-Mounts zu durchsuchen.<br><br />
Das zweite Skript würde die Uhrzeit anhand eines NTP(Zeit)-Servers angleichen, sofern das Paket ntp installiert ist.<br />
<br />
Eigene Skripte könnten z.B. so aufgebaut sein:<br />
<pre><br />
#/etc/NetworkManager/dispatcher.d/1-test<br />
<br />
#!/bin/sh<br />
#<br />
arping -c 3 192.168.1.2 | grep 00:12:8B:38:A0:74 > /dev/null<br />
AT_HOME_LAN=$?<br />
nm-tool | grep UniEssid > /dev/null<br />
AT_HOME_WLAN=$?<br />
<br />
case "$2" in<br />
up)<br />
if [ $AT_HOME_LAN == 0 ]; then<br />
echo "Home LAN verfügbar" >> /tmp/t.log<br />
else<br />
echo "Home LAN nicht verfügbar" >> /tmp/t.log<br />
fi<br />
if [ $AT_HOME_WLAN == 0 ]; then<br />
echo "Home WLAN verfügbar" >> /tmp/t.log<br />
else<br />
echo "Home WLAN nicht verfügbar" >> /tmp/t.log<br />
fi<br />
;;<br />
down)<br />
;;<br />
esac<br />
</pre><br />
Dazu sollte installiert sein:<br />
pacman -S arping<br />
Als IP-Adresse setzt man die ein, welche zu dem Rechner gehört auf dessen Verfügbarkeit man prüfen möchte. Damit jetzt nicht ein beliebiger Rechner mit dieser IP-Adresse irrtümlich für den Rechner zuhause gehalten wird, prüft man auch auf die MAC-Adresse. Das ist diese zwölfstellige Hexadezimal-Zahl, die durch Dopelpunkte getrennt wird.<br><br />
Die MAC-Adresse eines Rechners kann man z.B. so rauskriegen:<br />
ping -c 5 <ip_addr_des_testrechners><br />
arp -n<br />
Die Ausgabe des Arp-Caches zeigt uns nun auch die MAC/HW-Adresse, die wir zum Identifizieren "unseres" Rechners nehmen können.<br />
<br />
Ob "unser" WLAN verfügbar ist können wir leicht testen, indem wir nach der Essid in der Ausgabe von nm-tool suchen. Das Beispiel UniEssid durch die eigene ersetzen, bei Verwendung von Leerstellen in der Essid mit Anführungsstriche (") umhüllen.<br />
<br />
Das Skript macht jetzt nicht mehr als beim Zustandekommen einer Verbindung zu prüfen, ob LAN und WLAN "zuhause" sind und schreibt dieses Ergebniss in ein Logfile /tmp/t.log.<br><br />
Mit ein bisschen Shellprogrammierung-Kenntnisse kann das aber sehr leicht an eigene Bedürfnisse angepasst werden. Noch ein Hinweis: Networkmanager übergibt im Parameter $1 den Interface-Namen (z.B. eth0), im zweiten den Zustand (up, down). Damit ließe sich gezielt Aktionen basierend auf der Art der Netzwerkverbindung und dem Zustand erstellen.<br />
<br />
=== Wicd ===<br />
Wicd ist ein von Desktops unabhängiger Networkmanager. Man installiert ihn mit:<br />
<br />
pacman -Sy wicd<br />
<br />
Ist dies getan trägt man den Wicd-Daemon in die <code>rc.conf</code> ein:<br />
<br />
DAEMONS=(... wicd ...)<br />
<br />
Nach einem Neustart des Systems oder manuellen Starten des Daemons gibt es nun zwei Möglichkeiten seine Netzwerke zu verwalten:<br />
<br />
wicd-curses<br />
<br />
oder<br />
<br />
wicd-client<br />
<br />
Startet man den Wicd-Client wird ein Icon ins Tray eingefügt und man erhält eine hübsche GTK-Oberfläche.<br />
Die Curses-basierte Oberfläche startet man im Terminal.<br />
<br />
Die Bedienung läuft dann gleich ab: Es gibt ein Hauptfenster in dem die WLAN- und die Kabelverbindungen angezeigt werden. Über die Einträge der WLAN-APs kann man die Verbindung zu diesem konfigurieren (Statische DNS, Passwort etc.). Kabelnetzwerke werden standardmäßig angezeigt, wenn eines verfügbar ist. Mit Refresh wird nach neuen APs gesucht. Unter Preferences kann man seine Interfaces konfigueren, die zu verwenden Treiber einstellen usw.<br />
<br />
Eine Besonderheit ist die Verbindung zu versteckten APs dar: In der GTK-Oberfläche klickt man auf Netzwerk und dann auf Find Hidden-Network, in der Curses-Oberfläche muss man Shift-I tippen um zu dieser Funktion zu gelangen.<br />
<br />
=== Sonstige hilfreiche Tools ===<br />
In Arbeit<br />
<br />
* ifplugd<br />
* wlassistant<br />
* wifi-radar<br />
<br />
<br />
<br />
<br />
[[Kategorie:Unvollständig]]<br />
[[en:Wireless Setup]]</div>PSubhttps://wiki.archlinux.de/index.php?title=Grub-gfx&diff=10718Grub-gfx2010-09-06T21:15:08Z<p>PSub: /* Installation */ Wegen https://bbs.archlinux.de/viewtopic.php?id=17347</p>
<hr />
<div>Dieser Artikel beschreibt wie man seinen [[GRUB]] aufpeppen kann, so wie man es evtl. schon von einigen anderen Distributionen kennt z.B. Gentoo und Debian.<br />
<br />
[[Bild:Arch_Linux_Grub_Theme.png|thumb|200px|Arch Linux GRUB-Theme]]<br />
<br />
==Installation==<br />
Das entsprechende Paket ist im „community“-Repostitory vorhanden und kann aus diesem mittels [[Pacman]] installiert werden<br />
<br />
pacman -S grub-gfx<br />
<br />
Nach der installation des Paketes muss der Bootloader mittels <code>grub-install /dev/sdX</code> installiert werden, wobei <code>SDX</code> für die Festplatte steht, von der gebootet werden soll.<br />
<br />
==Konfiguration==<br />
GRUB-GFX erstellt bei der Installation eine komplett neue <code>menu.lst</code>. Entweder passt man diese auf seine Bedürfnisse an oder der etwas elegantere Weg, man kopiert das Backup zurück und passt nur eine Zeile an.<br />
<br />
Das Backup wieder einspielen:<br />
<br />
# cp /boot/grub/menu.lst.pacsave /boot/grub/menu.lst<br />
<br />
Die entsprechende Zeile in der <code>menu.lst</code> hinzufügen,<br />
Änderungen '''ohne /boot Partition''':<br />
<br />
[…]<br />
timeout 30<br />
default 0<br />
'''splashimage /boot/grub/splash.xpm.gz'''<br />
color light-blue/black light-cyan/blue<br />
[…]<br />
<br />
Änderungen '''mit /boot Partition''':[[Bild:Arch.gif|thumb|200px|GRUB-GFX Archlinux]]<br />
<br />
[…]<br />
timeout 30<br />
default 0<br />
'''splashimage /grub/splash.xpm.gz'''<br />
color light-blue/black light-cyan/blue<br />
[…]<br />
<br />
Nach einem Neustart des PC zeigt GRUB nun ein Hintergrundbild an.<br />
<br />
<br />
==Eigene Themes erstellen==<br />
GRUB-GFX benutzt gzip komprimierte xpm-Bilder in der Größe '''640x480''' Pixel mit maximal '''14 Farben'''.<br />
<br />
===Mit GIMP erstellen===<br />
Als Vorlagen 640x480 auswählen, ansonsten die Größe selbst eintragen.<br />
<br />
Sobald das Bild fertig ist muss man es noch auf 14 Farben bringen. Dazu klickt man mit rechts auf das Bild, „Bild → Modus → Indiziert“<br />
<br />
In diesem Menü lässt man die Voreinstellung für <code>Optimale Palette erzeugen</code> aktiv, man muss nur die 256 durch 14 ersetzen und anschließend auf <code>Umwandeln</code> klicken.<br />
<br />
Danach das Bild als xpm-Datei Abspeichern.<br />
<br />
Die DATEINAME.xpm jetzt noch als gzip packen. In die Konsole wechseln und in das entsprechende Verzeichnis, wo DATEINAME.xpm liegt.<br />
<br />
# gzip DATEINAME.xpm<br />
<br />
Neue Datei <code>DATEINAME.xpm.gz</code>, die Ursprungsdatei gibt es nicht mehr.<br />
<br />
Als root die <code>DATEINAME.xpm.gz</code> ins richtige GRUB-Verzeichnis verschieben. Falls man boot noch nicht gemountet hat sollte man es nun mounten.<br />
<br />
# mv PFAD_ZUM_BILD/DATEINAME.xpm.gz /boot/grub/<br />
<br />
Jetzt noch die <code>menu.lst</code> ändern, wie unter [[#Konfiguration]] beschrieben.<br />
<br />
===Fertige Bilder konvertieren===<br />
Im Paket <code>imagemagick</code> befindet sich das Programm <code>convert</code>, damit lassen sich fertige Bilder konvertieren.<br />
<br />
# pacman -Sy imagemagick<br />
<br />
Datei in xpm umwandeln und packen <br />
<br />
convert -colors 14 -resize 640x480 bild.png bild.xpm && gzip DATEINAME.xpm<br />
<br />
Als root die <code>DATEINAME.xpm.gz</code> ins richtige GRUB-Verzeichnis zu verschieben. Falls man boot noch nicht gemountet hat sollte man es nun mounten.<br />
<br />
# mv PFAD_ZUM_BILD/DATEINAME.xpm.gz /boot/grub/<br />
<br />
Jetzt noch die <code>menu.lst</code> ändern, wie unter [[#Konfiguration]] beschrieben.<br />
<br />
==Splash-Bilder==<br />
* [http://www.gnome-look.org/content/show.php?content=77116 Arch Linux GRUB Theme] - von [http://bbs.archlinux.org/profile.php?id=14836 valnour] aus dem englischen Forum<br />
* [http://www.schultz-net.dk/grub.html Jesper Schultz Grub SplashImages] - 35 Stück<br />
* [http://schragehome.de/splash/ Klaus-Peter Schrage GRUB splash images] - 13 Stück<br />
* [http://www.queervisions.com/arch/2007/04/9_grub_splash_i.html Grub Splash Images] - 9 Stück<br />
<br />
==Siehe auch==<br />
* [[GRUB]]<br />
* [[GRUB2]]<br />
<br />
==Weblinks==<br />
* [http://www.gnu.org/software/grub/ Homepage von GRUB] {{sprache|en}}<br />
<br />
[[Kategorie:Bootloader]]<br />
[[en:grub-gfx]]</div>PSubhttps://wiki.archlinux.de/index.php?title=ATI&diff=10717ATI2010-09-06T21:14:33Z<p>PSub: /* Installation */ Wegen https://bbs.archlinux.de/viewtopic.php?id=17347</p>
<hr />
<div>Für den Betrieb von ATI-Grafikkarten unter Linux gibt es die Möglichkeit der Benutzung zweier freier Treiber (ati, radeonhd). Auch existiert ein propritärer Treiber, der zwar volle 3D Unterstützung bietet, aber häufig das aktuellste X.org nicht unterstützt. Die Treiber unterscheiden sich in ihrem Funktionsumfang, wobei die freien Treiber in den meisten Fällen ausreichen sollten.<br />
<br />
==Open Source Treiber==<br />
===Installation===<br />
Das Treiberpaket ''xf86-video-ati'' wird mittels<br />
pacman -S xf86-video-ati<br />
installiert.<br />
<br />
Das Paket ''xf86-video-ati'' stellt den ''radeon'' Treiber bereit, der Grafikkarten von der Radeon 7000 Serie bis zur Radeon HD 5xxx Serie unterstützt (r100 - r800).<br />
Mehr Informationen finden sich auf der offizielle Seite von [http://www.x.org/wiki/radeon ''radeon''].<br />
<br />
Als Alternative lässt sich ''xf86-video-radeonhd'' verwenden, der wie oben beschrieben installiert wird. ''radeonhd'' unterstützt Grafikkarten von der Radeon X1xxx Serie bis zur Radeon HD 4xxx Serie (r500 - r700), allerdings wird KMS nicht unterstützt und muss deaktivert werden. Zudem scheint der Treiber derzeit nicht weiterentwickelt zu werden.<br />
Mehr Informationen finden sich auf der offizielle Seite von [http://www.x.org/wiki/radeonhd ''radeonhd''].<br />
<br />
===Konfiguration===<br />
Eine Konfiguration mittels der Datei ''xorg.conf'' ist nicht mehr notwendig. Das für Kernel Mode Setting ([[KMS]]) nötige drm-Modul (radeon) wird automatisch von [[udev]] geladen und es bedarf im Regelfall ebenfalls kein Eingreifen des Benutzers.<br />
<br />
{{Hinweis|Der Benutzer muss in der Gruppe '''video''' sein, um die 3D-Unterstützung, zu verwenden.}}<br />
<br />
'''Frühes Aktivieren von KMS:'''<br />
<br />
Damit die Bildschirmauflösung möglichst früh gesetzt werden kann, müssen die dazu nötigen Module und Dateien dem initramfs-Image hinzugefügt werden. Dazu muss in der Datei ''/etc/mkinitcpio.conf'' die Zeile ''MODULES'' geändert werden:<br />
MODULES="radeon"<br />
<br />
Anschließend muss noch das Image neu erstellt werden.<br />
mkinitcpio -p kernel26<br />
<br />
Der ''vga'' Parameter des Kernel sollte ebenfalls entfernt werden.<br />
<br />
====TV-Out====<br />
'''Derzeit unterstützt nur ''radeon'' TV-Out.'''<br />
<br />
Um die TV-Out Unterstützung auf Karten der Radeon HDxxxx Reihe (r6xx-r7xx) zu aktivieren, muss<br />
Option "ATOMTvOut" "TRUE"<br />
in ''Section "Device"'' in der Datei xorg.conf eingefügt werden.<br />
<br />
Der Ausgang wird mittels '''xrandr''' konfiguriert:<br />
xrandr --output S-video --set load_detection 1<br />
xrandr --addmode S-video 800x600<br />
xrandr --output S-video --set tv_standard pal<br />
<br />
Aktiviert wird der Ausgang mit:<br />
xrandr --output S-video --mode 800x600<br />
<br />
Ausgeschaltet wird der Ausgang mit:<br />
xrandr --output S-video --off<br />
<br />
Leider kann der Inhalt eines XVideo-Bereichs (z.B. DVD-Wiedergabefenster) nur entweder auf dem PC selbst oder aber auf dem TV-Gerät ausgegeben werden. Das Umschalten geschieht mit [http://aur.archlinux.org/packages.php?ID=22671 xvattr], welches man aus dem [[AUR]] installieren kann.<br />
<br />
*Video-Ausgabe auf TV<br />
xvattr -a XV_CRTC -v 1<br />
<br />
*Video-Ausgabe auf PC<br />
xvattr -a XV_CRTC -v 0<br />
<br />
Alternativ zur Nutzung von ''xvattr'' kann man auch den Desktop erweitern und dann das Video Fenster auf den Fernseher verschieben.<br />
So kann man den PC auch während der Video-Wiedergabe weiterbenutzen.<br />
Das wird dann ebenfalls mit xrandr gemacht. Zum Beispiel so:<br />
xrandr --output S-video --right-of LVDS <br />
Das erweitert den Desktop auf der rechten Seite. Man kann dann also Fenster rechts aus dem Bild schieben und sie erscheinen dann auf dem Fernseher. Es kann auch sein, dass man statt ''LVDS'' ''VGA-0'' oder ''VGA'' nehmen muss. Das kann man herausfinden indem man sich die Ausgabe von ''xrandr -q'' anschaut.<br />
<br />
Damit das ganze funktioniert muss man in der xorg.conf in der Screen Section die maximale virtuelle Auflösung (Monitor + TV) angeben.<br />
Das sieht dann z.B. so aus:<br />
Section "Screen"<br />
Identifier "Default Screen"<br />
Device "ATI Technologies Inc RV350 [Mobility Radeon 9600 M10]"<br />
Monitor "LCD-Display"<br />
DefaultDepth 24<br />
SubSection "Display"<br />
Depth 24<br />
Modes "1280x800"<br />
'''Virtual 2080 800'''<br />
EndSubSection<br />
EndSection<br />
Die Werte für '''Virtual''' ergeben sich aus der Auflösung des Monitors (hier 1280x800) und der des TV-Ausgangs (hier 800x600).<br />
Also 2080 = 1280 + 800 und da in diesem Fall die Vertikale Auflösung des TV-Ausgangs (600) kleiner ist als die des Monitors (800) und der Desktop nach rechts erweitert wird, reicht eine maximale virtuelle Vertikale Auflösung von 800.<br />
<br />
'''Bild nur schwarz-weiss'''<br />
<br />
Falls das Bild auf dem Fernseher nur schwarz-weiss ist, liegt das vermutlich am verwendeten Kabel.<br /> <br />
Hier (Acer Extensa 3000, Mobility Radeon 9700) verwende ich ein S-VHS Kabel und einen S-VHS -> SCART Adapter. Nach Ablöten bzw. Entfernen der Pins 13 und 17 im SCART Adapter habe ich nun ein farbiges Bild.<br />
Ich weiss nicht ob das immer funktioniert, aber einen Versuch ist es auf jeden Fall Wert. Es gibt aber auch fertige Kabel/Adapter zu kaufen, die das Problem beheben. Zum Beispiel das "PC-VIDEO-Verbindungsset" von HAMA.<br />
<br />
===Fehlerbehebung===<br />
Fehler lassen sich in der Datei ''/var/log/Xorg.0.log'' finden.<br />
<br />
Für die Behebung des Fehlers<br />
(EE) Failed to load /usr/lib/xorg/modules/extensions//libdri.so<br />
(EE) Failed to load module "dri" (loader failed, 7)<br />
(EE) RADEONHD(0): RHDDRIVersionCheck: symbol DRIQueryVersion not available.(libdri.a is too old)<br />
(WW) RADEONHD(0): RHDDRIPreInit: Version check failed. Disabling DRI.<br />
muss ''xorg-server'' neu installiert werden:<br />
pacman -Sy xorg-server<br />
<br />
In Zusammenhang mit Kernelmodesetting (KMS) kann es noch zu Problemen kommen. Auch bei Verwendung von ''xf86-video-radeonhd'' muss KMS deaktiviert werden. Dies geschieht durch<br />
radeon.modeset=0<br />
was dem Kernel als Parameter in Grub übergeben werden.<br />
<br />
==Proprietärer Treiber==<br />
Zu beachten ist, dass obwohl das Treiberpaket ''catalyst'' heißt, der Treiber und das nötige Kernelmodul ''fglrx'' heißen.<br />
<br />
===Installation=== <br />
{{Hinweis|Falls einer der freien Treiber installiert war, müssen die Pakete ''libgl'', ''ati-dri'' und ''xf86-video-ati'' oder ''xf86-video-radeonhd'' zuerst entfernt werden! Sollte dies wegen Abhängigkeitsproblemen nicht funktionieren, kann die Option 'd' verwendet werden. (pacman -Rd libgl ati-dri xf86-video-ati)}}<br />
<br />
Der proprietäre Treiber ist im [http://aur.archlinux.org/packages.php?ID=22899 AUR] zu finden und kann mittels [[Abs|ABS]] erstellt werden. Eine Aktualisierung des Kernels oder von X.org kann die Neuerstellung dieser Pakete notwendig machen.<br />
<br />
Der aktuelle proprietäre Treiber unterstützt nur noch Karten ab der HD2xxx-Serie (r600). Für ältere Grafikkarten muss einer der [[#Open_Source_Treiber|freien Treiber]] verwendet werden.<br />
<br />
===Konfiguration===<br />
Die Datei xorg.conf muss folgendermaßen editiert werden:<br />
<br />
'''Device Section'''<br />
<br />
Section "Device"<br />
Identifier "Device"<br />
Driver "fglrx"<br />
EndSection<br />
<br />
{{Hinweis|Der Benutzer muss in der Gruppe '''video''' sein, um die 3D-Unterstützung zu verwenden.}}<br />
<br />
=== Fehlerbehebung ===<br />
Fehler lassen sich in der Datei ''/var/log/Xorg.0.log'' finden.<br />
<br />
Wenn Xorg nicht startet und die Fehlermeldung zurückgibt, dass die eingestellte 8-Bit-Farbtiefe von fglrx nicht unterstützt werde, muss man die „Screen“-Sektion um folgenden Eintrag erweitern.<br />
<br />
DefaultDepth 24<br />
<br />
==Siehe auch==<br />
<br />
* [[XRandR]]<br />
* [[X]]<br />
<br />
==Weblinks==<br />
<br />
* [http://www.x.org/wiki/radeon Offizielle Seite von ''radeon''] {{Sprache|en}}<br />
* [http://www.x.org/wiki/radeonhd Offizielle Seite von ''radeonhd''] {{Sprache|en}}<br />
<br />
[[Kategorie:Hardware]]<br />
[[Kategorie:Grafikkarten]]</div>PSubhttps://wiki.archlinux.de/index.php?title=Pkgstats&diff=10716Pkgstats2010-09-06T21:14:14Z<p>PSub: /* Installation */ Wegen https://bbs.archlinux.de/viewtopic.php?id=17347</p>
<hr />
<div>{{SEITENTITEL:pkgstats}}<br />
Pkgstats ist ein einfaches Skript, das eine Liste der installierten Pakete und der verwendeten Architektur erstellt und diese den Entwicklern durch Hochladen auf archlinux.de zur Verfügung stellt. Zusätzlich wird ein Hash der IP gespeichert, um Verfälschungen der Statistik zu verhindern.<br />
<br />
Idealerweise ruft man das Skript einmal für jede Installation von Arch auf bzw. noch einmal dann wenn sich Grundlegendes an den Paketen (nicht den Versionen) geändert hat. Beispiel: Jemand deinstalliert Gnome und installiert KDE.<br />
<br />
Die Funktion des Bash-Skriptes lässt sich hier prüfen: /usr/bin/pkgstats.<br />
<br />
Die Paketstatistik kann man sich hier angucken: [https://www.archlinux.de/?page=PackageStatistics Package Statistic]<br />
<br />
== Installation ==<br />
<br />
pacman -S pkgstats<br />
<br />
== Benutzung ==<br />
<br />
So kann man prüfen welche Daten pkgstats erstellt, ohne das sie an den Server gesendet werden:<br />
<br />
pkgstats -s<br />
<br />
Wenn man einverstanden ist, kann man das Skript ohne Option ausführen - die Daten werden dann an den Server geschickt:<br />
<br />
pkgstats<br />
<br />
== Automatische Ausführung mit cron ==<br />
<br />
Mit [[cron]] kann man pkgstats wiederkehrend ausführen lassen. Das ist sinnvoll, wenn man öfter Programme installiert und deinstalliert. Je nachdem wie aktiv man an seinem System etwas ändert, sollte man einen sinnvollen Zeitraum wählen. Im nachfolgenden Beispiel wird pkgstats einmal monatlich ausgeführt. <br />
<br />
Als root crontab -e aufrufen und diese Zeile hinzufügen:<br />
<br />
03 00 1 * * pkgstats<br />
<br />
Alternativ kann man das folgende Skript erstellen /etc/cron.monthly/pkgstats:<br />
<br />
#!/bin/bash<br />
/usr/bin/pkgstats<br />
<br />
== Weblinks ==<br />
* https://www.archlinux.de/?page=PackageStatistics<br />
<br />
[[Kategorie:Paketverwaltung]]</div>PSubhttps://wiki.archlinux.de/index.php?title=Arch_Build_System&diff=10715Arch Build System2010-09-06T21:13:46Z<p>PSub: /* Vorbereitung */ Wegen https://bbs.archlinux.de/viewtopic.php?id=17347</p>
<hr />
<div>== Einführung ==<br />
Das Arch Build System (ABS) wird genutzt um:<br />
<br />
* Neue Pakete für Software zu erstellen<br />
* Vorhande Pakete an die eigenen Bedürfnisse anzupassen<br />
<br />
Das Arch Build System besteht aus [[Abs#Der_ABS-Verzeichnisbaum|abs]], [[Abs#Erstellung_von_Paketen|makepkg]] und [[pacman]].<br />
Dieser Artikel versucht nun eine Übersicht über das Erstellen von Paketen unter Archlinux zu geben. Detailreichere Informationen finden sich in den jeweiligen [[Manpages]].<br />
<br />
== Vorbereitung ==<br />
<br />
Das Paket "abs" installieren:<br />
<br />
pacman -S abs<br />
<br />
Alle sonstigen Pakete, die zur Erstellung von Paketen notwendig sind, befinden sich in der Gruppe base-devel:<br />
<br />
pacman -S base-devel<br />
<br />
== Das Paket ==<br />
<br />
Ein Paket ist eine Datei, die meist ''foo''.pkg.tar.gz bzw. ''foo''.pkg.tar.xz genannt ist.<br />
<br />
Es ist nicht mehr, als ein gz bzw. xz komprimiertes tar-Archiv, das folgendes enthält:<br />
<br />
* Die zu installierenden Dateien<br />
<br />
*.PKGINFO : enthält alle Metadaten, die pacman für den Umgang mit Paketen, Abhängigkeiten etc. benötigt.<br />
<br />
*.INSTALL : enthält Befehle, die nach dem Installieren/Aktualisieren/Deinstallieren ausgeführt werden. (Nur vorhanden, wenn es in PKGBUILD definiert wurde)<br />
<br />
== Das PKGBUILD ==<br />
<br />
PKGBUILD enthält die Metadaten über ein Paket, die von [[pacman]] benötigt werden, um die Pakete verwalten zu können. Es stellt die Grundlage für Pakete in Archlinux dar. Ein PKGBUILD ist eine einfache Textdatei, die beispielsweise so aussehen kann:<br />
<br />
# $Id: PKGBUILD,v 1.12 2003/11/06 08:26:13 dorphell Exp $<br />
# Maintainer: judd <jvinet@zeroflux.org><br />
# Contributor: Judd Vinet <jvinet@zeroflux.org><br />
pkgname=foo<br />
pkgver=0.99 # note: if the pkgver had been '0.99-10' then use an underscore. like '0.99_10'<br />
pkgrel=1<br />
pkgdesc="short description of foo"<br />
arch=(i686 x86_64)<br />
url="http://www.foo.org"<br />
license=('GPL')<br />
groups=<br />
provides=<br />
depends=('qt' 'python')<br />
makedepends=('guile')<br />
conflicts=('yafoo')<br />
replaces=('mffoo')<br />
backup=('etc/foo/foo.conf')<br />
install=('foo.install')<br />
source=(http://www.foo.org/download/$pkgname-$pkgver.tar.gz)<br />
md5sums=('2c0cca3ef6330a187c6ef4fe41ecaa4d35175bee593a7cc7d6205584a94d8625')<br />
<br />
build() {<br />
cd $srcdir/$pkgname-$pkgver<br />
./configure --prefix=/usr<br />
make<br />
make prefix=$pkgdir/usr install<br />
}<br />
<br />
Erklärung:<br />
<br />
* '''# text''' : Kommentare<br />
* '''# $Id: PKGBUILD,v ...''' : Das SVN-Tag für dieses Paket (automatisch vom Archlinux-SVN System erstellt).<br />
* '''# Maintainer''' : Der Verantwortliche für dieses Paket in den offiziellen Repositories.<br />
* '''# Contributor''' : Der Verfasser der ersten PKGBUILD für dieses Paket.<br />
* '''pkgname''' : Der Paketname<br />
* '''pkgver''' : Die Paketversion<br />
* '''pkgrel''' : Die Releasenummer des Arch Paketes. Wird geändert, wenn das PKGBUILD verändert wurde, sie unterscheided sich also von der Paketversion.<br />
* '''pkgdesc''' : Eine Kurzbeschreibung des Paketes. Du siehst sie, in der [http://www.archlinux.de/?page=Packages Paket Datenbank]<br />
* '''arch''' : Die Architekturen, auf denen das Paket kompiliert und getestet wurde.<br />
* '''url''' : Die Homepage des Programmes<br />
* '''license''' : Die Lizenz, unter der das Programm steht<br />
* '''groups''' : Wird genutzt um Pakete zu Gruppen zusammen zu fassen. Wenn du z.B. KDE installieren willst, werden alle Pakete installiert, die zur Gruppe 'kde' gehören<br />
* '''provides''' : Wird genutzt, wenn das Paket ein anderes Paket bereitstellt.<br />
* '''depends''' : Liste der Abhängigkeiten um das Programm auszuführen.<br />
* '''makedepends''' : Liste der Abhängigkeiten um das Programm zu kompilieren.<br />
* '''conflicts''' : Pakete, die nicht zusammen mit diesem Programm installiert sein können. In unserem Fall steht ''foo'' in Konflikt zu ''yafoo''. <br />
* '''replaces''' : Das neue Paket ersetzt das alte. In unserem Fall wird ''mffoo'' nicht mehr unterstützt und wird durch ''foo'' ersetzt.<br />
* '''backup''' : Dateien, die gesichert werden (als .pacsave), wenn das Programm deinstalliert wird.<br />
* '''install''' : Spezifiziert ein Installationsskript, das im Paket enthalten ist. (Muss sich mit PKGBUILD im selben Verzeichnis befinden)<br />
* '''source''' : Die Bezugsquelle des Quelltextes. Kann sowohl ein lokales Paket, als auch ein remote "http" oder "ftp" Paket sein. Der Dateiname wird aus ''pkgname'' und ''pkgver'' erstellt, damit der Pfad nicht bei jeder neuen Version angepasst werden muss.<br />
* '''md5sums''' : MD5 Summen der Quelltexte um beschädigte Dateien auszuschließen.<br />
* '''build()''' : Alle Schritte, die nötig sind um das Paket zu kompilieren.<br />
<br />
=== Die build-Funktion ===<br />
In der build-Funktion werden die Anweisungen ausgeführt, die nötig sind, um das Paket zu kompilieren und so einzurichten, dass es von [[pacman]] installiert werden kann.<br />
----<br />
Wenn du dich nicht mit dem Bauen von Paketen auskennst, solltest du wissen, dass die meisten Pakete über den ''Dreisatz'' erstellt werden können:<br />
<br />
./configure --prefix=/usr<br />
make<br />
make install<br />
<br />
''./configure'' überprüft zunächst, ob alle Voraussetzungen für das zu kompilierende Programm erfüllt sind. Über dieses Script lässt sich auch konfigurieren, wie und mit welchen Funktionen ein Programm<br />
kompiliert wird. ''./configure --help'' zeigt meistens eine Übersicht über die Optionen, die verfügbar sind. ''make'' kompiliert schließlich das Paket und '' make install'' installiert die Dateien.<br />
<br />
Du solltest immer die ''INSTALL'' oder die ''README'' Datei des jeweiligen Pakets lesen, um zu erfahren, wie es erstellt und installiert werden sollte, denn nicht alle Pakete nutzen diesen ''Dreisatz''!<br />
----<br />
<br />
Eine 'standard' build-Funktion sieht so aus:<br />
<br />
build() {<br />
cd $srcdir/$pkgname-$pkgver<br />
./configure --prefix=/usr<br />
make<br />
make prefix=$startdir/pkg/usr install<br />
}<br />
<br />
Erklärung:<br />
<br />
* In das Verzeichnis der von ''makepkg'' entpackten Quelltexte wechseln:<br />
cd $srcdir/$pkgname-$pkgver<br />
<br />
* Konfigurieren des Paketes mit dem Installationsverzeichnis ''/usr'' und unter Umständen weiteren Optionen:<br />
./configure --prefix=/usr<br />
<br />
* kompilieren:<br />
make<br />
<br />
* installieren:<br />
make prefix=$startdir/pkg/usr install<br />
<br />
Dabei wird das Programm nicht in ''/usr'' sondern in ''$startdir/pkg/usr'' installiert, sodass [[pacman]] Kontrolle über die Dateien hat!<br />
Teilweise wird ''--prefix'' nicht genutzt und stattdessen ''DESTDIR'' verwendet.<br />
<br />
=== Installationsdateien ===<br />
Installationsdateien stellen die Möglichkeit bereit, Anweisungen zu bestimmten Punkten der Installation auszuführen. Dazu müssen sie im PKGBUILD angegeben werden. Unseres gibt 'foo.install' als Installationsdatei an. Es könnte z.B. folgendes enthalten:<br />
<br />
post_install() {<br />
/bin/true<br />
}<br />
<br />
post_upgrade() {<br />
/bin/true<br />
}<br />
<br />
pre_remove() {<br />
/bin/true<br />
}<br />
<br />
op=$1<br />
shift<br />
$op "$@"<br />
<br />
Erklärungen:<br />
<br />
* '''post_install''': Wird nach der Installation ausgeführt. Es wird ein Argument übergeben:<br />
** Die Paketversion<br />
* '''post_upgrade''': Wird ausgeführt, nachdem alle Dateien aktualisiert wurden <em> Es werden zwei Argumente übergeben</em>:<br />
** Die neue Paketversion<br />
** Die alte Paketversion<br />
* '''pre_remove''': Wird ausgeführt, bevor Dateien gelöscht werden (beendet z.B. daemonen) und übergibt ein Argument:<br />
** Die Paketversion<br />
<br />
Damit die Installationsdateien funktionieren, müssen diese letzten drei Zeilen am Ende jeder Installationsdatei vorhanden sein.<br />
<br />
== Der ABS-Verzeichnisbaum ==<br />
Bei Archlinux werden die PKGBUILDs, anhand derer die Pakete in den offiziellen Repositories gebaut sind, mit SVN verwaltet.<br />
Sie werden mit ''abs'' auf den lokalen Rechner heruntergeladen oder aktualisiert:<br />
abs<br />
<br />
Der nun mit dem SVN-System synchrone Verzeichnisbaum befindet sich in '''/var/abs''' und sieht folgendermaßen aus:<br />
<br />
| -- core/<br />
| || -- acl/<br />
| || || -- PKGBUILD<br />
| || -- attr/<br />
| || || -- PKGBUILD<br />
| || -- autoconf/<br />
| || || -- PKGBUILD<br />
| || -- ...<br />
| -- extra/<br />
| || -- acpid/<br />
| || || -- PKGBUILD<br />
| || -- apache/<br />
| || || -- PKGBUILD<br />
| || -- ...<br />
| -- community/<br />
| || -- ...<br />
<br />
Jedes Repository besitzt einen eigenen Ordner in diesem Verzeichnisbaum, in dem sich dann die Ordner der jeweiligen Pakete befinden.<br />
Das Verzeichnis ''local'' dient zur Aufbewahrung selbst erstellter Pakete. Es wird im Gegensatz zu den anderen Ordnern von ''abs'' nicht verändert.<br />
<br />
Die sich nun auf dem lokalen Rechner befindlichen PKGBUILDs lassen sich jetzt nach den eigenen Wünschen verändern und wie im nächsten Abschnitt beschrieben neu erstellen.<br />
<br />
== Erstellung von Paketen ==<br />
{{achtung|Um Schäden am System zu vermeiden, sollten Pakete nie als root erstellt werden!}}<br />
Pakete werden mit ''makepkg'' erstellt. Dazu muss in das Verzeichnis gewechselt werden, in dem sich das Paket befindet und hier ''makepkg'' ausgeführt werden. Verzeichnisse aus dem ABS-Verzeichnisbaum<br />
sollten zuvor nach ''/var/abs/local'' kopiert werden und nicht zur Erstellung des Pakets benutzt werden.<br />
Sind nicht alle Abhängigkeiten zum Bau vorhanden, listet ''makepkg'' diese auf.<br />
cd foo-0.99<br />
makepkg<br />
<br />
Das erstellte Paket befindet sich jetzt im selben Verzeichnis und kann mit [[pacman]] installiert werden:<br />
pacman -U foo-0.99-x86_64.pkg.tar.gz<br />
<br />
== Konfiguration ==<br />
=== abs.conf ===<br />
In der Datei ''/etc/abs.conf'' werden die Eigenschaften von ''abs'' festgelegt. Der wichtigste Punkt stellt die Möglichkeit der Wahl der Repositories dar, deren PKGBUILDs synchronisiert werden sollen.<br />
<br />
=== makepkg.conf ===<br />
{{achtung|Änderungen in makepkg.conf können Probleme und Fehler in den Paketen nachsichziehen und sollten daher nur von erfahreneren Nutzern durchgeführt werden.}}<br />
In der Datei ''/etc/makepkg.conf'' werden die Eigenschaften von ''makepkg'' festgelegt. Dabei lassen sich die Standardeinstellungen der Programme verändern, die ''makepkg'' verwendet, um Pakete zu erstellen.<br />
Zu nennen sind dabei die Umgebungsvariablen MAKEFLAGS, CFLAGS und CXXFLAGS, die ''gcc'' und ''make'' beeinflussen.<br />
<br />
== Links ==<br />
* [http://www.gnu.org/software/make/manual/html_node/Options-Summary.html#Options-Summary Informationen über MAKEFLAGS]<br />
* [http://gcc.gnu.org/onlinedocs/gcc-4.3.3/gcc/Option-Summary.html#Option-Summary Informationen über CFLAGS und CXXFLAGS]<br />
* [[pacman]]<br />
* [[AUR]]<br />
<br />
{{ÜberFDL||Seite=http://wiki.archlinux.org|Name=ArchLinux.org Wiki|Original=http://wiki.archlinux.org/index.php?title=ABS_-_The_Arch_Build_System}}<br />
<br />
[[Kategorie:Paketverwaltung]]<br />
[[en:Arch Build System]]</div>PSubhttps://wiki.archlinux.de/index.php?title=Deluge&diff=10714Deluge2010-09-06T21:11:04Z<p>PSub: /* Installation */ Wegen https://bbs.archlinux.de/viewtopic.php?id=17347</p>
<hr />
<div>[[Bild:Deluge.png|thumb|350px|Deluge mit Clearlooks GTK2 Theme]]<br />
<br />
'''Deluge''' ist ein leichtgewichtiger, auf der GTK+ Bibliothek basierender Client für das BitTorrent-Protokoll.<br />
Seine Oberfläche ähnelt der von µTorrent.<br />
<br />
Die Oberfläche ist bei diesem Programm getrennt von dem eigentlichen Programm, '''deluged''', welches die wirkliche Arbeit verrichtet.<br />
'''deluged''' verwendet als Basis selber noch eine andere Bibliothek, nämlich libtorrent.<br />
<br />
Zusätzlich zur per Voreinstellung aktivierten GTK-Oberfläche existiert auch noch eine Weboberfläche.<br />
<br />
== Installation ==<br />
'''Deluge''' kann einfach mittels<br />
$ pacman -S deluge<br />
aus dem [extra]-Zweig installiert werden<br />
<br />
== Bedienung ==<br />
'''Deluge''' ist sehr intuitiv zu bedienen. Um einen Torrent herunterzuladen, klickt man beispielsweise auf das + Symbol und es erscheint ein Dialog, in dem man eigentlich nur noch den Speicherort angeben sollte und schon geht der Download los.<br />
<br />
Wenn man '''Deluge''' schließen will, sollte man darauf achten, dass man es über das Tray-Symbol macht, da '''Deluge''' sich standardmäßig nur in den Tray-Bereich minimiert, wenn man das Fenster schließt.<br />
<br />
== Weitere Informationen ==<br />
<br />
== Weblinks ==<br />
* [http://deluge-torrent.org/ Offizielle Webpräsenz] (englisch) mit Forum, Entwicklungsumgebung und Wiki<br />
* [https://launchpad.net/deluge Projektseite von Deluge] (englisch) auf Launchpad<br />
* [http://collegegeek.org/?tag=deluge Blog-Einträge zu Deluge] (englisch) vom Initiator Zach Tibbitts<br />
* [http://wiki.ubuntuusers.de/Deluge Artikel zu Deluge] im Wiki von ubuntuusers.de<br />
<br />
<br />
[[Kategorie:Netzwerk]]<br />
[[Kategorie:GTK]]</div>PSubhttps://wiki.archlinux.de/index.php?title=Emacs&diff=10713Emacs2010-09-06T21:09:40Z<p>PSub: /* Installation */ Wegen https://bbs.archlinux.de/viewtopic.php?id=17347</p>
<hr />
<div>[[Kategorie:Editoren]]<br />
Emacs ist<br />
* ein sehr umfangreicher und mächtiger, enorm weit verbreiteter '''Editor''',<br />
* eine '''Programmierplattform und Laufzeitumgebung''' für Lisp-Anwendungen, beispielsweise News- und Mail-Clients,<br />
* eine offene '''Entwicklungsumgebung'''.<br />
Manche witzeln, er sei ein eigenes Betriebssystem. Die folgende Präsentation gibt mit vielen Screenshots einen guten Überblick [http://stuff.mit.edu/iap/2009/emacs/part1.html].<br />
<br />
Die Programmierung am Emacs wurde 1984 von Richard Stallman in Lisp begonnen. Emacs steht unter der GPL.<br />
<br />
'''Abgrenzung''': Es kann nicht Sinn dieser Abhandlung sein, Emacs in seiner Funktion zu erklären oder gar zu dokumentieren. Zu Emacs gibt es tonnenweise Material im Internet (siehe Links), teilweise auch auf Deutsch, so daß man sich jederzeit konkret und detailliert informieren kann. Ziel ist hier, die Installation und Konfiguration zu erläutern und einen Überblick über die wichtigsten Funktionen zu geben, was als Anregung zum Ausprobieren verstanden werden soll. Arch way, erst machen, dann fragen und so ...<br />
<br />
== Installation ==<br />
Emacs kann mithilfe von [[pacman]] installiert werden:<br />
pacman -S emacs<br />
Diese Binärdateien sind gegen [[GTK]] gelinkt und enthalten die typischen Dekorationen und Stile für Menü, Toolbar, Scrollbars usw., zudem auch die üblichen Datei-Dialoge.<br />
<br />
Wer Emacs ohne GTK betreiben will, kann sich problemlos die Quellen beschaffen und selbst compilieren. Es besteht per configure-Option die Möglichkeit, die Verwendung der Motif-Bibliotheken zu erzwingen (diese stehen als pacman-Paket openmotif oder lesstif zur Verfügung) oder ganz auf die Verwendung eines Toolkits zu verzichten und rein für X11 zu compilieren, was Emacs ein rustikaleres Aussehen gibt, aber möglicherweise eine halbe Sekunde Ladezeit spart.<br />
<br />
Es besteht sogar die Möglichkeit, ganz ohne X-Bibliotheken auszukommen. Die entsprechenden Pakete haben dann ein -nox im Paketnamen.<br />
<br />
== Starten ==<br />
Um Emacs zu starten, muß man nur<br />
emacs<br />
in die Konsole eingeben. Unter '''X11''' wird Emacs als X11-Programm in einem neuen X11-Fenster gestartet. Es wäre ratsam, in diesem Fall emacs mit & zu starten:<br />
emacs &<br />
da er sonst das Terminal blockiert, von dem aus der Aufruf erfolgte. Wenn man Emacs unter X11 im aktuellen Terminal starten möchte, ohne daß ein neues Fenster geöffnet wird, so kann man<br />
emacs -nw <br />
eingeben, dann in jedem Falle ohne &.<br />
<br />
Sofern gar '''kein X11''' läuft, kann man Emacs auch auf der Kommandozeile starten, wobei der Zusatz -nw nicht notwendig ist. Möglicherweise funktionieren allerdings einige Tasten anders (ausprobieren). Das Menü wird aus Platzgründen normalerweise nicht angezeigt, man kann es mit der Funktionstaste F10 hervorholen.<br />
<br />
Emacs bietet ein Modell an, bei dem quasi ein emacs-Dämon als '''Server''' läuft, während die später interaktiv vom Benutzer gestarteten emacs-Prozesse jeweils '''Clients''' dieses Servers werden. Der Vorteil liegt vor allem in geringerer Ladezeit. Näheres hier [http://www.gnu.org/software/emacs/manual/html_node/emacs/Emacs-Server.html#Emacs-Server]<br />
<br />
Man wird allerdings selten Emacs immer und immer wieder starten, wie man es vielleicht von [[vi]] her kennt. Emacs bietet (beispielsweise mit dired) andere Möglichkeiten an, schnell Dateien zu öffnen, so daß das ständige Laden eigentlich überflüssig wird. Viele Benutzer haben ihren Emacs stunden- und tagelang offen. Eine Frage des persönlichen Geschmacks.<br />
<br />
== Bedienung ==<br />
Emacs wird üblicherweise vollständig über die '''Tastatur''' gesteuert. Er besitzt die Besonderheit, daß auch mehrere separate Tasten(kombinationen) hintereinander einen einzelnen Befehl auslösen können, beispielsweise nacheinander C-x und C-f (Datei öffnen). Tastenkombinationen können zudem (zumindest auf europäischen Tastaturen) auch aus drei Tasten bestehen, beispielsweise M-% (Suchen und Ersetzen), was auf einer deutschen oder schweizer Tastatur zu S-M-5 wird. (Zur Notation von Tastenkombinationen siehe hier [http://www.gnu.org/software/emacs/manual/html_node/emacs/User-Input.html#User-Input] und [http://www.gnu.org/software/emacs/manual/html_node/emacs/Keys.html#Keys])<br />
<br />
Die enorme Anzahl der Tastenkombinationen und ihre oft merkwürdige Anordnung auf der Tastatur haben in den letzten 20 Jahren zu viel Spott geführt. Man benötigt aber in der Tat nur einen kleinen Teil davon, wenige Prozent, und diese kann man lernen, es ist weit weniger schwer als es zunächst aussieht.<br />
<br />
Eine vollständige, aus der jeweils aktuellen Konfiguration des Editors heraus gebildete Liste aller Tastenkombinationen erreicht man mit<br />
C-h b<br />
Die Tastenkombinationen sind dort mit den durch sie ausgelösten Lisp-Funktionen aufgeführt, auf welche auch hypertextartig geklickt werden kann, um an nähere Informationen zu gelangen.<br />
<br />
Es existiert darüberhinaus eine zentrale Möglichkeit, im sog. '''Mini-Buffer''', den man über M-x erreicht, eine Lisp-Funktion mit ihrem Namen und ggf. Argumenten anzugeben und auszuführen. Dies scheint oft die komfortablere Möglichkeit, da man sich ggf. eher noch an verbale Begriffe erinnert als an Tastenkombinationen.<br />
<br />
Aufgrund der begrenzten Möglichkeiten, die ihre zwei oder drei Knöpfe bieten, gibt es nur wenige Funktionen, die auf der '''Maus''' liegen. Allerdings sind die Mausknöpfe auch mehrfach, nämlich noch im Zusammenhang mit Shift und Ctrl belegt.<br />
<br />
Ein sehr gut brauchbares '''Tutorial''' findet man im Editor selbst:<br />
C-h t<br />
oder im Help-Menü gleich der erste Eintrag. Es lohnt sich, dieses mal abzuarbeiten. Siehe ferner auch hier [http://www.fh-frankfurt.de/de/.media/~czermin/emacs_tutorial]<br />
<br />
Weitere Hinweise zur Bedienung gibt emacs selbst auf seinem Startbildschirm.<br />
<br />
== Emacs konfigurieren ==<br />
In emacs ist praktisch alles konfigurierbar. Und es gibt nicht zwei emacse, die gleich konfiguriert sind. So wird jeder emacs zu einem ganz individuellen Werkzeug, abgestimmt auf die persönlichen Bedürfnisse und Fähigkeiten seines Benutzers.<br />
<br />
=== Konfigurationsdateien ===<br />
Emacs selbst entnimmt seine Konfiguration aus der Datei ~/'''.emacs''', die auch ~/.emacs.el heißen darf, denn es ist eine echte Lisp-Datei. Emacs liest außerdem die ~/.Xdefaults.<br />
<br />
Komponenten von emacs besitzen ggf. eigene Konfigurationsdateien, vor allem Gnus gleich eine ganze Liste: ~/'''.gnus''' oder ~/.gnus.el, dazu ~/.authinfo, ~/.newsrc, ~/.newsrc.eld. Die letzten beiden kann man getrost ignorieren, sie enthalten vollautomatisch geführte Metainformationen (lieber nicht darin schreiben).<br />
<br />
Optionen sind nichts weiter als mit Werten belegte Lisp-Variablen. Einstellungen machen heißt also Variablen setzen. Dies kann man an verschiedenen Orten innerhalb der Konfigurationsdateien machen und auch auf verschiedene Arten.<br />
<br />
Man kann, sofern man weiß, was man tut, die gesamte Konfiguration in diesen Dateien von Hand erledigen. Dies ist praktisch, wenn man beispielsweise auch kleine Code-Blöcke (Lamda-Funktionen) usw. benutzen will. Üblicherweise benutzt man jedoch emacs selbst, um sich ''menügesteuert'' oder über sog. ''Customizing'' zu konfigurieren. Die dabei gemachten Einstellungen gelangen dann in diese Dateien und können später (auch von Hand) bearbeitet werden.<br />
<br />
=== Menügesteuerte Konfiguration ===<br />
Das emacs-Menü "Options" erlaubt das Setzen bestimmter, häufig gebrauchter Optionen, ohne daß man erst aufwendig danach suchen müßte. Meist betreffen sie das Aussehen oder grundlegende Verhaltensweisen von emacs, beispielsweise ob der Cursor blinken oder ob Scrollbars angezeigt werden sollen. Solche sind selbsterklärend. Allerdings stellt man unter "Options|Mule|Set Language Environment" auch ziemlich wichtige Dinge wie den standardmäßig verwendeten Zeichensatz ein, mit dem neu erstellte Dateien gespeichert werden. Auch die Anzeige von Umlauten kann davon abhängen.<br />
<br />
Werden im Options-Menü Einstellungen verändert, muß man diese mit dem Menüpunkt "Options|Save Options" explizit speichern, sonst gehen sie beim Programmende verloren. Diese Optionen gelangen nach ~/.emacs, die jetzt ggf. erstellt wird. Eine bereits bestehende Datei wird nicht überschrieben, sondern erweitert.<br />
<br />
=== Customizing ===<br />
Customizing ist nichts anderes als das Setzen von Optionen, allerdings mit Hilfe des emacs-eigenen, hierarchisch organisierten ''Customization Browsers''. Man wird ihn schätzen lernen. Seine Handhabung ist allerdings wegen nicht immer gegebener Strenge bzgl. der Hierarchie auch nicht unproblematisch. (Manche Einstellungen erscheinen an mehreren Orten.) Man öffnet ihn am besten mit dem Menüpunkt "Options|Customize Emacs|Browse Customization Groups" oder<br />
M-x customize-browse RET<br />
Ein Baum mit expandierbaren Knoten sollte angezeigt werden. (Die [+]-Zeichen sind anklickbar.) Die eigentlichen Optionen stehen in den Blättern dieses Baumes. Man klicke beispielsweise auf [+] vor "Programming" und dann auf das [+] vor "Languages" und es öffnet sich eine lange Liste von Programmiersprachen, für die man jetzt ganz individuelle Einstellungen vornehmen kann, unter "C" beispielsweise den "C Basic Offset", d.h. die standardmäßige Tabulatorbreite, üblicherweise 8 Zeichen.<br />
<br />
=== Häufig gemachte Einstellungen ===<br />
'''.emacs'''<br />
(custom-set-variables<br />
'(auto-save-default nil) ; Dateien nie zwischenspeichern<br />
'(blink-cursor-mode nil nil (frame)) ; Cursor nicht blinken lassen<br />
'(c-backspace-function (quote backward-delete-char)) ; cc-mode: Backspace ist Backspace (und nichts anderes!)<br />
'(c-basic-offset 8) ; cc-mode: Tabulatorbreite<br />
'(c-syntactic-indentation nil) ; cc-mode: keine Indentation<br />
'(case-fold-search nil) ; Suchen am Ende der Datei beenden<br />
'(column-number-mode t) ; Zeilennummer in Statuszeile anzeigen<br />
'(compilation-scroll-output t) ; im compilation buffer scrollen<br />
'(current-language-environment "Latin-9") ; '''Zeichensatz'''<br />
'(delete-selection-mode t nil (delsel)) ; '''markierten Text mit Entf löschen'''<br />
'(dired-recursive-deletes (quote top)) ; '''dired: Verzeichnisse rekursiv löschen'''<br />
'(display-time-mode t) ; Uhrzeit in Statuszeile anzeigen<br />
'(gdb-many-windows t) ; '''Debugger mit komplexem Layout starten'''<br />
'(global-font-lock-mode t nil (font-lock)) ; '''font-locking einschalten, wenn's geht'''<br />
'(gnus-inhibit-startup-message t) ; für Gnus keinen startup screen anzeien<br />
'(inhibit-startup-screen t) ; für emacs keinen startup screen anzeigen<br />
'(make-backup-files nil) ; keine doofen backup files<br />
'(mouse-autoselect-window t) ; Eingabefokus wandert mit der Maus mit<br />
'(require-final-newline (quote ask)) ; Zeilenende an letzter Zeile erzwingen<br />
'(scroll-bar-mode nil) ; keine scrollbars<br />
'(sentence-end-double-space nil) ; keine zwei Leerzeichen nach einem .<br />
'(show-paren-mode t nil (paren)) ; '''zusammengehörende Klammern anzeigen ...'''<br />
'(show-paren-style (quote expression)) ; '''... und zwar durch farbige Markierung'''<br />
'(show-trailing-whitespace t) ; Leerzeichen am Zeilenende anzeigen<br />
'(tool-bar-mode nil nil (tool-bar)) ; keine Toolbar<br />
'(transient-mark-mode t) ; '''sichtbare Markierung von Text'''<br />
'(truncate-lines t) ; '''lange Zeilen nicht umbrechen, sondern abschneiden'''<br />
'(visible-bell t) ; nicht piepsen<br />
'(x-stretch-cursor t) ; Cursor bei Tabulatoren breit machen<br />
)<br />
===Tipps und Tricks ===<br />
Mit der Zeile<br />
(fset 'yes-or-no-p 'y-or-n-p)<br />
lassen sich gelegentlich vollzogene Rückfragen, die eigentlich mit "yes RET" oder "no RET" beantwortet werden müssen, mit einem wesentlich bequemeren "y" oder "n" beantworten, ohne RET.<br />
<br />
Als sehr lästig mag man auch das Bestätigen beim Schließen eines Buffers über C-x k empfinden. Man kann dies elegant verhindern, indem man C-x k auf eine andere Funktion legt, die immer den aktuellen Buffer schließt, ohne diese dumme Rückfrage:<br />
(global-set-key (read-kbd-macro "C-x k") 'kill-this-buffer-and-window)<br />
Die Funktion kill-this-buffer-and-window hat folgendes Aussehen:<br />
(defun kill-this-buffer-and-window ()<br />
"Kill the current buffer and delete the selected window."<br />
(interactive)<br />
(let (buffer current-buffer)<br />
(if (kill-buffer (current-buffer))<br />
(if (> (count-windows) 1)<br />
(delete-window (selected-window))))))<br />
<br />
Möglicherweise funktioniert im Mini-buffer die Dateinamensvervollständigung nicht auf Anhieb. Wenn man mit C-x C-f eine Datei öffnen will und deren Namen nicht genau kennt, kann man emacs eine Liste von in Frage kommenden Dateien anzeigen lassen. Mit den folgenden zwei Zeilen kann man dies mit der Leertaste auslösen:<br />
(define-key minibuffer-local-filename-completion-map " " 'minibuffer-complete-word)<br />
(define-key minibuffer-local-must-match-filename-map " " 'minibuffer-complete-word)<br />
<br />
Die oben in der Tabelle unter "Häufig gemachte Einstellungen" genannten Variablen <code>auto-save-default</code> und <code>make-backup-files</code> auf <code>nil</code> zu setzen, geht manchem vielleicht zu weit. Backups von den gerade geänderten Dateien zu haben, kann manchmal doch ganz angenehm sein, sie stören allerdings, wenn sie im aktuellen Verzeichnis angelegt werden. Mit der folgenden Funktion kann ein benutzerspezifisches Verzeichnis unter <code>/tmp</code> angelegt werden, in das die Dateien und Autosave-Metadaten abgelegt werden.<br />
<br />
<pre><br />
(defvar user-temporary-file-directory<br />
(concat temporary-file-directory user-login-name "/"))<br />
(make-directory user-temporary-file-directory t)<br />
(setq backup-by-copying t)<br />
(setq backup-directory-alist<br />
`(("." . ,user-temporary-file-directory)<br />
(,tramp-file-name-regexp nil)))<br />
(setq auto-save-list-file-prefix<br />
(concat user-temporary-file-directory ".auto-saves-"))<br />
(setq auto-save-file-name-transforms<br />
`((".*" ,user-temporary-file-directory t)))<br />
</pre><br />
Es werden nun unter <code>/tmp/<benutzer></code> Dateien als Backup angelegt, deren Name sehr lang werden kann: Der Pfad wird mitgespeichert, indem die Slashes zu Ausrufungszeichen umgewandelt werden. <br />
<br />
<br />
Falls man im Emacs als normaler Benutzer eingeloggt ist und eine Datei bearbeiten möchte, die root gehört, so ist dies normalerweise nicht ohne Öffnen einer root-Shell und Start von Emacs aus dieser Shell heraus möglich. Da Emacs recht lange zum Start braucht, ist dies eine unschöne Sache.<br />
<br />
Mit folgendem Lisp-Code kann man es aber auch einfacher und flinker haben. Benötigt wird allerdings <code>sudo</code> und ein Eintrag der folgenden Art in der <code>/etc/sudoers</code>:<br />
<pre><br />
<user> ALL=(ALL) /bin/bash<br />
</pre><br />
(wenn man will auch mit :NOPASSWD, aber das ist nicht empfehlenswert), wobei dort die Loginshell von root einzutragen ist.<br />
<br />
Der Lisp-Code ist dann<br />
<pre><br />
(defun find-alternative-file-with-sudo ()<br />
"Open current buffer as root!"<br />
(interactive)<br />
(when buffer-file-name<br />
(find-alternate-file<br />
(concat "/sudo:root@localhost:"<br />
buffer-file-name))))<br />
(global-set-key (kbd "C-x C-v") 'find-alternative-file-with-sudo)<br />
</pre><br />
Man kann natürlich eine andere Tastenkombination als C-x C-v nehmen.<br />
<br />
<br />
Wer viel mit mehreren Fenstern arbeitet, kann mit Hilfe der Option<br />
<pre>(windmove-default-keybindings)</pre> <br />
ein einfacheres Durchschalten der Fenster mittels Shift-Cursortaste aktivieren.<br />
<br />
== Funktionsüberblick ==<br />
=== Dateiverwaltung in Emacs ===<br />
Es gibt mehrere Implementierungen von Dateiverwaltungen unter Emacs (selbst solche mit zwei gegenüberliegenden Seiten). Die bekannteste davon, die auch standardmäßig mit jedem Emacs mitgeliefert wird, ist '''dired''' (''directory editor''). Man startet dired über<br />
M-x dired RET oder C-x d<br />
wobei man in letzterem Falle noch das Startverzeichnis bekanntgeben oder RET drücken muß. Dired listet dann augenblicklich in einem eigenen Puffer die Dateien und Verzeichnisse unterhalb des Startverzeichnisses auf, meist so wie "ls -alF" und hoffentlich auch in Farbe. Auf diesen Einträgen kann man eine Vielzahl an üblichen Datei- bzw. Verzeichnisoperationen ausführen. Erwähnt sei die Möglichkeit, auch mehrere Verzeichnisse untereinander in einem dired-buffer darzustellen, was oft sehr praktisch ist.<br />
<br />
=== Shell in Emacs ===<br />
Es gibt zwei Implementierungen für shell-Betriebsarten unter Emacs: '''shell''' und '''eshell'''.<br />
M-x shell RET oder M-x eshell RET<br />
Man kann nicht sagen, welche besser oder komfortabler sei - sie sind ''verschieden''. Beide Varianten nehmen (wie in einem Terminal) an einem Prompt gewöhnliche Benutzereingaben entgegen, führen diese aus und stellen die Ausgaben wieder im gleichen buffer dar.<br />
<br />
Der wesentliche Unterschied zwischen beiden Varianten ist, daß shell tatsächlich im Hintergrund eine default-sh des Benutzers startet, meist also [[bash]], mit vorschriftsmäßiger Initialisierung, so daß also beispielsweise auch in .bashrc definierte Aliase gleich funktionieren, während eshell in Lisp programmiert ist und nur die eingegebenen Kommandos als externe Prozesse startet (und damit in gewissen Betriebssystemen die einzige Möglichkeit ist, ohne große Aufwände zu einer vernünftigen Shell zu kommen). Eshell kann deshalb auch einfach über Schließen des Puffers (C-x k RET) beendet werden, während man in shell explizit exit schreiben oder Ctrl-D drücken muß, um den im Hintergrund laufenden sh-Prozeß zu beenden, und erst dann den buffer schließen darf.<br />
Wer [[zsh]] als Standard-Shell benutzt, sollte für eine korrekte Darstellung der Prompt folgende Zeile zu seiner .emacs hinzufügen:<br />
<br />
(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on) <br />
<br />
Hey, man kann in eshell (nicht in shell) sogar [[vim]] starten! (Na, wenn das nicht etwas ist, auf das emacs-Benutzer lange gewartet haben…)<br />
<br />
=== Emacs als Entwicklungsumgebung ===<br />
Man kann emacs hervorragend als Entwicklungsumgebung benutzen, sofern man unter "entwickeln" Quelltexte editieren, compilieren und debuggen meint. Emacs bietet für fast alle dieser Vorgänge hilfreiche Unterstützungen an, ohne daß man allerdings von echter Integration sprechen könnte. Der Vorteil liegt in der Offenheit in so ziemlich jeder Hinsicht.<br />
<br />
==== Editieren ====<br />
Das Editieren von Quelltexten findet in normalen Textbuffern statt. Emacs lädt verschiedene Modi, sobald er erkennt, daß es sich um eine Quelldatei eines bestimmten Typs handelt, um beispielsweise Syntax Highlighting und Indenting (sog. ''font-locking'') durchzuführen. So wird bei Dateien mit der Endung .c oder .cc (.cpp, .c++, .cxx, .C, .h, .hpp, .H, ...) automatisch der cc-mode geladen, der C- und C++-Dateien farbig anzeigt. Ähnliches gilt für Java-, Lisp- oder XML- und unzählige andere Dateien.<br />
<br />
Das Indenting (automatisches Einrücken) ist nicht jedermanns Sache. Es verwirrt auch leicht oder wird lästig, wenn es nicht den eigenen Gewohnheiten entspricht. Man kann es in gewissen Grenzen konfigurieren. Einige Modi bieten die Möglichkeit, es ganz abzuschalten, beispielsweise der cc-mode: (c-syntactic-indentation nil).<br />
<br />
Es macht sich sehr gut (und ist für die meisten Vorhaben völlig ausreichend), wenn man einen dired buffer benutzt und darin die Quelldateien auflistet. Dann kann man sehr schnell von einer Datei zur anderen wechseln. Dired kann übrigens auch als Client für Versionskontrollsysteme ([[cvs]], weitere?) benutzt werden.<br />
<br />
==== Browser für Quellcode ====<br />
Wer niveauvollere Möglichkeiten sucht, in seinen Quelltexten zu navigieren, dem stehen verschiedene Varianten zur Verfügung.<br />
<br />
Wer gewohnt ist, mit '''tags''' (beispielsweise [[ctags]]) zu arbeiten, kann seine tags-Dateien unter emacs benutzen:<br />
M-x tags-search RET oder M-x tags-apropos RET<br />
emacs listet daraufhin alle Vorkommen des gesuchten tags in einem eigenen buffer auf, so daß man sie einfach durchlaufen kann.<br />
<br />
Etwas anderes ist die '''Speedbar'''.<br />
M-x speedbar RET<br />
Dies öffnet ein (normalerweise separates) Fenster, das die aktuelle Quelldatei (oder ein ganzes Verzeichnis) nach bestimmten Regeln parst und quasi ein dynamisches Inhaltsverzeichnis mit den darin gefundenen Klassen und Funktionen anzeigt (screenshot [[http://cedet.sourceforge.net/img-gen/speedbar-3.png]]). Die Speedbar erfordert überlicherweise keinerlei Konfiguration und zeigt sofort brauchbare Ergebnisse, um sehr schnell zu navigieren. Es gibt mehrere Versuche, die Speedbar in einen buffer des aktuellen Fensters zu integrieren, damit nicht ein separates Fenster auf dem Bildschirm geöffnet wird (siehe [[http://www.emacswiki.org/emacs/sr-speedbar.el]]).<br />
<br />
Ein vergleichsweise komplexes Werkzeug ist der '''Emacs Code Browser''' (ECB [[http://ecb.sourceforge.net/]], screenshot [http://sourceforge.net/dbimage.php?id=215933]), der (zusammen mit der Bibliothek cedet) separat installiert werden muß:<br />
pacman -Sy cedet ecb<br />
Nicht vergessen, einen load-path in das Verzeichnis zu setzen. Dann kann man mit<br />
M-x ecb RET<br />
den ECB öffnen und erhält mehrere kleine Puffer, die Verschiedenes anzeigen. Man muß später noch ein wenig daran konfigurieren. Im Gegensatz zu Speedbar legt ECB Metainformationen in eigenen Dateien ab, weshalb ECB bzgl. der Quelldateien auch dateiübergreifende Informationen liefern und Operationen ausführen kann. ECB geht allerdings auf Kosten der Performance.<br />
<br />
==== Compilieren ====<br />
Das Compilieren (und Linken und alles, was man noch so darunter versteht) startet man unter emacs mit<br />
M-x compile RET<br />
Dies ruft normalerweise [[make]] auf, so daß ein Makefile im aktuellen Verzeichnis existieren sollte. Wer ein anderes Build-Werkzeug verwendet, kann dies konfigurieren. Die Ausgaben dieses Werkzeugs gelangen in den ''compilation buffer'', wo eventuelle Fehler später leicht durchlaufen werden können. In den übrigen Puffern kann man selbstverständlich weitereditieren.<br />
<br />
==== Debuggen ====<br />
Das Debuggen erfolgt üblicherweise mit [[gdb]], wofür emacs ein eigenes Frontend zur Verfügung stellt, den '''Grand Unified Debugger''' (GUD). Man startet ihn mit<br />
M-x gdb RET<br />
wobei nach dem Namen des executables gefragt wird, was man meist mit RET bestätigen kann. Man bekommt zunächst zwei Puffer, in einem läuft gdb mit seinem Prompt, in dem anderen wird die aktuelle Ausführungsposition in einer Quelldatei angezeigt.<br />
<br />
GUD beherrscht allerdings noch eine wesentlich komfortablere Darstellungsform mit Toolbar und mehreren kleinen Puffern, wo auch der stack frame, lokale Variablen, Watches usw. dargestellt werden (screenshot [[http://www.nick.uklinux.net/screenshot.png]]). Dazu muß man GUD aber explizit konfigurieren: (gdb-many-windows t).<br />
<br />
=== Emacs und (La)TeX ===<br />
Da sowohl emacs als auch TeX und LaTeX schon recht alt sind, nimmt es nicht wunder, dass es mehrere Versuche gegeben hat, die beiden Systeme miteinander zu verheiraten. Mitgeliefert mit emacs wird ein <code>tex-mode</code> und ein <code>latex-mode</code>. Weithin durchgesetzt hat sich allerdings das Paket AucTeX, da es wesentlich mächtiger und benutzerfreundlicher ist als die ursprünglichen Modi.<br />
<br />
AucTeX kann mit<br />
<pre><br />
pacman -S auctex<br />
</pre><br />
installiert werden.<br />
<br />
Die Aktivierung im emacs erfolgt z.B. über Einträge in der Datei <code>~/.emacs</code><br />
<pre><br />
;; Auctex<br />
(load "auctex.el" nil t t)<br />
(load "preview-latex.el" nil t t)<br />
(setq auto-mode-alist (cons '("\\.tex$" . LaTeX-mode) auto-mode-alist)<br />
auto-mode-alist (cons '("\\.dtx$" . LaTeX-mode) auto-mode-alist))<br />
</pre><br />
<br />
Dies stellt einen TeX-mode für Plain TeX, einen LaTeX-mode und inzwischen auch einen ConTeXt-mode zur Verfügung, und verknüpft Dateien mit den Endungen .tex bzw .dtx mit diesen Modi (man beachte die andere Schreibweisen). Die alten, emacs-eigenen Modi bleiben aber verfügbar. <br />
<br />
AucTeX kann über Menüs bedient und angepasst werden. Diese Menüs wird man für seltener benutzte Dinge auch nutzen wollen, aber für die grundlegenden Dinge muss man sich nur eine Tastenkombination merken: <code>C-c C-c</code> startet einen LaTeX (oder modiabhängig einen TeX-Lauf, wenn es nötig ist; ist es nicht nötig, bietet AucTeX gleich einen Viewer (Standard ist xpdf) an.<br />
<br />
Ansonsten gibt es zu AucTeX eine umfangreiche Dokumentation im Info-Format. <br />
<br />
Eine Möglichkeit, emacs selbst als Previewer für pdf-Dateien zu benutzen, wurde im englischsprachigen Forum zu Arch Linux aufgezeigt. Er nutzt den doc-view-mode, den emacs 23 erstmals liefert. Es ist damit sogar möglich, eine rudimentäre SyncTeX-Funktionalität (naja, fast) herzustellen. <br />
<br />
Zunächst ist folgender Code, sofern noch nicht vorhanden, in die <code>.emacs</code> einzufügen:<br />
<pre><br />
(server-start)<br />
(add-hook 'doc-view-mode-hook 'auto-revert-mode)<br />
</pre><br />
Dies startet zum einen emacs als Server (so dass das Programm <code>emacsclient</code> funktioniert), zum anderen sorgt es dafür, dass Änderungen an pdf-Dateien (z.B. nach einem LaTeX-Lauf) automatisch zu einer Aktualisierung des entsprechenden Buffers führen.<br />
<br />
Dann muss man noch über das AucTeX-Menü folgende Anpassung vornehmen: <br />
<pre><br />
LaTeX->Customize AUCTeX->(expand)->Tex command->Tex output view style<br />
</pre><br />
In dem Annpassungsbuffer nach <code>^pdf</code> suchen und das dort konfigurierte Kommando ändern zu:<br />
<pre><br />
emacsclient -e "(find-file \"%o\")"<br />
</pre><br />
<br />
Mit dvi-Dateien funktioniert dies möglicherweise völlig analog.<br />
<br />
=== News und Mail in emacs ===<br />
Emacs besitzt standardmäßig mehrere mail-Betriebsarten ('''mail''', '''mh''', '''rmail''') unterschiedlichen Funktionsumfangs, sowie einen universalen mail/news/rss-Client in Lisp ('''Gnus'''). Letzterer ist die umfassendste Variante, erfordert aber auch die komplexeste Konfiguration sowie einige Übung im Umgang. Dafür erhält man eines der leistungsfähigsten Programme dieser Art auf der Welt (screenshots [[http://upload.wikimedia.org/wikipedia/commons/c/c3/Gnus-reading-news.png]], [[http://stuff.mit.edu/iap/2009/emacs/images/gnus.png]]).<br />
<br />
M-x mail RET<br />
öffnet einen Puffer, in dem man eine E-Mail-Nachricht schreiben kann. Oben stehen ein paar Headerzeilen, die man ausfüllt, darunter der Text der Nachricht. Mit C-c C-c kann man diese Nachricht dann abschicken, wobei sie dem default-Programm zum Senden vom E-Mail übergeben wird, wahrscheinlich [[sendmail]], möglicherweise aber auch einer GUI-Applikation wie [[Thunderbird]].<br />
<br />
<br />
(wer kennt sich mit '''mh''' und/oder '''rmail''' aus? Ein paar Worte bitte ...)<br />
<br />
<br />
M-x gnus RET<br />
öffnet Gnus. man gelangt in den sog. ''group buffer'', in welchem (ggf. thematisch sortiert) die news groups aufgelistet sind, die der Benutzer abboniert hat. Dort erscheinen auch seine E-Mail-Postfächer sowie RSS-feeds. Jeweils neu eingetroffene Nachrichten werden hinter diesen Gruppen als Anzahl angezeigt und man kann durch RET in den ''summary buffer'' wechseln, um die Subjects und Poster der neuen Nachrichten zu sehen. Im summary buffer kann man wiederum RET drücken und gelangt in den ''article buffer'', wo man die ausgewählte Nachricht lesen und auch beantworten kann.<br />
<br />
Gnus kann POP3- und IMAP-Postfächer und selbst den Inhalt von Verzeichnissen auf der Festplatte abfragen, ist in der Lage, beim Senden und Empfangen verschiedene Verschlüsselungen anzuwenden und kann bedingt auch HTML rendern oder Artikel "waschen" (insbesondere solche, die von Outlook stammen). Gnus kann auch mit Hilfe des ''Gnus Agent'' als Offline-News-Reader eingesetzt werden. Dabei werden die Artikel lokal in einem Verzeichnis(baum) gespeichert. Gnus besitzt ausgeklügelte Filter- und Scoring-Möglichkeiten.<br />
<br />
Der Leistungsumfang von Gnus ist so vielfältig, daß ihm ein eigenes Manual gewidmet ist [http://www.gnu.org/software/emacs/manual/html_node/gnus/index.html]. Es lohnt sich, dieses Manual durchzuarbeiten, um die obligatorische Konfiguration durchführen zu können. Die resultierende Konfigurationsdatei .gnus ist zwar meist überschaubar, allerdings etwas knifflig in der Erstellung. Erschwert wird die Konfiguration dadurch, daß Gnus auf anderen Komponenten (message) aufbaut, die separat konfiguriert werden. Siehe ferner auch hier [http://www.emacswiki.org/cgi-bin/wiki/CategoryGnus]<br />
<br />
=== WWW in emacs ===<br />
Eine sehr interessante Erweiterung für Emacs ist das Lisp-Paket '''emacs-w3m''' [[http://emacs-w3m.namazu.org/]], eine Schicht, die es erlaubt, den Textbrowser [[w3m]] in Emacs laufen zu lassen, d.h. von Emacs aus vollständig zu bedienen. Man muß dann Emacs nicht mehr verlassen, um mal schnell eine Internetsuche durchzuführen.<br />
<br />
emacs-w3m wird nicht mitgeliefert. w3m (der eigentliche Browser) und emacs-w3m können über pacman installiert werden:<br />
pacman -Sy w3m emacs-w3m<br />
Man muß anschließend sehr wahrscheinlich einen load-path in seine .emacs einfügen, damit Emacs das Paket findet. Man startet emacs-w3m über<br />
M-x w3m RET<br />
Man kann emacs-w3m später konfigurieren, es wird aber auch ohne Konfiguration schon brauchbare Ergebnisse liefern.<br />
<br />
=== Weitere Betriebsarten ===<br />
* Chatten<br />
* Calendar<br />
* Todo-Listen<br />
* Lisp-Interpreter<br />
* Spiele<br />
* Twitter<br />
<br />
=== Emacs erweitern ===<br />
Emacs ist offen für Erweiterungen in Lisp. Man kann entweder bestehende Lisp-Dateien und -Pakete hinzufügen oder selbst welche schreiben. Es existieren zahlreiche Verzeichnisse, auf denen man sehr interessante Pakete für die unterschiedlichsten Zwecke findet, besonders die Emacs Lisp List (ELL [http://www.damtp.cam.ac.uk/user/sje30/emacs/ell.html]), die seit vielen Jahren schon existiert und immer noch gepflegt wird.<br />
<br />
Auf Unix-artigen Systemen wird man nicht im globalen Lisp-Verzeichnis Änderungen vornehmen wollen oder dürfen. Deshalb ist es ratsam, im home-Verzeichnis des Benutzers ein lokales Lisp-Verzeichnis anzulegen. Dieses ist in der .emacs mit einem load-path zu konfigurieren, damit emacs auch dort nach Lisp-Dateien sucht.<br />
<br />
Es empfiehlt sich, die dort liegenden .el-Dateien in .elc-Dateien zu compilieren, um die Ausführung etwas zu beschleunigen.<br />
<br />
== Dokumentation ==<br />
Emacs ist ''self documenting'', d.h. in jedem Belang ausführlich dokumentiert. Diese Dokumentation ist jederzeit im Editor selbst abrufbar. Man startet sie über<br />
C-h r<br />
und gelangt in den Emacs-eigenen Info-Browser. Den Umgang mit dem Info-System, der im GNU-Projekt allgemein verwendeten, hypertextartigen Alternative zu Man-Pages, muß man etwas üben. Die dazu nötigen Tasten stehen am oberen Rand des Puffers. Merken muß man sich vor allem u (up).<br />
<br />
Es gibt auch eine FAQ-Liste, die man über<br />
C-h C-f<br />
erreicht.<br />
<br />
Für elisp-Programmierer interessant sind außerdem die Funktionen ''describe-variable'' und '' describe-function''. Hier kann man Infos zu definierten Variablen bzw. Funktionen bekommen, deren Namen man allerdings ungefähr kennen muss.<br />
<br />
== Links ==<br />
* Gnu Emacs Manual (entspricht den mitgelieferten Info-Seiten, nur hier in HTML) [http://www.gnu.org/software/emacs/manual/html_node/emacs/index.html]<br />
* Gnu Emacs verwandte Seiten [http://www.gnu.org/software/emacs/manual]<br />
* Emacs-Einsteiger-Dokumentation auf SelfLinux [http://www.selflinux.org/selflinux/html/emacs.html]<br />
* EmacsWiki [http://www.emacswiki.org/cgi-bin/wiki/SiteMap]<br />
* Emacs Lisp List [http://www.damtp.cam.ac.uk/user/sje30/emacs/ell.html]<br />
* Eine Liste mit interessanten Erweiterungen (Lisp) [http://www.splode.com/~friedman/software/emacs-lisp/#ui]</div>PSubhttps://wiki.archlinux.de/index.php?title=Wyrd&diff=10704Wyrd2010-09-06T08:05:58Z<p>PSub: /* Installation */ Änderung wegen https://bbs.archlinux.de/viewtopic.php?id=17347</p>
<hr />
<div>Wyrd ist ein curses-basierendes Frontend für das Kalenderprogramm<br />
[[remind]].<br />
<br />
== Installation ==<br />
<br />
Um wyrd zu installieren, muss man folgenden Befehl ausführen:<br />
<br />
<pre>pacman -S wyrd</pre><br />
<br />
== Konfiguration ==<br />
<br />
Die globale Konfigurationsdatei, befindet sich in<br />
<br />
<pre>/etc/wyrdrc</pre><br />
<br />
Eine personalisierte Version kann man im home-Verzeichnis des<br />
jeweiligen Nutzer als .wyrdrc abspeichern.<br />
<br />
== Benutzung ==<br />
<br />
Um wyrd benutzen zu können, muss man wissen wie ein Eintrag in remind<br />
aufgebaut ist. Wyrd macht nicht viel mehr, als die Einträge graphisch<br />
darzustellen und das erstellen und bearbeiten der Einträge zu<br />
erleichtern. Es verbirgt nicht die Details von remind.<br />
<br />
Wyrd startet man, indem man wyrd in die Konsole eingibt. Die Oberfläche<br />
teilt sich auf in:<br />
<br />
* den größten Bereich (eine Art Zeitleise), die Einträge mit Start- und Enduhrzeit<br />
* rechts daneben, die ganztägigen Einträge<br />
* darüber einen kleinen Monats-Kalender, mit farblicher Markierung von Tagen mit vielen Einträgen<br />
* unten die Details zu selektierten Einträgen und eine Status/Kommando-Zeile<br />
<br />
Die Tastenbelegung kann in der Konfigurationsdatei beliebig geändert<br />
werden. Nach der Installation ist sie im Stil des Texteditors vim<br />
eingerichtet. Einige Beispiele: Mit '''j''' und '''k''' scrollt man in der Zeitleiste<br />
hoch und runter und mit '''h''' und '''l''' wechselt man zwischen<br />
Zeitleiste und den Tagesaktivitäten. Nutzt man die gleichen Tasten plus<br />
die Shift-Taste, bewegt man sich durch den kleinen Monatskalender. Mit<br />
'''e''' bzw. Enter editiert man bestehende Einträge und mit '''/'''<br />
durchsucht man den Kalender. Zum nächsten Suchergebnis kommt man mit<br />
'''n'''.<br />
<br />
Um einen Eintrag anzulegen selektiert man das gewünschte Datum und<br />
drückt für einen ganztäigen Eintrag '''u''' ansonsten '''t'''. Um<br />
schnell zu einen Datum zu gelangen kann man '''b''' für den aktuellen<br />
Tag und Uhrzeit drücken oder '''g''' um ein Datum einzugeben.<br />
<br />
Für weitere Informationen kann die Handbuchseite wyrd(1) oder das<br />
[http://pessimization.com/software/wyrd/manual.pdf Benutzerhandbuch] zu rate gezogen werden.<br />
<br />
<br />
== Weblinks ==<br />
[http://pessimization.com/software/wyrd/ Projektseite von wyrd]<br />
<br />
[[Kategorie:Konsole]]</div>PSub