ちょうどいいレベルのキメライ・-linux(Chimera Linux)

2026/04/14 4:37

ちょうどいいレベルのキメライ・-linux(Chimera Linux)

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

この記事は、OpenZFS および ZFSBootMenu を用いた原生 ZFS 暗号化で単一ディスクに Chimera Linux をインストールする方法を詳述しており、glibc および systemd の代わりに Dinit と FreeBSD ツールを採用したミニマルな musl ベースのアーキテクチャを優先しています。フルディスクセキュリティを実現するために、Secure Boot は無効化され、ドライブは EFI パーティション(2GB、FAT32)と OpenZFS によって管理される完全な ZFS プールが並存するようにパーティション分けされます。暗号化は AES-256-GCM を用いた原生方式で処理され、パスフレーズは

/etc/zfs/zroot.key
に格納されます。メモリオプティマイゼーションには独立したスワップパーティションではなく zram カーネルモジュールが使用されます。本プロセスでは、公式 ISO(chimera-linux-x86_64-LIVE-[RELEASE]-base.iso)からシステムを展開する前に
sgdisk
を用いてカスタム GPT テーブルを作成し、その後に
chimera-chroot
経由の chroot 環境内ですべてフォント、キーボードレイアウト、その他の設定をカスタマイズします。インストール後には initramfs の再構築、SSH および syslog-ng のような必須サービスの有効化、ならびに効率的なメモ利用のために zram のアクティベートが必要です。このアプローチは、重厚なシステム依存性に頼らずにブート環境に対して完全な制御を維持しながら、軽量で安全な代替案を提供し、愛好家向けに適しています。

本文

2026 年 4 月 3 日最終更新

#chimera #linux #zfs #encrypt #zfsbootmenu のタグが付与されています。

Chimera Linux は、C ライブラリとして通常の glibc を代わりに musl を採用し、システム init では systemd を代わりに dinit を使い、ユーザランド(ユーザー空間)は FreeBSD コアツールから派生させたなど、独自の選択を採ることを特徴とする、手からゼロ組み立てられた魅力的なコミュニティ主導の Linux ディストリビューションです。Chimera のベースインストールイメージを使用し、OpenZFS ファイルシステムと ZFSBootMenu ブートローダーで Chimera を設定するためのこの優れたインストールガイドに従って作業を進め、以下の選択肢を検討しました:デスクトップ、ラップトップ、あるいはサーバーといった用途に対応しつつ、「最小限でありながら」堅固な基盤を提供できる「必要なだけ」の機能を備えた暗号化された Linux システムを作成することです。

1. ここから始める

インストールイメージの入手

最新のライブ ISO インストールイメージはこちらから入手できます:repo.chimera-linux.org

chimera-linux-x86_64-LIVE-[RELEASE]-base.iso
ファイルと、
sha256sums.txt
ファイルをダウンロードし、イメージの整合性を確認してください:

sha256sum -c --ignore-missing sha256sums.txt

USB インストールメディアの準備

未マウントの USB ストレージデバイスにインストーラーを書き込み、そのために root 権限で

dd
コマンドを実行します。

警告 デバイスの指定には十分注意してください(

lsblk
コマンドで確認可能な場合があります)。そのデバイス上のすべてのコンテンツが失われます!

例:Linux システム上で USB メモリが

sdx1
として現れている場合、インストーラーは
sdx
(パーティション番号は含めない)に書き込みます:

dd bs=4M conv=fsync oflag=direct status=progress if=chimera-linux-x86_64-LIVE-[RELEASE]-base.iso of=/dev/sdx

2. ライブ環境の設定

Chimera インストールメディアからターゲットデバイスをブートさせ、ログインします。ユーザー名とパスワードはそれぞれ

root
chimera
です。

コンソールフォントの設定

既存のフォントサイズが小さすぎる場合は、次のコマンドを実行して 2 倍に拡大できます:

setfont -d

コンソールフォントは

/usr/share/consolefonts/
に配置されており、パスとファイル拡張子を省略して
setfont
を使用すれば別のフォントを設定できます。

コンソールキーボードの設定

