前言#
Void Linux は非常にミニマルなローリングリリースですが、他のローリングリリースとは異なり、Void は比較的良好な安定性を持っていますが、ソフトウェアはそれほど新しくないかもしれません。
Void Linux は非常にニッチな Linux ディストリビューションであり、他の多くの Linux ディストリビューションに比べて比較的ニッチなMusl libcとrunitを提供しており、これが Void Linux の顕著な利点です。
Musl は軽量で高速であり、通常 glibc よりも標準的でシンプルであると考えられています。開発者にとって、Musl のソースコードは非常に優雅でクリーンであり、ユーザーにとっては、Musl でコンパイルされたパッケージはより小さく、極限のミニマリズムと効率を追求するディストリビューションに非常に適しています。
Musl に比べて、runit の方が私を引きつけます。私は以前 Arch Linux ユーザーでした ||(現在もサーバーで使用していますが)|| Arch Linux のすべては素晴らしいですが……systemd を除いて、systemd はあまりにも **「重い」** ですし、init システムが行うべきでない多くのことを行い、UNIX の哲学から逸脱しています。一方、runit ははるかに軽量で、コードベースは非常に小さく、十分に安定していて、メンテナンスがはるかに簡単です。
Void Linux のパッケージマネージャ xbps はゼロから設計されており、非常に迅速で、Linux ネームスペースを使用してコンテナ内でソフトウェアを構築できる xbps-src ビルダーを提供しています。
インストール前の準備#
イメージをダウンロードする前に、自分の習慣に合ったイメージを選択できます。"base" イメージはグラフィカルインターフェースを提供せず、archiso のようなものです。Arch Linux とは異なり、Void Linux には TUI インストーラーがありますが、私は Arch Linux のように手動のコマンドラインインストールを好みます。musl と glibc は個人の好みによりますが、私はシステムをよりコンパクトにしたいので Musl を選びます。
::: banner {warn}
Musl は完璧ではありません。Musl の標準化により、実行されるプログラムも標準に従って書かれる必要があり、そうでないと Musl で正常に動作しない可能性があります。もしあなたが VIM ユーザーであれば、Musl では VIM が中国語を正常に表示できません。
詳細内容: https://wiki.musl-libc.org/functional-differences-from-glibc.html
:::
Void Linux は国内にわずかにミラーソースがあり、以下のリンクから Void Linux インストールイメージをダウンロードできます。
清華源:https://mirrors.tuna.tsinghua.edu.cn/voidlinux/live/current
北外源:https://mirrors.bfsu.edu.cn/voidlinux/live/current
Fastly Global CDN: https://repo-fastly.voidlinux.org/live/current
参考用のダウンロードリンク(musl base): https://repo-fastly.voidlinux.org/live/current/void-live-x86_64-musl-20221001-base.iso
もちろん、Void Linux の livecd を使用せずに、archiso や他のディストリビューションの livecd を使用してインストールすることもできます。その場合、Void の rootfs をダウンロードして、フォーマット済みのルートパーティションに解凍する必要があります。
参考用の rootfs ダウンロードリンク(musl): https://repo-fastly.voidlinux.org/live/current/void-x86_64-musl-ROOTFS-20221001.tar.xz
注意事項#
N カードユーザーの場合、Void livecd のブート画面で Tab を押し、nomodeset
カーネルパラメータを追加して、tty に入れないのを防ぎます。
以前に runit ユーザーでなかった場合、Livecd 起動時の見慣れない起動プロセスに戸惑う必要はありません。runit の起動プロセスは systemd などの init システムとは異なります。
Livecd の root ユーザーのパスワードは voidlinux で、anon ユーザーのパスワードも voidlinux です。
インストール#
LiveCD に入ったら、root ユーザーでログインします。
Void Linux のデフォルトイメージは国内での速度が素晴らしいので、まず国内ミラーソースを変更します。私は北外ミラーソースを使用します。
# mkdir -p /etc/xbps.d
# cp /usr/share/xbps.d/*-repository-*.conf /etc/xbps.d/
# sed -i 's|https://repo-default.voidlinux.org|https://mirrors.bfsu.edu.cn/voidlinux|g' /etc/xbps.d/*-repository-*.conf
次に、xbps に変更を同期させます。
# xbps-install -S
ハードディスクのパーティショニング#
私は 1 つのハードディスク全体に Void Linux をインストールしますが、既存のシステムのハードディスクに単独のパーティションを作成して Void Linux をインストールすることもできます。
私は gptfdisk(以下 gdisk)ツールを使用してハードディスクをパーティショニングするのが習慣です。まず、LiveCD 上で gdisk をインストールする必要があります。
# xbps-install -Sy gptfdisk
gdisk を使用してパーティショニングします:
手順の解析:
-
新しい GPT パーティションテーブルを作成し、実行を確認します(y)。
-
ef02 ラベルの 2MB のパーティション
/dev/sda1
を作成し、Legacy Boot が GPT ハードディスク上の GRUB2 を認識して起動できるようにします。 -
ef00 ラベルの 500MB のパーティション
/dev/sda2
を作成し、Legacy Boot では GRUB2 ブートローダーと Linux カーネルを格納する/boot
パーティションとしてのみ使用し、UEFI ブートでは/boot/efi
パーティションとして使用します。 -
すべての空きスペースを利用するパーティションを作成し、
/
パーティション(ルートパーティション)/dev/sda3
とします。 -
ハードディスクに書き込み、変更を確認します(y)。
::: banner {info}
ここで私のハードディスクはシステム内で/dev/sda
として認識されていますので、あなたの実際の状況に合わせて私のハードディスクとパーティションを置き換えてください。fdisk -l
コマンドを使用して確認できます。ちなみに、ここでは swap を使用していません。
:::
ファイルシステムの準備#
私たちのパーティションの状況は、追加のパーティション、ルートパーティション、boot パーティションの 3 つです。後者の 2 つをフォーマットする必要があります。
mkfs.ext4
を使用して/dev/sda3
(ルートパーティション)を EXT4 パーティションとしてフォーマットします。
# mkfs.ext4 /dev/sda3
mkfs.vfat
を使用して/dev/sda2
(boot パーティション)を FAT32 パーティションとしてフォーマットします。
# mkfs.vfat /dev/sda2
上記の 2 つのパーティションをそれぞれ/
と/boot
にマウントします。
# mount /dev/sda3 /mnt
# mount /dev/sda2 /mnt/boot --mkdir
基本システムのインストール#
私は rootfs をダウンロードしてインストールする方法を選択します。これは他のディストリビューションの LiveCD にも適用できます。
LiveCD でwget
をインストールします。
# xbps-install wget -y
rootfs パッケージをダウンロードします。
# wget https://repo-fastly.voidlinux.org/live/current/void-x86_64-musl-ROOTFS-20221001.tar.xz
tar を使用して rootfs パッケージをルートパーティションに解凍します。
# tar -xvf void-x86_64-musl-ROOTFS-20221001.tar.xz -C /mnt
Void LiveCD の場合、xchroot
ツールを使用して自動的に Chroot に入ることができます。
# xchroot /mnt /bin/sh
非 Void LiveCD の場合は手動で完了する必要があります。
# mount -t proc none /mnt/proc
# mount -t sysfs none /mnt/sys
# mount --rbind /dev /mnt/dev
# mount --rbind /run /mnt/run
Void Linux の rootfs パッケージの更新は遅れており、その中のソフトウェアパッケージは通常古く、完全なbase-system
パッケージグループはありません。私たちは rootfs パッケージの既存のソフトウェアパッケージを更新し、base-system
パッケージグループをインストールする必要があります。
# xbps-install -Su xbps
# xbps-install -u
# xbps-install base-system
# xbps-remove base-voidstrap
ホスト名を設定します。ここでは "InSnh-Gd" に設定します。
# echo 'InSnh-Gd' > /etc/hostname
タイムゾーンを設定します。Void Linux では、rc.conf
を直接変更し、"TIMEZONE=" のデフォルト値をAsia/Shanghai
に変更するだけです。
# /etc/rc.confで変更
TIMEZONE=Asia/Shanghai
glibc ブランチを使用する場合は、/etc/default/libc-locales
を編集し、"zh_CN.UTF-8" の行のコメントを解除する必要があります。
root パスワードを変更し、wheel
グループのユーザーを作成し、次に 'visudo' を使用して /etc/sudoers を変更し、"#% wheel ALL=(ALL) ALL" の行のコメントを解除します。
# passwd
# useradd -m -G wheel <user>
# visudo
fstab を設定します。/proc/mounts
を直接コピーして、現在マウントされているファイルシステムのパラメータを/etc/fstab
に書き込みます。
# cp /proc/mounts /etc/fstab
ルートパーティション/
と boot パーティション/boot
以外の行を削除します。もし swap パーティションを作成している場合は、その swap 行を保持します。
最終的な結果は次のようになります:
/dev/sda3 / ext4 rw,realtime 0 0
/dev/sda2 /boot vfat rw,realtime 0 0
ネットワークの設定#
ネットワークを設定する必要があります。自動ネットワーク設定用にdhcpcd
をインストールし、そのサービスを有効にします。
# xbps-install dhcpcd -y
# ln -s /etc/sv/dhcpcd /etc/runit/runsvdir/default/
私は静的 IP を使用することを選択します。ネットワークマネージャーが必須ではない場合(例えば、ブリッジの設定など)、私のようにiproute2
ツールを使用して固定 IP を設定することもできます。これにより、システムがさらにミニマルになります。起動時に自動的にネットワークを設定するために、コマンドを/etc/rc.local
に書き込むことができます。存在しない場合は作成します。
私は ethX 形式のネットワークインターフェース名を使用し、net.ifnames=0
カーネルパラメータを使用してネットワークインターフェース名をeth0
に変更します。コマンドは自分のネットワークインターフェース名に合わせて変更する必要があります。最初にip addr
コマンドを実行して、自分のネットワークインターフェース名と内部 IP セグメントを確認することをお勧めします。IP は x.x.x.200〜254 に設定することをお勧めします。IP の衝突を防ぐためです。
# echo "
ip addr add 192.168.2.200/16 dev eth0
ip route add default via 192.168.2.1" >> /etc/rc.local
ブートローダー GRUB2 のインストール#
xbps-install
を使用して GRUB2 をインストールします。Legacy Boot(BIOS システム)で起動する場合は、grub
パッケージをインストールします。
# xbps-install grub -y
UEFI ブートの場合は、grub-x86_64-efi
パッケージをインストールします。
# xbps-install grub-x86_64-efi
私は Legacy Boot を使用しているので、grub-install /dev/sda
を実行するだけです。
UEFI ブートを使用している場合は、次のコマンドを実行する必要があります。特に、boot パーティションまたは efi パーティションのマウントポイントに注意してください。もし私の手順に従った場合、boot パーティションのマウントポイントは/boot
ですので、--efi-directory
の/boot/efi
を/boot
に変更します。
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id="Void"
インストールの完了#
xbps-reconfigure
を使用して、すべてのインストールされたパッケージが正しく設定されていることを確認します。
# xbps-reconfigure -fa
これで、基本的な Void Linux を取得しました。chroot を終了し、コンピュータを再起動します。
[xchroot /mnt]# exit
# umount -R /mnt
# shutdown -r now
私のインストール時の感想を述べると、私はすでに Arch Linux からほぼ離れていますが、Linux ディストリビューションのインストール方法は Arch Linux のようになっています(ああ、やっぱり Arch を忘れられない)。インストールプロセスから、Void Linux のミニマリズム、xbps パッケージ管理の強力さ、そして実用的な runit が見て取れます!!!それは本当に init システムと監視のためだけに存在しているのに、なぜこれほど良いものがあまり使われていないのでしょうか。人々は sh*t 山のような systemd を使うことを好むのでしょうか、それとも私があまりにも極端で保守的なのでしょうか。
Void Linux のインストール後のサイズは、Arch Linux のインストールよりも約 100MB 少ないパッケージ数で、これは Void Linux の正確なパッケージ分割と Musl の二重効果によるものです。非常に強力です。
参考資料#
runit-- a UNIX init scheme with service supervision
この文はMix Spaceによって xLog に同期更新されました。元のリンクはhttps://blog.insnhgd.com/posts/build/1です。