kazeno memo

メモとか

Firefox Multi-Account Containersの設定をバックアップしたい

要約

  • Firefox のコンフィグディレクト
  • Multi-Account Containers の設定ファイル
  • 設定ファイルの場所
    • %appdata%\Mozilla\Firefox\Profiles\xxxxxxxx.default\containers.json
    • %appdata%\Mozilla\Firefox\Profiles\xxxxxxxx.default\storage\default\moz-extension+++[アドオンのID]^userContextID=1234567890\idb\*.sqlite
  • アドオンIDの調べ方
    1. about:memory を開く
    2. Measure ボタンを押す
    3. 「id=@testpilot-containers」でページ内検索
    4. 「baseURL=」以降がアドオンID

FirefoxのMulti-Account Containersというアドオンの設定を、別のFirefoxへ移行しようと思ったが、どうやら設定のエクスポートは無理なようで。まあ、手動で設定し直しても良いのですが。

ググるそれっぽいIssuesがありました。

ffcontianersという、Multi-Account Containersの設定を簡単に移行できるBashスクリプトがあるようです。ただ、Windowsには対応していないです。

ということで、スクリプトを読んでみると、

という2つのファイルに設定が入ってるみたいです。(つまり、2つのファイルを手動でコピーすれば良い。)

ファイルの場所は、

アドオンのIDは環境によって違うので、この方法で特定します。

  1. アドレスバーに about:memory と入力して開く
  2. Measure ボタンを押す(メモリに関する情報が表示される)
  3. Ctrl + F で「id=@testpilot-containers」をページ内検索
  4. ヒットした行をコピーして、baseURL=以降を抽出

インポート

ファイルの場所はわかっているので、インポートは簡単です。

LinuxFirefoxのコンフィグディレクトリは ~/.mozilla/firefox/ 下にあります。

debianにserial経由で接続できるようにする

grub2の場合

/etc/default/grubを編集

  • GRUB_CMDLINE_LINUXconsole=tty0 console=ttyS0,19200n8を追加

  • GRUB_TERMINALserialに変更

  • GRUB_SERIAL_COMMANDserial --speed=19200 --unit=0 --word=8 --parity=no --stop=1を追加

こんな感じ

GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,19200n8"
GRUB_TERMINAL=serial
GRUB_SERIAL_COMMAND="serial --speed=19200 --unit=0 --word=8 --parity=no --stop=1"

最後にgrubの更新

# update-grub

再起動する。

Proxmox post install

  • レポジトリの追加

    1. 有償版レポジトリを無効化

      # rm /etc/apt/source.list.d/pve-enterprise.list
      
    2. 無償版レポジトリを追加

      # echo -e "\n# PVE no-subscription repository\ndeb http://download.proxmox.com/debian/pve buster pve-no-subscription" >> /etc/apt/source.list
      
  • fstrimの有効化

    # systemctl enable fstrim.timer && systemctl start fstrim.timer
    
  • サブスクリプションメッセージの無効化

    # sed -i.bak "s/data.status !== 'Active'/false/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
    # systemctl restart pveproxy
    

