O método 4 envolve aumentar manualmente o número de páginas alocadas no kernel para argumentos da linha de comando. Se você observar o arquivo include / linux / binfmts.h, encontrará o seguinte na 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 a quantidade de memória dedicada aos argumentos da linha de comando, você simplesmente precisa fornecer o valor MAX_ARG_PAGES com um número maior. Depois que essa edição é salva, basta recompilar, instalar e reiniciar no novo kernel, como faria normalmente.
No meu próprio sistema de teste, consegui resolver todos os meus problemas aumentando esse valor para 64. Após testes extensivos, não tive um único problema desde a troca. Isso é totalmente esperado, já que, mesmo com MAX_ARG_PAGES
definido como 64, a maior linha de comando possível que eu poderia produzir ocuparia apenas 256 KB de memória do sistema - não muito pelos padrões de hardware do sistema de hoje.
As vantagens do método # 4 são claras. Agora você pode simplesmente executar o comando como faria normalmente, e ele é concluído com êxito. As desvantagens são igualmente claras. Se você aumentar a quantidade de memória disponível para a linha de comando além da quantidade de memória disponível no sistema, poderá criar um ataque do DOS no seu próprio sistema e causar uma falha. Em sistemas multiusuário, em particular, mesmo um pequeno aumento pode ter um impacto significativo, pois cada usuário recebe a memória adicional. Portanto, sempre teste extensivamente em seu próprio ambiente, pois essa é a maneira mais segura de determinar se o Método 4 é uma opção viável para você.
Concordo que a limitação é seriamente irritante.