TLP – Entwicklerthread

blafoo

Moderator
Teammitglied
Themenstarter
Registriert
11 März 2011
Beiträge
7.998
Hi,

um die Entwicklungsthemen vom Support abzugrenzen mach ich mal einen eigenen Thread auf.

Ziel dieses Threads ist die Diskussion von Themen die Weiterentwicklung und Paketierung von TLP betreffen. Lesestoff: TLP Entwickler-Dokumentation

Supportanfragen sowie "Smalltalk" sind in diesem Thread "Off Topic" und somit unerwünscht.

Supportfragen also bitte hier posten -> klickmich. Danke für euer Verständnis.

Grüße Linnrunner

(Durch aufräumarbeiten ist der Thread nun in mein Eigentum übergegangen ^^)
 
Zuletzt bearbeitet:
Mein erster Post:


Salute,

du sag mal Linrunner, für die WakeOnLan-Funktion´en´ ... ist das mit ethX fest eingecoded?

Arch setzt ja inzwischen, je nach Netzwerkkarte und Einrichtungsstil auf enp0sXX-Kram m( http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/

Weil in den Configs hab ich halt WOL_DISABLE=Y gefunden, aber nicht auf welche Netzwerkkarte es geht.

Ich selber hab überall nur ethX-Schnitstellen und will ungerne für nen Test diese umbennen.

Sollte es fest drin sein, könntest du das ggf. in der Config variable machen? Afair schaut er ja nur nach ethXX-Schnitstellen, so hies es im IRC-Chat.

Grüße
 
Zuletzt bearbeitet:
Ja ist hardcoded. Habs mal auf meine Liste gesetzt. Besser wäre ein Scriptcode, der den(alle) Ethernetadapter automatisch erkennt. Hast Du da was?
 
Zuletzt bearbeitet:
In /sys/class/net stehen alle verfügbaren Netzwerkkarten drin.

Code:
for i in "$(ls -l /sys/class/net | grep -v virtual | awk ' { print $9 } ' )"; do 
     if [ "x$i" != "x" ]; then 
          echo $i ; 
     fi; 
done

Das wäre mein Ansatz .. aber ich vermute ziemlich stark das man das mit udev/anderen Tools wesentlich schöner hinbekommt.

Code:
disable_wake_on_lan () {  # disable WOL
    WOL_DISABLE=${WOL_DISABLE:-N}

    if [ "$WOL_DISABLE" = "Y" ]; then
        echo_debug "pm" "disable_wake_on_lan: y"
        for i in "$(ls -l /sys/class/net | grep -v virtual | awk ' { print $9 } ' )"; do            
            if [ "x$i" != "x" ]; then
                 $ETHTOOL -s $i wol d > /dev/null 2>&1 
              fi;
       done

    fi

    return 0
}

Doooofer CodeBlock :D

https://www.nerdstube.de/paste/1015/
 
Zuletzt bearbeitet:
So, ich hoffe, ich habe die richtigen Beiträge beim Umhängen erwischt - wenn nicht, einfach nochmal Laut geben, bitte...
 
- ebenfalls gelöscht -
 
Zuletzt bearbeitet:
/sys/class/net/* kenn ich natürlich, aber dein Code trennt nicht die reinen Ethernetadapter von dem anderen Zeuch (WLAN, VPN, lo, ...). Die Attribute in den Unterverzeichnissen geben auch nichts her bzw. ich hab noch nichts LAN-spezifisches gefunden. Bei WLAN war das einfacher (siehe).

ps. und einfach alles per ethtool zu beglücken finde ich mindestens inperformant ...
 
Zuletzt bearbeitet:
wie wäre es mit einer kombination aus /sys/class/net/*/type und /sys/class/net/*/wireless? in type steht bei lan und wlan jeweils 1 drin, doch nur bei wlan ist wireless vorhanden. lo dagegen hat 772 in type stehen

edit:
oder /sys/class/net/*/device/class?
lan: 0x020000
wlan: 0x028000
 
Zuletzt bearbeitet:
(Open)VPN, KVM-Bridges, WWAN haben auch type:1 ...
 
Zuletzt bearbeitet:
Wenn ich morgen am x220 sitzte hab ich wwan, vpn wlan und eth an .. dann find ich schon ne feine Lösung ;)

Grüße
 
Rein namensbasierende Ansätze halte ich hier nicht für brauchbar, da sich die Namen recht beliebig ändern können (udev, nameif, ...).

blafoo schrieb:
Oder andersherrum gesucht .. so schaut er nur nach eth / enp :)

https://www.nerdstube.de/paste/1017/
Das grep-Kommando deckt da nicht alle neuen Namen ab:
Code:
grep -E 'eth|en[posx]'
# oder einfach nur
grep -E 'eth|en'