ZFS関連

  • ポイント

    • 先頭に4GBのswapパーティションを作成したい
    • swap on zvolは微妙?
    • ディスクは4K Sector
    • ディスク3個でRAID-5(raidz-1)
  • swapパーティションの作成

    1. gdiskなどでディスクをGPTでフォーマット
    2. swapとzfs用のパーティションを作成
    • swapの暗号化

      swapパーティションは暗号化されるべきです。

      swap用のパーティション/dev/sda1にあると仮定

      # mkfs.ext2 -L cryptswap /dev/sda1 1M
      # echo -e "\nswap\tLABEL=cryptswap\t/dev/urandom\tswap,offset=2048,cipher=aes-xts-plain64,size=256" >> /etc/crypttab
      # echo -e "\n/dev/mapper/swap\tnone\tswap\tdefaults\t0\t0" >> /etc/fstab
      

      コマンドの意味がわからない場合、ArchWikiを参照しましょう。

  • ZFSでRAID5

    1. ディスク固有のby-idを確認

      # ls -lh /dev/disk/by-id/
      lrwxrwxrwx 1 root root  9 Aug 12 16:26 ata-ST3000DM001-9YN166_S1F0JKRR -> ../../sdc
      lrwxrwxrwx 1 root root  9 Aug 12 16:26 ata-ST3000DM001-9YN166_S1F0JTM1 -> ../../sde
      lrwxrwxrwx 1 root root  9 Aug 12 16:26 ata-ST3000DM001-9YN166_S1F0KBP8 -> ../../sdd
      lrwxrwxrwx 1 root root  9 Aug 12 16:26 ata-ST3000DM001-9YN166_S1F0KDGY -> ../../sdb
      
    2. ZFS poolの作成

      # zpool create -f -o ashift=12 tank raidz1 <ディスクのby-id>
      
      • swapパーティションを別に作成した場合by-idの直後に-part2のようにパーティションを指定

        //例えば
        ata-ST3000DM001-9YN166_S1F0KDGY-part2
        
      • 4K Sectorの場合-o ashift=12を指定

      • /dev/sdaなどのデバイス名を使用すると、ディスク構成を変えたときにエラーが出る可能性があるのでby-idを使う

    3. 確認

      # zpool status
      
  • ZFSの最適化

    • relatime

      # zfs set relatime=on <pool>
      
    • 圧縮

      # zfs set compression=lz4 <pool>
      
    • ZFSが使用するメモリを制限

      /etc/modprobe.d/zfs.conf

      options zfs zfs_arc_max=8589934592
      

      バイト単位で指定

      • 8 GB = 8589934592 Byte
      • 16 GB = 17179869184 Byte
      • 24 GB = 25769803776 Byte
      • 32 GB = 34359738368 Byte

      変更するたびにinitramfsを更新する必要がある

      # update-initramfs -u
      
  • その他

    • スクラブ

      定期的なスクラブが推奨されている

      全ファイルをチェックする様なやつ

      # zpool scrub <pool>
      

      定期的な実行はcronなどを使う(週1で良い)

      systemd用のserviceとtimerもある

      https://github.com/lnicola/systemd-zpool-scrub

    • イベントに関するメールを送信

      # apt install zfs-zed
      # vi /etc/zfs/zed.d/zed.rc
      ZED_EMAIL_ADDR="root"
      # systemctl enable zfs-zed && systemctl start zfs-zed
      

      zfs-zedはrootにメールを送信。rootのメールはproxmoxに設定したメールアドレスに転送される。

       

Linuxサーバでクラウドゲーミングなど メモ

サーバはLinux、クライアントはLinux or Windows

まだ試していないけど、クライアントがLinuxならXpra、WindowsならTurboVNCでいいと思う。 サーバーはヘッドレスなのでXdummyドライバが必要かも?

Windowsゲームの実行

  • Wine
  • Windows on KVM
    • GPU Passthroughが必要でGPU1個占有される

サーバ側ソフト

  • Linux
    • jsmpeg-vnc-linux
      • jsmpeg-vnclinux移植版
      • 開発停止
    • VirtualGL & TurboVNC
      • VirtualGLはVNCGPUアクセラレーションを提供する
      • TurboVNCは高パフォーマンスなVNC
    • GamingAnywhere
      • OSSのParsecっぽいソフト
    • Xpra
      • ゲームできるの?
  • Windows
    • GamingAnywhere
    • jsmpeg-vnc
      • ブラウザとWebSocket経由で通信
      • 開発停止
    • Parsec
    • MoonLight
      • Nvidia GameStreamのプロキシ
      • GeForce Experienceが必要
        • テレメトリ

VirtualGL & TurboVNC

  • VirtualGL
    • VNCOpenGLサポートが無いか貧弱
    • VirtualGLはVNCにまともなOpenGLサポートを提供するソフトウェア
  • TurboVNC
    • TightVNC開発者 & RedHat & VirtualGLによって設立されたプロジェクト