デフォルトのコンソールキーマップは

us
です。利用可能なキーマップは
/usr/share/keymaps/
に一覧表示されています。より他のキーマップを使用したい場合は、一時的に
loadkeys
で異なるキーマップを設定します:

loadkeys [keymap]

ここで

[keymap]
は望ましいキーボードレイアウトを表します。

例:私は好みの Colemak レイアウトを使用するようにシステムを設定しました。これは

/usr/share/keymaps/i386/colemak
に利用可能です:

loadkeys colemak/en-latin9

ブートモードの確認

ターゲットデバイスが UEFI ブートモードで起動されていることを確認してください:

cat /sys/firmware/efi/fw_platform_size

このコマンドが

64
を返すと、システムは 64 ビット x64 UEFI でブートしており、問題ありません。

ファイルが存在しない場合は、デバイスは UEFI を使用していません。

インターネットへの接続有無の確認

有線ネットワークインタフェースはブート時に自動的に有効化され接続されるはずです。ネットワークインタフェースがアクティブで、アドレスが割り当てられ、インターネットにアクセス可能か確認してください:

ip addr
ping -c 5 chimera-linux.org

インストーラーへの遠隔ログイン

別のコンピューターから ssh でインストーラーに接続することで、この手動のインストールプロセスを(コマンドの入力やコピペを減らすなど)容易にします。

sshd デモンを起動してください:

dinitctl start sshd

別のコンピューターへ移動し、ターゲットデバイスとして

anon:chimera
で ssh 接続を行います:

ssh anon@[ip_address]

ここで

[ip_address]
は前述の
ip addr
コマンドで入手したターゲットデバイスのアドレスです。

root に切り替えます:

doas -s

ID 変数の定義

ファイル

/etc/os-release
が、現在のオペレーティングシステムを表す変数を定義しています。後のコマンドで Linux ディストリビューションの略名を設定するために
$ID
変数を使用します:

. /etc/os-release && export ID && echo $ID

ホスト ID の生成

ZFSBootMenu で使用するためのホスト ID ヘキサデシマール識別子を生成します:

zgenhostid "$(hostid)" && hostid

Musl は

/etc/hostid
を読まず、常に
00000000
を表示します。これは問題ありません。関連討論を確認してください。

3. ディスクの準備

Chimera ベースインストールを実装する前に、単一ディスク上にカスタムパーティションレイアウトを設定します。

ツールのインストール

apk update && apk add --no-interactive gptfdisk parted

DISK 変数の定義

Chimera がインストールされるディスクをブロックデバイスを一覧表示することで特定します:

lsblk -f

SATA または NVMe ディスク用の DISK 変数を設定します:

SATA(例のディスク:sda)

export DISK="/dev/sda"
export ESP_PART="1"
export POOL_PART="2"
export ESP_DEVICE="${DISK}${ESP_PART}"
export POOL_DEVICE="${DISK}${POOL_PART}"
echo $ESP_DEVICE && echo $POOL_DEVICE

NVMe(例のディスク:nvme0n1)

export DISK="/dev/nvme0n1"
export ESP_PART="1"
export POOL_PART="2"
export ESP_DEVICE="${DISK}p${ESP_PART}"
export POOL_DEVICE="${DISK}p${POOL_PART}"
echo $ESP_DEVICE && echo $POOL_DEVICE

ディスクのクリア(Wipe)

DISK 以前に ZFS プールが存在した場合は、実行します:

zpool labelclear -f $DISK

DISK が以前 LVM で構成されていた場合は、ボリュームグループを停止させます:

vgchange -an

DISK 上の既存ファイルシステムとパーティションテーブルをクリアします:

wipefs -af $DISK && sgdisk --zap-all --clear $DISK

パーティションテーブルの変更をシステムに通知します:

partprobe $DISK

ディスクのパーティショニング

多くのパーティショニングガイドでは、EFI システムパーティションに 256〜512MB の容量を割り当てています。しかし、Linux がそこに格納する可能性のある他のデータを将来に対応できるようにするため、より寛大な 2GB を割り当てるのが私の好みに合っています。

