Tiny Core Linux 資料一覧
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から統一的に扱えるメリットは大きいと思われる。
関連資料・記事
参考サイト
Tiny Core Linux技術情報 (Qiita)
Vagrant技術情報 (Qiita)
VirtualBox技術情報 (Qiita)