InSnh-Gd

InSnh-Gd 的小空间

Void Linux インストール記

前言#

Void Linux は非常にミニマルなローリングリリースですが、他のローリングリリースとは異なり、Void は比較的良好な安定性を持っていますが、ソフトウェアはそれほど新しくないかもしれません。

Void Linux は非常にニッチな Linux ディストリビューションであり、他の多くの Linux ディストリビューションに比べて比較的ニッチなMusl libcrunitを提供しており、これが 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 fdisk

手順の解析:

  1. 新しい GPT パーティションテーブルを作成し、実行を確認します(y)。

  2. ef02 ラベルの 2MB のパーティション/dev/sda1を作成し、Legacy Boot が GPT ハードディスク上の GRUB2 を認識して起動できるようにします。

  3. ef00 ラベルの 500MB のパーティション/dev/sda2を作成し、Legacy Boot では GRUB2 ブートローダーと Linux カーネルを格納する/bootパーティションとしてのみ使用し、UEFI ブートでは/boot/efiパーティションとして使用します。

  4. すべての空きスペースを利用するパーティションを作成し、/パーティション(ルートパーティション)/dev/sda3とします。

  5. ハードディスクに書き込み、変更を確認します(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 の二重効果によるものです。非常に強力です。

参考資料#

ArchWiki - GRUB

Void Linux Handbook

musl libc

runit-- a UNIX init scheme with service supervision

Void Linux manpages

VoidLinux 中文网

この文はMix Spaceによって xLog に同期更新されました。元のリンクはhttps://blog.insnhgd.com/posts/build/1です。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。