• Café
  • Nützliches für die /etc/rc.local?

Was habt ihr für nützliche Dinge in der /etc/rc.local? (rc.local wird nach der Systeminitialisierung und dem Start der DAEMONS in der rc.conf ausgeführt)

Bitte keine Tips, die (wahrscheinlich) nur auf euer System/Umgebung zutreffen, nützlich sind ;-)

Fange ich mal an:
# save kernel dmesg if not exist
[ -f /root/dmesg/$(uname -r)-dmesg ] || dmesg > /root/dmesg/$(uname -r)-dmesg
Das sichert mir für den aktuellen Kernel einmal die dmesg-Ausgabe (hier nach /root/dmesg/) wenn diese noch nicht existiert.
Erscheint mir als nützlich, um *nach* Kernelupdates vergleichen zu können wenn irgendwas nicht funktioniert wie erwartet. Den "alten" Kernel kann man ja nicht mehr (ohne Verrenkungen) starten... Außerdem kann ich anhand der Zeitstempel sehen, wie rasant<g> Kernelupdates einschlagen...
Also als Standard hab ich für meine CPU ein anderes stepup-Verhalten eingretragen:
(sleep 10 && echo -n 55 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold) &
Damit reagiert das System zackiger, wenn mehr Leistung gebraucht wird. Is aber immer ganz CPU-abhängig. Auf meinem eeePC brauch ich das nicht und tut dem Akku noch gut.

EDIT:
Das sleep hab ich drin, da der cpufreq Dienst im Hintergrund gestartet wird - zur Sicherheit.
also ich habe nur was fürs CPU Speedstepping drin (lässt sich ja auch auf andere REchner übertragen 😉 )
# set CPU Freq Scaling Governor
echo "ondemand" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo "ondemand" > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
echo "ondemand" > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor
echo "ondemand" > /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor
damit brauch ich den ganzen cpufrequtils kram dann nicht, reicht so völlig aus es müssen nur die nötigen module in die rc.conf eingetragen werden.
hier sind das z.B.: acpi-cpufreq und cpufreq_ondemand
@SiD:
das sollte auch kürzer gehen:
echo "ondemand" > /sys/devices/system/cpu/cpu[$(< /sys/devices/system/cpu/present)]/cpufreq/scaling_governor
Der Bereich in cpu[] würde dann bei dir zu cpu[0-3] ausgewertet.

//Edit: Wobei ich denke, daß bei dir mit 4 Kernen in /sys/devices/system/cpu/present 0-3 drinsteht, und nicht doch eine andere Syntax wie 0-1-2-3 (Habe hier nur ein Dualcore. Außerdem ist besser /sys/devices/system/cpu/online zum Auslesen zu verwenden.
Oder halt simpel bei dir [0-3], du weißt ja wieviele Kerne du hast...
Ich hab da eigentlich nur
ip link set dev eth0 down
macchanger -e -a eth0
ip link set dev eth0 up
drin stehen. Erzeugt bei jedem Boot eine zufällig generierte neue MAC-Adresse. Für die Paranoiden unter uns. 😉
Ich mounte da meine Netzlaufwerke, die ich in der fstab stehen habe, weil die sich irgendwie weigern gemountet zu werden, so lange nicht alles da ist.
Viel drin 😉 Vbox-Gedöns, Stromsparzeug aber auch:
### Symlinks, udev has broken them...
ln -s /dev/sr0 /dev/cdrom
ln -s /dev/sr0 /dev/dvd

### Wake up Blackbox
(sleep 90 && wol "00:xx:xx:xx:xx:xx") &
Die Symlinks brauche ich ab und an doch und aufwecken kann man meine "Blackbox" im Keller auch erst wenn Wicd das Netzwerk aufgespannt hat 🙂
SiD schriebalso ich habe nur was fürs CPU Speedstepping drin (lässt sich ja auch auf andere REchner übertragen 😉 )
# set CPU Freq Scaling Governor
echo "ondemand" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo "ondemand" > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
echo "ondemand" > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor
echo "ondemand" > /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor
Das hab ich auch - allerdings nur für 2 Prozessoren, mehr waren nicht im Budget 😛

