前言#
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
ハードディスクパーティション#
私は一つのハードディスク全体に 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 を使用していません。
:::
ファイルシステムの準備#
私たちのパーティション状況は、追加のパーティション、ルートパーティション、ブートパーティションの 3 つです。後者の 2 つをフォーマットする必要があります。
mkfs.ext4
を使用して/dev/sda3
(ルートパーティション)を EXT4 パーティションとしてフォーマットします。
# mkfs.ext4 /dev/sda3
mkfs.vfat
を使用して/dev/sda2
(ブートパーティション)を 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 を設定します。現在マウントされているファイルシステムのパラメータを/etc/fstab
に書き込むために/proc/mounts
を直接コピーできます。
# cp /proc/mounts /etc/fstab
ルートパーティション/
とブートパーティション/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 を設定し、NetworkManager
のような管理プログラムをインストールしないことができます。これにより、システムがさらに簡素化されます。起動時に自動的にネットワークを設定するために、コマンドを/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 ブートを使用している場合は、次のコマンドを実行する必要があります。特に自分のブートパーティションまたは EFI パーティションのマウントポイントに注意してください。もし完全に私の手順に従った場合、ブートパーティションのマウントポイントは/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です。