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

ハードディスクパーティション#

私は一つのハードディスク全体に 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 を使用していません。

:::

ファイルシステムの準備#

私たちのパーティション状況は、追加のパーティション、ルートパーティション、ブートパーティションの 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 の二重効果によるものです。非常に強力です。

参考資料#

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です。

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