El método # 4 implica aumentar manualmente el número de páginas que se asignan dentro del núcleo para argumentos de línea de comandos. Si observa el archivo include / linux / binfmts.h, encontrará lo siguiente cerca de la parte superior:
/*
* 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
Para aumentar la cantidad de memoria dedicada a los argumentos de la línea de comandos, simplemente debe proporcionar el valor MAX_ARG_PAGES con un número mayor. Una vez que se guarda esta edición, simplemente recompile, instale y reinicie en el nuevo núcleo como lo haría normalmente.
En mi propio sistema de prueba, logré resolver todos mis problemas elevando este valor a 64. Después de extensas pruebas, no he experimentado un solo problema desde el cambio. Esto es completamente esperado ya que incluso con el MAX_ARG_PAGES
conjunto a 64, la línea de comando más larga posible que podría producir solo ocuparía 256 KB de memoria del sistema, no mucho para los estándares de hardware del sistema actuales.
Las ventajas del Método # 4 son claras. Ahora puede simplemente ejecutar el comando como lo haría normalmente, y se completa con éxito. Las desventajas son igualmente claras. Si aumenta la cantidad de memoria disponible para la línea de comandos más allá de la cantidad de memoria disponible del sistema, puede crear un ataque de DOS en su propio sistema y hacer que se bloquee. En los sistemas multiusuario en particular, incluso un pequeño aumento puede tener un impacto significativo porque a cada usuario se le asigna la memoria adicional. Por lo tanto, siempre realice pruebas exhaustivas en su propio entorno, ya que esta es la forma más segura de determinar si el Método # 4 es una opción viable para usted.
Estoy de acuerdo en que la limitación es muy molesta.