お金をかけずにサーバーの勉強をしよう

Alpine Linux インストール

2023年7月5日

メニューへ戻る

※ここで言及している Amazon Linux 2についての記述は全くの見当違いでした。
恥を晒しつつそのままにしておきますが、Alpine Linuxのインストール方法はこれで良かろうと思います。


所用にて Alpine Linuxをインストールします。

何故かというと、Dockerコンテナではない Amazon Linux 2の環境を作りたかったからです。

Amazon Linux 2コンテナの Dockerfileを見ますと、Alpine Linux 3.17をベースに AWS独自のパッケージを入れていってるみたいです。

ですので、ここでは Alpine Linuxの環境を作ります。

本家サイトはこちら。
Alpine Linux

では始めます。


1.インストールメディアダウンロード

ダウンロードのページがこれ。
Downloads

いくつか種類がありますが、仮想環境用の [VIRTUAL] てのがあるんで、Amazon Linux 2はこれを使ってんじゃないかなと思います。
ここでは [VIRTUAL] をインストールします。
Alpine Linux ダウンロード 1

2023年7月5日時点での最新版は 3.18.2です。
でも Amazon Linux 2は 3.17でできているようですので、ちょっと前のが欲しい。

ダウンロードページの更に下に行くと古いバージョンを得られるリンクがあります。
[here] をクリックします。
Alpine Linux ダウンロード 2

モロにインデックス画面になるので、目的のものまで辿っていきましょう。
[v3.17] をクリックします。
Alpine Linux ダウンロード 3

[releases] をクリックします。
Alpine Linux ダウンロード 4

[x86_64] をクリックします。
Alpine Linux ダウンロード 5

ここに一通りの種類の ISOイメージファイルがあり、「alpine-virt」で始まっているものが対象になります。
3.17.1 〜 3.17.4 までありましたので、3.17.4を選んでみます。
[alpine-virt-3.17.4-x86_64.iso] をクリックするとダウンロードが始まります。
Alpine Linux ダウンロード 6

ダウンロードが完了すると、[alpine-virt-3.17.4-x86_64.iso]ファイルができました。


2.VMware Workstation Playerで仮想マシン作成

VMware Workstation Playerを起動します。

[仮想マシンの作成] をクリックします。
仮想マシン作成 1

[後で OS をインストール] を選択し、次へを押します。
仮想マシン作成 2

[ゲスト OS] に [Linux] を選択します。
Alpine Linuxはマイナーなので、バージョン選択の一覧にありません。
[バージョン] に [その他の Linux 5.x カーネル 64 ビット] を選択し、次へを押します。
仮想マシン作成 3

[仮想マシン名] と [場所] は任意です。
好きに設定して、次へを押します。
仮想マシン作成 4

[ディスクの最大サイズ] は Ubuntu Serverのときと同じ 30GBにしておきました。
特に他の理由はありません。
[仮想ディスクを単一ファイルとして格納] を選択し、次へを押します。
仮想マシン作成 5

ハードウェアをカスタマイズを押します。
仮想マシン作成 6

[メモリ] 設定です。
何となく 8GBにしました。
仮想マシン作成 7

[プロセッサ] 設定です。
何となく 4つにして、何をするか分からないので [仮想化エンジン] のチェックは全部入れています。
仮想マシン作成 8

[新規 CD/DVD(IDE)] 設定です。
[ISOイメージファイルを使用する] を選択し、ダウンロードしてきた
[alpine-virt-3.17.4-x86_64.iso]ファイルを指定します。
このイメージファイルが CD-ROMドライブに格納された格好になります。
仮想マシン作成 9

[ネットワーク アダプタ] 設定です。
[ブリッジ] を選択し、[物理ネットワーク接続の状態を複製] にチェックしておきます。
仮想マシン作成 10

サーバーとして使用するつもりなので、[USB コントローラ] [サウンドカード] [プリンタ] は削除しました。
[ディスプレイ] の設定はこのままで、閉じるを押します。
仮想マシン作成 11

完了を押します。
仮想マシン作成 12

仮想マシンができました。


3.Alpine Linuxインストール

仮想マシンを起動します。
[仮想マシンの再生] をクリックします。
Alpine Linux 起動

黒い画面で、ログインプロンプトになります。
Alpine Linux ログイン

[root] ユーザーでログインします。
パスワードは聞かれません。

localhost login: root
〜〜〜 省略 〜〜〜

localhost:~#

私が契約しているプロバイダの問題だと思うんですが、IPv6が使えないのか、このままインストール作業を進めると wgetコマンド実行時に「connection refused」のエラーになってしまいました。

とりあえずインストール時だけでも IPv6を無効にします。

localhost:~# sysctl -w net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.all.disable_ipv6 = 1

