در دنیای دیجیتال امروز، فعال کردن 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
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
و بعد میتونین سکیور بوت رو فعال کنید.
اول از همه کوچک ترین عضو مجموعه 4xmen بنده حقیر هستم.
در ثانی یک توسعه دهنده هستم زمینه های تخصصی کارم :
Delphi, Rust ,PHP, C++ ,Python, JavaScript, Unity game engine, C#, asm
و علاقه مند به لینوکس، RCE ، کریپتوگرافی هستم.
تا الان حضرت حق اینا رو به ما داده و هر وقت که بخواد ازمون میگیره دست خودشه.
یا حق، با حق، تا حق


دیدگاهتان را بنویسید لغو پاسخ