Nix OSでセキュアブートを有効にする方法
目次
はじめに
私は普段、Windowsでゲームを、Linuxで開発を行っています。
そこで、WindowsでValorantを遊ぼうとなったときに、このようなエラーが出ました
TPM2.0を有効にするにはセキュアブートを導入するしか方法はなく、そのセキュアブートを導入する方法を説明していきます。
参考
準備
必須項目
- NixOSがUEFIモードであること
- Systemd-bootを使用していること(Grubの場合はSystemd-bootにする場合があります)
UEFIモードの確認
$ bootctl status
必要なパッケージのインストールとセットアップモードの入り方
必要なパッケージ
- sbctl >= 0.16
- niv >= 0.41
nivをインストール
# cd /etc/nixos && niv init
# niv add nix-community/lanzaboote -r v0.4.1 -v 0.4.1
セットアップモードの入り方
- セキュアブートのメニューを選択
- セキュアブートをEnableにする
- Reset to Setup Modeを押す
- Saveして再起動する
Configuration.nix
最終的にはこのようなConfiguration.nixになりました
{ config, lib, pkgs, ... }:
let
sources = import ./nix/sources.nix;
lanzaboote = import sources.lanzaboote;
unstable = import <nixos-unstable> { config = { allowUnfree = true; }; };
in
{
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
<home-manager/nixos>
lanzaboote.nixosModules.lanzaboote
];
# Lanzaboote currently replaces the systemd-boot module.
# This setting is usually set to true in configuration.nix
# generated at installation time. So we force it to false
# for now.
boot.loader.systemd-boot.enable = lib.mkForce false;
#boot.loader.systemd-boot.enable = true;
boot.loader.efi = {
canTouchEfiVariables = true;
efiSysMountPoint = "/boot";
};
boot.lanzaboote = {
enable = true;
pkiBundle = "/var/lib/sbctl";
};
#...
セキュアブート実現
キーを作成
$ sudo sbctl create-keys
もし、/etc/securebootに鍵が存在した場合はこれを実行する
$ sudo sbctl setup --migrate
Microsoftのキーを登録する
$ sudo sbctl enroll-keys --microsoft
Configuration.nixを編集
追加する項目
importsの前にこれを追加してください
let
sources = import ./nix/sources.nix;
lanzaboote = import sources.lanzaboote;
unstable = import <nixos-unstable> { config = { allowUnfree = true; }; };
in
importsにこれを追加
lanzaboote.nixosModules.lanzaboote
Sytemd-bootのenableのtrueをlib.mkForceとfalseに変更
boot.loader.systemd-boot.enable = lib.mkForce false;
lanzabooteを有効化
boot.lanzaboote = {
enable = true;
pkiBundle = "/var/lib/sbctl";
};
変更し終わったら、bootに変更を加えます
# nixos-rebuild boot
セキュアブート有効化
あとはBIOSでセキュアブートを有効化するだけ
再起動後、セキュアブートを確認
$ sbctl status
おわりに
これでセキュアブートを実現できたので、Dual BootのWindowsPCでもValorantができるようになります!
Windowsはゲーム専用OS