今回は、The 軽量Linuxと呼ばれるAlpine LinuxをHyper-V上にインストールしていきます。
2023年2月27日時点だと3.17.2がリリースされていますが、x64のインストーラで約150MBと他のOSに比べ、非常に軽量です。
期待する目標
本手順で期待する目標は以下の通りです。
- Alpine Linux 3.17.2をインストールできる。
- APKを使用してバージョンアップができる。
Alpine Linuxとは
Alpine Linux (アルパイン・リナックス) は、muslとBusyBoxをベースとしたLinuxディストリビューションである[2]。セキュリティ・シンプルさ・リソース効率を重視するパワーユーザー向けに設計されている[3][4][5][6]。Alpine Linuxではgrsecurity/PaXを適用したLinuxカーネルを使用しており、全てのユーザ空間バイナリがスタックスマッシング保護(英語版) (英語: stack-smashing protection、SSP) 付きの位置独立実行ファイル (PIE) としてコンパイルされている[2]。
Alpine LinuxはmuslとBusyBoxを利用して構築されており、従来のLinuxディストリビューションと比較してLXCやインストールに必要なストレージ容量が小型化されている。リソース効率が向上しており、起動時間が短縮されている[7]。
postmarketOSはAlpine Linuxからフォークしたモバイルオペレーティングシステムである[8]。
wikiより引用
Linuxの系譜的にどのOSから派生したかはわかりませんが、少なくともRHEL系やDebian系のOSではなく独自の系譜になっています。
そのため、パッケージマネージャーもAPK(Alpine Package Keeper)となっており、独自に進化しています。
初期の状態では、GUIの設定はなく、CLIがデフォルトになっています。
前提条件
本環境で使用する環境は以下の通りです。
- CPU : 2vCPU
- MEM : 4GB
- DISK : 60GB
Alpine Linux ダウンロード

以下のURLより、Alpine Linuxのトップページに移動します。
URL : https://www.alpinelinux.org/
Alpine Linuxのトップページより、[Downloads]を押下します。

[DOWNLOADS]より、[Version]が[3.17.2]となっていることを確認し、下にスクロールします。

[STANDARD]より、[x86_64]を押下し、ISOファイルをダウンロードします。
Alpine Linux インストール
ダウンロードしたISOファイルをマウントし、起動します。

ISOファイルをマウントして、起動すると一瞬でログイン画面まで移動します。
とっても早い・・・

ログイン画面が表示されたら、以下のユーザでログインします。
- ユーザ名 : root
- パスワード : なし
ライブディスク状態だとrootユーザでパスワードレスでログインすることができます。

ログインしたら、以下のコマンドを実行することで、Alpine Linuxのセットアップを開始できます。
localhost:~# setup-alpine

