Tiny Core Linux資料一覧

Tiny Core LinuxのVagrant用boxを作成してゲストOSとして動作させる手順

2015/12/06更新

対応バージョン: 6.4.1

Tiny Core LinuxのVagrant用boxはhttp://www.vagrantbox.es/では配布されていないので手動で作成する手順を示す。

boxが作成されたら実際にVagrantでゲストOSが作成できるところまで行う。

VirtualBoxには以下の手順でTiny Core LinuxのCoreがゲストOSとして作成されているものとする。

またVirtualBoxとVagrantはそれぞれ以下のバージョンを使用する。

% vboxmanage --version
5.0.10r104061

% vagrant --version
Vagrant 1.7.4

Vagrant用設定

まずVagrantで必要な設定をゲストOS上で行う。

SSHはローカル(ホストOS)の2222番ポートをリモート(ゲストOS)の22番ポートにフォワードする設定にしている。

% ssh -p 2222 tc@localhost
tc@localhost's password: ********
   ( '>')
  /) TC (\   Core is distributed with ABSOLUTELY NO WARRANTY.
 (/-_--_-\)           www.tinycorelinux.net

tc@box:~$ 

vagrantユーザ&グループ追加

VagrantはゲストOSにログインする際にvagrantユーザを使用するのであらかじめゲストOS上に同ユーザを作成しておく。

なおTiny Core Linuxではadduserを実行すると同名のグループが一緒に作られるのでaddgroupを実行する必要はない。

tc@box:~$ sudo adduser vagrant

tc@box:~$ id vagrant
uid=1000(vagrant) gid=1000(vagrant) groups=1000(vagrant)

sudo設定

vagrant up時に内部的にsudoを実行するのでvagrantユーザがsudoをパスワードなしで実行できるようにする。

tc@box:~$ sudo visudo
:
vagrant	ALL=NOPASSWD: ALL <--- 追加

vagrantユーザ用の公開鍵を配置

ホストOSからゲストOSにvagrant sshでログインする際に公開鍵による認証が行われるためホストOS上で公開鍵を作成し、それをゲストOSに配置する。

ホストOS上で公開鍵を作成(対となる秘密鍵はVagrant用の専用鍵)
tc@box:~$ exit
% ssh-keygen -yf ~/.vagrant.d/insecure_private_key > public_key
公開鍵をゲストOSに転送
% scp -P 2222 public_key vagrant@localhost:/tmp/authorized_keys
% rm public_key

(*) scpの-Pオプションは大文字であることに注意。小文字だとcpコマンドと同様、パーミッション維持の指定になる

ゲストOS上でvagrantユーザにスイッチして公開鍵を格納
% ssh -p 2222 tc@localhost
tc@box:~$ su - vagrant
vagrant@box:~$ mkdir -m 0700 ~/.ssh
vagrant@box:~$ mv /tmp/authorized_keys ~/.ssh
vagrant@box:~$ chmod 0600 ~/.ssh/authorized_keys
vagrant@box:~$ exit

変更ファイルを保全

今回変更したファイルが/opt/.filetool.lstに記載されているか確認し、記載されていなければ追記して保全する(保全しておかないと次回ゲストOS起動時に復元されない)。

tc@box:~$ cat /opt/.filetool.lst
:
home
:
etc/passwd
etc/shadow
etc/group
etc/sudoers
:

tc@box:~$ sudo filetool.sh -b

ゲストOS停止

ここまで終わったらゲストOSを停止する。

tc@box:~$ sudo poweroff

Vagrantのbox作成

ここからはホストOS上での作業となる。

VirtualBox上にあるゲストOSからVagrantのboxを作成する。

box作成

vagrant packageコマンドでboxを作成し、任意のディレクトリに格納する(ここでは~/vagrant/boxに格納する)。

% mkdir -p ~/vagrant/box
% vboxmanage list vms
:
"tc" {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}
:
% vagrant package --base tc --output ~/vagrant/box/tclinux-core-6.4.1x64.box

boxをVagrantの管理下に入れる

% vagrant box add --name tclinux-core-6.4.1x64 ~/vagrant/box/tclinux-core-6.4.1x64.box
:
==> box: Successfully added box 'tclinux-core-6.4.1x64' (v0) for 'virtualbox'!

% vagrant box list
:
tclinux-core-6.4.1x64 (virtualbox, 0)

仮想サーバを作りゲストOSを起動する

boxがVagrantで扱えるようになったら実際にVagrantfileを作成してゲストOSを起動する。

Vagrantfile作成

% mkdir -p ~/vagrant/tc
% cd ~/vagrant/tc
% vagrant init tclinux-core-6.4.1x64

Vagrantfile修正

Vagrantのデフォルトの設定ではTiny Core Linuxがうまく動作しないので以下の2点を修正する。

SSH接続時のShell(bash)が使えない

Tiny Core Linuxにはbashが入っていないのでshを指定する(別途bashのtczを導入してもよい)。

共有フォルダが使えない

共有フォルダを使うためのvboxsfドライバが含まれるVirtualBox Guest AdditionsがTiny Core Linux向けに提供されていないため共有フォルダの機能を無効化する(共有フォルダが使えなくても従来のscpが使えるのでファイルのやり取りは可能)。

% vi Vagrantfile
:
Vagrant.configure(2) do |config|
  config.vm.box = "tclinux-core-6.4.1x64"
:
  config.ssh.shell = "/bin/sh" <--- 追加
  config.vm.synced_folder ".", "/vagrant", disabled: true <--- 追加
end

ゲストOS起動

ここまで設定すればゲストOSが起動できる。

% vagrant up
:

ログイン確認

vagrant sshコマンドと通常のsshコマンドでそれぞれゲストOSにログインできることを確認する。

vagrant ssh
% vagrant ssh
   ( '>')
  /) TC (\   Core is distributed with ABSOLUTELY NO WARRANTY.
 (/-_--_-\)           www.tinycorelinux.net

vagrant@box:~$ uname -a
Linux box 3.16.6-tinycore #777 SMP Thu Oct 16 09:42:42 UTC 2014 i686 GNU/Linux

vagrant@box:~$ exit
ssh
% ssh -p 2222 vagrant@localhost
vagrant@localhost's password: ********
   ( '>')
  /) TC (\   Core is distributed with ABSOLUTELY NO WARRANTY.
 (/-_--_-\)           www.tinycorelinux.net

vagrant@box:~$ 

以上でTiny Core LinuxのVagrant用boxを作成してVagrantによるゲストOSが起動できるところまで完了した。

Vagrantが想定しているコマンドやツールが使えない、共有フォルダが使えないなどの不便さはあるが他のゲストOS同様Vagrantから統一的に扱えるメリットは大きいと思われる。

関連資料・記事

参考サイト