![후속 매개변수가 Linux 커널 명령줄의 이전 매개변수를 덮어쓰나요, 아니면 그 반대인가요?](https://linux55.com/image/202134/%ED%9B%84%EC%86%8D%20%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98%EA%B0%80%20Linux%20%EC%BB%A4%EB%84%90%20%EB%AA%85%EB%A0%B9%EC%A4%84%EC%9D%98%20%EC%9D%B4%EC%A0%84%20%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98%EB%A5%BC%20%EB%8D%AE%EC%96%B4%EC%93%B0%EB%82%98%EC%9A%94%2C%20%EC%95%84%EB%8B%88%EB%A9%B4%20%EA%B7%B8%20%EB%B0%98%EB%8C%80%EC%9D%B8%EA%B0%80%EC%9A%94%3F.png)
이는 다음으로 인해 발생합니다.다른 곳에서 또 다른 질문, 간단히 온라인 검색("리눅스 커널 명령줄 재정의 우선순위" 및 몇 가지 변형)을 수행한 후에는 아무 것도 나오지 않았습니다.
문제는 /proc/cmdline
특정 매개변수가 다른 값으로 두 번 포함되었음을 나타냅니다. 내 질문은 그 일이 왜, 어떻게 일어났는가에 관한 것이 아닙니다., 즉 어느 쪽이 우선인가 하는 것입니다. 즉, 다음을 명령줄로 사용합니다.
foo=12 console=tty1 foo=16
의미 있게 두 개의 값을 가질 수 없는 설정인 경우 foo
값 중 하나에 적용되는 규칙이 있나요?
답변1
커널에 명시적으로 문서화되어 있는지는 확실하지 않지만x86 특정 시작 명령줄 구문 분석이 의견을 포함하면:
부울이 아닌 옵션(예: "option=argument")을 찾았습니다. 표준 Linux 관행에 따르면 이 옵션을 반복하면 명령줄의 마지막 인스턴스가 반환됩니다.
이를 통해 사용자는 명령줄의 이전 값에 신경 쓰지 않고 명령줄 끝에 설정을 추가할 수 있습니다.
보고 있다일반적인 파싱 코드이는 확인되었습니다. 매개변수는 차례로 읽히고, 반복된 매개변수에 의해 설정된 값은 마지막 인스턴스에 의해 덮어쓰기됩니다.
귀하의 경우에는 foo=16
승리하십시오.
구문 분석 도구에는 /proc/cmdline
고유한 동작이 있으며 커널 규칙을 따르지 않을 수 있습니다.