はじめに
alpinelinuxはコマンドライン環境のみでインストールできます。ubuntu-serverと比べても軽量で、isoイメージのダウンロードやインストールにかかる時間が短いです。alpinelinux上でコマンドラインツールを自由にインストールできるようにまでの手順が難しかったので、まとめることにしました。
環境
PC:MacBook Pro (2016)
CPU: 2.9 GHz デュアルコアIntel Core i5
メインメモリ: 16 GB
alpinelinux: alpine-standard-3.21.0-x86_64.iso
VirtualBox: バージョン 7.0.10 r158379 (Qt5.15.2)
Virtualboxの設定
alpinelinuxのisoイメージを公式ページからダウンロードしてVirtualBoxのドライブにセットする。
バーチャルマシーンの設定は以下のようにした。
タイプ:Linux
バージョン:Oracle Linux (64bit)
メインメモリー:2048MB
Processors:1CPU
Create a Virtual Hard Disk Now:20GB
alpinelinuxのインストール
バーチャルマシーンを起動するとログイン画面になる。root と入力する(パスワードはない)。
localhost login:
rootでログインすると以下のようなメッセージが出る。setup-alpinを実行。
You can setup the system with the command: setup-alpine
すると、インストールウィザードが立ち上がる。あとは指示に従って入力するのみ。TUIでもなく、全てCUIで操作する。
Keymap
Keymapの項目で
Select keyboard layout:
とくる(私はusを選択。)
Select variant (or 'abort'):
とくる。(私はus-dvorakを選択。)
以下も同様にやっていく。
Hostname
Enter System hostname (fully qualified form, e.g. 'foo.example.org')[localhost]
適当に入力(今回はvb-alpineとした)
Interface
Which one do you want to initialize? (or '?' or 'done')[eth0]とくるのでeth0を入力
Ip address for eth0? (or 'dhcp', 'none', '?')[dhcp]とくるのでdhcpを入力
Do you want to do any manual network configuration? (y/n)[n]とくるのでnを入力
Root Password
New password:とくるので適当にと入力
単純すぎるとBad password: too shortとメッセージが出る
Retype password:とくるので再度入力。Bad passwordでも通る。
Timezoneで
Which timezone ar you in? (or '?' 'none')[UTC]とくるのでAsiaと入力
What sub-timezone of 'Asia' are you in? (or '?')とくるのでTokyoと入力
Proxy
HTTP/FTP proxy URL? (e.g. 'http://proxy:8080', or 'none')[none]とくるのでnoneと入力
Network Time Protocol
Which NTP client to run? ('busybox', 'openntpd', 'chrony', or 'none')[chrony]とくるのでchronyと入力
APK Mirror
Enter mirror number or URL:[1]とくるので1を入力。
User
Setup a user? (enter a lower-case loginname, or 'no')[no]とりあえずnoにしておく。(後でユーザー登録をする。)
Which ssh server? ('openssh', 'dropbear' or 'none')[openssh]とくるのでopensshと入力。
Allow root ssh login? ('?' for help)[prohibit-password]とくるので、?で確認し、yesを入力。
Enter ssh key or URL for root (or 'none')[none]とくるのでnoneと入力。
Disk & Install
Which disk(s) would you like to use? (or '?' for help or 'none')[none]?で確認の後、sdaと入力。(noneではなくsda)。
How would you like to use it? ('sys', 'data', 'cryppt', 'lvm' or '?' for help)[?]とくるので?で確認ののち、sysと入力。
WARNING: Erase the above disk(s) and continue? (y/n)[n]とくるのでyと入力。
これでインストール終了です。Installation is complete. Please reboot.メッセージが表示されます。
注意点
VirtualBoxのWindowの右下のCDのアイコンをクリックし、Remove disk from virtual driveを選択してiosが入ったディスクを抜く。これをしないと、再起動した際にまたisoから起動してしまう。
再起動
rebootコマンドで再起動する。
ログイン画面
rootでログインする。osインストールの時に定めたパスワードを用いる。
動作確認
rc-service sshd statusでopensshサーバーが起動していることを確認。
もしインストールされていない場合、apk add openssh
サービスをスタート、rc-service sshd start
ip addrでipアドレス
whoamiでloginしているuser名(今はroot)
hostnameで先ほど名付けたホスト名(今回はvb-alpine)
setup-keymapでキーマップ変更できる
user登録
adduser myusername を実行
Changing password for myusername
New password: とくるので適当に決める。
短すぎるとBad password: too shortとくるが、
Retype password:で再入力して登録完了できる。
userをwheelグループに登録
addgroup myusername wheelコマンドを実行。「myusername」が「wheel」グループに登録される。
groups myusernameで確認できる。
nanoをインストール
apk add nanoコマンドを実行。
sudoコマンドをインストール
nano /etc/apk/repositoriesで以下を最後尾に追加。
https://dl-cdn.alpinelinux.org/alpine/v3.18/main
https://dl-cdn.alpinelinux.org/alpine/v3.18/community
リポジトリ更新。apkでsudoがインストールできるようになる。
apk update
sudoをインストール。
apk add sudo
wheelグループがsudoを使えるようにする。
visudo
を実行。以下の行のコメントアウトを外す
%wheel ALL=(ALL:ALL) ALL
sudoがwheelグループ所属のmyusernameで使えるか確認する。exitでrootをログアウトさせます。先ほど定めたuser(myusername)とpasswordでログインする。sudo apk updateなど適当に実行して、エラーが出ないことを確認する。
python3とpip3をインストール
sudo apk update
sudo apk add python3
python3 --version #確認
sudo apk add py3-pip
pip3 --version #確認
適当なツールをインストール
sudo apk add yt-dlp
考察
以下が、私がつまづいた箇所です。
・インストールウィザード終了後はisoイメージをバーチャルドライブから外さなければならない。
・インストールウィザードでの「User」と「Disk & Install」で適切に設定する
・sudoをインストールする。デフォルトのリポジトリではsudoがなく、手動でリポジトリを登録する必要がある。
・userを登録し、そのuserをwheelグループに登録し、wheelグループがsudoコマンドを使えるようにする。
母艦(今回はMac)とVirtuaBox上のalpinelinuxとでファイルの送受信を自由にできれば便利です。私の環境ではVirtualBoxの機能を用いてそれをしようとすると、動作が不安定になり、困難でした。なのでMacとalpinelinuxとのファイルのやりとりはscpコマンドで行なっています。scpコマンドを用いるということはssh接続できないとなりません。VirtualBox上のalpinelinuxにMacからssh接続するには、VirtualBoxの設定をしなければなりません。簡単に述べると、VirtualBoxのGUIの「設定」> 「ネットワーク」> で割り当てが「NAT」になっていることを確認し、その項目の少し下にある「Advanced」 > 「ポートフォワーディング」 > 新規ポートフォワーディングルールを追加しますアイコンの「+」をクリック > 「名前: 変更不要, プロトコル: デフォルトのTCPのまま, ホストIP: 設定不要, ホストポート: 2222(alpinelinuxのsshサーバーのポート), ゲストIP: 設定不要, ゲストポート: 22とする
Macのターミナルを立ち上げ、Mac側からVirtualBox上のalpinelinexにssh接続
ssh -p 2222 myusername@localhost # -p 2222とするのが大事。小文字のp。
Macからalpinelinuxにファイル送信
scp -P 2222 test.txt myusername@localhost:~ # -P 2222 とする。大文字のP。
Macのuser名とhostnameを確認。Macのターミナルで以下を実行。
whoami # usernameを確認
hostname # hostnameを確認
alpinelinuxからMacにssh接続。alpineのコンソール上で以下を実行。
ssh macのユーザー名@macのホスト名
alpinelinuxからMacにscpでファイルを送信。
scp test_2.txt macのユーザー名@macのホスト名:~
参考
Alpine Linux をインストールする #VirtualBox - Qiita, https://qiita.com/elfincafe/items/0f3acd6a76b7e3cf9b19