localhost:~# sysctl -w net.ipv6.conf.default.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6 = 1

localhost:~# sysctl -w net.ipv6.conf.lo.disable_ipv6=1
net.ipv6.conf.lo.disable_ipv6 = 1

localhost:~# sysctl -w net.ipv6.conf.eth0.disabled_ipv6=1
net.ipv6.conf.eth0.disabled_ipv6 = 1

[eth0] というネットワークインターフェイスで、IPv6を無効にできました。

インストーラを実行します。

localhost:~# setup-alpine

Available Keyboard layouts:
af     at     be     by     cn     dz     fi     ge     hu     in     it     kr     lk     md     mm     nl     pl     ru     sy     tr     uz
al     az     bg     ca     cz     ee     fo     gh     id     iq     jp     kz     lt     me     mt     no     pt     se     th     tw     vn
am     ba     br     ch     de     epo    fr     gr     ie     ir     ke     la     lv     mk     my     ph     ro     si     tj     ua
ara    bd     brai   cm     dk     es     gb     hr     il     is     kg     latam  ma     ml     ng     pk     rs     sk     tm     us

キーボードレイアウトを聞いています。
Select Keyboard layout: [none] jp

Available variants: jp-OADG109A jp-dvorak jp-kana jp-kana86 jp-mac jp

キーボードのタイプを選びます。
Select variant (or 'abort'): jp-OADG109A  ← Windowsキーのあるキーボードを選びました。

 * Cacheing service dependencies ... [ ok ]
 * Setting keymap ... [ ok ]

マシン名を設定します
Enter system hostname (fully qualified form, e.g. 'foo.example.org') [localhost] alpinelinux

どのネットワークインターフェイスを設定するか聞いてきます。
Available interfaces are: eth0.
Enter '?' for help on bridges, bonding and vlans.
Which one do you want to initialize? (or '?' or 'done') [eth0] Enterキー  ← [eth0]しかないので[Enter]だけ。

DHCPにするか固定IPにするか聞いてきます。
Ip address for eth0? (or 'dhcp', 'none', '?') [dhcp] 192.168.1.109  ← 我が家では固定IPを割り振りました。

サブネットマスクを聞いてきます。
Netmask? [255.255.255.0] Enterキー  ← このままで良いので[Enter]だけ。

デフォルトゲートウェイのIPアドレスを聞いてきます。
Gateway? (or 'none') [none] 192.168.1.1  ← 我が家の光ルーターのIPです。

Configuration for eth0:
  type=static
  address=192.168.1.109
  netmask=255.255.255.0
  gateway=192.168.1.1

ネットワークの手動設定が何かあるか聞いてきます。
Do you want to do any manual network configuration? (y/n) [n] Enterキー  ← 何もないので[Enter]だけ。

ドメイン名を聞いてきます。
DNS domain name? (e.g 'bar.com') Enterキー  ← ドメイン名は設定していないので[Enter]だけ。

DNSサーバーのIPを聞いてきます。
DNS nameserver(s)? 192.168.1.1  ← 我が家の光ルーターのIPです。

[root]ユーザーのパスワードを設定して下さい。
Changing password for root
New password: ********
Bad password: too weak  ← パスワード強度が弱いので怒られましたが強行します。
Retype password:********
passwd: password for root changed by root

タイムゾーンを聞いてきます。
Which timezone are you in? ('?' for list) [UTC] Japan

 * Seeding random number generator ... * Saving 256 bits of creditable seed for nest boot
 [ ok ]
 * Starting busybox acpid ... [ ok ]
 * Starting busybox crond ... [ ok ]

プロキシサーバーを使うか聞いてきます。
HTTP/FTP proxy URL? (e.g. 'http://proxy:8080', or 'none') [none] Enterキー  ← 使わないので[Enter]だけ。

NTPクライアントのプログラムを何にするか聞いてきます。
Which NTP client to run? ('busybox', 'openntpd', 'chrony' or 'none') [chrony] Enterキー  ← chronyのままで良いので[Enter]だけ。

 * Service added
〜〜ここは流れてしまいました。〜〜

Alpine Linuxのミラーサイトの一覧がでます。
Available mirrors:
1) dl-cdn.alpinelinux.org
2) uk.alpinelinux.org
3) mirror.yandex.ru
〜〜〜 省略 〜〜〜
63) mirrors.neusoft.edu.cn
64) ftp.udx.icscoe.jp
65) alpinelinux.mirror.garr.it
66) mirrors.hostico.ro
67) mirrors.qontinuum.space
68) ftp.lysator.liu.se
69) mirrors.zju.edu.cn
70) mirror.mangohost.net
71) mirror.bahnhof.net
72) mirror.vinehost.net

