vmlinuz-4.18.12-041812- 일반에 잘못된 서명이 있습니다


15

오늘 커널을 ukuu로 업그레이드 한 후이 오류가 발생하여 부팅 할 수 없습니다.

error: /boot/vmlinuz-4.18.12-041812-generic has invalid signature
error: you need to load the kernel first

Windows 10 및 우분투 18.10으로 듀얼 부팅했습니다 (오늘 업그레이드)

업데이트 : grub의 "Ubuntu에 대한 고급 옵션"에서 선택한 이전 커널로 부팅했습니다.

그러나 커널을 업그레이드해야하며 그렇게하면 여전히 같은 문제가 발생합니다 ...


Lenovo T480의 펌웨어를 업데이트 한 후에도 동일한 문제가 발생하며 이전 커널이 여전히 작동하는 이유를 이해할 수 없습니다.
— user205301

답변:



5

https://github.com/jakeday/linux-surface/blob/master/SIGNING.md 에는 커널 서명에 대한보다 구체적인 지침이 있습니다 (허용 된 답변에 링크 된 동일한 자습서에서 채택). 지침은 다음과 같이 완전히 재현됩니다.

보안 부팅을위한 사용자 정의 커널 서명

지침은 우분투 용이지만 부트 로더로 shim 및 grub을 사용하는 경우 다른 배포판에서도 유사하게 작동합니다. 배포판에서 shim (예 : Linux Foundation Preloader)을 사용하지 않는 경우 서명을 완료하는 비슷한 단계 (예 : LF Preloader 용 MokUtil 대신 HashTool)가 있거나 대신 shim을 설치하여 사용할 수 있습니다. shim 용 ubuntu 패키지는 shim-signed이지만 올바르게 설치하는 방법을 알려주므로 부트 로더를 엉망으로 만들지 마십시오.

Ubuntu의 최신 GRUB2 업데이트 (2.02 + dfsg1-5ubuntu1) 이후 보안 부팅이 활성화되어있는 한 GRUB2는 더 이상 서명되지 않은 커널을로드하지 않습니다. Ubuntu 18.04 사용자는 grub-efi 패키지를 업그레이드하는 동안이 커널이 서명되지 않았으며 업그레이드가 중단된다는 알림을받습니다.

따라서이 문제를 해결하기위한 세 가지 옵션이 있습니다.

  1. 커널에 직접 서명하십시오.
  2. 배포판의 서명 된 일반 커널을 사용합니다.
  3. 보안 부팅을 비활성화합니다.

옵션 2와 3은 실제로 실행 가능하지 않기 때문에 커널에 직접 서명하는 단계입니다.

우분투 블로그 에서 수정 된 지침 . 팔로우하기 전에 / boot / EFI 디렉토리를 백업하여 모든 것을 복원 할 수 있습니다. 자신의 위험에 따라 다음 단계를 수행하십시오.

  1. 서명 키를 작성하기위한 구성을 작성하고 mokconfig.cnf로 저장하십시오.
# This definition stops the following lines failing if HOME isn't
# defined.
HOME                    = .
RANDFILE                = $ENV::HOME/.rnd 
[ req ]
distinguished_name      = req_distinguished_name
x509_extensions         = v3
string_mask             = utf8only
prompt                  = no

[ req_distinguished_name ]
countryName             = <YOURcountrycode>
stateOrProvinceName     = <YOURstate>
localityName            = <YOURcity>
0.organizationName      = <YOURorganization>
commonName              = Secure Boot Signing Key
emailAddress            = <YOURemail>

[ v3 ]
subjectKeyIdentifier    = hash
authorityKeyIdentifier  = keyid:always,issuer
basicConstraints        = critical,CA:FALSE
extendedKeyUsage        = codeSigning,1.3.6.1.4.1.311.10.3.6
nsComment               = "OpenSSL Generated Certificate"

세부 사항에 따라 모든 부품을 조정하십시오.

  1. 커널 서명을위한 공개 및 개인 키를 작성하십시오.
