Alpine Linux にUnboundで自宅用フルサービスリゾルバを作ってはや一年、WebUIによるクエリ監視やデバイス単位のアクセスコントロールが必要になったので、Alpine Linux 仮想マシンに Pi-hole 広告ブロック DNS 環境を構築しました。
ESXiホスト上に仮想マシンを作成
Celeron J4125ミニPCのESXiホスト(関連記事はこちら)上に仮想マシンを新規作成して、OSをインストールするところまでは、前回Unboundで作ったフルサービスリゾルバと同じです。
仮想マシンのハードウェア構成は次の通り、仮想ディスクを気持ち大きくした以外は全く同じ。
- CPU : 2 Cores
- RAM : 1 GB
- HDD : 5 GB Thin Provisioning
仮想マシンの起動オプションの項で、UEFIのセキュアブートのチェックを外して無効にするところも前回同様。
Alpine Linuxのインストール
インストールに使うイメージは、今回も仮想環境向けに最適化されたVirtual版をを使います。バージョンは執筆当時最新のver.3.19.1。
|
1 2 |
~$ ls -l ~/Downloads/*.iso -rw-rw-r-- 1 user user 62914560 Mar 13 17:07 alpine-virt-3.19.1-x86_64.iso |
仮想マシンを起動し、Alpine Linuxインストーラのシステムへログイン(パスワード無しの root ユーザ)。
setup-alpine でインストールを始めます。キーボードレイアウトとホスト名を設定、IPアドレスはまだ固定にせず、DHCPクライアントモードのまま。
続いて、rootパスワード、タイムゾーン、APKレポジトリミラーを設定の後、普段使い用のユーザアカウントを作成。
セットアップウィザードの終わりは、インストール先ディスクの選択。インストールタイプは今回も sys にすると、それ以上の設定項目はなく、インストールが始まって完走です。
Alpine Linuxの初期設定
再起動後、作成したユーザでシステムへ入り、その状態を確認。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
~$ uname -a Linux resolv11 6.6.21-0-virt #1-Alpine SMP PREEMPT_DYNAMIC Thu, 07 Mar 2024 10:55:08 +0000 x86_64 Linux ~$ su ~# df -h Filesystem Size Used Available Use% Mounted on devtmpfs 10.0M 0 10.0M 0% /dev shm 487.4M 0 487.4M 0% /dev/shm /dev/sda3 3.4G 103.3M 3.1G 3% / tmpfs 195.0M 116.0K 194.9M 0% /run efivarfs 256.0K 44.1K 206.9K 18% /sys/firmware/efi/efivars /dev/sda1 263.5M 280.0K 263.2M 0% /boot/efi tmpfs 487.4M 0 487.4M 0% /tmp ~# free -h total used free shared buff/cache available Mem: 974.9M 92.4M 837.8M 116.0K 44.7M 790.3M Swap: 1.2G 0 1.2G ~# fdisk -l Found valid GPT with protective MBR; using GPT Disk /dev/sda: 10485760 sectors, 1024M Logical sector size: 512 Disk identifier (GUID): bb5a1edd-6992-47ed-b1c5-fee26af24fa0 Partition table holds up to 128 entries First usable sector is 2048, last usable sector is 10485726 Number Start (sector) End (sector) Size Name 1 2048 542719 264M 2 542720 3164159 1280M 3 3164160 10483711 3574M |
前回より仮想ディスクを大きくしたせいか、Swapが大盤振る舞いに取られてしまっているので、パーティションリサイズしたいのですが、その前に基本設定。
コミュニティレポジトリを有効にし、 sudo と open-vm-tools パッケージをインストールします(公式Wiki参照)。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
/home/user # cat /etc/apk/repositories #/media/cdrom/apks http://mirror.xtom.com.hk/alpine/v3.19/main http://mirror.xtom.com.hk/alpine/v3.19/community /home/user # apk update fetch http://mirror.xtom.com.hk/alpine/v3.19/main/x86_64/APKINDEX.tar.gz fetch http://mirror.xtom.com.hk/alpine/v3.19/community/x86_64/APKINDEX.tar.gz v3.19.1-222-g0d502887392 [http://mirror.xtom.com.hk/alpine/v3.19/main] v3.19.1-220-g5aee73b9b89 [http://mirror.xtom.com.hk/alpine/v3.19/community] OK: 22987 distinct packages available /home/user # apk add sudo (1/1) Installing sudo (1.9.15_p2-r0) Executing busybox-1.36.1-r15.trigger OK: 91 MiB in 73 packages /home/user # apk add --update open-vm-tools fetch http://mirror.xtom.com.hk/alpine/v3.19/main/x86_64/APKINDEX.tar.gz fetch http://mirror.xtom.com.hk/alpine/v3.19/community/x86_64/APKINDEX.tar.gz (1/9) Installing libgcc (13.2.1_git20231014-r0) (2/9) Installing libintl (0.22.3-r0) (3/9) Installing libmount (2.39.3-r0) (4/9) Installing pcre2 (10.42-r2) (6/9) Installing libtirpc-conf (1.3.4-r0) (7/9) Installing libtirpc-nokrb (1.3.4-r0) (8/9) Installing open-vm-tools (12.3.0-r0) Executing open-vm-tools-12.3.0-r0.pre-install (9/9) Installing open-vm-tools-openrc (12.3.0-r0) Executing busybox-1.36.1-r15.trigger Executing glib-2.78.4-r0.trigger OK: 97 MiB in 82 packages /home/user # apk add open-vm-tools-guestinfo (1/1) Installing open-vm-tools-guestinfo (12.3.0-r0) OK: 97 MiB in 83 packages /home/user # apk add open-vm-tools-deploypkg (1/2) Installing libmspack (0.11_alpha-r1) (2/2) Installing open-vm-tools-deploypkg (12.3.0-r0) OK: 98 MiB in 85 packages |
open-vm-tools が問題無く動くのを確認したら自動起動に登録。併せて、ESXi Host Client上でネットワーク情報が取得できるのを確認。
|
1 2 3 4 5 |
/home/user # rc-service open-vm-tools start * Caching service dependencies ... [ ok ] * Starting open-vm-tools ... [ ok ] /home/user # rc-update add open-vm-tools boot * service open-vm-tools added to runlevel boot |
これよく見ると、割り当てたRAM 1GBのうち、半分程度しか掴んでいません。Linux仮想マシンのRAMは割り当てた量を起動時からごっそり掴むことばかりだったので意外。これはまた別の機会に検証してみるつもりです。
次に、作成した一般ユーザを wheel グループへ入れて sudo が使えるようにしたり、
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
/home/user # adduser user wheel /home/user # echo '%wheel ALL=(ALL) ALL' > /etc/sudoers.d/wheel /home/user # cat /etc/sudoers.d/wheel %wheel ALL=(ALL) ALL /home/user # exit resolv11:~$ sudo apk update We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. For security reasons, the password you type will not be visible. [sudo] password for user: fetch http://mirror.xtom.com.hk/alpine/v3.19/main/x86_64/APKINDEX.tar.gz fetch http://mirror.xtom.com.hk/alpine/v3.19/community/x86_64/APKINDEX.tar.gz v3.19.1-222-g0d502887392 [http://mirror.xtom.com.hk/alpine/v3.19/main] v3.19.1-220-g5aee73b9b89 [http://mirror.xtom.com.hk/alpine/v3.19/community] OK: 22987 distinct packages available |
多すぎる getty を調整したら、
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# /etc/inittab ::sysinit:/sbin/openrc sysinit ::sysinit:/sbin/openrc boot ::wait:/sbin/openrc default # Set up a couple of getty's tty1::respawn:/sbin/getty 38400 tty1 tty2::respawn:/sbin/getty 38400 tty2 #tty3::respawn:/sbin/getty 38400 tty3 #tty4::respawn:/sbin/getty 38400 tty4 #tty5::respawn:/sbin/getty 38400 tty5 #tty6::respawn:/sbin/getty 38400 tty6 # Put a getty on the serial port #ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100 # Stuff to do for the 3-finger salute ::ctrlaltdel:/sbin/reboot # Stuff to do before rebooting ::shutdown:/sbin/openrc shutdown |
IPアドレスを固定します。
|
1 2 3 4 5 6 7 8 |
auto lo iface lo inet loopback auto eth0 #iface eth0 inet dhcp iface eth0 inet static address 192.168.51.11/24 gateway 192.168.51.5 |
初期設定の最後に、大き過ぎるSwapパーティションを手っ取り早くGParted Live CD ISOを使って半分以下にし、ルート領域にあてがいます。
ルートパーティションの先頭位置が変わることに警告が出ますが、これで問題無くブートしてくれます。
次ページでは、Pi-holeのインストールへ進みます。










