CoreLinux 6.3 を VIRL に登録する
Tiny Core Linux はフットプリントが非常に小さい Linux ディストリビューションで、Cisco VIRL のような仮想化された検証環境内で複数インスタンスを立ち上げても軽快に動作する、という特徴があります。用途に応じて幾つかの種類があります。参考として記載したサイズは 6.3 用 ISO イメージのサイズです。
- Core
- 9MB 程度。CLI だけの、最小環境での利用を想定。
- TinyCore
- 15MB 程度。GUI(X)を含む。
- CorePlus
- 84MB 程度。TinyCore に様々なパッケージを追加している。
追加パッケージも数多く提供されているので Core をベースにパッケージを追加し、カスタマイズしていくのも簡単です。今回は Core を VIRL に登録してみます。
作業環境¶
以下の環境で作業しました。
- Ubuntu 14.04.3 LTS(64bit)
- KVM インストール済み
Core の起動¶
qcow2 形式で仮想マシンのイメージを作成します。
1 |
|
Core のイメージを起動します。今回は作業時に OS X から VNC 接続したのですが、OS X の標準 VNC クライアントはパスワード無し接続が出来ないようなので、VNC にパスワードを設定します。また、後の手順で登場しますが、インストール作業を効率化する際に TELNET 接続を使いますので、ホストマシンの 40023/TCP をゲスト(Coroe)の 23/TCP にリダイレクトしています。
1 2 3 4 5 6 7 8 9 10 |
|
QEMU のコンソールから change vnc password を実行して VNC 接続用のパスワードを設定します。
1 2 3 4 |
|
作業端末(OS X)の標準 VNC クライアントを起動し、Core のコンソールに接続します。Core は「vnc :1」オプションを指定したので、「5,900 + 1 = 5,901」が VNC の待ち受けポートになります。ですので、ホストである Ubuntu のアドレスが 192.168.1.1 なら標準 VNC クライアントからは「vnc://192.168.1.1:5901」と指定することになります。余談ですが、OS X(Yosemite)で VNC 接続をする為に「サーバへ接続する」を呼び出すショートカットは「command + K」です。
TELNET サーバの有効化¶
作業を効率化する為にコマンドはコピー&ペーストしたいので、VNC クライアントではクリップボード共有が出来ませんでした。そこで作業用に TELNET サーバを有効化します。以降は基本的に Core のコンソールでコマンドを実行します。
1 |
|
/etc/inetd.conf を以下の内容で新規作成します。/etc 配下にあるので、新規作成する際は sudo vi /etc/inetd.conf する必要があります。
1 |
|
inetd 経由で TELNET サーバを起動します。
1 |
|
外部の PC から TLENET すると、Core に接続出来るはずです。下記は(Core では無く)作業用 PC から Ubuntu の 40023/TCP に TELNET した結果です。リダイレクトされ、Core に TELNET 出来ています。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
インストール¶
インストールは「パーティションを設定する、ファイルシステムを作成する、パッケージを入れる…」と手動で実行していく方法もあるのですが、簡略化する為に tc-install を使います。tc-install を使えば対話的にインストール出来ますので、大幅に手間が削減出来ます。Core でパッケージを追加するには tce-load を使います。
1 2 |
|
これでインストーラが開始されるはずです。「c」を選択し、マウントしている Core の CD-ROM(ISO イメージ)からインストールを開始します。
1 2 3 |
|
インストールの種類を聞かれます。「f」を入力し、Frugal インストールにします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
インストールのターゲットを選択します。今回は仮想マシン用に確保したディスク(の、イメージ)をパーティショニングせず、丸ごと利用しまいすので「1」を入力し、Whole Disk を指定します。
1 2 3 4 5 6 |
|
インストールするディスクを選択します。「2」の sda を選択します。
1 2 3 4 5 6 7 |
|
ブートローダをインストールするか?確認されます。「y」を入力し、ブートローダをインストールします。
1 2 3 4 5 |
|
選択したディスク(今回は sda)のフォーマット形式を指定します。検証環境でインスタンスを作る / 壊すを繰り返すのでジャーナル等、高度な機能は不要です。よって、「1」を入力して ext2 を選択しました。
1 2 3 4 5 6 7 8 |
|
起動オプションを指定します。特に何も入力せず、エンターを押して次に進みます。
1 2 |
|
続行するか?の最終確認を求められます。「y」を入力して、インストール作業を続行します。
1 2 |
|
インストール作業が開始されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
これでインストール作業は完了です。一旦、シャットダウンします。
1 |
|
Core の再起動¶
ISO イメージからでは無く、ローカルディスクから起動し直してパッケージの追加等を実施していきます。まずは Core を(ISO イメージからでは無く)ディスクイメージから再起動します。
1 2 3 4 5 6 7 8 9 |
|
TELNET サーバの有効化¶
作業を効率化する為、先程と同様に TELNET サーバを有効化しておきます。
1 |
|
/etc/inetd.conf を以下の内容で新規作成します。先程と同じ内容です。
1 |
|
TELNET サーバを起動します。
1 |
|
作業用 PC から TELNET します。Core の起動時に TELNET サーバが自動起動されるよう、/opt/bootlocal.sh を修正します。このファイルに書かれたコマンドは Core の起動時に実行されます。
1 |
|
但し上述の通り、/opt/bootlocal.sh を修正しても Core を再起動すると修正は失われ、初期状態に戻ってしまいます。再起動後も修正が残るようにする(永続化する)には filetool.sh -b を実行します。これで再起動後も修正内容が残ります。
1 |
|
パッケージの追加¶
使いそうなパッケージを追加します。
1 2 3 4 5 6 7 8 |
|
vim は X.org に依存しているようです。
1 2 3 |
|
X.org がインストールされても良ければ vim もインストールしておきます。
1 |
|
ログインシェルの変更¶
bash をインストールしたので、ログインシェルを変更しておきます。/etc/passwd はデフォルトで以下のようになっていました。
1 2 3 4 |
|
シェルを変更します。
1 2 3 4 |
|
変更を永続化しておきます。
1 2 |
|
SSH サーバの有効化¶
起動時に SSH サーバが自動起動されるように設定します。
1 2 |
|
SSH 経由でログイン出来るよう、ユーザにパスワードを設定しておきます。今回は tc と root のいずれもパスワードは「password」としました。
1 2 |
|
/etc/shadow も永続化しておきます。
1 2 |
|
コンソール有効化¶
いちいち VNC 接続しなければならないのは面倒なので、コンソールを有効化しておきます。Linux カーネルの起動オプションは /mnt/sda1/tce/boot/extlinux/extlinux.conf で定義されており、デフォルトでは以下の通りです(UUID 値は除く)。
1 2 3 4 |
|
これを以下のように変更し、ttyS0 を有効化します(KERNEL 行にオプションを付与します)。
1 2 3 4 |
|
設定ファイルの微修正¶
Core では設定ファイルの修正等は保持されず、都度、初期化されます。具体的には起動する毎に /mnt/sda1/tce/boot/core.gz が展開されることで /etc 等が再構築(=初期化)されるようです。つまり、/mnt/sda1/tce/boot/core.gz をカスタマイズすることで起動時の /etc を修正することが出来ます。まず、/mnt/sda1/tce/boot/core.gz を作業用ディレクトリに展開します。
1 2 3 4 |
|
展開されたファイル・ディレクトリは以下の通りです。
1 2 3 |
|
まず、コンソールの設定を修正します。/home/tc/temp/extract/etc/inittab を以下の方針で修正します。
- 自動ログイン(/sbin/autologin)の無効化
- tty1 のスピードを修正
- ttyS0 を追加
コンソールへの自動ログインは非常に便利なのですが、自動ログインを有効化しているとなぜか起動時にシステムがハングアップしてしまうことがあるようです(※ 実際、自動ログインを有効化したイメージを VIRL 上で利用している際に、何度もハングアップしました。定かではありませんが、Core の起動後にしばらくログインせずに放っておくとハングアップするように感じました)。よって、自動ログインは無効化しておきます。具体的には以下のように修正します。
1 2 3 |
|
ttyS0 からコンソールログイン出来るように /home/tc/temp/extract/etc/securetty を修正します。デフォルトでは ttyS0 がコメントアウトされているので、これを解除しておきます。
1 |
|
デフォルトでは /etc/passwd には以下の 4 ユーザが登録されていました。
1 2 3 4 5 |
|
通常は tc ユーザを利用して作業をする想定とします。Linux 自体へのログインバナーに作業用ユーザのパスワードが表示されるように /home/tc/temp/extract/etc/issue を修正します。
1 2 3 |
|
TELNET サーバの設定ファイルも追加しておきます。/home/tc/temp/extract/etc/inetd.conf を以下の内容で新規作成しておきます。
1 |
|
core.gz を書き戻します。
1 2 3 4 5 |
|
タイムゾーンを修正しておきます。rm を実行する度に削除確認されるのは面倒なので、alias も設定しておきます。~/.profile に以下を追記します。
1 2 |
|
vim をインストールしている場合は vi が vim の alias になるよう、alias を追加しておきます。
1 |
|
設定ファイルをバックアップします。
1 |
|
シャットダウンします。
1 |
|
これで完成です。
VIRL への登録¶
作成したイメージを VIRL に登録します。server の Subtype をベースに登録すれば、ほぼ変更する点はありません。
参考¶
- Into the Core - A look at Tiny Core Linux
- Tiny Core Linux のバイブル(たぶん)。
- Browse TCZs
- 6.x 用の拡張パッケージ一覧。
- Linux Core Installation and its Remastering for Output to Serial Port
- Core Linux をリマスタリング(カスタマイズ)する手順全般について説明されている。コンソールを有効化する手順等も参考になる。
- Boot Process
- TinyCore の起動プロセスについて説明されている。
- Tiny Core 6のインストール
- Tiny Core 6 系をインストールした後の各種カスタマイズについて説明されている。
- change shell
- Tiny Core でシェルを変更する手順についてディスカッションされている。
- How to - Command Line install of 'Core'
- CLI から tc-install を使ってインストールする手順について説明されている(詳細だが、英語)。
- Tiny Core Linuxでサーバ運用(2) - インストール
- こちらも tc-install を使ったインストール手順について説明されている(簡易だが、日本語)。/opt/.filetool.lst と filetool.sh を使ったファイルの永続化についても分かりやすく説明されている。
- Tiny Core Linux でtelnet
- Tiny Core で TELNET サーバを有効化する手順について説明されている。
- Tiny Core 6.1 64bit版のインストールと、dockerを動かそうとしたメモ
- Tiny Core の 64bit 版をインストールする際の手順について説明されている。