CUBE SUGAR CONTAINER

技術系のこと書きます。

Ubuntu

BIRD と Network Namespace でスタティックルーティングを試す

BIRD 1 は The BIRD Internet Routing Daemon の略で、ルーティングプロトコルを実装した OSS のひとつ。 今回は、そんな BIRD を Network Namespace と組み合わせてスタティックルーティング (静的経路制御) の設定をしてみる。 なお、今回試す内容は ip(8)…

Python: CatBoost をいくつかの環境でベンチマークしてみる

今回は GBDT (Gradient Boosting Decision Tree) フレームワークのひとつである CatBoost について、いくつかの環境で同一のソースコードを使って学習にかかる時間を比較してみた。 きっかけは、最近入手した Apple M2 Pro を搭載した Mac mini が、どれくら…

pyenv を使って Ubuntu に複数バージョンの Python をインストールする

今回は Python のインストールマネージャである pyenv を使って、簡単に複数のバージョンの Python を Ubuntu にインストールする方法を書く。 Python でソフトウェアを開発する際には、バージョン間の差異に配慮する必要がある。 そのため、開発する環境で…

Ubuntu の APT で入る Python 仮想環境系のパッケージを使う

最近は Docker などのコンテナ技術の台頭もあって、プログラミング言語に固有の仮想環境を使う人は以前より減った印象がある。 とはいえ、手元でササッと検証するときなどには便利なことに変わりはない。 今回は、Ubuntu を使って APT で入る Python の仮想…

Ubuntu の APT で特定パッケージの依存関係を調べる

今回は Debian 系のパッケージ管理で使われる APT (Advanced Packaging Tool) で特定パッケージの依存関係を調べる方法について。 結論から先に述べると apt-cache depends サブコマンドと apt-cache rdepends サブコマンドを使って調べられる。 使った環境…

Multipass の仮想マシンで X Window System のアプリケーションを使う

今回は Multipass で作った仮想マシン上で X Window System のアプリケーションを使う方法について。 やり方としては、Multipass の仮想マシンに ssh(1) を使ってログインできるようにした上で X11 Forwarding すれば良い。 使った環境は次のとおり。 $ sw_v…

Ubuntu 22.04 LTS に後から GUI (X Window System) を追加する

サーバ版のインストールイメージを使ってセットアップした場合など、デフォルトで X Window System やデスクトップ環境が入っていないことがある。 しかし、後から必要になることも多い。 そこで、今回は Ubuntu 22.04 LTS にデスクトップ環境や X Window Sy…

Linux の IPC Namespace について

Linux のコンテナ仮想化を実現する機能の一つに Namespace がある。 Namespace はプロセスが動作する際のリソースをカーネルの中で隔離 (分離) する仕組み。 Namespace は隔離する対象のリソースによって色々とある。 man7.org 今回は、その中でも IPC (Inte…

nvidia-smi(1) で GPU にパワーリミットを設定して消費電力や発熱を減らす

自宅にあるオンプレマシンでグラフィックカードを GPGPU の用途に使用していると、消費電力や発熱は切実な問題になりうる。 特に昨今は電気代の値上がりも著しいし、発熱は製品寿命の短縮や夏だと室温の上昇につながる。 そこで、今回は Linux の環境で nvid…

NVMe ストレージのデータを nvme-cli(1) で完全に消去する

ストレージ機器を破棄または譲渡するときには、漏えいを防ぐためにあらかじめデータを消去しておく必要がある。 このとき、データの消去は後から読み取りが難しいように実施しなければいけない。 後から読み取りが難しい形でデータを消去することは Secure E…

Ubuntu で Linux カーネルのバージョンを変更する

たまに、新しい機能が使いたいなどの理由で、Linux カーネルのバージョンを新しくしたいときがある。 そんなとき、Ubuntu であればビルド済みのパッケージが提供されているため、比較的容易にカーネルを入れ替えることができる。 使った環境は次のとおり。 $…

pivot_root について

今回は、Linux でプロセスのルートファイルシステムの場所を変更する機能の pivot_root について扱う。 プロセスのルートファイルシステムを変更するのは、古典的な chroot を使っても実現できる。 ただ、chroot は隔離したはずのルートファイルシステムから…

chroot について

今回は、Unix の古典的な機能のひとつである chroot について扱う。 chroot を使うと、特定のプロセスにおけるルートディレクトリを、ルートディレクトリ以下にある別のディレクトリに変更できる。 今回扱うのはコマンドラインツールとしての chroot(8) と、…

Lima を使って Apple Silicon 版の Mac で x86-64 (Intel on ARM) な仮想マシンを扱う

Apple Silicon 版の Mac を使っていても、依然として成果物をデプロイする先は ISA が x86-64 (amd64) のマシンであることが多い。 となると、どうしても x86-64 の環境を使って作業をしたい場面が出てくる。 もちろん、IaaS を利用してリモートにマシンを立…

Multipass を使って Apple Silicon 版の Mac で Ubuntu の仮想マシンを扱う

Apple Silicon (M1) の載った Mac mini を購入してからというもの、ローカルで仮想マシンを手軽に立ち上げる方法を模索している。 Intel 版の Mac であれば Vagrant + VirtualBox を使っていたけど、残念ながら VirtualBox は ISA が x86 / amd64 のシステム…

Ubuntu 18.04 LTS の APT で高速なミラーリポジトリを使う

Vagrant や Docker のイメージの中には APT のリポジトリが決め打ちになっているものがある。 高速なミラーリポジトリが使えないとアップデートが遅くて作業に難儀することになる。 今回は、そんなときの解決方法について。 使った環境は次の通り。 $ cat /e…