Dazu noch
echo 28 25 13 10 > /sys/devices/system/cpu/cpu0/cpufreq/phc_vids
echo 28 25 13 10 > /sys/devices/system/cpu/cpu1/cpufreq/phc_vids
zur Absenkung der Kernspannung 🙂
bash -c "cat /proc/kmsg > /dev/tty4"&
Ich war von SuSE gewohnt, dass die kernel-messages in tty10 landen und da Arch das per default nicht macht und ich nur die ersten 3 ttys nutze hab ich das vor Ewigkeiten mal nach tty4 umgebogen.

... und je nach Bedarf noch rfkill-Anweisungen um Modem/BT/WLAN nach dem Boot stromlos zu setzen.


... und GerBras hinweise werde ich demnächst vielleicht auch mal umsetzen - aber jetzt ist schon spät 😛
chepaz schrieb
### Symlinks, udev has broken them...
ln -s /dev/sr0 /dev/cdrom
ln -s /dev/sr0 /dev/dvd
Warum nicht sauberer und so gedachter eine UDEV-Regel?
KERNEL=="sr0", NAME="dvd"
KERNEL=="sr0", NAME="cdrom"
*schäm* ich wusste gar nicht, das sich mir cpufrequtils komplett sparen kann.
GerBra schrieb@SiD:
das sollte auch kürzer gehen:
echo "ondemand" > /sys/devices/system/cpu/cpu[$(< /sys/devices/system/cpu/present)]/cpufreq/scaling_governor
Dafür aber auch komplizierter. 😉

Sooo fit bin ich mit Bash nicht, und müsste dann immer erstmal überlegen, was das denn nun macht. Bei meiner Lösung sehe ich das mit einem Blick. 🙂
SiD schrieb Dafür aber auch komplizierter. 😉
Sooo fit bin ich mit Bash nicht, und müsste dann immer erstmal überlegen, was das denn nun macht. Bei meiner Lösung sehe ich das mit einem Blick. 🙂
Kurz, damit ich in meinem Thread <g> nicht vollkommen OT werde ;-)
Meine Änderung funktioniert auf jedem Rechner, deine (sinnvoll) nur wer auch 4 Kerne hat. Ist eigentlich ganz einfach:
Die Magie nennt sich "brace expansion" der Shells und erlaubt Reihen(Slices) oder Auswahlen in einem Shellausdruck. Beliebtes (und realitätsnahes) Beispiel: Erstellen Sie Jahresordner im Ordner Ablage von 2012 bis 2040. Der "gewöhnliche Explorer/Dateimanager-User" steht nun vor einer länger Maus-Tastaur-Orgie, der Wissende Shelluser tippt:
mkdir -p Ablage/{2012..2040}
und geht sich einen Kaffee holen... (Das funktioniert prächtig mit Ganzzahlen, schreibend/lesend in der Form mit {}, in der im cpufreq-Beispiel verwendeten Form mit [] nur lesend, auch bei 1-5 gibt es Unterschiede zu 1..5, ich nutze nmeist die Punktform(..))

Statt nun viermal deinen Aufruf (cpu0 bis cpu3) zu starten kannst du dir eben auch die Form
/sys/devices/system/cpu/cpu[0-3]/cpufreq/scaling_governor
zunutze machen. Vorteil (abseits des Kürzeren): Wenn du am Befehl was ändern mußt, dann muß das nur einmal geschehen.

Und:
$(< /sys/devices/system/cpu/present) ließt nun die Anzahl der verfügbaren Kerne aus (cpu/online wäre besser, da die aktiven CPUs). Die Ausgabe (kannst du dir anschauen) ist nun schon in der für die Klammergeschichte notwendigen Form "0-3" - bei Dir, bei mir ergibt es da 0-1. So verwenden wir das dynamische Abfrageergebniss gleich im/für den gesamzen Befehlsaufruf.
In allen rc.locals bei mir steht
echo keycode 58 = Escape | loadkeys -
das macht Caps-Lock in der Konsole zu Escape. Auf dem Notebook habe ich dann noch zuätzlich
echo 0 > /sys/devices/platform/thinkpad_acpi/bluetooth_enable
echo 10 > /sys/module/snd_hda_intel/parameters/power_save
echo Y > /sys/module/snd_hda_intel/parameters/power_save_controller
Das schaltet Bluetooth aus und den Soundchip wenn er 10 Sekunden nicht in Gebrauch war.
GerBra schrieb Meine Änderung funktioniert auf jedem Rechner, deine (sinnvoll) nur wer auch 4 Kerne hat.
Deine Änderung funktioniert auf jedem Rechner bei der die Shell brace-expansion kennt, POSIX-konform ist das nicht. Wenn man die rc.local durch dash ausführen lässt dann würde das nicht funktionieren.
GerBra schriebMeine Änderung funktioniert auf jedem Rechner...
Also bei mir funktioniert sie nicht 😛
$ echo "ondemand" > /sys/devices/system/cpu/cpu[$(< /sys/devices/system/cpu/present)]/cpufreq/scaling_governor
bash: /sys/devices/system/cpu/cpu[$(< /sys/devices/system/cpu/present)]/cpufreq/scaling_governor: Mehrdeutige Umlenkung.
$ echo "ondemand" > /sys/devices/system/cpu/cpu[0-3]/cpufreq/scaling_governor
bash: /sys/devices/system/cpu/cpu[0-3]/cpufreq/scaling_governor: Mehrdeutige Umlenkung.
$echo "ondemand" > /sys/devices/system/cpu/cpu{0..3}/cpufreq/scaling_governor
bash: /sys/devices/system/cpu/cpu{0..3}/cpufreq/scaling_governor: Mehrdeutige Umlenkung.
Wäre mir auch neu dass das so ginge.
Ich machs so:
for cpu in /sys/devices/system/cpu/cpu?; do
	echo ondemand > $cpu/cpufreq/scaling_governor
done
jefaridas schrieb Also bei mir funktioniert sie nicht 😛
$ echo "ondemand" > /sys/devices/system/cpu/cpu[$(< /sys/devices/system/cpu/present)]/cpufreq/scaling_governor
bash: /sys/devices/system/cpu/cpu[$(< /sys/devices/system/cpu/present)]/cpufreq/scaling_governor: Mehrdeutige Umlenkung.
Oh, sorry, das hätte ich auch mal testen sollen. in der zsh funktioniert die "mehrdeutige Umleitung" (also das: echo "ondemand" umgeleitet an gleichzeitig mehrere Ziele). In der bash so nicht, falle ich jedesmal wieder drauf rein...
Hier muß man (wenn man es dann so machen will, ohne for-Schleife) dann zusätzlich tee benutzen. tee schickt die Ausgabe an mehrere Files. Funktionieren (diesmal getestet <g>) wäre dann:
echo "ondemand" | tee /sys/devices/system/cpu/cpu[$(< /sys/devices/system/cpu/online)]/cpufreq/scaling_governor >/dev/null 
Die abschließende Umleitung nach /dev/null ist nötig weil tee eben die Eingabe zusätzlich noch nach stdout ausgibt.

Ist halt Geschmacks (und Verständnis)-Sache ob man das so will, wichtig ist halt (wie Sid sagt): ich muß damit umgehen können und muß es in 3 monaten auch noch verstehen...

//Edit: oder man nutzt gleich eine "Hochsprache" wie ruby, perl, phyton, basic <g> als rc.local Skript(sprache), dann hat man wesentlich mehr Freiheiten... ;-)
GerBra schriebwichtig ist halt (wie Sid sagt): ich muß damit umgehen können und muß es in 3 monaten auch noch verstehen...
Vor allem das "in 3 Monaten noch verstehen" 😉
Dirk Sohler schrieb Warum nicht sauberer und so gedachter eine UDEV-Regel?
Weil die Überraschung über die verschwundenen Symlinks so groß war das ich keine Lust hatte mich auch noch mit udev zu beschäftigen.
Wo braucht man diese Symlinks eigentlich noch?
$ grep sr0 .mplayer/config
dvd-device=/dev/sr0

$ type lsdvd
lsdvd ist ein Alias von `lsdvd /dev/sr0'.
Dirk Sohler schriebWo braucht man diese Symlinks eigentlich noch?
Gute Frage 😉 Iirc hat damals irgend ein Mediaplayer oder -konverter gestreikt. Vielleicht sollte ich die Symlinks einfach mal rausnehmen und schauen was passiert.
Dirk Sohler schriebWo braucht man diese Symlinks eigentlich noch?
Damit man nicht jedes Programm, das auf das Laufwerk zugreifen will, einzeln von Hand umstellen muss?