1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Nix OSでセキュアブートを有効にする方法

Last updated at Posted at 2025-01-06

Nix OSでセキュアブートを有効にする方法

目次

はじめに

私は普段、Windowsでゲームを、Linuxで開発を行っています。
そこで、WindowsでValorantを遊ぼうとなったときに、このようなエラーが出ました

ValorantTPM2.0Error

TPM2.0を有効にするにはセキュアブートを導入するしか方法はなく、そのセキュアブートを導入する方法を説明していきます。

参考

準備

必須項目

  1. NixOSがUEFIモードであること
  2. Systemd-bootを使用していること(Grubの場合はSystemd-bootにする場合があります)

UEFIモードの確認

$ bootctl status

必要なパッケージのインストールとセットアップモードの入り方

必要なパッケージ

  1. sbctl >= 0.16
  2. niv >= 0.41

nivをインストール

# cd /etc/nixos && niv init
# niv add nix-community/lanzaboote -r v0.4.1 -v 0.4.1

セットアップモードの入り方

  1. セキュアブートのメニューを選択
  2. セキュアブートをEnableにする
  3. Reset to Setup Modeを押す
  4. 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";
  };

#...

My Configuration.nix

セキュアブート実現

キーを作成

$ 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

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?