2021-12-17

Linux ディストロ探訪(27) 〜 Alpine Linux 〜

Alpine Linux のレビュー記事 [1] を読んで、軽量な Linux であることが判りましたが、なにやら他のディストロとは違う特徴があるようです。コンテナでなくともフツーにインストールする事もできるようなので、GNOME Boxes の仮想マシンにインストールしてみました。

Alpine Linux のデスクトップ画面 (Xfce4)

OUTLINE

Alpine Linux とは

Alpine Linux は、muslBusyBox をベースにした Linux ディストリビューションで、セキュリティ、シンプルさ、リソース効率を重視して設計されています。 init システムに OpenRC を採用し、すべてのユーザー空間のバイナリを、スタック破壊保護対策 (Stack-Smashing Protection, SSP) を施した位置非依存の実行ファイルとしてコンパイルしています。

特徴

  • 独自のパッケージ管理システムとして APK を採用。
  • RAM ディスクオペレーティングシステムとしてインストールすることができる。
  • ユーザ空間全てでバイナリがスタックスマッシング保護付きの位置独立実行ファイルとしてコンパイルされていて、バッファオーバーフローの影響を軽減。
  • デフォルトで DMVPN を利用して効率的なメッシュ化 VPN が利用可能なパッチを含む唯一の Linux ディストリビューション。
  • Xen の最新版に対応、KVM にも対応。
  • ベースシステムが 4 - 5 MB(カーネルを除く)に収まるように設計。コンテナは 8 MB 以内に収まり、最小インストールには 130 MB が必要。
  • デバイスの設定を行うためのアプリケーションに Alpine Configuration Framework (ACF) を使用。
  • 標準 C ライブラリは GNU C ライブラリとのバイナリ互換性がある musl を採用。
  • init としてシンプルかつ軽量な OpenRC を採用。
Wikipedia より引用・翻訳、編集

インストール

Alpine Linux のダウンロードサイト [2] から、STANDARD の x86_64 クリックして iso イメージ alpine-standard-3.15.0-x86_64.iso をダウンロードしました。これを、Linux (Fedora Linux 35) の GNOME Boxes 仮想化マシン上で起動しました。

ログインとインストールコマンド

ログインは root と入力します。パスワードはありません。

インストールには setup-alpine コマンドを使います。

setup-alpine コマンドには -q オプションで簡潔にインストールする方法もありますが、ここではなにもオプションを付けずに実行しました。

localgost:~# setup-alpine

キーボードレイアウトとネットワーク

最初にキーボードのレイアウトを設定します。ここでは、いわゆる日本語キーボードを設定しています。

Select keyboard layout: [none] jp

日本語キーボードのレイアウトの variant(派生するバリエーション)が聞かれます。よく判らないので jp を選択しました。

Available variants: jp-OADG109A jp-dvorak jp-kana jp-kana86 jp-mac jp
Select variant (or 'abort'): jp

ネットワーク関係の設定はデフォルトのまま Enter キーを押しました。

Enter system hostname (fully qualified from, e.g. 'foo.example.org') [localhost]Enter
Available interfaces are: eth0.
Enter '?' for help on bridges, bonding and vlans.
Which one do you want to initialize? (or '?' or 'done') [eth0]Enter
Ip address for eth0? (or 'dhcp', 'none', '?') [dhcp]Enter
Do you want to do any manual network configulation? (y/n) [n]Enter
:
:

ルートのパスワードとタイムゾーン

root のパスワードを設定します。以下の例ではパスワードが弱いというメッセージが出ますが、そのまま再入力すると設定ができてしまいました。

Changing password for root
New password:
Bad password: too weak
Retype password:
passwd: password for root changed by root

タイムゾーンの設定をします。

Which time zone are you in? ('?' for list) [UTC] Asia
What sub-timezone of 'Asia' are tou in? ('?' for list) Tokyo

プロキシサーバの設定は必要ないので、そのまま Enter を押します。

HTTP/FTP proxy URL? (e.g. 'http://proxy:8080', or 'none') [none]Enter

インストール

Alpine Linux のリポジトリサーバーを指定します。画面がスクロールしてしまって見えませんが、とりあえずデフォルトの設定 [1] のまま Enter を押します。

Enter mirror number (1-57) or URL to add (nr r/f/r/done) [1]Enter

SSH サーバーの設定はデフォルトのまま openssh としました。

Which SSH server? ('openssh', 'dropbear' or 'none') [openssh]Enter

インストール先のストレージは sda、使い方を sys としてファイルシステムを作成します。

Available disks are:
  sda   (21.5 GB ATA      QEMU HARDDISK   )
Which disk(s) would you like to use? (or '?' for help or 'none') [none] sda
The following disk is selected:
  sda   (21.5 GB ATA      QEMU HARDDISK   )
How would you like to use it? ('sys', 'data', 'crypt', 'lvm' or '?' for help) [?] sys
WARNING: The following disk(s) will be erased:
  sda   (21.5 GB ATA      QEMU HARDDISK   )
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
:
:

インストール終了後、再起動します。