openssl req -config ./mokconfig.cnf \
        -new -x509 -newkey rsa:2048 \
        -nodes -days 36500 -outform DER \
        -keyout "MOK.priv" \
        -out "MOK.der"
  1. 키를 PEM 형식으로도 변환하십시오 (mokutil에는 DER 필요, sbsign에는 PEM 필요).
openssl x509 -in MOK.der -inform DER -outform PEM -out MOK.pem
  1. 심 설치 키를 등록하십시오.
sudo mokutil --import MOK.der

비밀번호를 묻는 메시지가 표시되면 비밀번호를 사용하여 다음 단계에서 키 선택을 확인하므로 아무거나 선택하십시오.

  1. 시스템을 다시 시작하십시오. MOKManager라는 도구의 블루 스크린이 나타납니다. "MOK 등록"을 선택한 다음 "키보기"를 선택하십시오. 2 단계에서 생성 한 키인지 확인한 후 프로세스를 계속 진행하고 4 단계에서 제공 한 암호를 입력해야합니다. 시스템 부팅을 계속하십시오.

  2. 다음을 통해 키가 등록되었는지 확인하십시오.

sudo mokutil --list-enrolled
  1. 설치된 커널에 서명하십시오 (/ boot / vmlinuz- [KERNEL-VERSION] -surface-linux-surface에 있어야 함).
sudo sbsign --key MOK.priv --cert MOK.pem /boot/vmlinuz-[KERNEL-VERSION]-surface-linux-surface --output /boot/vmlinuz-[KERNEL-VERSION]-surface-linux-surface.signed
  1. 서명되지 않은 커널의 initram을 복사하면 서명 된 커널에 대한 initram도 있습니다.
sudo cp /boot/initrd.img-[KERNEL-VERSION]-surface-linux-surface{,.signed}
  1. grub-config 업데이트
sudo update-grub
  1. 시스템을 재부팅하고 서명 된 커널을 선택하십시오. 부팅이 작동하면 서명되지 않은 커널을 제거 할 수 있습니다.
sudo mv /boot/vmlinuz-[KERNEL-VERSION]-surface-linux-surface{.signed,}
sudo mv /boot/initrd.img-[KERNEL-VERSION]-surface-linux-surface{.signed,}
sudo update-grub

이제 시스템이 서명 된 커널에서 실행되고 GRUB2 업그레이드가 다시 작동합니다. 사용자 정의 커널을 업그레이드하려면 7 단계부터 다시 위 단계를 수행하여 새 버전에 쉽게 서명 할 수 있습니다. 따라서 MOK 키를 백업하십시오 (MOK.der, MOK.pem, MOK.priv).


Ecxellent 응답, 우분투 명령만으로는
— 도착할 수 없었

접미사로 파일 이름을 바꾸고 파일을 덮어 쓰는 데 유용한 바로 가기입니다.
— 톰

1

보안 부팅을 위해 / boot / vmlinuz 파일에 서명 하기 위해이 튜토리얼에 따른 문제를 해결 했습니다. 튜토리얼의 마지막 부분을 확인하십시오.


6
이 문제 해결에 대한 자세한 정보를 제공해 주시겠습니까? 나는 완전히 같은 오류가 있지만 언급 한 튜토리얼에 따라해야 할 일을 이해하지 못합니다.
— Slon

지금은 기억이 안납니다. 그래도 관련이 있다면 오늘 늦게 도와 드리겠습니다
— Nadav Shabtai

나도 관련이 있습니다. 나는 같은 문제가있다
— Vitalii Diravka

방금 이것을 찾았습니다, 나도 그것을 필요로합니다
— Mitch Talmadge

1
이것은 "링크 전용 답변"인 것 같습니다. 동일한 문제가있는 다른 사용자를 돕기 위해 질문을 편집하고 몇 가지 세부 정보를 제공하십시오. 감사!
— mchid
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.