VNC vs Xpra vs SSH X11 Forwarding

Xpra

  • VNCより新しい
  • VirtualGLをサポート
  • HTML5のクライアントがある

Thunarでsftp

Xfceのファイルマネージャー「Thunar」は、sftp経由でリモートサーバに接続できます。

必要なパッケージ

gvfs, sshfs
Void Linuxを使っているので、xbpsでインストールします。

# xbps-install -S gvfs sshfs

Thunarから接続する

  • Thunarを開いて「Ctrl+L」を押し、アドレスバーを選択します。
  • 次のように入力します。
    ssh://ユーザー名@ホスト名
  • パスワードを入力します。
    公開鍵認証を設定している場合は、鍵のパスワードを入力します。

左側のサイドバーにリモートサーバが表示されています。

~/.ssh/configを設定していると、ユーザー名などの入力を省略することができます。

リンク

Thunar を使ってリモートの場所をブラウズする - ArchWiki

Debian Busterで(/bootを含んだ)フルディスク暗号化

元ネタ: Full disk encryption, including /boot: Unlocking LUKS devices from GRUB

Debianなど多くのLinuxディストリビューションでは、LVM on LUKS構成でインストールしても /boot パーティションは暗号化されません。

一方、GRUB2は暗号化されたLUKSパーティションのロックを解除できます。(ただし、LUKSバージョン1のみ)

インストール

インストーラを用いて、以下の構成でインストールします。

# lsblk -o NAME,FSTYPE,MOUNTPOINT /dev/sda
NAME                    FSTYPE      MOUNTPOINT
sda
├─sda1                  ext2        /boot
└─sda2                  crypto_LUKS
  └─root_crypt          LVM2_member
    ├─root_crypt--root  ext4        /
    └─root_crypt--swap  swap        [SWAP]

こちらの記事を参考にインストールしました。

Full disk encryption (including /boot) on Ubuntu

/boot パーティションの暗号化

/boot パーティションを暗号化する方法は2つあります。

後者はパーティションを1つにまとめることが出来るというメリットはありますが、ルートパーティションでLUKS2の機能を使うことはできません。

ここでは前者の方法で /boot パーティションを暗号化します。

  1. /boot を読み取り専用で再マウント
    # mount -oremount,ro /boot
  2. /boot の中身を別の場所へ移動
    # cd ~
    # install -m600 /dev/null /tmp/boot.tar
    # tar -C /boot --acls --xattrs --one-file-system -cf /tmp/boot.tar .
    # umount /boot
  3. 必要に応じてランダムデータで上書き
    # dd if=/dev/urandom of=/dev/sda1 bs=1M
    ddstatus=progress オプションを追加すると進捗が表示されます。
  4. LUKS1でフォーマット
    # cryptsetup luksFormat --type luks1 /dev/sda1
    Are you sure? (Type uppercase yes): と聞かれるので、大文字で YES と入力します。次に、パスフレーズを入力します。
  5. /boot/dev/sda1 を追加し、マウント
    # uuid="$(blkid -o value -s UUID /dev/sda1)"
    # echo "boot UUID=$uuid none luks" | tee -a /etc/crypttab
    # cryptdisks_start boot
  6. ext2でフォーマット
    # uuid="$(grep /boot /etc/fstab | grep UUID | awk '{print $1}' | awk -F'[=]' '{print $2}')"
    # mkfs.ext2 -m0 -U $uuid /dev/mapper/boot
  7. /boot をマウントして、中身を戻す
    # mount -v /boot
    # tar -C /boot --acls --xattrs -xf /tmp/boot.tar

GRUBの設定

# echo "GRUB_ENABLE_CRYPTODISK=y" >> /etc/default/grub
# update-grub
# grub-install /dev/sda

パスワード入力を省略

