start_kernel() 함수에서 setup_arch(&command_line); 이부분에서 질문드립니다
글쓴이: dbckdgns / 작성시간: 수, 2010/02/24 - 11:58오전
저는 지금 그냥 커널 2.4.32를 가지고 전체적인 흐름만 보려고 하는데요.
start_kernel() 함수에서 setup_arch(&command_line); 이부분에서 질문드립니다
setup_arch(char **cmdline_p)의 함수원형대로 command_line 의 주소를 넘겨주는데,
여기서 command_line는 뭐가 들어있고 어떻게 생성이 되는 것인가요?
여기에 대해서는 아무리 문서를 찾아봐도 그냥 "커맨드라인 옵셥은 인자로 받아" 라는 말로만 설명이 되어 있는데
아시는 분 답변바랍니다.
참고로 우분투 커널 2.6대 64비트에서는 아래와 같이 설명하고 있습니다.
•커맨드 라인은 arch/x86_64/kernel/head64.c의 copy_bootdata() 함수에서 복사된 값이다.
Command line: root=UUID=4adcfc53-20de-434c-bb91-120e3fd5dd7e ro quiet splash
Forums:
bootloader가 구성해 줍니다.
커맨드 라인 옵션은 부트로더에서 커널을 실행할 때는 주는 옵션입니다.
부트로더는 커널을 로딩할 때 이 문자열을 미리 임시 메모리 영역에 저장한 후에
real-mode 커널 헤더(struct setup_header)에 해당 위치를 기록해 둡니다.
setup_arch()에서는 (부트로더가 기록해 둔) 해당 헤더의 정보를 이용해
임시 영역에 저장된 문자열을 커널 데이터 영역으로 다시 복사한 후
새로운 위치를 저장해두는 것입니다.
아래의 (커널 내부) 문서도 참조하시기 바랍니다.
http://lxr.linux.no/#linux+v2.6.32/Documentation/x86/boot.txt
댓글 달기