以下のレイアウトで DISK に GPT パーティションテーブルを作成します:

番号サイズコードフォーマット用途マウントポイント
1+2Gef00vfatEFI システムパーティション/boot/efi
2->終了bf00zfsZFS プールパーティション-

EFI システムパーティションを作成します:

sgdisk -n "${ESP_PART}:1m:+2g" -t "${ESP_PART}:ef00" -c 0:esp $DISK

ZFS プールパーティションを作成します:

sgdisk -n "${POOL_PART}:0:0" -t "${POOL_PART}:bf00" -c 0:pool $DISK

ディスクレイアウトを表示します:

partprobe $DISK && sgdisk -p $DISK

4. ZFS プール作成

ZFS プールにディスクやパーティションを追加する際、将来的にディスクの命名が変わっても ZFS が適切なデバイスを特定できるようにするため、/dev/disk/by-partuuid(UEFI)で生成されるシンボリックリンクを参照することが良い習慣です。従来のデバイスノード(例:/dev/sda2)を使用すると間欠的なインポート失敗を引き起こす可能性があります。そこで、

POOL_ID
変数を作成します:

POOL_ID=/dev/disk/by-partuuid/$( blkid -s PARTUUID -o value $POOL_DEVICE )

確認します:

ls -al /dev/disk/by-partuuid/ && echo "POOL_ID = $POOL_ID"

暗号化キーファイルの作成

ZFS プールの暗号化パスフレーズをキーファイルに格納します:

echo 'SuperSecretPassphrase' > /etc/zfs/zroot.key
chmod 000 /etc/zfs/zroot.key

暗号化された ZFS プールの作成

ネイティブ暗号化が有効な状態でプールを作成します:

zpool create -f \
-o ashift=12 \
-o autotrim=on \
-o compatibility=openzfs-2.3-linux \
-O acltype=posixacl \
-O xattr=sa \
-O compression=lz4 \
-O encryption=aes-256-gcm \
-O keylocation=file:///etc/zfs/zroot.key \
-O keyformat=passphrase \
-O relatime=on \
-m none zroot "$POOL_ID"

ZFS データセットの作成

作成する各ブート環境について、明示的に

canmount=noauto
を設定する必要があります。

zfs create -o mountpoint=none zroot/ROOT
zfs create -o mountpoint=/ -o canmount=noauto zroot/ROOT/${ID}

優先ブートファイルシステムを設定します:

zpool set bootfs=zroot/ROOT/${ID} zroot

私は各システムのために追加の home データセットを作成します:

zfs create zroot/ROOT/${ID}/home

これにより、今後作成する可能性のあるブート環境ごとにユーザー設定ファイルを一意に保つことができます。また、これはユーザーデータをシステムデータから分離するためのものであり、ZFS スナップショットやシステムロールバックにおいて有用で、ユーザーデータを傷つけずにシステムを戻すことを可能にします。

ブート環境間でデータを共有するためには、共通ファイルを格納する

data
データセットを作成します:

zfs create -o mountpoint=/data zroot/data

インストール用のプールのエクスポートと再インポート

zpool export zroot
zpool import -N -R /mnt zroot
zfs load-key -L prompt zroot

データセットをマウントします:

zfs mount zroot/ROOT/${ID}
zfs mount zroot/ROOT/${ID}/home
zfs mount zroot/data

確認します:

# mount -t zfs
# zroot/ROOT/chimera on /mnt type zfs (rw,relatime,xattr,posixacl,casesensitive)
# zroot/ROOT/chimera/home on /mnt/home type zfs (rw,relatime,xattr,posixacl,casesensitive)
# root/data on /mnt/data type zfs (rw,relatime,xattr,posixacl,casesensitive)

デバイスシンボリックリンクを更新します:

udevadm trigger

5. インストール

ベースフールパッケージをインストールします:

chimera-bootstrap /mnt

新しいオペレーティングシステムにファイルをコピーします:

cp /etc/hostid /mnt/etc/
mkdir /mnt/etc/zfs && cp /etc/zfs/zroot.key /mnt/etc/zfs/