GRUBによって sda1 のロックが解除されますが、initramfs ステージで sda2(ルートデバイス) のパスワードを入力する必要があります。その後 sda1 のパスワードをもう一度入力する必要があります。

これは面倒なので、LUKSパーティションにキーファイルを追加して、パスワード入力をスキップします。

キーファイルは initramfs にコピーすることになります。 initramfs は起動時、RAMに平文でキーファイルを展開します。セキュリティ上の問題があるように思うかもしれませんが、LUKSもボリュームキーをRAMに保持しているので脅威モデルは同じです。

  1. キーファイルの作成
    # mkdir -p -m0000 /etc/keys
    # ( umask 0777 && dd if=/dev/random of=/etc/keys/boot.key bs=1024 count=4 conv=fsync)
    # ( umask 0777 && dd if=/dev/random of=/etc/keys/root.key bs=1024 count=4 conv=fsync)
    キーの生成が進まない場合、エントロピーが枯渇している場合があります。 その場合、 rng-toolshaveged をインストールすることで改善します。
    キーの生成に /dev/urandom を使用することは推奨されていません。
  2. キースロットに追加
    # cryptsetup luksAddKey /dev/sda1 /etc/keys/boot.key
    # cryptsetup luksAddKey /dev/sda2 /etc/keys/root.key
    キースロットに追加されていることを確認する
    # cryptsetup luksDump /dev/sda1 | grep "^Key Slot"
    Key Slot 0: ENABLED
    Key Slot 1: ENABLED
    Key Slot 2: DISABLED
    Key Slot 3: DISABLED
    Key Slot 4: DISABLED
    Key Slot 5: DISABLED
    Key Slot 6: DISABLED
    Key Slot 7: DISABLED
    スロット1にキーファイルが追加されていることが分かります。
  3. /etc/crypttab にキーファイルのパスを追加 sda1sda2 両方設定します。
    root_crypt UUID=... /etc/keys/root.key luks,key-slot=1
    上記のように、3行目をキーファイルのパスに、4行目に key-slot オプションを追加します。 LUKSはスロット0から順番に実行します。 key-slot オプションは指定したスロット以外をスキップするので、起動時間が短縮されます。
  4. initramfs の設定
    # echo "KEYFILE_PATTERN=\"/etc/keys/*.key\"" >> /etc/cryptsetup-initramfs/conf-hook
    # echo UMASK=0077 >> /etc/initramfs-tools/initramfs.conf
  5. initramfs の再構成と確認
    # update-initramfs -u
    initramfsにキーファイルが存在するのか確認
    # lsinitramfs /initrd.img | grep "*.key"

これで、起動時に一度 sda1 のパスワードを入力するだけで起動するはずです。

トラブルシューティング

設定が誤っていて起動できない場合、DebianのLiveイメージなどを立ち上げてchrootすることで、GRUBやinitramfsを再構成できます。

  1. /mnt にマウント
    # cryptsetup open /dev/sda1 boot
    # cryptsetup open /dev/sda2 root_crypt
    # lvchange -ay root_crypt
    # mount /dev/root_crypt/root /mnt
    # mount /dev/mapper/boot /mnt/boot
    # mount --rbind /dev /mnt/dev
    # mount --rbind /sys /mnt/sys
    # mount -t proc /proc /mnt/proc
  2. /mntchroot する
    # chroot /mnt /bin/bash
    これで update-grubupdate-initramfs -u を実行できます。 exitchroot から抜けられます。
  3. アンマウント
    # umount -R /mnt
    # lvchange -an root_crypt
    # cryptsetup close root_crypt
    # cryptsetup close boot

Links

Full disk encryption, including /boot: Unlocking LUKS devices from GRUB

Full disk encryption (including /boot) on Ubuntu

Real full disk encryption using GRUB on Debian GNU/Linux for BIOS

LinuxからYamaha RTX1500のファームウェアアップデート

linux側の準備

RTXのファームウェアアップデートにはtftpが必要なのでインストールします。

