방법 # 4는 명령 줄 인수를 위해 커널 내에 할당 된 페이지 수를 수동으로 늘리는 과정입니다. include / linux / binfmts.h 파일을 보면 맨 위에 다음이 있습니다.
/*
* 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
명령 행 인수 전용의 메모리 양을 늘리려면 MAX_ARG_PAGES 값을 더 높은 숫자로 제공하면됩니다. 이 편집 내용이 저장되면 평소처럼 재 컴파일, 설치 및 새 커널로 재부팅하면됩니다.
내 테스트 시스템에서는이 값을 64로 올려서 모든 문제를 해결할 수있었습니다. 광범위한 테스트 후에 스위치 이후 단일 문제가 발생하지 않았습니다. 이것은 이후에도 완전히 기대됩니다.MAX_ARG_PAGES
64 설정 내가 생산할 수있는 가장 긴 명령 줄은 오늘날의 시스템 하드웨어 표준이 아닌 256KB의 시스템 메모리 만 차지할 됩니다.
방법 # 4의 장점은 분명하다. 이제 정상적으로 평소처럼 명령을 실행할 수 있으며 성공적으로 완료됩니다. 단점도 똑같이 분명합니다. 명령 행에서 사용 가능한 메모리 양을 사용 가능한 시스템 메모리 양보다 늘리면 자체 시스템에 DOS 공격을 작성하여 충돌을 일으킬 수 있습니다. 특히 다중 사용자 시스템에서는 모든 사용자에게 추가 메모리가 할당되므로 약간만 증가해도 큰 영향을 줄 수 있습니다. 따라서 방법 # 4가 적합한 옵션인지 판단하는 가장 안전한 방법이므로 항상 자신의 환경에서 광범위하게 테스트하십시오.
나는 그 제한이 심각하게 성가신 것에 동의합니다.