vt 대신 tty로 스크립트 보내기(특정 문제 명시, 다른 솔루션 환영)

vt 대신 tty로 스크립트 보내기(특정 문제 명시, 다른 솔루션 환영)

터미널 에뮬레이터에서 실행된 명령(이 경우 bash 스크립트)을 tty로 보내는 가장 쉬운 방법이 무엇인지 궁금합니다.


문맥:저는 Optimus 노트북에서 NVIDIA GPU를 사용하는 매우 불편하고 사용자 친화적이지 않은 방식에 지쳤습니다. Ubuntu와 그 파생 제품에는 다시 로그인하기만 하면 되는 카드를 전환하는 좋은 방법이 있습니다(예: 매우 불완전합니다(Solus는 드라이버를 설치할 때 PRIME을 올바르게 구성하지만 실제로 드라이버를 제거하지 않고 GPU를 전환하는 것은 불가능합니다).

범블비에 대해서도 알고 있지만 덕테이프로 고정하는 반창고라서 효과가 있다고 해도 불신과 혐오감이 좀 있어요(오해하지 마세요. 프로젝트는 훌륭하다고 생각하지만, 나는 덜 테이프 방식을 선호합니다 ...).

nvidia-xrun이라는 스크립트가 있습니다(https://github.com/Witko/nvidia-xrun) 저것거의내가 원하는 기능을 수행하지만 여전히 약간 불편합니다.

nvidia-xrun에서 영감을 받아 PRIME 기능을 비교적 잘 구현할 수 있는 원시적인 쉘 스크립트를 만들어보고 싶습니다.

내가 생각할 수 있는 가장 간단한 설정은 다음과 같습니다.

  • 이 스크립트는 디스플레이 관리자를 중지합니다(sudo systemctl stop gdm - gdm 및 systemd의 경우).

  • 이 스크립트는 이전에 배치된 xorg.conf.nvidia의 이름을 xorg.conf(nvidia 드라이버에 대한 올바른 xorg 항목 포함)로 바꿉니다.

  • (저는 DE와 dGPU의 출력을 Intel 카드로 오프로드하는 데 필요한 두 개의 xrandr 라인이 포함된 ~/에 .xinitrc를 수동으로 배치했습니다.)

  • 이 시점에서 스크립트는 X를 종료하므로 로그인된 tty로 돌아갑니다.

  • 스크립트는 bbswitch를 통해 NVIDIA GPU를 깨우고 커널 모듈을 로드한 다음 startx를 통해 올바른 X 세션을 시작합니다.

  • 세션에서 로그아웃한 후 이전 startx 명령이 완료되었으므로 스크립트가 계속됩니다. 커널 모드를 제거하고 NVIDIA GPU를 종료하고 xorg.conf의 이름을 xorg.conf.nvidia로 바꾸고 sudo systemctl start gdm을 실행합니다. 그래서 난 다시 시작해야 할 곳으로 돌아왔어


이 시나리오에서 각 단계를 실행하는 방법을 알고 있지만 이 스크립트를 터미널 에뮬레이터에서 실행하면 터미널이 사라지기 때문에 X를 죽이는 순간 중지되므로 다음에서 실행하고 싶습니다. 스크립트는 처음에 모든 터미널 에뮬레이터로 전송됩니다. , 그러나 "내가 로그인한 tty"로 전송되어 X가 종료될 때 스크립트가 계속 실행됩니다.

스크립트가 백그라운드에서 실행되는 것이 아니라 스크립트와 상호 작용할 수 있다는 점도 중요합니다. 모듈을 언로드하고 GPU를 켜거나 끄려면 sudo가 필요하므로 비밀번호를 입력하려면 셸과 상호 작용해야 합니다.

이것은 제가 해결하고 싶은 문제이지만, 제가 원하는 것을 다른 방식으로 달성하는 방법을 아는 사람이 있다면(이 문제를 해결하길 바랍니다) 기꺼이 듣고 싶습니다.

관련 정보