Nếu hệ thống của bạn đang hỗ trợ EFI Secure Boot thì dù cho bạn cài đặt các kernel module bằng apt thì vẫn cần phải “sign” chúng để có thể sử dụng.
Tạo một 2048 bit RSA certificate (MOK.der, và private key là MOK.priv) trong thư mục /root/module-signing, dùng cho việc sign kernel module. Ta sẽ để expiry date của certificate này hẳn 10 năm (3650 ngày).
$ su - $ mkdir -p /root/module-signing $ cd /root/module-signing $ openssl req \ -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes \ -days 36500 \ -subj "/CN=$(hostname -s | cut -b1-31) Secure Boot Module Signature key/" $ chmod 600 MOK.priv
Sử dụng công cụ mokutil
để đăng ký key pair vừa tạo với Secure Boot.
$ sudo mokutil --import /root/module-signing/MOK.der input password: input password again:
Nhập mật khẩu sẽ được dùng để xác thực trong quá trình cập nhật Secure Boot.
Sau đó hãy khởi động lại máy.
Màn hình khởi động của Bootloader sẽ hiển thị và yêu cầu ta ấn một phím bất kỳ để tiếp tục vào màn hình MOK Manager. Chọn Enroll MOK
trong menu, rồi chọn Yes
. Tiếp đó hệ thống sẽ yêu cầu mật khẩu bạn đã nhập ở trên.
Sau khi nhập mật khẩu chính xác, key pair bạn tạo sẽ được đăng ký với Secure Boot.
Lấy ví dụ điển hình là các kernel module của VirtualBox. Sau khi khởi động lại, ta tiến hành ‘sign’ các kernel module của VirtualBox bằng shell script sau:
/usr/local/bin/sign_vbox_modules.sh
#!/bin/bash for modfile in $(dirname $(modinfo -n vboxdrv))/*.ko; do echo "Signing $modfile" /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 \ /root/module-signing/MOK.priv \ /root/module-signing/MOK.der "$modfile" done
Cấp quyền executable
cho script.
sudo chmod +x /usr/local/bin/sign_vbox_modules.sh
Thực thi script trên bằng sudo
.
sudo sign_vbox_modules.sh