방금 .dll을 통해 시스템을 15.10에서 16.04로 업데이트했습니다 sudo do-release-upgrade
. 이 과정에서 다음 메시지가 포함된 화면이 표시되었습니다.
시스템에 UEFI 보안 부팅이 활성화되어 있습니다. UEFI 보안 부팅은 타사 드라이버 사용과 호환되지 않습니다.
(...) Ubuntu는 여전히 시스템에서 부팅할 수 있지만 이러한 타사 드라이버는 하드웨어에서 사용할 수 없습니다.
UEFI 보안 부팅을 비활성화하시겠습니까? (예 | 아니요)
제가 사용하고 있는 유일한 타사 드라이버는 NVIDIA 그래픽 드라이버이고 Ubuntu 15.10 및 보안 부팅 활성화에서 제대로 작동했기 때문에 여기서는 "아니요" 옵션을 선택했습니다. 정당한 이유 없이 이 기능을 비활성화해야 하는 이유를 모르겠고, 업데이트 후 시스템 설정 GUI를 통해 타사 드라이버를 다시 설치하면 된다고 가정했습니다.
아아, 아니. 재부팅 시 로그인 화면이 매우 낮은 해상도로 나타났습니다. 로그인을 시도하면 즉시 로그인 화면으로 돌아갑니다.
상황을 해결하기 위해 다음을 시도했습니다.
sudo apt-get purge nvidia*
sudo reboot
이로 인해 보라색 화면이 나타나고 Ctrl-Alt-F1에 반응이 없습니다. SSH를 통해 로그인한 후 다음을 수행했습니다.
sudo apt-get install nvidia-current
sudo reboot
매우 낮은 해상도의 로그인 화면이 있고 로그온할 방법이 없는 이전 시나리오가 다시 나타납니다.
이것은 꽤 나쁜 업그레이드 경험입니다. 다른 사람도 이런 문제를 겪은 적이 있나요? 이 문제를 해결하려면 어떻게 해야 하나요? (UEFI 보안 부팅을 활성화한 상태에서) 감사합니다.
답변1
Ubuntu 15.10을 통해 Ubuntu의 보안 부팅 처리는 GRUB에서 중지되었습니다. 즉, Ubuntu의 Shim 버전은 Ubuntu의 GRUB 버전을 시작하게 됩니다.어느서명 여부에 관계없이 Linux 커널. 이는 보안 부팅에 대한 지원 기준이 매우 낮았습니다. 비교를 위해 Fedora의 GRUB는 서명된 Linux 커널만 실행하고 Fedora의 커널은 Secure Boot가 활성화되었음을 감지하면 서명된 커널 바이너리만 로드합니다. Fedora의 더욱 강력한 보안 부팅 지원의 목적은 이론적으로 매우 낮은 수준에서 컴퓨터를 장악할 수 있는 "악성" 커널 모듈로부터 시스템을 보호하는 것이었습니다. Ubuntu 15.10 및 이전 버전에는 이러한 보호 기능이 부족했습니다.
16.04부터 Ubuntu는 Fedora가 꽤 오랫동안 해왔던 것과 유사한 더 엄격한 보안 부팅 모듈을 따릅니다. 이는 보안상의 이점이 있지만, 본 것처럼 문제도 있습니다. 타사 드라이버가 Linux 커널의 Ubuntu 버전이 유효한 것으로 인식하는 암호화 키로 서명되지 않은 경우 로드되지 않습니다. 이는 주로 비공개 소스 Nvidia 및 AMD/ATI 비디오 드라이버에 영향을 미치지만 영향을 받을 수 있는 다른 드라이버도 있습니다.
이 문제에 대한 해결 방법은 여러 가지가 있습니다.
- 보안 부팅 비활성화-- 이것이 가장 쉬운 해결책입니다. 펌웨어 설정을 변경하거나 심 설정을 조정하여 이를 수행할 수 있습니다. (Shim의 설정을 조정하여 이를 수행하는 방법을 잘 모르겠지만 가능하다고 확신합니다.)
- 타사 커널 모듈을 사용하지 마세요.-- Ubuntu의 표준 Linux 커널에 포함된 오픈 소스 드라이버로 제한하는 경우 Canonical이 해당 드라이버(AFAIK)에 모두 서명하므로 괜찮습니다. 이러한 드라이버를 사용하면 꽤 좋은 Nvidia 지원이 있어야 합니다. 귀하의 시스템은 폐쇄 소스 드라이버를 사용할 수 있다고 생각했기 때문에 최적이 아닌 드라이버로 대체되었을 수 있습니다. 하나에서 다른 것으로 전환하는 방법을 직접적으로 알지는 못하지만,이 질문AMD/ATI 드라이버를 사용하여 이를 수행하는 것에 관한 것이므로 유용한 시작점이 될 수 있습니다.
- 관련 모듈에 서명-- 이론적으로는 상용 모듈에 직접 서명하면 작동하게 됩니다. 불행하게도 나는 이 작업을 수행하는 방법에 대한 지침을 가지고 있지 않으며 실제로 기본 Ubuntu 커널을 사용하여 이 작업을 수행하는 것이 가능한지 완전히 확신하지 못합니다. 그러한 커널은 Canonical의 키로 서명된 모듈(물론 여러분이 소유하지 않은)만 존중할 수 있습니다.
- 자신만의 커널 컴파일-- 자신만의 커널을 컴파일하는 경우 서명되지 않은 모듈 로드에 대한 제한을 완화하는 등 원하는 대로 옵션을 설정할 수 있습니다. 그런 다음 자체 EFI 키로 커널에 서명하고 해당 키의 공개 버전을 MOK 목록에 추가해야 합니다.여기자신만의 커널 컴파일에 관한 질문과 답변입니다.
- 이전 GRUB로 전환-- 이전 GRUB는 서명되지 않은 커널을 시작하므로 그러한 GRUB(Ubuntu 15.10 또는 이전 버전)를 설치하고 서명되지 않은 커널을 시작하도록 할 수 있습니다. 오래된 GRUB을 유지하는 것은 고통스러울 수 있습니다.
- 보안 부팅을 따르지 않는 부트 로더로 전환-- SYSLINUX 또는 ELILO와 같은 부트 로더에 자신의 키를 사용하여 서명하고 해당 키의 공개 버전을 MOK 목록에 추가하는 경우 해당 부트 로더는 이전 버전의 GRUB처럼 보안 부팅 설정을 무시합니다. 그런 다음 서명되지 않은 커널을 시작할 수 있습니다.
제가 100% 작동할 것이라고 확신하는 옵션 중 단 두 가지는 보안 부팅을 비활성화하거나 타사 커널 모듈을 피하는 것입니다. 나는 전염병과 같은 타사 커널 모듈을 피하므로 보안 부팅 환경에서 이를 사용한 개인적인 경험이 없습니다. 보안 부팅을 비활성화하는 것 외에도 자체 커널을 구축하는 것이 그 다음으로 작동할 가능성이 높으며, 그 다음은 이전 GRUB를 사용하거나 보안 부팅을 지원하지 않는 부트 로더를 사용하는 것입니다. 한때 자신만의 커널을 구축하는 것은 흔한 일이었지만 이제는 그렇게 하는 사람이 거의 없으며, 현대 커널에서는 실제로 그렇게 하는 것은 말할 것도 없고 커널을 구성하는 방법을 배우는 데 시간 투자가 상당할 수 있습니다. 이전 GRUB 또는 다른 부트 로더를 사용하는 것이 더 쉬울 수 있지만 이를 설정하려면 충분히 알아야 합니다. 더 쉬운 방법은 두 번째로 설치한 이전 Ubuntu를 사용하여 이중 부팅하는 것일 가능성이 높습니다. 그러나 Ubuntu 16.04는 어느 시점에서 GRUB를 복원할 가능성이 높으므로 이전 Ubuntu의 GRUB를 다시 설치해야 합니다. .