Installation is complete. Prease reboot.
localhost:~# reboot

再起動

再起動後、設定した root のパスワードでログインできることを確認します。

インストール後、df コマンドでストレージの使用状況を見ると、システムが使用している領域は 839MB になっていました。

ふだんは Fedora Linux を使っていますので、試しに Fedora Linux 35 Server Edition を何もカスタマイズせず、素のままでインストールしたときのストレージの使用サイズを確認してみました。下記にあるように、システムが使用している領域は 1.6GB あります。単純な比較はできませんが、Alpine Linux がいかにコンパクトにできているかがわかります。

Fedora Linux 35 Server Edition をインストールした後のストレージの使用状態

apk ─ パッケージ管理

Alpine Linux では、apk というコマンドでパッケージの管理をおこないます。以下に、apk のサブコマンドの概略 [3] をまとめました。Debian/Ubuntu の apt、RHEL/Fedora の dnf などと同様な役割を持っているパッケージ管理用のコマンドです。

apk の主なサブコマンドの概略
add新しいパッケージを追加したり、パッケージをアップグレードします。
delパッケージを削除します。
fixインストールされているパッケージの修復やアップグレードを試みます。
update利用可能なパッケージのインデックスを更新します。
infoインストールされているパッケージや利用可能なパッケージに関する情報を表示します。
searchワイルドカードパターンでパッケージや説明を検索します。
upgrade現在インストールされているパッケージのアップグレードします。
cacheローカルにキャッシュされたパッケージ・リポジトリをメンテナンスします。
versionインストールされているパッケージと利用可能なパッケージのバージョンを比較します。
indexパッケージのリストからリポジトリのインデックスを作成します。
fetchパッケージをダウンロードします(インストールはしません)。
auditパッケージがインストールされた状態からファイルシステムへの変更をリストアップします。
verifyパッケージの署名を確認します。
dot指定されたパッケージの依存関係を作成します。
policy指定されたパッケージを更新するリポジトリと、そのパッケージを提供するリポジトリを表示します。
statsインストールされているパッケージや利用可能なパッケージの数、ディレクトリやファイルの数などの統計情報を表示します。

init システム

init は、UNIX および Unix 系システムのプログラムのひとつで、他の全てのプロセスを起動する役目を持っています。デーモンとして動作し、一般に PID 1 が付与されます。ブートローダカーネルを起動し、カーネルが init を起動します。

init の設計上の限界に対処した代替として systemd などがあり、Ubuntu や他の Linux ディストリビューションが採用しています。

Wikipedia より引用、編集

Alpine Linux は、init システムに OpenRC を採用しています。以下に、基本的な使い方をまとめました [4]

サービスの追加
# rc-update add <service> <runlevel>
サービスの削除
# rc-update del <service> <runlevel>
サービスの開始、停止、再起動
# rc-service <service> <start/stop/restart>
サービスの確認
# rc-status
ランレベルの変更
# rc <runlevel>

Alpine Linux には shutdown コマンドがありません。その代わり、シャットダウンには poweroff コマンドを使います。

デスクトップ環境

Alpine Linux で利用できるデスクトップ環境の選択肢はいくつもありますが、ここでは Xfce4 を使えるようにします。

Xfce4 のインストールと設定

参考サイト [5] によると、ユーザーアカウントを作成してからとありますが、最初に Xfce4 を使えるようにしてしまいます。

まず、グラフィカルな環境を設定し、基本的な Xorg パッケージと udev をインストールします。

localhost:~# setup-xorg-base

次に、Xfce4 を利用するための最低限のパッケージをインストールします。

localhost:~# apk add xfce4 xfce4-terminal xfce4-screensaver lightdm-gtk-greeter 

dbus のサービスを開始します。

localhost:~# rc-service dbus start

dbus のサービスが起動時に自動的に実行されるように登録します。

localhost:~# rc-update add dbus

lightdm ディスプレイマネージャのサービスを起動します。

localhost:~# rc-service lightdm start

サービスが正常に起動すると下記のようなログイン画面が表示されますので、root でログインします。

Xfce4 のデスクトップ画面が表示されれば、設定は成功です。

lightdm ディスプレイマネージャのサービスが起動時に自動的に実行されるように登録します。

localhost:~# rc-update add lightdm

ユーザがシャットダウンや再起動ができるようにパッケージを追加します。まだユーザーアカウントを作っていないので、機能は未確認です。

localhost:~# apk add elogind polkit-elogind

再起動してディスプレイマネージャが起動することを確認します。

localhost:~# reboot

再起動後、無事ディスプレイマネージャーが起動することを確認できました。

ちなみに、デスクトップ環境をインストールして 1.2GB しかストレージ領域を消費していないのは立派です。

日本語入力

参考サイト [6], [7] を参考に、日本語入力をできるように設定しました。若干、試行錯誤をしてしまったので、内容に抜けや無駄があるかもしれません。🙇

デスクトップ環境では日本語キーボードのレイアウトになっていませんので、キーボードのレイアウトを設定するプログラムをインストールして、レイアウトを jp に設定します。

