けさらんぱの自由帳

とあるFF14プレイヤーがFF14のこととか関係ないことを書いていく予定のブログです。記載されている会社名・製品名・システム名などは、各社の商標、または登録商標です。

Emacsのeglot+clangdでプロジェクトルートとIncludeディレクトリを指定する

お仕事でちょっと変わったディレクトリ構成のCのコードを読むときに、Emacsのeglot+clangdで一部のインクルードファイルが読み込まれずにジャンプがうまくいかなくて苦労したのでメモ。

init.elの編集

~/.config/emacs/init.el を編集して次の行を追加します。

(setq project-vc-extra-root-markers '("compile_flags.txt"))

この記述をすると、 compile_flags.txt という名前のファイルがあるディレクトリがeglotが認識するプロジェクトのルートディレクトリとして設定されます。

compile_flags.txtの作成

次に、 compile_flags.txt という名前のファイルをプロジェクトのルートディレクトリに作成して、次の行を追記します。 Path\To\Project は実際のインクルードディレクトリのパスに変更してください。

-IPath\To\Include

この記述により、eglotから起動されるclangdにインクルードパスを追加することができます。

Emacsでジャンプする

上記の設定をすることで、 M-.M-, でカーソル下にある変数やマクロの定義にジャンプをすることができます。

Termux環境にSSH接続してX11 Forwardingする

sshd_configを書き換えるだけなのですが、ファイルパスを忘れそうなので。

sshd_configの編集

sshdを起動する前に、下記のようにして設定ファイルを編集します。

$ vim /data/data/com.termux/files/usr/etc/ssh/sshd_config

下記の行を追加します。

X11Forwarding yes

sshdの起動

Termux側でIPアドレスを調べて、sshdを起動します。

$ ifconfig
$ sshd

その後、Xサーバが動いている端末からsshしてXアプリを起動します。

$ ssh -p 8022 aaa.bbb.ccc.ddd

lvmcacheを構築してみた

うちの環境では、Linuxlibvirtで作成した仮想環境上で動くWindows 10の中でFF14を動かしています。このWindows 10のストレージにはNVMe上に切ったパーティションを使っているのですが、容量が足りなくなってきたので、LinuxでNVMeとHDDを組み合わせて使うということを試してみました。そのときの作業メモです。うちのFF14、どんどん変態的な環境になっていく…

Windows 10のバックアップ

まず現在のWindows 10のディスクイメージをバックアップします。

sudo dd if=/dev/nvme0n1p2 of=/work/win.img

PVの作成

次にNVMeとHDDを使ってPVを作ります。

sudo pvcreate /dev/sda2
sudo pvcreate /dev/nvme0n1p2

VGの作成

次にVGを作ります。

sudo vgcreate win /dev/sda2 /dev/nvme0n1p2

LVの作成

次にLVを作ります。パーティション全体を使うには、 -l 100%FREE とします。どうでもいいことですが、PV, VG, LVってLVMのことを理解してないとわけわからない…

sudo lvcreate -n cache -l 100%FREE win /dev/nvme0n1p2
sudo lvcreate -n data -l 100%FREE win /dev/sda2

LVの変換

最後にNVMeのLV( win/cache )をキャッシュにしてHDDのLV( win/data )と統合します。 256KiB は環境によって適当に変えます。また、 writeback は危険だという警告が出ますがここはパフォーマンスを優先します。

sudo lvconvert --type cache --cachevol cache --chunksize 256KiB --cachemode writeback win/data

Windows 10を書き戻す

バックアップしておいたWindows 10のディスクイメージを書き戻します。

sudo dd if=/work/win.img of=/dev/mapper/win-data

あとはWindows 10上でファイルシステムを拡張します。うちの環境では回復パーティションを削除する必要がありました。削除していいかちょっと迷いましたが今まで役に立ったことがないしまあいいか…

記載されている会社名・製品名・システム名などは、各社の商標、または登録商標です。