후속 매개변수가 Linux 커널 명령줄의 이전 매개변수를 덮어쓰나요, 아니면 그 반대인가요?

후속 매개변수가 Linux 커널 명령줄의 이전 매개변수를 덮어쓰나요, 아니면 그 반대인가요?

이는 다음으로 인해 발생합니다.다른 곳에서 또 다른 질문, 간단히 온라인 검색("리눅스 커널 명령줄 재정의 우선순위" 및 몇 가지 변형)을 수행한 후에는 아무 것도 나오지 않았습니다.

문제는 /proc/cmdline특정 매개변수가 다른 값으로 두 번 포함되었음을 나타냅니다. 내 질문은 그 일이 왜, 어떻게 일어났는가에 관한 것이 아닙니다., 즉 어느 쪽이 우선인가 하는 것입니다. 즉, 다음을 명령줄로 사용합니다.

foo=12 console=tty1 foo=16

의미 있게 두 개의 값을 가질 수 없는 설정인 경우 foo값 중 하나에 적용되는 규칙이 있나요?

답변1

커널에 명시적으로 문서화되어 있는지는 확실하지 않지만x86 특정 시작 명령줄 구문 분석이 의견을 포함하면:

부울이 아닌 옵션(예: "option=argument")을 찾았습니다. 표준 Linux 관행에 따르면 이 옵션을 반복하면 명령줄의 마지막 인스턴스가 반환됩니다.

이를 통해 사용자는 명령줄의 이전 값에 신경 쓰지 않고 명령줄 끝에 설정을 추가할 수 있습니다.

보고 있다일반적인 파싱 코드이는 확인되었습니다. 매개변수는 차례로 읽히고, 반복된 매개변수에 의해 설정된 값은 마지막 인스턴스에 의해 덮어쓰기됩니다.

귀하의 경우에는 foo=16승리하십시오.

구문 분석 도구에는 /proc/cmdline고유한 동작이 있으며 커널 규칙을 따르지 않을 수 있습니다.

관련 정보