localhost:~# apk add setxkbmap
:
:
localhost:~# setxkbmap jp

日本語入力システムには Anthy を利用できますが、開発用の edge リポジトリからダウンロードしてインストールする必要がありますので、vi などで /etc/apk/repositories を編集して # を外します。

localhost:~# vi /etc/apk/repositories
...
...
localhost:~# cat /etc/apk/repositories
#/media/cdrom/apks
http://sjc.edge.kernel.org/alpine/v3.15/main
http://sjc.edge.kernel.org/alpine/v3.15/community
http://sjc.edge.kernel.org/alpine/edge/main
http://sjc.edge.kernel.org/alpine/edge/community
http://sjc.edge.kernel.org/alpine/edge/testing
localhost:~# apk update
:
:
localhost:~# apk upgrade
:
:

編集後 apk update / apk upgrade を実行して、リポジトリの情報を更新およびパッケージの更新しておきます。

Anthy を利用するためのパッケージをインストールします。

localhost:~# apk add ibus-anthy dbus-x11 zenity

日本語フォントをインストールします

localhost:~# apk add font-noto-cjk font-noto-cjk-extra

~/.bashrc に以下の行を加えます。

export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus

※ Alpine Linux のデフォルトのコマンドラインシェルは ash ですが、bash の設定ファイル名で問題はありませんでした。

メニューから Applications → Settings → Session and Startup を起動し、Applications Autostart タブで /usr/bin/ibus-daemon -drx コマンドがログイン時に実行されるように登録します。

メニューから Applications → Settings → iBus Preferences を起動し、Input Method のタブで、インプットメソッドに Anthy を追加します。

General タブにある、インプットメソッドを切り替えるショートカットの指定は <Super>space になっていますが、これは ⊞ Win + Space のことで、これで Anthy の日本語変換システムを切り替えます。⊞ Win キーを使えるので変更はせずこのまま使うことにします。

この時点で、日本語を入力できるようになりますが、ibus-daemon が自動実行されることを確認するため、システムを再起動、ログインし直して、確かに日本語入力ができるようになっていることを確認します。

⊞ Win + Space で、Anthy の日本語変換システムを切り替えます。

Ctrl + J で、画面上のパネル右側にある表示が _A から あ に変わり、日本語変換できるモードになります。なお、漢字 キーでも同様に切り替えられました。

インターネットブラウザ

最低限のデスクトップ環境が整いましたが、インターネットブラウザがインストールされていないので、Chromium をインストールしました。

localhost:~# apk add chromium

Chromium のインストール後、ドックランチャーのブラウザアイコンをクリックしても、エラーが出て起動しません。

ターミナル上でコマンドを入力して起動してみました。

localhost:~# chromium-browser

root アカウントでは --no-sandbox オプションを付加しないと起動できないようですので、付加して起動しました。

localhost:~# chromium-browser --no-sandbox

何やらエラーが出ていますが、ひとまず Chromium を起動できました。

ユーザーアカウント

ここへきて、ようやくユーザーアカウントを追加することにしました。

localhost:~# adduser bitwalk
:
:

作成したアカウントでログインして、~/.bashrc ファイルへの情報追加や ibus-daemon の自動起動など、パッケージのインストール以外の設定を繰り返します。

デスクトップ環境の設定や日本語環境の整備はまだまだやるべきことがあるのですが、Alpine Linux のデスクトップ環境に関する詳細は、あらためてまとめる予定です。

まとめ

項目 説明
ディストリビューション Alpine Linux
プロジェクトサイト index | Alpine Linux
デスクトップ環境 Xfce Desktop, LXDE, LXQT, KDE Plasma, Gnome, MATE, Openbox, Dwm, Awesome Window Manager
対応プラットフォーム aarch64, armhf, armv7, ppc64le, s390x, x86, x86_64
パッケージ管理 apk-tools (apk)
日本語入力 ibus-anthy
寸評

ミニマリストであることを追求するために、多くの Linux ディストロが採用している GNU C ライブラリ (glibc) を使用していない独自路線を歩むディストロです。軽量であるため、組み込み用途に向いていると思われますが、デスクトップ環境も選択肢が多く用意されています。

ニーズがあるかどうかをあまり考えないことにして、このディストロのデスクトップ環境についてあれこれ試してみたいと思います。

参考サイト

  1. Alpine Linuxの最新ユーザーレビュー・評判を紹介!価格や製品の特徴、導入メリットなども掲載中【ITreview】IT製品のレビュー・比較サイト
  2. downloads | Alpine Linux
  3. Package management - Alpine Linux
  4. Alpine Linux Init System - Alpine Linux
  5. Xfce Desktop - Alpine Linux
  6. Enable Community Repository - Alpine Linux
  7. VirtualBoxにAlpine Linuxをインストールする | gatsby-starter-blog++ [2021-01-15]
  8. Alpine Linux 3.13 インストール、日本語入力 - Qiita [2021-01-15]
  9. Desktop environments and Window managers - Alpine Linux

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ Linuxへ
にほんブログ村
このエントリーをはてなブックマークに追加

0 件のコメント: