Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| linux:changemacnvramethtool [2026/02/12 16:28] – eine formatierte Version devnull | linux:changemacnvramethtool [2026/02/12 17:17] (aktuell) – hinweis devnull | ||
|---|---|---|---|
| Zeile 14: | Zeile 14: | ||
| ===== Vorbereitungen ===== | ===== Vorbereitungen ===== | ||
| ==== Intel e1000 ==== | ==== Intel e1000 ==== | ||
| - | |||
| - | |||
| Intel e1000 und e1000e haben einen NVM Schreibschutz, | Intel e1000 und e1000e haben einen NVM Schreibschutz, | ||
| - fahre den Rechner herunter | - fahre den Rechner herunter | ||
| Zeile 21: | Zeile 19: | ||
| -> für andere Module/ | -> für andere Module/ | ||
| + | |||
| + | ==== Magic Numbers ==== | ||
| + | Wenn Sie in den NVRAM schreiben wollen, benötigen Sie eine MagicNumber, | ||
| + | Diese Nummer wird vom Hersteller der Netzwerkkarte festgelegt und ist im Zweifel ein Geheimnis. Wenn Sie aber ein taugliches Kernel-Modul für Ihre Netzwerkkarte verwenden, also ein solches mit ethtool Interface, dann können Sie die Magic-Number im Kernel Source zur Ihrem Modul finden. Hier der Pfad zu den Treibern: [[https:// | ||
| + | |||
| + | Magic Numbers werden imm Hexadezimal, | ||
| + | Folgend die bekannten Magic-Numbers bzw. ihre Bildungsregel in einer Tabelle. | ||
| + | |||
| + | ^Hersteller ^Kartentyp ^Kernelmodul ^MagicNumber ^Beispiel ^ | ||
| + | |Intel|e1000, | ||
| + | |||
| ===== Vorgang Änderung ===== | ===== Vorgang Änderung ===== | ||
| Zeile 40: | Zeile 49: | ||
| 00:1f.6 0200: 8086:1570 (rev 21) | 00:1f.6 0200: 8086:1570 (rev 21) | ||
| </ | </ | ||
| - | - nun nur noch eine neue Mac-Adresse aussuchen. Zum Beispiel diese hier 01: | + | - nun nur noch eine neue Mac-Adresse aussuchen. Zum Beispiel diese hier 01: |
| - | <WRAP center round tip 60%> | + | |
| - | Es hat sich herausgestellt, | + | |
| - | </ | + | |
| - | <sxh bash> | + | |
| sudo ethtool -E eth0 magic 0x15708086 offset 0x01 length 1 value 0x02 | sudo ethtool -E eth0 magic 0x15708086 offset 0x01 length 1 value 0x02 | ||
| sudo ethtool -E eth0 magic 0x15708086 offset 0x02 length 1 value 0x0a | sudo ethtool -E eth0 magic 0x15708086 offset 0x02 length 1 value 0x0a | ||
| sudo ethtool -E eth0 magic 0x15708086 offset 0x03 length 1 value 0x0b | sudo ethtool -E eth0 magic 0x15708086 offset 0x03 length 1 value 0x0b | ||
| sudo ethtool -E eth0 magic 0x15708086 offset 0x04 length 1 value 0x0c | sudo ethtool -E eth0 magic 0x15708086 offset 0x04 length 1 value 0x0c | ||
| - | sudo ethtool -E eth0 magic 0x15708086 offset 0x05 length 1 value 0x0d</ | + | sudo ethtool -E eth0 magic 0x15708086 offset 0x05 length 1 value 0x0d</ |
| + | Es hat sich herausgestellt, | ||
| + | </ | ||
| + | |||
| + | ===== Hilfe ===== | ||
| + | ===== Bad Address beim Aufruf von ethtool -E ===== | ||
| + | Bis jetzt deutete das immer auf eine fehlerhafte Magic Number hin | ||
| + | |||
| + | ===== Invalid MAC Address ===== | ||
| + | Nachdem man eine neue Mac-Adresse in den NVRAM geschrieben hat und auch keine Fehlermeldung von ethtool bekam, kann es dennoch sein, dass es Quatsch war, was man rein schrieb. | ||
| + | Ich " | ||
| + | Beim nächsten Boot des Systems bemängelte der Kernel: <wrap hi> | ||
| + | |||
| + | Diese Meldung wird von der Methode '' | ||
| + | |||
| + | **Die Lösung sieht wir folgt aus:** | ||
| + | * Kernel als Source herunterladen | ||
| + | * Datei **include/ | ||
| + | * die Methode muss dazu gebracht werden, immer true zurückzugeben, | ||
| + | * is_valid_ether_addr - Determine if the given Ethernet address is valid | ||
| + | * @addr: Pointer to a six-byte array containing the Ethernet address | ||
| + | * | ||
| + | * Check that the Ethernet address (MAC) is not 00: | ||
| + | * a multicast address, and is not FF: | ||
| + | * | ||
| + | * Return: true if the address is valid. | ||
| + | * | ||
| + | * Please note: addr must be aligned to u16. | ||
| + | */ | ||
| + | static inline bool is_valid_ether_addr(const u8 *addr) | ||
| + | { | ||
| + | /* FF: | ||
| + | * explicitly check for it here. */ | ||
| + | return !is_multicast_ether_addr(addr) && !is_zero_ether_addr(addr); | ||
| + | }</ | ||
| + | * is_valid_ether_addr - Determine if the given Ethernet address is valid | ||
| + | * @addr: Pointer to a six-byte array containing the Ethernet address | ||
| + | * | ||
| + | * Check that the Ethernet address (MAC) is not 00: | ||
| + | * a multicast address, and is not FF: | ||
| + | * | ||
| + | * Return: true if the address is valid. | ||
| + | * | ||
| + | * Please note: addr must be aligned to u16. | ||
| + | */ | ||
| + | static inline bool is_valid_ether_addr(const u8 *addr) | ||
| + | { | ||
| + | return true | ||
| + | }</ | ||
| + | * den Kernel konfigurieren | ||
| + | * den Kernel kompilieren | ||
| + | * die Module kompilieren | ||
| + | * den neuen Kernel booten | ||
| + | * <WRAP center round alert 60%> | ||
| + | Dieser Kernel sollte nicht produktiv verwendet werden, sondern nur für die Reparatur dieses Fehlers. | ||
| + | </ | ||
×
iphelper toolbox
you see this when javscript or css is not working correct
Untested