So abgeändert werden alle 4 en* Varianten erkannt (kann man noch verfeinern, falls nötig).


yatpu schrieb:
oder /sys/class/net/*/device/class?
lan: 0x020000
wlan: 0x028000

Der Ansatz scheint mir zielführend, müsste man halt noch überprüfen, ob das "immer" funktioniert. Virtuelle Interfaces werden jedenfalls recht zuverlässig ausgeschlossen.

vg,
dywi
 
Moin Moin,

Najo .. natürlich kann so nich jeder Eintrag erfasst werden .. daher ja auch meine Idee am anfang: Das einfach per config konfigurierbar machen.

Folgende Devices hab ich zur Zeit unter /sys/class/net/

Code:
eth0
lo
tap0
vboxnet0
vboxnet1
wlan0
wwan0

Nur bei wlan0 und bei eth0 gibts die Class Datei, und in diesen sind die gleichen Werte wie bei dir.

Ergo könnte man das als Ansatz nutzten .. Script kommt gleich ;)

​Grüße
 
Nur bei wlan0 und bei eth0 gibts die Class Datei, und in diesen sind die gleichen Werte wie bei dir.

Ergo könnte man das als Ansatz nutzten .. Script kommt gleich ;)

Ich denke, es wäre von Vorteil, die eth-Suche von der WOL-Funktion zu trennen, so dass man zu Testzwecken ein tlp ethlist-Kommando einbauen kann.

in tlp-functions dann etwa wie folgt:

Code:
# void get_eth_devices ( **ETH_DEVICES! )
#
#  Scans /sys/class/net for wired network interfaces.
#
get_eth_devices() {
   ETH_DEVICES=

   local sysif
   for sysif in /sys/class/net/?*; do
      # ueberpruefen und bei Erfolg ifname zu ETH_DEVICES hinzufuegen
      if ...; then
         # (sh kann kein VARIABLE+=WERT)
         ETH_DEVICES="${ETH_DEVICES} ${sysif##*/}"
      fi
   done
   ETH_DEVICES="${ETH_DEVICES# }"
}


disable_wake_on_lan () { # disable WOL

   # wie gehabt, nur
   local ifname ETH_DEVICES
   get_eth_devices
   for ifname in ${ETH_DEVICES}; do ... ; done
}
 
Zuletzt bearbeitet:
Danke schon mal für Eure Ideen. Übrigens braucht ihr es gar nicht fertig zu coden, mir geht es nur um den Ansatz die Adapter zu unterscheiden.

@yatpu: /sys/class/net/*/device/class sieht vielversprechend aus, werde ich mir mal anschauen :)
 
Zuletzt bearbeitet:
Des habsch doch schon reingepackt Linrunner´sche :))

Ich sortier alles raus was wwan/wlan/virtual ist. Das was überbleibt wird mit net/*/class verglichen ;)

Weil "nur" wired Lan und wirerless Lan haben eine */class-Datei. Wenn diese nicht da ist kann es schon mal nicht eins von beiden sein. Und wenn die da ist wird halt geschaut welche ID drin ist. Wenn eine wired ID drin steht wird ethtool drauf ausgeführt :)

Grüße
 
UsrMove

@blafoo: Du schriebst im anderen Thread:
-- Update im Archlinux AUR --
0.3.9-6 ist da nun Verfügbar.
Änderungen:
Ich veränder mit SED das Makefile ->
/bin/true -> /usr/bin/true
/usr/sbin -> /usr/bin (jaja .. es gibt kein sbin mehr unter Arch -.- /usr/sbin istn link auf /usr/bin)
/lib/udev -> /usr/lib/udev/
Nun ist das AUR-Paket komplett Arch-Konform .. es lief zwar vorher auch, aber fand ich nich soo hübsch, zudem gabs wohl Probleme damit das Pacman nicht erkannt hat das die Dateien zu dem passenden Paket gehört.
Ich hab mir noch mal die ursprünglichen Proposals zum Thema "UsrMove" angeschaut:
Dort steht nichts davon sbin/ in bin/ aufgehen zu lassen, das ist also offensichtlich eine Arch-Besonderheit: https://www.archlinux.org/news/binaries-move-to-usrbin-requiring-update-intervention/https://mailman.archlinux.org/pipermail/arch-dev-public/2012-March/022625.html

Als Upstream bleibe ich beim kleinsten gemeinsamen Nenner und trenne weiterhin nach bin/ und sbin/. Alles weitere muss in den Distri-Paketen gelöst werden.

Was das Makefile anbelangt, werde ich in der nächsten TLP-Version die unnötigen absoluten Pfade für true einfach entsorgen.
 
  • ok1.de
  • ok2.de
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben