チラシの裏からうっすら見える外枠の外のメモ書き

新聞に挟まってる硬い紙のチラシの裏からうっすら見える外枠の外に走り書きされたようなものです。思いついたときにふらふらと。

WSL 2にip_tables.koカーネルモジュールを入れる方法

WSL 2にRootless Dockerをインストールしようとしていましたが、ip_tablesカーネルモジュールがWSL 2にはないのでちょっと手間でした。 k-hyoda.hatenablog.com

そこで、今回は自分でip_tables.koカーネルモジュールとそれを読み込むことができるカーネルを用意してRootless Dockerを他のLinux OSと同じようにインストールできるようにしました。

  • 注意事項
  • 動作環境
  • やること
  • 具体的な手順
  • 手順
  • 感想

注意事項

  • 自己責任です。
  • ip_tables.koを認識するところまでは確認しましたがRootless Dockerのインストールまでは確認していません。

動作環境

user@MACHINE:~$ uname -a
Linux MACHINE 4.19.128-microsoft-standard #1 SMP Tue Jun 23 12:58:10 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

やること

  1. Linuxカーネルソースコードをダウンロードする
  2. 必要な機能をモジュールに設定してビルドする
  3. ビルドで出てきたカーネルをWSL 2で使用する
  4. modprobeコマンドで読み込む
続きを読む

WSL 2に入れたRootless Dockerをアンインストールする

前回の記事でWSL 2にRootless Dockerを入れました。

k-hyoda.hatenablog.com

ただ、コンテナからインターネットに接続できないという問題が残っていて実用的じゃないなと思ったのでアンインストール方法を記載しておきます。

目標は、上の記事を適用する前の段階にすることです。

  • やること
  • 具体的な手順
  • 手順
    • 1. Rootless Dockerを停止する
    • 2. .bashrcからRootless Dockerの設定を消す
    • 3. Rootless Dockerをアンインストールする
    • 4. Genieの自動起動設定を消す
    • 5. Genieをアンインストールする
    • 6. dotnet-runtime-3.1をアンインストールする
    • 7. daemonize/dbus/policykit-1をアンインストールする
    • 8. WSL 2を再起動する
  • 最後に

やること

  • Rootless Dockerをアンインストールする
  • Genieをアンインストールする
続きを読む

WSL 2でRootless Dockerを使う

WSL 2がWindows 1909にバックポートされたおかげで、多くの人がWSL 2を体験できる状態になったと思います。

WSL 2のメリットにはDockerが使えるというものがありましたが、Rootless Dockerは使えないという問題がありました。 そこで、WSL 2に色々なものを加えてRootless Dockerをインストール、実行できるようにしました。

  • 注意事項
  • 動作環境
  • やること
  • 具体的な手順
  • 手順
    • 1. daemonize/dbus/policykit-1をインストールする
    • 2. dotnet-runtime-3.1をインストールする
    • 3. Genieをインストールする
    • 4. Genieを自動起動するようにする
    • 5. Rootless Dockerをインストールする
    • 6. .bashrcにRootless Dockerの設定を追記する
  • コンテナ起動時の引数に--net=hostをつける
  • 普通にインストールできない理由
    • ip_tablesカーネルモジュールがない問題
    • systemdが使えない問題
  • 感想

注意事項

  • systemdをinitの代わりに使うようにしてるのでMicrosoftの想定する使い方じゃないため後々動かなくなるかもしれません。
  • Rootless Dockerをインストールすることはできましたが、Rootless Dockerが100%動くかはわかりません。まだそこまで試せていません。 * 少なくともコンテナはインターネットに接続できないっぽいです(ホストマシンとの通信はできる)。
  • コンテナからインターネットへ接続するにはコンテナ起動時に--net=hostをつけることでインターネット接続できるようです。詳しくは後述します。
  • 自己責任です。

動作環境

やること

  1. systemdをPID 1で動くようにする
  2. Rootless Dockerをip_tablesカーネルモジュールを無視するようにしてインストールする
続きを読む

Rootless-Dockerのdocker-composeでGPUを使おう

今まで気づけていませんでしたが、どうやらRootless-Dockerを使っている場合はdocker-composeでGPUを簡単には使用できないようです。

新しいDockerでは、オプション--gpusをつけることでGPU(正確にはNVIDIAGPU)を使用することができるようになっています。 medium.com

ですが、docker-composeはまだその仕様を取り込んでいないようで、docker-compose.ymlgpusの項目をつけてもエラーになってしまいます。 github.com そこで、普通のDockerを使っている場合は、/etc/docker/daemon.jsonに以下を追加して

{
    "runtimes": {
        "nvidia": {
            "path": "/usr/bin/nvidia-container-runtime",
            "runtimeArgs": []
        }
    }
}

Dockerデーモンの古いオプションruntimeを復活させることでdocker-compose.ymlruntime: nvidiaをつけていました。

一方、Rootless-Dockerはユーザーモードで動作するデーモンなので、daemon.jsonを配置する場所が異なります。 当てずっぽうで~/.config/docker/daemon.jsonに上にある内容を追加したところ、無事runtimeオプションを復活させることができました。 これでRootless-Dockerでdocker-composeを使っている人も一安心ですね。

ただし、docker-compose.ymlversionは2.3や2.4である必要があり、3以降のdocker-compose.ymlにはruntimeがありません。 必要な場合はdocker-compose.ymlversionを2.4にしておくことをおすすめします。

本音を言えばdocker-compose早くgpus対応してくれという気持ちです。 上に貼ったGitHubのissueをしばらく追跡してればわかると思うので、もし気づいたら記事にしたいと思います。

ちなみに、Issueの一番最新のコメントにある「docker-pyのマージ待ち」ですがすでにマージ済みなのでdocker-composeへの反映はおそらく今月か来月になるんじゃないかと思ってます。 IssueとPRを見てきましたがまだdocker-compose.ymlの構文について議論がかわされているようなのでもう少しかかりそうです。 github.com

Ubuntu 20.04 LTSにnvidia-driver-440とcuda-toolkit-10-1とcuDNNを入れた話

UbuntuNVIDIAGPUドライバとかを入れるのって難しいですね。 かれこれ1年ぐらいUbuntuのお世話をしているんですが、Ubuntu 16.04 LTSでドライバの相性問題に悩まされて辛い思いをしました。 そろそろUbuntu 16.04 LTSも乗り換えの時期かと思いUbuntu 20.04 LTSに乗り換えたんですが、こっちでもドライバがうまくインストールできなかったことがあったのでまとめておきます。 なお、GPUが古いとnvidia-driver 440やCUDA 10.1すら入らない可能性があるのでその場合は以下の方法は使えません。 ハードウェアとドライバとCUDAの対応関係について

続きを読む

KOSENセキュリティコンテスト2019 Write up その2

この記事は前回記事の続きです。
まずは前回をどうぞ! k-hyoda.hatenablog.com

今回は前回記事にて宣言していた「解けなかった問題で触って色々考えた問題」について書いていきます。
こういう場合ってWrite upって言うんですかね?よくわかりません。
問題を考える方などの参考になれば幸いです。

続きを読む

KOSENセキュリティコンテスト2019 Write up

本校の学生はCTFをほとんど経験したことないのですが、面白そうということで2チームほど編成して参加してきました。 www.ishikawa-nct.ac.jp

この記事ではWrite upとしてどの問題を解いたかを紹介します。 ついでに現実問題としてどのような対処をすべきかもかければ御の字ですね。
問題のスクリーンショットや解き方を記録しているわけでもないので今から記憶力テストが始まります。

続きを読む