X11은 어떻게 커널과 상호 작용하고 로그인을 수행합니까?


14

Linux 커널과의 텍스트 기반 상호 작용에 대해 이해하는 것처럼 initstarts getty(또는 agetty) 라는 프로그램 은 TTY 장치 중 하나에 연결 /dev하고 사용자 이름을 묻는 메시지를 표시합니다. 그런 다음 호출 된 프로그램 login이 실행되어 사용자의 암호를 묻는 메시지가 표시되고 올바른 경우 사용자가 선호하는 셸 (예 : bash또는 csh) 을 시작합니다 . 이 시점에서 bash는 TTY 장치를 통해 커널과 상호 작용합니다.

이 로그인 프로세스는 X11에서 어떻게 작동합니까? X11은 TTY를 통해 커널과 상호 작용합니까?

답변:


15

셸은 TTY 장치 (연결된 경우)를 사용하여 사용자 입력을 얻고 출력을 생성합니다. 쉘이 TTY에 연결되어 있다는 사실은에 의해 결정되고 getty(에 의해 보존 됨 login); 대부분의 경우 쉘은 TTY에 연결되어 있는지 여부를 신경 쓰지 않습니다. 커널과의 상호 작용은 시스템 호출을 통해 발생 합니다.

X11 서버는 로그인에 대해 알지 못합니다 (쉘처럼). X11의 로그인 프로세스는 두 가지 방식으로 작동합니다.

  • 사용자가 터미널에 로그인 한 다음 X (일반적으로)를 사용하여 시작합니다 startx.
  • 또는 X 서버는“디스플레이 관리자”로 시작하여 사용자에게 로그인 및 비밀번호 (또는 필요한 인증 정보)를 묻는 메시지를 표시합니다.

X11 서버가 입력을 얻고 출력을 생성하는 방식은 쉘과는 매우 다릅니다. 입력 쪽에서 X는 마우스부터 시작하여 껍질이없는 장치에 대해 알고 있습니다. 일반적으로 자체 드라이버로 직접 관리합니다. 키보드의 경우에도 X에는 커널 처리를 보완하는 자체 드라이버가 있습니다 (예를 들어 Linux에서 X와 같이 TTY 드라이버를 사용하여 키보드에서 원시 입력을 읽은 다음 자체 드라이버를 사용하여 해석합니다). 출력 측면에서 X 드라이브는 커널의 도움을 받거나받지 않고 TTY 장치를 거치지 않고 직접 디스플레이 장치를 표시합니다.

많은 시스템에서 X11 서버는 어떻게 커널과 동기화를 사용 TTY 장치 불구하고 : 가상 터미널을 지원하는 시스템에서, X는 "예약"이 실행중인 년대 VT 및 핸들 VT 전환 할 필요가있다. 그 과정에서 다른 미묘한 부분이 있습니다. 따라서 Linux에서 X는 GPM (마우스의 텍스트 모드 사용을 허용하는 프로그램)을 비활성화하기 위해 TTY를 조정합니다. X는 또한 VT를 공유 할 수 있습니다 ...

과거 일부 워크 스테이션에서는 커널과 명시 적으로 동기화되지 않았습니다. 실행하지 않으면 xconsoleX11 디스플레이 상단에 "텍스트 모드"로 표시된 커널 메시지가 표시 될 수 있습니다.


2

커널에는 로그인 개념이나 로그인 한 사람이 전혀 없습니다. 관심있는 모든 것은 특정 사용자 ID로 실행되는 프로세스가 있다는 것입니다 (이는 커널의 비즈니스도 아닙니다!). 로그인 프로그램 (터미널 또는 X11 디스플레이 관리자에서 getty)은 루트로 실행 된 다음 setuid () 및 관련 호출을 사용하여 로컬 리졸버 (NSS 및 libc 항목-커널 비즈니스가 아닌)가 제안한 UID에 대한 환경을 설정합니다. 방금 인증 한 사용자에게 사용합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.