6. システム設定

新鮮にインストールされた Chimera に chroot 入りし、新しい OS を構成します。

Chroot

chimera-chroot /mnt

ルートパスワード

passwd

最高権限ユーザー(スーパーユーザー)

スーパーユーザ権限を持つユーザーアカウントを作成します:

useradd -m -G wheel [username]

ここで

[username]
はアカウントの望ましい名前です。
[username]
のパスワードを設定します:

passwd [username]

(オプション)

doas
コマンドを使用して、パスワードなしで root アクセスを
[username]
に付与します:

echo 'permit nopass keepenv [username]' >> /etc/doas.conf

パッケージマネージャと追加パッケージ

ユーザーサブリポジトリを追加しミラーを同期します:

apk add --no-interactive chimera-repo-user && apk update

プロセッサベンダを特定します:

grep vendor_id /proc/cpuinfo

マイクロコードパッケージを更新してセキュリティ修正を適用するための適切な変数を定義します:

UCODE="[vendor]"

ここで

[vendor]
は Intel プロセッサの場合
ucode-intel
、AMD プロセッサの場合は
ucode-amd
です。

インストールします:

apk add --no-interactive $UCODE linux-lts-zfs-bin curl efibootmgr font-terminus

コンソールフォント

Terminus フォントの設定については

/usr/share/consolefonts/README.Lat2-Terminus16
を詳細を確認してください。Chimera は Debian と同じ console-setup システムを使用しています。

例:TerminusBold をコンソールフォントとして使用し、/etc/default/console-setup を修改してフォントサイズを増加させます:

ACTIVE_CONSOLES="/dev/tty[1-6]"
CHARMAP="UTF-8"
CODESET=guess
FONTFACE=TerminusBold
FONTSIZE=12x24

コンソールキーボード

デフォルトのキーボードは

us
です。キーマップの代替案を使用したい場合は、keyboard(5) を確認してください。

例:Colemak キーマップ(/usr/share/keymaps/i386/colemak に利用可能)を好み、/etc/default/keyboard を修改して設定します:

KMAP=colemak/en-latin9
XKBMODEL=pc105
XKBLAYOUT=us

タイムゾーン

タイムゾーンは

/usr/share/zoneinfo/[Region]/[City]
に配置されており、ここで
[Region]
は地理的区域(Africa, America, Europe, …)を、
[City]
はその区域内の都市を表します。

例:トロントにあるタイムゾーンへの

/etc/localtime
シンボリックリンクを作成します:

ln -sf /usr/share/zoneinfo/America/Toronto /etc/localtime && date

ホスト名

ホスト名ファイルを作成します:

echo [hostname] > /etc/hostname

ここで

[hostname]
はシステムの望ましい名前(単語一つ、スペースなし)を表します:

echo chimeralinux > /etc/hostname

サービス

管理者によって有効化されたサービスへのリンクは

/etc/dinit.d/boot.d/
にあります。Chimera 上のデフォルトログシステムは syslog-ng です。

サービスを有効化します:

dinitctl -o enable syslog-ng

ログは

/var/log/messages
に書かれます。

有線ネットワークを静的または動的に dhcpcd で構成できます。サービスを有効化します:

dinitctl -o enable dhcpcd

デフォルトの動作は、dhcpcd がすべてのインタフェースに DHCP を使用して構成することです。変更は

/etc/dhcpcd.conf
で行います。詳細については dhcpcd.conf(5) を確認してください。

遠隔ログインを許可する sshd サービスを有効化します:

dinitctl -o enable sshd

ESP パーティション

ファイルシステム上のラベルは必須ではありませんが、UUID なしで簡単マウントを可能にするため便利です。

fat32 ファイルシステムを作成します:

mkfs.fat -n ESP -F 32 $ESP_DEVICE

デバイスをマウントします:

mount --mkdir $ESP_DEVICE /boot/efi

パーティションを fstab に追加します:

echo 'LABEL=ESP /boot/efi vfat defaults 0 0' >> /etc/fstab

Initramfs

暗号化キーは

/etc/zfs
に格納されており、自動的に initramfs にコピーされます:

