VirtualBoxにAlpine Linuxをインストールする
January 15, 2021
linux AlpineLinux VirtualBox目次
はじめに
筆者はミニPC「Larkbox」にAlpine Linuxを入れて自宅サーバーにしています。ところが、Larkboxのストレージとして追加した中華製1TB SSDが大はずれで、4か月で使用不能となってしまいました。自宅サーバーが突然死する不便さが身に染みたので、もう1台サーバーを用意することにしました。とりあえず予備機なので、仮想環境でいいか、ということでVirtualBox上にAlpine Linux環境を作ることにしました。
せっかくVirtualBoxで動作させるのですから、調子に乗ってデスクトップ環境まで入れてみました。
本記事は、VirtualBox上にAlpine Linuxをインストールした際の備忘録です。
仮想マシンの設定
VirtualBoxを起動し、
仮想マシン(M)> 新規(N)…
により新規vmを作成。
「仮想ハードディスクの作成」でディスクサイズを指定。Alpine Linux自体は2GB~4GBでも動作すると思いますが、dockerを使ってアプリを起動させようとするとイメージの分だけディスクが必要になるので、本格的に使うなら256GBくらいはあったほうがよいと思います。
メモリは4GBは割り当てたいところ。インストーラーから起動するように、起動順序を変更し、「光学」を先頭にしておきます。
プロセッサは稼働させるPCリソースに応じて適宜に。
デスクトップ環境を入れる予定なので、ビデオメモリーはmaxに。コントローラーはVMSVGA推薦のようだけど、VNOXSVGAにすると、デスクトップ環境を入れたときに、より多彩な解像度を選べる。
ストレージには、インストールメディアのisoイメージを追加しておきます。isoイメージはここからEXTENDED(x86_64)パッケージを入手します。STANDARDパッケージでもいいのですが、STANDARDは最小限すぎて使いずらいです。
独立したサーバとして使用するので、ネットワークはブリッジアダプターを選択します。mac版のVirtualBoxでブリッジアダプターを使用する場合は、アダプタータイプを「準仮想化ネットワーク」にしないと、ネットワークが遅くて使い物になりません。
USB3.0 を有効に。
以上の設定を終えたら、vmを起動。
Alpine Linuxのインストール
vmを起動すると、インストーラーが起動します。
root(パスワード無)でログインします。
以下のコマンドで、インストールを開始。
# setup-alpine
Alpine Linuxのインストーラは、メジャーなデストリビューションのインストーラのようにいけてない。1つ1つ対話的に設問に応答していく必要があります。
インストール時の応答は以下。
Select keyboard layout: jp
Available variants: jp
Enter system hostname: alpine
Which one do you want to initialize?: eth0
Ip address for eth0: 192.168.1.xx
Netmask?: 255.255.255.0
Gateway: 192.168.1.1
DNS domain name?
DNS nameserver(s)?: 192.168.1.1
New password: *******
Retype Password: *******
Which timezone are you in?: Asia/Tokyo
HTTP/FTP proxy URL?: none
Which NTP client to run? (‘busybox’, ‘openntpd’, ‘chrony’, or ‘none’):chrony
Enter mirror number (1-43) or URL to add: f
Which SSH server? (‘openssh’, ‘dropbear’ or ‘none’): openssh
Which disk(s) would you like to use?: sda
How would you like to use it?: sys
一旦電源OFF。だけどその前に、これまでの接続をHDDに永続化しておく。
# lbu commit
電源OFF。
# poweroff
shutdownじゃないんだね。
インストールの続き
インストールメディアを抜いて、起動順序をハードディスクを先頭に変更して、再度vmを起動。 再びrootでログイン。こんどは、先ほど設定したパスワードが必要。ここで、パスワードが不要だったら、インストールメディアをアンマウントし忘れてませんか?
ログイン後、念のため、ネットワークがつながっていることを確認。
# ip a
パッケージのリポジトリを更新しておきます。
/etc/apk/repositoriesのコメントアウトをはずす。dockerを使う場合はedge/communityだけはずす。デスクトップ環境を使用する場合は全部はずす。
#/media/cdrom/apks
http://sjc.edge.kernel.org/alpine/v3.12/main
http://sjc.edge.kernel.org/alpine/v3.12/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
次のコマンドで更新。
# apk update
# apk upgrade
sudo の許可
# apk add sudo
# visudo
# %wheel ALL=(ALL) ALL
を
%wheel ALL=(ALL) ALL
に変更
自分のログインアカウントの追加
# adduser 自分のログインアカウント
# addgroup 自分のログインアカウント wheel
ここまできたら、コンソールではなく、sshで別のターミナルから自分のアカウントで接続可能になります。 以降、sshで接続した端末から、
$ sudo su
でルート権限を得て続行できます。
環境整備
いつも使う環境にしておく。
Dockerを入れる
# apk add --no-cache docker docker-compose
# service docker start
# rc-update add docker boot
自分のログインアカウントをdockerグループに入れておく
# addgroup ログインアカウント docker
Alpine Linuxのデフォルトのシェルはashなのでbashにする。
bashのインストール。
# apk add bash-completion
/etc/passwdのログインシェルをashから使い慣れたbashに変更する
root:x:0:0:root:/root:/bin/bash
...
自分のアカウント:x:1001:1001:Linux User,,,:/home/自分のアカウント:/bin/bash
...
ホームディレクトリに.bashrcを置く。
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
#export PS1="[\w]\\$ "
export PS1="\[\e[32m\][\w]\[\e[0m\]\\$ "
alias vi='vim'
alias cls='clear'
alias ll='ls -l --color=auto'
date
ホームディレクトリに.bash_profileを置く。
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
vimのインストール
# apk add vim
vimでマウスを使用しない設定
set mouse-=a
この時点で仮想ディスクの容量は1.35GB程度。小さい!
サーバとして使うだけならこれで完成。
あとは、必要に応じてアプリを入れていく。本サイトでは、以下のアプリのインストール手順の記事を置いてます。
- Alpine LinuxにSambaをインストールしファイル共有
- nginxによるリバースプロキシでWebアプリをワンストップアクセス
- Alpine LinuxにWebminをインストールしブラウザからPC管理
- Alpine LinuxにDNSを入れてiPhoneからも自宅サーバに楽々アクセス
- Alpine Linuxにvpnを入れる
- Alpine Linuxにfirewall(awall)を入れる
- Alpine Linuxにapache web serverを入れる
- Lycheeで自前の写真サーバーを立てる
- Piwigoで自前の写真サーバーを立てる
- PukiWikiサーバー
- DLNAメディアサーバー
引き続き、調子に乗ってデスクトップ環境を入れる。
デスクトップ環境の構築
デスクトップ環境のインストール
Alpine Linux用のデスクトップ環境Xfceを入れます。
apkリポジトリのコメントアウトを外す。
#/media/cdrom/apks
http://sjc.edge.kernel.org/alpine/v3.12/main
http://sjc.edge.kernel.org/alpine/v3.12/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
# apk update
# apk upgrade --update-cache --available
パッケージのインストール
# setup-xorg-base xfce4 xfce4-terminal lightdm-gtk-greeter xfce4-screensaver dbus-x11
VirtualBox用Videoパッケージのインストール
# apk add xf86-video-vboxvideo xf86-video-vesa
マウスのゲストーホスト間のシームレスな移動、共有フォルダーのマウント等の便利機能
# apk add virtualbox-guest-additions virtualbox-guest-modules-virt
ここで以下のようなエラーが出た場合は、apkリポジトリを変更する必要あり。どうもVirtualBox用Videoパッケージを置いていないミラーサイトもあるようだ。
ERROR: unable to select packages:
virtualbox-guest-modules-virt (no such package):
required by: world[virtualbox-guest-modules-virt]
/etc/modulesを修正
af_packet
ipv6
vboxpci
vboxdrv
vboxnetflt
Inputパッケージのインストール
# apk add xf86-input-mouse xf86-input-keyboard
キーボードレイアウト
# apk add setxkbmap
日本語キーボードのキーマップを使用する場合は、xorg.confを設定する
Section "InputClass"
Identifier "Keyboard Default"
MatchIsKeyboard "yes"
Option "XkbLayout" "jp"
EndSection
dbus開始
# rc-update add dbus
デスクトップのアイコンを入れる
# apk add faenza-icon-theme
ログイン画面をカスタマイズ
# apk add slim
# apk add slim-themes
デスクトップ環境開始
# rc-update add lightdm
または
# rc-update add slim
lightdmは何の変哲もないログイン画面だけど、slimはカッコいい!
SLiMのテーマ一覧
$ ls /usr/share/slim/themes/
alpinelinux fingerprint lunar rainbow wave
capernoited flat mindlock rear-window zenwalk
debian-moreblue flower2 parallel-dimensions scotland-road
default lake previous subway
テーマはslim.confで変更する。切り替わるのはログイン画面だけだけど。
...
# current theme, use comma separated list to specify a set to
# randomly choose from
current_theme alpinelinux
...
デスクトップ便利機能
シャットダウンとリブート許可
# apk add elogind polkit-elogind
または
# apk add polkit consolekit2
fuse(独自ファイルシステム構築のライブラリ)をインストール
# apk add gvfs-fuse gvfs-smb
# apk add fuse-openrc
# rc-update add fuse
fuseを入れない場合、File Managerの表示は生のlinuxのファイルシステムのまま。
fuseを入れると、ComputerやNetworkやTrushなどが使用できる。
USBデバイスの自動マウント
# apk add thunar-volman udisks2
仕上げ
# apk update
# apk upgrade --update-cache --available
# poweroff
再起動するとデスクトップが立ち上がる。
ディスプレイサイズは、
Applications>Settings>Display
で変更すればよい。
デスクトップの壁紙を変更するには、
Applications>Settings>Desktop
で変更すればよい。
デフォルトの壁紙置き場は、/usr/share/backgrounds/xfce/
Webブラウザ
Webブラウザを入れてみたいのだが、、、
Chromeのオープンソース版という位置づけの、Chromiumがあったので試してみる
# apk add chromium
# apk add ttf-freefont
なんとなくよさげだが、フォントがないせいか、これだけでは日本語が豆腐マークになる。
googleの日本語フォントを入れる。
$ mkdir ./note
$ cd ./note
$ wget https://noto-website.storage.googleapis.com/pkgs/NotoSansCJKjp-hinted.zip
$ unzip NotoSansCJKjp-hinted.zip
$ cd ..
$ sudo mv note /usr/share/fonts
$ sudo fc-cache -fv
うまくいった。
サーバとしてならともかく、クライアントとして使えるかは未知数。
ドキュメント作成環境
筆者はviで十分だけど、必要に応じて、
# apk add leafpad
とか
# apk add emacs
leafpadはデスクトップ環境で使用するテキストエディタ
日本語入力 iBus-anthy をインストール
# apk add ibus-anthy dbus-x11 python2 python3 zenity
日本語キーボードに切り替える
$ setxkbmap jp
.bashrcに追記
export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODUEL=ibus
iBus 起動設定
Applications > Settings > Session and Startup > Applications Autostart
IBus Daemonエントリを追加
Applications > Settings > iBus Preferences > General
Ctrl+スペースで日本語入力に切り替わるようにする
Applications > Settings > iBus Preferences > Input Method
日本語入力と直接入力の切り替えができるようにする
デスクトップのカスタマイズ
Xfceでは、テーマを変更することにより、見栄えを変えることが可能です。
例えば、こんなかんじ。
これは長くなるんで別記事で紹介します。
まとめ
VirtualBox6.1上にAlpine Linuxをインストールする方法を紹介しました。