Bei Methode 4 wird die Anzahl der Seiten, die im Kernel für Befehlszeilenargumente zugeordnet sind, manuell erhöht. Wenn Sie sich die Datei include / linux / binfmts.h ansehen, finden Sie im oberen Bereich Folgendes:
/*
* MAX_ARG_PAGES defines the number of pages allocated for arguments
* and envelope for the new program. 32 should suffice, this gives
* a maximum env+arg of 128kB w/4KB pages!
*/
#define MAX_ARG_PAGES 32
Um den für die Befehlszeilenargumente reservierten Speicherplatz zu erhöhen, müssen Sie lediglich den Wert MAX_ARG_PAGES mit einer höheren Zahl versehen. Sobald diese Änderung gespeichert ist, kompilieren Sie den neuen Kernel erneut, installieren Sie ihn und starten Sie ihn neu, wie Sie es normalerweise tun würden.
Auf meinem eigenen Testsystem konnte ich alle meine Probleme lösen, indem ich diesen Wert auf 64 erhöhte. Nach ausgiebigen Tests habe ich seit dem Wechsel kein einziges Problem mehr festgestellt. Dies ist völlig zu erwarten, da selbst mit MAX_ARG_PAGES
64 die längste mögliche Befehlszeile, die ich erzeugen könnte, nur 256 KB Systemspeicher belegen würde - nach heutigen Systemhardwarestandards nicht sehr viel.
Die Vorteile von Methode 4 liegen auf der Hand. Sie können den Befehl jetzt einfach wie gewohnt ausführen und er wird erfolgreich ausgeführt. Die Nachteile liegen auf der Hand. Wenn Sie den für die Befehlszeile verfügbaren Speicher über den verfügbaren Systemspeicher hinaus erhöhen, können Sie einen DOS-Angriff auf Ihr eigenes System ausführen und zum Absturz bringen. Insbesondere bei Mehrbenutzersystemen kann eine geringfügige Erhöhung erhebliche Auswirkungen haben, da dann jedem Benutzer der zusätzliche Arbeitsspeicher zugewiesen wird. Testen Sie daher immer ausgiebig in Ihrer eigenen Umgebung, da dies die sicherste Methode ist, um festzustellen, ob Methode 4 für Sie in Frage kommt.
Ich bin damit einverstanden, dass die Einschränkung sehr ärgerlich ist.