mkdir -p /etc/initramfs-tools/conf.d
echo 'UMASK=0077' > /etc/initramfs-tools/conf.d/umask.conf

再構築します:

update-initramfs -u -k all

7. ZFSBootMenu

Linux 上の Root-on-ZFS ブート環境を支援するためにこのブートローダーをインストールします。

ブートプロパティ

カーネルブート時に使用されるコマンドライン引数を割り当てます:

zfs set org.zfsbootmenu:commandline="quiet" zroot/ROOT

キーキャッシュを設定します:

zfs set org.zfsbootmenu:keysource="zroot/ROOT/${ID}" zroot

プリビルトエグゼクティブ

プリビルト ZFSBootMenu エグゼクティブを EFI システムパーティションにインストールします:

mkdir -p /boot/efi/EFI/ZBM
curl -o /boot/efi/EFI/ZBM/VMLINUZ.EFI -L https://get.zfsbootmenu.org/efi
cp /boot/efi/EFI/ZBM/VMLINUZ.EFI /boot/efi/EFI/ZBM/VMLINUZ-BACKUP.EFI

EFI ブートエントリ

efibootmgr -c -d "$DISK" -p "$ESP_PART" -L "ZFSBootMenu (Backup)" -l '\EFI\ZBM\VMLINUZ-BACKUP.EFI'
efibootmgr -c -d "$DISK" -p "$ESP_PART" -L "ZFSBootMenu" -l '\EFI\ZBM\VMLINUZ.EFI'

8. 片付ける

Chroot からの退出、アンマウント、エクスポート

Chroot から退出します:

exit

すべてをアンマウントします:

umount /mnt/home && umount /mnt/data && umount /mnt/boot/efi && umount -n -R /mnt

zpool をエクスポートします:

zpool export zroot

再起動

ZFS プールのアンロックパスフレーズを求められた際、システムに設定されたキーマップに関わらずキーマップは

us
となります。ユーザーは暗号化されたルートパーティションのアンロックパスフレーズを入力されます。成功後、ブートが再開します:

chimeralinux login:
Welcome to Chimera!
reboot

Zram スワップ

Chimera は dinit を init として使用しており、zramN デバイスの管理を支援します。モジュールを読み込みます:

doas modprobe zram

サイズは物理 RAM の半分(xG)に設定します。

zram0 デバイス用の構成ファイルを作成します:

doas tee /etc/dinit-zram.conf >/dev/null <<'EOF'
[zram0]
size = 4G
algorithm = lz4
format = mkswap -U clear %0
EOF

fstab に zram0 スワップを追加します:

echo '/dev/zram0 none swap defaults 0 0' | doas tee -a /etc/fstab >/dev/null

サービスを有効化します:

doas dinitctl enable zram-device@zram0

現在のセッションのスイッチをアクティブにします:

doas swapon /dev/zram0 && zramctl

9. リソース

  • ZFSBootMenu: Chimera Linux ガイド
  • Chimera Linux: インストールガイド
  • OpenZFS マニュアルページ:zpoolprops.7 および zfsprops.7
  • Arch Linux Wiki: 永続的なブロックデバイス命名
  • Practical ZFS: Linux ホームディレクトリ on ZFS
  • Dinit-chimera: zram サポート

次章:Chimera Linux: ファーストブート後(TODO)

Fediverse でこの投稿をいいね、シェア、またはコメントしてください 💬

同じ日のほかのニュース

一覧に戻る →

2026/04/14 2:54

1 つ、30 の WordPress プラグインを購入し、それぞれにバックドアを埋め込まれた。

## Japanese 翻訳: 元サマリーの原文は明確で正確であり、高レベルの概要として十分に範囲内に収まっており、改行文筆は必要ありません。

2026/04/14 5:36

GitHub で積み上がったプルリクエストを処理する。