r) Add random from the above list
f) Detect and add fastest mirror from above list
e) Edit /etc/apk/repositories with text editor

Enter mirror number (1-72) or URL to add (or r/f/e/done) [1] 64  ← 日本のミラーサイトは 64番です。
Added mirror ftp.udx.icscoe.jp
Updating repository indexes... done.

[root]ユーザー以外のユーザーを作るか聞いてきます。
Setup a user? (enter a lower-case loginname, or 'no') [no] subro  ← [subro]ユーザーを作ります。

このユーザーのフルネームを聞いてきます。
Full name for user subro [subro] Subro  ← 設定しますが、殆ど目にすることはないでしょう。

このユーザーのパスワードを設定して下さい。
Changing password for subro
New password: ********
Bad password: too weak  ← パスワード強度が弱いので怒られましたが強行します。
Retype password:********
passwd: password for subro changed by root

このユーザーのSSH公開鍵を聞かれます。
Enter ssh key or URL for subro (or 'none') [none] Enterキー  ← 使わないので[Enter]だけ。

(1/1) Installing doas (6.8.2-r3)
Executing doas-6.8.2-r3.post-install
Executing busybox-1.35.0-r29.trigger
OK: 17 Mib in 36 packages

どのSSHサーバーを使うか聞かれます。
Which ssh server? ('openssh', 'dropbear', or 'none') [openssh] Enterキー  ← opensshで良いので[Enter]だけ。

 * service sshd added to runlevel default
ssh-keygen: generating new host keys: RSA ECDSA ED25519
 * Starging sshd ... [ ok ]

インストール先のディスクを選ばされます。
Available disks are:
  sda   (32.2 GB VMware,  VMware Virtual S)
Which disk(s) would you like to use? (or '?' for help or 'none') [none] sda  ← [sda]しかありません。

The following disk is selected:
  sda   (32.2 GB VMware,  VMware Virtual S)

How would you like to use it? ('sys', 'data','crypt', 'lvm' or '?' for help) [?] sys  ← システムインストール先として使います。

ディスクが消去されるというワーニングです。
WARNING: The following disk(s) will be erased:
  sda   (32.2 GB VMware,  VMware Virtual S)
WARNING: Erase the above disk(s) and continue? (y/n) [n] y

Creating file systems...
Installing system on /dev/sda3:
/mnt/boot is device /dev/sda1
100% ■■■■■■■■■■■■■■■■■■■■■■■
=> initramfs: creating /boot/initramfs-virt
/boot is device /dev/sda1

Installation is complete. Please reboot.

インストールできました。

リブートすると、ディスクから起動するようになります。

alpinelinux:~# reboot



4.他のマシンから sshでログインする

私の普段使いの Linuxクライアント Lubuntu 22.04.2から sshでログインしてみます。

公開鍵(ピンク文字のファイルの内容)を Alpine Linuxの [subro]ユーザーのホームディレクトリの [.ssh/authorized_keys]ファイルに転送します。

subro@Lubuntu2204:~/.ssh$ ls -l
total 16
-rw------- 1 subro subro  411 10月 22  2022 id_ed25519
-rw-r--r-- 1 subro subro   99 10月 22  2022 id_ed25519.pub
-rw------- 1 subro subro 3912  7月  5 16:07 known_hosts
-rw------- 1 subro subro 3076  7月  5 16:07 known_hosts.old

subro@Lubuntu2204:~/.ssh$ ssh-copy-id -i id_ed25519 subro@alpinelinux
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "id_ed25519.pub"
The authenticity of host 'alpinelinux (192.168.1.109)' can't be established.
ED25519 key fingerprint is SHA256:******************.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
subro@alpinelinux's password:Alpine Linuxに作った[subro]ユーザーのパスワード

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'subro@alpinelinux'"
and check to make sure that only the key(s) you wanted were added.

公開鍵方式でログインします。

subro@Lubuntu2204:~/.ssh$ ssh subro@alpinelinux
Welcome to Alpine!

The Alpine Wiki contains a large amount of how-to guides and general
information about administrating Alpine systems.
See .

You can setup the system with the command: setup-alpine

You may change this message by editing /etc/motd.

alpinelinux:~$

ログインできました。\(^o^)/


これにて Alpine Linuxのインストールは完了です。
と言って、この OSでやることも無く、早く Amazon Linux 2風味に仕上げないといけません。


このネタはコンソールに展開される CUIベースのインストーラの文字起こしをするという中々泣ける作業になりました。
VMware Workstation Playerがコンソールの文字をコピペできれば良いのに…と思います。

文字起こしは面倒でしたが、おかげインストールの進行をほぼテキストベースで抑えられたと思います。
(一部画面が流れてしまって悔しい!)