# apt update && apt install tftp

ファームウェアはここからダウンロード出来ます。
http://www.rtpro.yamaha.co.jp/RT/firmware/
rtx1500.binがファームウェア本体です。

RTX1500側の準備

シリアルコンソールかsshで接続できます。

tftpサーバへの接続を許可(多分管理者権限が必要です)

# tftp host any

Linuxからtftpで接続できるように、適切にルーティングしておく必要があります。

tftpでファームウェアを送る

linuxからtftpでファームウェアをputします。

$ tftp ルータのアドレス
 > mode binary
 > put /path/to/rtx1500.bin exec
 > quit

putの後は終了するまで待ちましょう。(1分ぐらい)
途中で接続を切断してしまうと起動しなくなってしまうかもしれないので注意。

コンソールに接続しておくと進捗が分かる。

VoidLinuxにb43ドライバを入れる

broadcomWi-Fiカード「bcm43xx」のドライバを導入します。

# xbps-install -S b43-fwcutter
# export FIRMWARE_INSTALL_DIR="/usr/lib/firmware"
# wget https://www.lwfinger.com/b43-firmware/broadcom-wl-5.100.138.tar.bz2
# tar xvjf broadcom-wl-5.100.138.tar.bz2
# b43-fwcutter -w "$FIRMWARE_INSTALL_DIR" broadcom-wl-5.100.138/linux/wl_apsta.o

Macbook - Void Linux Wiki

en/users/Drivers/b43 - Linux Wireless

Void LinuxをLUKSで暗号化してインストール

Void Linuxを暗号化したパーティションに手動でインストールしてみます。

Linuxのフルディスク暗号化は、/bootパーティションを暗号化しないのが主流なようですが、それは微妙と言うか、/bootも暗号化していないとフルじゃないだろって事で/bootもLUKSで暗号化します。

UEFIではないことに注意してください。

パーティション構成

sda (MBR)
├─sda1 (LUKS ver1)
│ └─boot			1GB		/boot	ext4
└─sda2 (LUKS ver2)
  └─LVM
    ├─lvm-swap	        	2GB	        [SWAP]
    ├─lvm-root	        	10GB    	/	ext4
    ├─lvm-home	        	20GB    	/home	ext4
    └─lvm-tmp	        	5GB		/tmp	ext4

/bootとそれ以外に分けた理由は、LUKS2を使いたかったのですが、GRUB2はLUKS1にしか対応していないからです。

https://cryptsetup-team.pages.debian.net/cryptsetup/encrypted-boot.html

https://savannah.gnu.org/bugs/?55093

注意/ポイント

  • GRUB2はLUKS2に対応していません。その為、起動パーティションはLUKS1で暗号化する必要があります。

  • LVMは必須では無いですが、LUKS上でパーティションを分割出来る、削除や拡張・縮小などの操作が楽になる等の利点があります。

  • VoidLinuxのmusl版を使いますが、手順はmuslとglibcでほぼ変わりません。

  • /dev/random/dev/urandomのどちらを使うべきか?

    キーファイルを作成する場合 random を使うべきですが、ディスクのフォーマットなどは基本的に urandom で良いと思います。 システムのエントロピーが極端に少ない場合、 random,urandom のどちらを使う場合も危険なようです。HAVEGED などのエントロピーソースを増やすソフトウェアや NEUG などのハードウェアRNGを使うことを検討してください。

