LXCコンテナの中からKVMを使用する設定

ホストOSの/var/lib/lxc/[CONTAINER NAME]/configに以下を追加して再起動。(ホストOSがcgroup v1を使っている場合、cgroup2をcgroupに変更する)
# /dev/kvm
lxc.cgroup2.devices.allow = c 10:232 rwm
lxc.mount.entry = /dev/kvm dev/kvm none bind,optional,create=file

USBストレージから起動するテキストベースLinuxイメージ

標記のひとつにDebian Liveイメージがある。

配布サイト


上記のサイトには各種Linuxディストリビューションのイメージがある。特に好みがなければ、以下のようなstandard版を使う。
  • debian-live-12.5.0-amd64-standard.iso

USBストレージへの書き込み

以下の例では、青色の/dev/sdxがUSBストレージのデバイス。/proc/partitionsやdmsgの出力などから実際に接続しているデバイスを特定してそれに変更する
dd if=debian-live-12.5.0-amd64-standard.iso of=/dev/sdx bs=1M
上記のbs=1Mは、ブロックサイズを1MiBにするオプション。昔、特定の環境でブロックサイズを一定サイズ以上に設定しないと極端に遅いことがあったので習慣として付与している。最近のほとんどのLinux環境では、なくても問題ないと思われる。

おまけ:QEMUの実行例

#!/bin/sh

QEMU=qemu-system-x86_64
IMAGE=debian-live-12.5.0-amd64-standard.iso
MEMORY=2048

${QEMU} \
-cpu host \
-enable-kvm \
-m ${MEMORY} \
-device nec-usb-xhci,id=xhci \
-drive id=DRIVE_ID,format=raw,file=${IMAGE},if=none \
-device usb-storage,bus=xhci.0,drive=DRIVE_ID
上記スクリプトを実行する次のような画面が表示される。
上の画面でLive system (amd64)を選択する(ENTERキーを押す)と、次のようにコンソール画面が表示される。

参考

QEMUでドライブを追加するオプション例

X11でのWindowsのスクリーンショットの撮り方

対象WindowのIDを取得

xwininfoを使用

wxdコマンド実行

下記では青字部分がWindow ID。適宜変更。
wxd -id 0x1000011 | convert xwd:- screenshot.png
上記のパイプの右側は、ImageMagickを使って画像をpngに変換する。

Linuxのコンソールのディスプレイをオフする

kernelのコマンドラインにconsoleblank=[N] (Nはオフまでの秒数)を追加する。

DebianやUbuntuでは、/etc/default/grubGRUB_CMDLINE_LINUX_DEFAULTに以下のようにconsoleblankオプションを追加する。

GRUB_CMDLINE_LINUX_DEFAULT="quiet consoleblank=60"
その後、grub.confを更新して再起動する。
update-grub2
reboot

VIMでWindowの幅を設定する例

:vert resize 80
もちろん、複数のwindowが縦に分割されてないと意味がない

LXCコンテナにログインできない、または、時間がかかる時の対処

ホストOSのログに次のメッセージがある場合、AppArmorによってコンテナ内の動作 (この場合mount) がブロックされている。 このログは、ホストOSがUbuntu 20.04、コンテナがDebian 12のケース。
kernel: audit: type=1400 audit(1705193372.029:49): apparmor="DENIED" operation="mount" info="failed perms check" error=-13 profile="lxc-sakura_</var/lib/lxc>" name="/run/systemd/unit-root/" pid=4456 comm="(d-logind)" srcname="/" flags="rw, rbind"
ホストOSの/var/lib/lxc/[Container名]/configに次の2行を加えて、LXCコンテナを起動
lxc.apparmor.profile = generated
lxc.apparmor.allow_nesting = 1

参考

LXCコンテナの中でDockerを使用するための設定

gradleでのテスト関係のオプション例

ビルドのみ(テストしない)

./gradlew build -x test

指定のテストを実行

./gradlew test --tests "SomeTest.*"