## Japanese Translation: 本テキストでは、「Stacked PRs(スタックされたプルリクエスト)」を紹介します。これは、大規模で管理が困難なプルリクエストによる問題、例えばレビューの難易度が高いこと、マージにかかる時間が長いこと、頻繁な衝突などを解決するために GitHub が実装した機能です。開発者は一度に巨額の変更を提出するのではなく、作業を注力し独立した層に分割し、それらが互いに縦方向に積み上げられ、最終的に main ブランチへマージされるまで進めます。 GitHub 本家はこのワークフローを、ナビゲーション用の可視化「スタックマップ(stack map)」UI でサポートしており、ブランチ保護規則がターゲットとなる最終ブランチに対して自動的に適用され、継続的統合(CI)システムが各層ごとに個別にテストを実行し、main ブランチへのマージを想定する manner で動作します。また、ユーザーはスタックの全て、または一部の PR をマージすることができ、残りの PR は自動的にリベースされ、スタック構造が維持されます。 このワークフローをローカル環境で管理するためには、開発者は `gh stack` CLI ツールを使用します。これは、拡張機能をインストール(`gh extension install github/gh-stack`)し、`gs init`、`gs add`、`gs push`、`gs submit` などのコマンドを用いてブランチを作成し、カスケードリベースを管理し、スタックをレビューまたはマージのためにオープン化することを意味します。将来的には、AI コーディングエージェントもこのスタックを自律的に処理できるように、特定のスキルパッケージ(`npx skills add github/gh-stack`)をインストールすることで教育できます。Ultimately(結果として)、Stacked PRs はチームが段階的なレビューを通じてコードの品質を向上させながら、大規模なコードベースを維持するために必要な手動作業を劇的に削減することを可能にします。

2026/04/14 0:31

『何事も起きない:スポーツ市場以外では常に「いいえ」と購入する Polymarket ボット』

## Japanese Translation: 本書では、Polymarket でスポーツ以外の Yes/No マーケットにおける「NO」エントリを取引することを目的に特化して構築された非同期の Python ボット「Nothing Ever Happens」を معرفیしています。本プロジェクトは娯楽目的でのみ提供されるものであり、保証や免責事項は一切適用されません(as-is)として提供されます。ライブフラグが設定されていないデフォルト状態では `PaperExchangeClient` が採用され、シミュレーションテストが行われます。リアルな取引を実行するには、環境変数を明示的に設定する必要があるためです。具体的には、`BOT_MODE=live`、`LIVE_TRADING_ENABLED=true`、`DRY_RUN=false` などを設定することでリアル取引モードを有効化します。また、ライブオーダーの送信を有効にするには、`PRIVATE_KEY`、`FUNDER_ADDRESS`(署名タイプ 1 および 2 の場合)、データベース URL、および Polygon RPC URL などの特定のエントリが必要となります。 ボットのアーキテクチャはモジュール化されており、ランタイムロジック、取引所クライアント、ダッシュボード UI、回復ツール、そしてコア戦略モジュールである「nothing_happens」で構成されています。ローカルでのセットアップでは、`pip install -r requirements.txt` によって依存関係をインストールし、`config.example.json` を `config.json` にコピーして非機密設定をその中で構成し、秘密鍵やフラグは `.env` ファイル(パス:`strategies.nothing_happens`)に保存します。ローカル設定は意図的に git 無視されており、ユーザーは環境変数 `CONFIG_PATH` を通じてランタイムが参照する異なるパスを指定できるようにしています。 Heroku でのクラウドデプロイメントでは、特定のコマンドヘルパー(`alive.sh`、`logs.sh`、`kill.sh`)を使用して、アプリの状態を管理し、ライブ取引の有効化/無効化やロギングを行うことができます。デプロイには、bot モード、プライベートキー、RPC URL、データベースに関する環境変数を `heroku config:set` コマンドを用いて設定する必要があります。-production 環境では、誤って長時間実行タスクを実行してしまうのを防ぐためにワーカーダイノを除外し、ウェブダイノのみを使用するようにスケーリング構成されています。また、`db_stats.py`、`export_db.py`、`wallet_history.py`、`parse_logs.py` などのユーティリティスクリプトは、データベースの点検やログ分析を実行することなく市場の変動を意図的に引き起こさずにこれらの情報を可視化することを可能にするため、透明性を高めています。