インストール

  1. VoidLinuxのインストールメディアを起動

  2. ip aコマンドでIPアドレスを確認して、必要に応じてSSHで外部から操作

  3. シェルをBashに変更し、日本語キーボードのキーマップを読み込む

    # bash
    # loadkeys jp106
  4. fdisk -lでディスクの確認

  5. ディスクをランダムデータで上書き
    この項目は必須ではないですが、特に理由がない限り実行することをおすすめします。
    巨大なディスクでは数時間かかることがあります。

    # dd if=/dev/urandom of=/dev/sda bs=60M
    

    この操作はディスク上のすべてのデータを上書きします。復元は不可能なので、重要なデータは事前にバックアップしておいて下さい。

  6. パーティションを作成

    # cfdisk /dev/sda
    

    パーティションテーブルは MBR なので dos を選択します。
    2つのパーティションを作り、/boot用のパーティションにBootableフラグを付けます。
    設定が終わったら[Write]を選択、本当に実行するか?と聞かれるのでyesと入力してEnter、その後[Quit]で終了します。

    # lsblk /dev/sda
    

    lsblkパーティションが作成されているか確認します。

  7. /boot パーティションをLUKSでフォーマット

    # cryptsetup -v --type luks1 \
    	--cipher aes-xts-plain64 \
    	--key-size 512 \
    	--pbkdf pbkdf2 \
    	--iter-time 5000 \
    	--verify-passphrase \
    	--use-urandom \
    	--timeout 20 \
    	luksFormat /dev/sda1
    

    luks1では pbkdf に argon2i/id は選択できません。
    --iter-timeパスフレーズ入力後の待ち時間をミリ秒で指定(5000なら5秒)
    --timeoutタイムアウトするまでの時間を秒で指定
    /dev/randomを使いたい場合--use-randomを指定

  8. システムパーティションをLUKSでフォーマット

    # cryptsetup -v --type luks2 \
    	--cipher aes-xts-plain64 \
    	--key-size 512 \
    	--pbkdf argon2id \
    	--iter-time 5000 \
    	--verify-passphrase \
    	--use-urandom \
    	--timeout 20 \
    	luksFormat /dev/sda2
    
  9. LUKSパーティションを開く

    # cryptsetup luksOpen /dev/sda1 boot
    # cryptsetup luksOpen /dev/sda2 lvm
    

    boot,lvmの部分は環境に合わせて分かりやすい名前に変更してください。
    /dev/mapper/ディレクトリに指定した名前のデバイスファイルが作成されます。
    (例:/dev/mapper/boot)

  10. /boot パーティションext4でフォーマット

    # mkfs.ext4 /dev/mapper/boot
    
  11. LVMのセットアップ

    # pvcreate /dev/mapper/lvm
    # vgcreate /dev/lvm /dev/mapper/lvm
    # lvcreate /dev/lvm -L 2GB -n swap
    # lvcreate /dev/lvm -L 10GB -n root
    # lvcreate /dev/lvm -L 20GB -n home
    # lvcreate /dev/lvm -L 5GB -n tmp
    

    空き容量をすべて使うには、-l 100%FREEというオプションを指定します。
    -lが小文字であることに注意してください。大文字だとエラーが出ます。

  12. システムパーティションのフォーマット

    mkswap -L swap /dev/lvm/swap
    mkfs.ext4 -L root /dev/lvm/root
    mkfs.ext4 -L home /dev/lvm/home
    mkfs.ext4 -L tmp /dev/lvm/tmp
    
  13. システムパーティションとdev,sys,procのマウント

    # mount /dev/lvm/root /mnt
    # mkdir /mnt/{dev,sys,proc,boot,home,tmp}
    # mount /dev/mapper/boot /mnt/boot
    # mount /dev/lvm/home /mnt/home
    # mount /dev/lvm/tmp /mnt/tmp
    # mount --rbind /dev /mnt/dev
    # mount --rbind /sys /mnt/sys
    # mount -t proc /proc /mnt/proc
    
  14. ベースシステムのインストール

    //musl版
    # XBPS_ARCH=$(uname -m)-musl xbps-install -Sy -R https://youngjin.io/voidlinux/current/musl -r /mnt base-system cryptsetup lvm2 grub vim
    
    //glibc版
    # xbps-install -Sy -R https://youngjin.io/voidlinux/current -r /mnt base-system cryptsetup lvm2 grub vim
    

    日本からは韓国のミラー(youngjin.io)が一番速いです。
    その他のミラーは公式サイトを参照してください。
    https://voidlinux.org/download/#mirrors

  15. chrootでセットアップ

    # chroot /mnt /bin/bash
    
    // rootのパスワード
    # passwd root
    
    // パーミッション
    # chown root:root /
    # chmod 755 /
    
    // デフォルトシェル
    # chsh -s /bin/bash
    
    // ホストネーム
    # echo "hostname" > /etc/hostname
    
    // タイムゾーン
    # ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
    
    // ローケル
    # echo "LANG=en_US.UTF-8" > /etc/locale.conf
    

    glibc版の場合glibcのローケル設定が必要です。

    # echo "en_US.UTF-8 UTF-8" >> /etc/default/libc-locales
    # xbps-reconfigure -f glibc-locales
    

    /etc/rc.conf
    TIMEZONE="Asia/Tokyo"
    KEYMAP="jp106"
    TTYS=2
    

    /etc/crypttab

    crypttabにルートファイルシステムを追加しないで下さい。

    boot	UUID=</dev/sda1のuuid>	none	luks,timeout=10
    

    /dev/sda1 の UUID を確認

    # blkid -o value -s UUID /dev/sda1
    

    /etc/dracut.conf.d/00-hostonly.conf
    hostonly=yes
    

    /etc/dracut.conf.d/10-crypt.conf
    install_items+="/etc/crypttab"
    

    /etc/fstab
    # <filesystem>	<dir>	<type>	<options>				<dump>	<pass>
    /dev/mpper/boot	/boot	ext4	rw,nodev,nosuid,noexec			0	0
    /dev/lvm/root	/	ext4	rw,errors=remount-ro	                0	0
    /dev/lvm/home	/home	ext4	rw,nodev,nosuid				0	0
    /dev/lvm/tmp	/tmp	ext4	rw,nodev,nosuid,noexec			0	0
    /dev/lvm/swap	none	swap	sw					0	0
    
  16. GRUBの設定
    設定ファイルに以下を追加します。

    /etc/default/grub
    GRUB_CMDLINE_LINUX="cryptdevice=UUID=</dev/sda1のuuid>:boot"
    GRUB_ENABLE_CRYPTODISK=y
    

    また、GRUB_CMDLINE_LINUX_DEFAULTに以下のカーネルパラメータを追加します。
    rd.auto=1
    このようになっているはずです。
    GRUB_CMDLINE_LINUX_DEFAULT="loglevel=4 slub_debug=P page_poison=1 rd.auto=1"

  17. GRUBのインストール

    # grub-install --target=i386-pc /dev/sda
    

    設定ファイルの生成

    # grub-mkconfig -o /boot/grub/grub.cfg
    
  18. カーネルフックのセットアップ

    # xbps-reconfigure -f linux4.18
    

    カーネルのバージョンはこのコマンドで確認出来ます。

    # cat /var/db/xbps/*.plist | grep key | grep linux
    

    実行するとこのように出力されます。

    <key>linux</key>
    <key>linux-firmware-amd</key>
    <key>linux-firmware-intel</key>
    <key>linux-firmware-network</key>
    <key>linux-firmware-nvidia</key>
    <key>linux4.18</key>
    <key>util-linux</key>
    

    カーネルのバージョンが4.18であることが分かります。

  19. 再起動

    # exit
    # swapoff /dev/lvm/swap
    # umount -R /mnt
    # lvchange -a n lvm
    # cryptsetup luksClose lvm
    # cryptsetup luksClose boot
    # reboot
    

LUKSパーティションのマウントを楽にする

上記の設定のままでは、起動時に複数回luksのパスフレーズを入力する必要があります。
キーファイルを追加するか、SSH経由でパスフレーズを入力することで、楽にluksパーティションをマウントすることが出来ます。

GRUBにパッチを当てることで起動時のパスフレーズの入力を完全にスキップすることも出来ますが、セキュリティ的に問題があると思うのでおすすめしません。

キーファイルの追加

SSH経由でパスフレーズを入力