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 08:41] – schon mal ne gute Vertsion 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 26: | Zeile 35: | ||
| - Infos über die Netzwerkkarte zwischenspeichern. Darauf achten, dass man in ein schreibbares und permanent abgelegtes (USB-Stick, lokale Platte) Dateisystem schreibt (wenn man z.B. in von einer LiveCD aus arbeitet) | - Infos über die Netzwerkkarte zwischenspeichern. Darauf achten, dass man in ein schreibbares und permanent abgelegtes (USB-Stick, lokale Platte) Dateisystem schreibt (wenn man z.B. in von einer LiveCD aus arbeitet) | ||
| - | - Treiber | + | - Treiber< |
| - | <sxh bash> | + | |
| - | sudo ethtool -i eth0 > / | + | |
| grep -i bus-info / | grep -i bus-info / | ||
| | | ||
| - | - aktuelle Mac-Adresse zwischenspeichern | + | - aktuelle Mac-Adresse zwischenspeichern< |
| - | | + | |
| - EEPROM-Dump ablegen (hier steht idR (zumindest bei Intel) auch die MAC an Adresse 0x0 in den 1. 6 bytes | - EEPROM-Dump ablegen (hier steht idR (zumindest bei Intel) auch die MAC an Adresse 0x0 in den 1. 6 bytes | ||
| - | - lesbar für den Fall das man etwas nachlesen will | + | - lesbar für den Fall das man etwas nachlesen will<sxh bash> |
| - | | + | - binär und wiederherstellbar durch direktes schreiben in den NVRAM< |
| - | - binär und wiederherstellbar durch direktes schreiben in den NVRAM | + | - zum sichergehen noch einmal das Offset suchen, bei Intel ist von Adresse 0 auszugehen, daher läss man sich mal Adresse 0 anzeigen zum prüfen und Vergleichen mit Punkt b.<sxh bash> |
| - | | + | |
| - | - zum sichergehen noch einmal das Offset suchen, bei Intel ist von Adresse 0 auszugehen, daher läss man sich mal Adresse 0 anzeigen zum prüfen und Vergleichen mit Punkt b. | + | |
| - | | + | |
| Offset Values | Offset Values | ||
| ------ ------ | ------ ------ | ||
| 0x0000: 94 c6 91 16 86 de</ | 0x0000: 94 c6 91 16 86 de</ | ||
| - | - zum Schreiben in den NVRAM benötigt man eine Magic-Number, | + | - zum Schreiben in den NVRAM benötigt man eine Magic-Number, |
| - | Die Magic Number kann dem Treiber Source-Code entnommen werden. | + | |
| - | FÜr Intel-Karten, | + | |
| - | | + | |
| - | | + | |
| 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: | |
| - | | + | sudo ethtool -E eth0 magic 0x15708086 offset 0x01 length 1 value 0x02 |
| - | + | sudo ethtool -E eth0 magic 0x15708086 offset 0x02 length 1 value 0x0a | |
| - | - nun nur noch eine neue Mac-Adresse aussuchen. Zum Beispiel diese hier 01: | + | sudo ethtool -E eth0 magic 0x15708086 offset 0x03 length 1 value 0x0b |
| - | <WRAP center round tip 60%> | + | sudo ethtool -E eth0 magic 0x15708086 offset 0x04 length 1 value 0x0c |
| + | sudo ethtool -E eth0 magic 0x15708086 offset 0x05 length 1 value 0x0d</ | ||
| Es hat sich herausgestellt, | Es hat sich herausgestellt, | ||
| </ | </ | ||
| - | <sxh bash> | + | |
| - | | + | ===== Hilfe ===== |
| - | sudo ethtool | + | ===== Bad Address beim Aufruf von ethtool -E ===== |
| - | sudo ethtool | + | Bis jetzt deutete das immer auf eine fehlerhafte Magic Number hin |
| - | sudo ethtool | + | |
| - | sudo ethtool | + | ===== Invalid MAC Address ===== |
| + | Nachdem man eine neue Mac-Adresse in den NVRAM geschrieben hat und auch keine Fehlermeldung von ethtool | ||
| + | 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 | ||
| + | * @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 | ||
| + | * @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