ここでは、セキュアブートが有効の状態において、Realtek社のBluetoothデバイスを読み込む手順を記載する。
SUSE Enterprise Linux 15 SP3 と openSUSE Leap 15.3で動作確認している。
該当モジュールは/lib/modules/$(uname -r)/kernel/drivers/bluetoothディレクトリにインストールされているものとする。
該当モジュール名は、rtk_btusb.koファイルとする。
セキュアブートが有効の場合、Realtek BT8761BUモジュールの署名を登録する必要がある。
また、ユーザが勝手にモジュールファイルをXZ形式等へ圧縮してはならない。(モジュールの署名に失敗するため)
署名を登録する手順を以下に示す。
1. まず、署名に必要な設定ファイルを作成する。
mkdir -p ~/.MOK/RTL8761BU && cd ~/.MOK/RTL8761BU
vi RTL8761BU.config
# ~/.MOK/RTL8761BU/RTL8761BU.configファイル
[ req ]
default_bits = 4096
distinguished_name = req_distinguished_name
prompt = no
string_mask = utf8only
x509_extensions = myexts
[ req_distinguished_name ]
O = SUSE Linux Products GmbH (User Add RTL8761BU) # 任意の名前
CN = SUSE Linux Enterprise Secure Boot (User Add RTL8761BU) # 任意の名前
emailAddress = suse@localhost # 任意のメールアドレス
[ myexts ]
basicConstraints=critical,CA:FALSE
keyUsage=digitalSignature
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid
2. キーペアを作成する。
openssl req -x509 -new -nodes -utf8 -sha256 -days 36500 -batch -config ./RTL8761BU.config \
-outform DER -out ./RTL8761BU.der -keyout ./RTL8761BU.priv \
-addext "extendedKeyUsage=codeSigning"
3. 次に、MOK(Module owned Key)にキーをインポートする。
--root-pwオプションを付加することにより、再起動時のRealtek BT8761BUモジュールの署名において、rootパスワードが必要となる。
sudo mokutil --import ./RTL8761BU.der --root-pw
4. PCを再起動して、上記のキーの署名する。
sudo systemctl reboot
5. Realtek BT8761BUモジュール(rtk_btusb)を署名して、モジュールを読み込む。
sudo /lib/modules/$(uname -r)/build/scripts/sign-file sha256 ./RTL8761BU.priv ./RTL8761BU.der
/lib/modules/$(uname -r)/kernel/drivers/bluetooth/rtk_btusb.ko
sudo depmod -a $(uname -r) # モジュール依存リストを更新する
sudo modprobe -v rtk_btusb # RTL8761BUモジュールをロードする
lsmod | grep rtk_btusb # 正常に読み込まれたかどうかを確認する
5. Realtek BT8761BUモジュールが正しく署名されているかどうかを確認する。
正常に読み込まれている場合は、"RTK_8761BU.der is already enrolled"と表示される。
cd ~/.MOK/RTL8761BU
sudo mokutil --test-key ./RTK_8761BU.der
注意1. 上記の署名は、カーネルがアップデートされた場合、再度、署名が必要となることに注意する。
注意2. RTL8761BUが正常に動作しない場合、標準のBluetoothモジュールを無効にする。
sudo vi /etc/modprobe.d/50-bluetooth-blacklist.conf
# /etc/modprobe.d/50-bluetooth-blacklist.confファイル
blacklist btrtl
blacklist btusb
blacklist btintel
blacklist btbcm