[Available keyboard layouts: ]より、キーボードの言語設定を行います。
今回は、日本語キーボードレイアウトを設定したいので、[Select keyboard layout: [none]より、[jp]を入力し、[Enter]を押下します。

[Available variants:]より、日本語のキー配列を選択します。
今回は、日本語の106キーを使用しているので、[jp]を入力しました。
キー配列の設定が完了したら[Enter]を押下します。

[Enter system hostname]より、OSのホスト名を設定します。
今回は、[dev-alpine]を入力し、[Enter]を押下します。

[Which one do you want to initialize?]より、[Enter]を押下します。

[Ip address for eth0?]より、[dhcp]と入力し、[Enter]を押下します。
今回は、お試しでインストールしているため、IPアドレスをDHCPで設定します。

[Do you want to do any manual network configuration?]より、ネットワーク設定をせずに進みたいので、[n]を入力し、[Enter]を押下します。

[Do you want to do any manual network configuration?]で[n]を設定すると、DHCPでネットワークが設定されます。

[Changing password for root]より、rootのパスワードを設定します。
設定が完了したら、[Enter]を押下します。

[Which timezone are you in?]より、タイムゾーンの設定を行います。
今回は、[Japan]を選択しました。

[HTTP/FTP proxy URL?]より、OSのProxy設定を行います。
今回は、Proxyを使用しないので、[none]と入力して[Enter]を押下します。

[Which NTP client to run?]より使用するNTPのサービスを設定します。
今回は、使い慣れているchronyを選択します。
[chrony]と入力し、[Enter]を押下します。

NTPの設定が完了すると、Mirrofリストが表示されます。
[Space]を押下します。

すべてのミラーが表示されると、[Enter mirror number or URL to add]と表示されるため、必要に応じてミラーサーバを選択します。
[f]オプションを入力すると、応答時間が短いミラーサーバが自動的に選択されます。

[Setup a user?]より、ユーザを作成することができます。
今回は検証のため、rootユーザ以外は作成しないため、[no]を入力し、[Enter]を押下します。
実運用であれば、ログイン用のユーザを別途作成してください。

[Which ssh server?]より、SSHサーバのサービスを選択します。
本環境ではUbuntuや他のLinuxでも使い慣れている[OpenSSH]選択しようと思います。
[openssh]と入力し、[Enter]を押下します。

[Allow root ssh login?]より、rootユーザでのSSH許可に関する設定をします。
デフォルトの[prohibit-password]を入力すると、rootユーザでのSSH接続は禁止になります。
今回は検証のため、何も入力せずに[Enter]を押下します。

[Enter ssh key or URL for root]より、SSH接続するためのキーを設定します。
今回は、SSHキーによるSSHを行わないので、空白のまま[Enter]を押下します。

[Which disk(s) would you like to use?]よりインストールするディスクを選択します。
ディスクが表示されているので、デバイス名を入力します。
今回であれば[sda]がディスクのデバイス名となります。
インストールするディスクを入力したら、[Enter]を押下します。

[How would you like to use it?]より、ディスクの使用目的を設定します。
インストールするディスクについては、システムディスクとして使用するため[sys]を入力して、[Enter]を押下します。

[WARNING : Erase the above disk(s) and continue]より、選択したディスクが削除される警告が表示されます。
空のディスクに書き込みを行うため、[y]を入力し、[Enter]を押下します。

[Installation is complete. Please reboot.]と表示されたら、インストールは完了です。

インストールが完了したら、[reboot]コマンドでシステムを再起動します。
Hyper-Vの場合は、再起動時に自動的にISOファイルがアンマウントされなかったので、パワーオフの方が良い可能性があります。
Alpine Linuxを触ってみる

再起動後にログインし、Alpine Linuxの情報を確認してみます。
確認コマンドとしては、以下の通りです。
dev-alpine:~# hostname
dev-alpine:~# ip a
dev-alpine:~# whoami
設定したホスト名とIP、ユーザ名が表示されれば問題なくインストールされています。

Alpine Linuxのアップデートをしてみます。
Alpine LinuxはAPKと呼ばれるパッケージ管理システムを使用しているため、以下のコマンドでリポジトリのアップデートを行います。
dev-alpine:~# apk update
OK: xxxxx distnct package available
[OK]と表示されればアップデートは完了です。
このコマンドはUbuntuで言うところの[apt update]と同様のコマンドになるようです。

以下のコマンドでAlpine Linuxのアップグレードを行います。
dev-alpine:~# apk upgrade
OK: xxxMiB in xx packages
ちょっとアップデートが速すぎてちゃんとアップデートができているかわかりませんがとりあえずこれでアップグレードできたと思います。(間違っていたらすいません)

以下のコマンドを使用してos-releaseを表示したみたいと思います。
dev-alpine:~#cat /etc/os-release
Alpine Linuxはちゃんとos-releaseで情報を表示できました。
名前もAlpine Linuxになっています。

Alpine Linuxのパワーオフについては、Ubuntuなどの[shutdown]コマンドではなく、[poweroff]コマンドを使用することでシャットダウンさせることができます。
まとめ
今回は、RHEL系やDebian系のLinuxとは異なるAlpine LinuxをHyper-V上に構築してみました。
インストール自体はセットアップコマンドを使用することで対話でもインストールすることができました。応答ファイルを使用することで自動的にセットアップを行うことができるので、大量展開する際に便利だと思います。
Alpine Linuxはインストーラも軽量で、過去一ライブディスクの起動が早く、挙動も安定しているので、マイナーだけど今後サーバ用OSとして活用するのはあり寄りのありだと思いました。
コマンドや、デフォルトでCLIなのでとっつきにくい部分もあると思いますが、今後GUIなども入れてみて検証することができればよいかなと思います。
おまけ
本ブログではVMwareやWindows、Linuxのインストール手順等も公開しております。
インフラエンジニアとして有益な記事や無益なコンテンツも作成しておりますので、通勤時間や休憩時間、休日のスキマ時間等に合わせて読んでいただけると幸いです。
また、Youtubeで解説動画も鋭意作成中です。本ブログで記事にしているものも動画にしようと思っておりますので、よろしくお願いいたします。
willserverのnoteも開設したのでフォローお願いします。
コメント