برای طرح سوال و دسترسی به آموزش ها  کانال ما در تلگرام بپویندید  

فعال کردن Secure Boot با درایورهای NVIDIA روی دبیان: راهنمای گام به گام

در دنیای دیجیتال امروز، فعال کردن Secure Boot روی دبیان لینوکس برای افزایش امنیت سیستم ضروری است، به خصوص اگر از GPU NVIDIA استفاده می‌کنید. Secure Boot جلوی اجرای کدهای غیرمجاز در زمان بوت را می‌گیرد و از بدافزارها و روت‌کیت‌ها محافظت می‌کند. همچنین برای بازی‌های مدرن (مثل Battlefield 2042) که نیاز به TPM 2.0 و Secure Boot برای ضدچیت دارند، لازم است. اگر درایور NVIDIA را با فایل .run نصب کرده‌اید، ممکن است با مشکلات سازگاری روبرو شوید—تعویض به پکیج رسمی دبیان (nvidia-driver) این مشکل را حل می‌کند چون ماژول‌ها را با DKMS به طور خودکار ساین می‌کند. این راهنما بر اساس تجربه واقعی روی دبیان ۱۳ (Trixie) نوشته شده، فرض شده شما قبلا درایور nvidia یا cuda رو نصب کردید و به تنظیم Secure Boot با dual-boot ویندوز می‌رسد.

اما اگر درایور مخزن دبیان رو نصب کردید مراحلی که جلوتر می‌گم از اون به بعدش رو پیش ببرید قبلش رو نادیده بگیرید

نکته خیلی خیلی مهم: تک تک این مراحل ممکنه باعث بشه سیستم عامل تصویر نده پس مطلب رو ابتدا تا انتها بخونید و سپس کار رو شروع کنید!

و در هر مرحله‌ای مشکل خوردید دستورات رو بگردونید به حالت قبلی در بدترین وضعیت ممکنه درایور nvidia رو حذف کنید تا مشکل حل شه

بهتره: به صفحه رسمی دبیان هم مراجعه کنید : https://wiki.debian.org/SecureBoot/

گام اول و توضیحات بکاپ و پیکربندی کتاب‌خانه های secure boot

دلیل بالا نیومدن لینوکس: مشکل dual-boot تو: GRUB لینوکس signed نیست، پس وقتی Secure Boot on می‌کنی، فقط Windows (که signedه) بالا می‌یاد.

اما secure boot رو خاموش کنید ( بعدا روشن می‌کنیم) این دستورات رو بزنید :

sudo apt update
sudo apt install shim-signed grub-efi-amd64-signed

اما GRUB رو regenerate کنید:

sudo update-grub
sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=Debian --recheck

این shimx64.efi (signed) رو به EFI partition می‌ذاره و GRUB رو بهش وصل می‌کنه.

اما DKMS moduleها رو sign کنید (اگر خطا داد):

sudo mokutil --import /var/lib/dkms/mok.pub

چک‌های قبل از enable Secure Boot:

ls /boot/efi/EFI/debian/

گام دوم تنظیم کردم ماژول های nvidia برای سکیور بوت و ساختن کلید امنیتی

چک NVIDIA modules برای sign (مهم‌ترین!): ( اجرا به صورت root)

sudo -i # root شو
mkdir -p /var/lib/shim-signed/mok
cd /var/lib/shim-signed/mok
openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -days 36500 -subj "/CN=My MOK/"
openssl x509 -inform DER -in MOK.der -out MOK.pem

اینجا ازتون پسورد می‌پرسه نزنید یا اگر قبول نکرد پسورد ساده بزنید یادتون بمونه مثل عدد ۱

تو اون لحظه هم قبل پسورد یه چیزی شبیه این نشون میده:

..+......+++++++++++++++++++++++++++++++++++++++*..+..+......+.+.........+..+......................+++++++++++++++++++++++++++++++++++++++*..+.....+.......+...+.....+......+.+.....+.......+...+...+..+.........+...............+.........+....+........+....+...+...+..+.............+..+...+....+.....+......+....+...+...+........+......+...+.......+...+......+..+...+.+.........+......+...+..+.+.........+........+............+...+..............................+.......+...+..+....+.........+...+.....+...+.+.....+.........+......+.+............+.................+......+.............+..+....+...+.....+...+....+...+...+........+.......+..+...............+.+..+...+.........+.......+.....+.........+.........+.+.........+.....+.......+..............+.........+.+...........+.+..+.+..+.........+...+......+.+...........+...+....+............+...+......+..+.............+.....+......+.+.........+.....+...+.+.....+....+..+.+..+................+.....+.......+.........+.........+......+...........+.......+..+....+......+........+...+...+.+..............+....+..+....+..+.......+..++++++ ...+.........+....+.........+.....+...+...+...............+.+.........+.....+......+...+...+...+......+...................+..+.......+......+..............+++++++++++++++++++++++++++++++++++++++*........+..+++++++++++++++++++++++++++++++++++++++*.....+.......+...+.....+.+.........+..+....+.....+.......+.....+.......+...........+......+......+...+....+........+...............+..........+...+....

پیدا کردن ماژول‌های nvidia

find /lib/modules/$(uname -r)/ -name 'nvidia*.ko*'

معمولاً در /lib/modules//updates/dkms/ یا extra/ هستن (مثل nvidia.ko.xz, nvidia-modeset.ko.xz, nvidia-drm.ko.xz, nvidia-uvm.ko.xz).

هر module رو sign کنید (اگر xz هستن، اول unzip کن با xz -d):

/usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 /var/lib/shim-signed/mok/MOK.priv /var/lib/shim-signed/mok/MOK.der /path/to/nvidia.ko

به جای این ‍‍`/path/to/nvidia.ko` آدرس پیدا شده رو باید بزنید حواستون باشه ها

mokutil --import /var/lib/shim-signed/mok/MOK.der
۲اگر passphrase دارید، set کنید (اگر -nodes زدید، رد شوید):
echo -n "Passphrase: "
read -s KBUILD_SIGN_PIN
export KBUILD_SIGN_PIN
sudo --preserve-env=KBUILD_SIGN_PIN /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 /var/lib/shim-signed/mok/MOK.priv /var/lib/shim-signed/mok/MOK.der /path/to/nvidia.ko

یادتون نره بازم مسیر جایگزین شه

گام  آخر  enroll key:

sudo mokutil --import /var/lib/shim-signed/mok/MOK.der

پسورد ها یادتون باشه تو هر مرحله‌ای بعدش به روز کردن initramfs ها

export OPENSSL_CONF=/etc/ssl/openssl.cnf
modinfo /lib/modules/$(uname -r)/updates/dkms/nvidia.ko | grep -E 'signer|sig_key|sig_hashalgo'
sudo update-initramfs -u -k all

 

چک نهایی

mokutil --test-key /var/lib/shim-signed/mok/MOK.der

باید

“is already enrolled” نشون بده وگرنه مشکل داشتید

اگر چنین بود ریبوت کنید و سکیور بوت رو روشن کنید: و در صفحه grub یادتون نره enroll بزنین و پسورد رو وارد کنید و بعد بالا اومدن سیستم:

sudo update-grub
sudo reboot

و بعد می‌تونین سکیور بوت رو فعال کنید.

 


انتشار

در

,

توسط

برچسب‌ها:

نظرات

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *