x11vnc -R clear_all
リモートマシンのファイルをrsyncでバックアップする例
前提
- リモートマシン名: remote
- ユーザ名:foo(リモート、ロカールとも)
- ローカルでssh-agentを使用。リモートマシンにはパスフレーズ入力なしでsshログイン可能にしておく(rsyncはデフォルトでリモート接続にsshを使用するため)
- リモートもローカルも、rsyncをパスワードなしでsudo可能にしておく (ローカル側はパスワードの手入力可能かもしれないが未検証)
リモートマシンで自分が所有するホームディレクトリ上のworkディレクトリ以下をローカルのwork.backupにバックアップ
rsync -avzPi remote:work/ work.backup引数の概要
- a: パーミッション、所有者、タイムスタンプなどの属性を維持
- v: 詳細メッセージ表示
- z: データを圧縮(ネットワークが広帯域の場合、付与しないほうが良いケースあり)
- P: 進捗を表示
- i: 更新されている属性を表示
リモートのroot権限でのみ読み取り可能な/eggplantディレクトリ以下をローカルの/eggplant.backupにバックアップ
sudo -E rsync --rsync-path="sudo rsync" -avzPi foo@remote:/eggplant/ /eggplant.backup
- 最初のsudoは、ローカルでrootのみが書き込み可能なディレクトリ/eggplant.backup以下にバックアップするため。またファイルの所有者が自ユーザ以外の場合、そのユーザに変更するためにも必要
- sudoの引数-Eは、ssh-agentをsudoしたあとも有効にする(sshコマンドは、通信すべきssh-agentプロセスを環境変数から知るため)
- --rsync-path="sudo rsync"は、リモート側のrsyncをroot権限で起動する。リモート側で所有者がrootであっても、fooユーザで読み取り可能な場合は不要
Linux版のDaVinci Resolveでfcitxにより日本語を入力する
動作確認環境
- Debian12
- fcitx5-frontend-qt5:5.0.16-1+b3
- DaVinci Resolve 19.3
sudo mkdir /opt/resolve/libs/plugins/platforminputcontexts sudo ln -s /usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitx5platforminputcontextplugin.so /opt/resolve/libs/plugins/platforminputcontexts
ターミナルがtrue color (24bit)で表示できるかをチェックするシェル
curl -s https://gist.githubusercontent.com/lifepillar/09a44b8cf0f9397465614e622979107f/raw/24-bit-color.sh | bash
マウントされたディレクトリのEFIパーティションにGrub2をインストールする方法
USBドライブ起動のLinuxなどから、Grub2をインストールする方法を以下に説明する。 これは、EFIパーティションが壊れた時などに役立つ。
手順は以下のとおり- rootfsをマウントしておく。以下の例では/mnt/rootfs
- 上記rootfsの/boot/efiにESP (EFI System Partition)をマウントしておく
- 次のコマンドを実行
ROOTDIR=/mnt/rootfs
mount --rbind /dev ${ROOT_DIR}/dev
mount --rbind /proc ${ROOT_DIR}/proc
mount --rbind /sys ${ROOT_DIR}/sys
chroot ${ROOT_DIR} grub-install --target=x86_64-efi
インストール完了後、上記でマウントした/dev、/proc, /sysとrootfs, ESPをumountする
QtアプリをHiDPIに対応させる設定
export QT_AUTO_SCREEN_SCALE_FACTOR=1 export QT_ENABLE_HIGHDPI_SCALING=1参考: https://wiki.archlinux.org/title/HiDPI
X11サーバを共有する特権dockerコンテナの作成例
docker run -it --network=host --env DISPLAY=$DISPLAY -v ${HOME}/.Xauthority:/root/.Xauthority -v /store:/store -v /tmp/.X11-unix:/tmp/.X11-unix --privileged debian:12 bash
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版を使う。
上の画面でLive system (amd64)を選択する(ENTERキーを押す)と、次のようにコンソール画面が表示される。
配布サイト
上記のサイトには各種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
上記スクリプトを実行する次のような画面が表示される。

参考
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/grubのGRUB_CMDLINE_LINUX_DEFAULTに以下のようにconsoleblankオプションを追加する。
GRUB_CMDLINE_LINUX_DEFAULT="quiet consoleblank=60"その後、grub.confを更新して再起動する。
update-grub2 reboot
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.*"
シリアルコンソールで、ターミナルサイズを変更する方法
シリアルコンソールを使うとデフォルトでは、ターミナルサイズが80x25になっていることが多い。
# stty size 25 80これを実際の仮想端末のサイズにフィットするには以下のコマンドを実行する
# setterm --resizeすると、ターミナルサイズが変更される
# stty size 51 204
Ubuntu上で新しいバージョンのDebianのLXCコンテナを作る方法
例えば、Ubuntu 20.04上でDebian12のLXCコンテナを作成すると、'signed by unknown key'(知らない鍵で署名されている)と表示されエラーとなる。
# lxc-create -t debian -n deb12 -- -r bookworm debootstrap is /usr/sbin/debootstrap Checking cache download in /var/cache/lxc/debian/rootfs-bookworm-amd64 ... gpg: key 7638D0442B90D010: 4 signatures not checked due to missing keys gpg: key 7638D0442B90D010: "Debian Archive Automatic Signing Key (8/jessie)次のように鍵をダウンロードして、ホストOSに登録してから、再度lxc-createを実行すればよい。" not changed gpg: Total number processed: 1 gpg: unchanged: 1 Downloading debian minimal ... I: Retrieving InRelease I: Checking Release signature E: Release signed by unknown key (key id F8D2585B8783D481) The specified keyring /var/cache/lxc/debian/archive-key.gpg may be incorrect or out of date. You can find the latest Debian release key at https://ftp-master.debian.org/keys.html Failed to download the rootfs, aborting. Failed to download 'debian base' failed to install debian lxc-create: deb12: lxccontainer.c: create_run_template: 1627 Failed to create container from template lxc-create: deb12: tools/lxc_create.c: main: 317 Failed to create container deb12
wget https://ftp-master.debian.org/keys/archive-key-12.asc -O - --quiet \
| gpg --import --no-default-keyring --keyring=/usr/share/keyrings/debian-archive-keyring.gpg
青字の部分は使用するDebianのバージョンに適宜変更する。鍵の一覧は以下のサイトにある。
https://ftp-master.debian.org/keys.html
Xvfbにxrandrで解像度を追加する
追加したい解像度を引数にして、cvtコマンドを実行する。
$ cvt 1280 800 # 1280x800 59.81 Hz (CVT 1.02MA) hsync: 49.70 kHz; pclk: 83.50 MHz Modeline "1280x800_60.00" 83.50 1280 1352 1480 1680 800 803 809 831 -hsync +vsync上記の出力を引数にxrandr --newmode、--admode、-sを実行する。
xrandr --newmode 1280x800 83.50 1280 1352 1480 1680 800 803 809 831 -hsync +vsync xrandr --addmode screen 1280x800 xrandr -s 1280x800
LXCコンテナの中でDockerを使用するための設定
/var/lib/lxc/[container名]/configに以下の設定を追加し、コンテナを(再)起動する。
なるべく安全な方法
lxc.apparmor.profile = generated lxc.apparmor.allow_nesting = 1
とにかく権限を与える方法
上記で駄目な場合、以下ならほとんどのケースで起動可能。上記にlxc.cap.drop =を加えて、Dockerを起動できる場合もあり。lxc.apparmor.profile = unconfined lxc.cgroup.devices.allow = a lxc.cap.drop =
Ethernet、UDP、TCPパケットの構造
Ethernetパケット
ヘッダサイズ: 14B (802.1Q VLANタグがある場合18B)、チェックサムサイズ: 4B| サイズ (B) | 説明 |
|---|---|
| 6 | 送信先MAC |
| 6 | 送信元MAC |
| [4] | 802.1Qタグ (VLANタグ) |
| 2 | Ethernet type/size. IPv4:0x0800, IPv6:0x86dd |
| - | ペイロード(IPなど) |
| 4 | FCS (Frame Check Sequence; CRC) |
IPv4
ヘッダサイズ: 20B (拡張情報を除く)| サイズ (B) | 説明 |
|---|---|
| 1 | バージョン(MSB 4bit)、ヘッダ長(LSB 4bit) 4オクテット単位 |
| 1 | サービス種別 |
| 2 | 全長(IPヘッダを含む) |
| 2 | 識別子 |
| 2 | フラグ(MSB 3bit)、フラグメントオフセット(LSB 13bit) |
| 1 | TTL (Time to Live) |
| 1 | 上位プロトコル. ICMP: 0x01, TCP:0x06, UDP:0x11 |
| 2 | IPヘッダのチェックサム |
| 4 | 送信元アドレス |
| 4 | 送信先アドレス |
| [2] | 拡張情報 |
| - | データ |
UDP
ヘッダサイズ: 8B| サイズ (B) | 説明 |
|---|---|
| 2 | 送信元ポート |
| 2 | 送信先ポート |
| 2 | データ長 |
| 2 | チェックサム |
| - | ペイロード(IPなど) |
TCP
ヘッダサイズ: 20B| サイズ (B) | 説明 |
|---|---|
| 2 | 送信元ポート |
| 2 | 送信先ポート |
| 4 | シーケンス番号 |
| 4 | 確認応答番号 |
| 2 | ヘッダ長(MSB 4bit)[32bit単位]、予約(3bit)、フラグ(9bit) |
| 2 | Windowサイズ |
| 2 | チェックサム |
| 2 | 緊急ポインタ |
| [4-40] | オプション |
| - | ペイロード |
登録:
投稿 (Atom)