Dの小部屋

忘れやすい私のメモ帳

リソースの小さいDNSサーバをVirtualBoxで構築する。(VirtualBox+TinyCore+dnsmasq)

内容

開発用にリソースの小さい(メモリ64MB,HDD64MB)DNSサーバをVirtualBoxで構築する。

大まかな流れは以下の通り。

  1. VirtualBox VMの作成
  2. TinyCcoreをVMにインストール(HDDにインストール)
  3. ネットワーク設定
  4. OpenSSHのインストール、設定
  5. dnsmasqのインストール、設定

構成

▼環境

項目 内容
VirtualBox 5.0.20 r106931
ホストOS Windows 10 Home Edition
ゲスト OS TyneCore v7.0 Core(10 MB) kernel 4.2.9-tinycore
ゲスト IPアドレス 192.168.1.100
dnsmasq version 2.55

VM設定

大項目 小項目 内容
システム メモリ 64MB
システム 起動順序 1st 光学, 2nd HDD
ディスプレイ ビデオメモリー 10MB
ストレージ HDD (SATA) 64MB
オーディオ オーディオの有効化 OFF
ネットワーク 割当 ブリッジアダプタ

TinyCoreに関するメモ

  • ファイルの保存設定をしないと、OS再起動後に削除される。
    1. /opt/.filetool.lstに保存対象のディレクトリを記載
    2. filetool.sh -bでバックアップ
  • スタートアップ時(OS起動時)に実行するコマンドは/opt/bootlocal.sh に記載する。
  • シャットダウンは「sudo poweroff」

手順

  • TinyCoreのダウンロード 以下のページより、TinyCoreのインストーラをダウンロードする。 http://tinycorelinux.net/downloads.html → Core(10 MB)をダウンロード

  • VM設定起動 VMを新規に作成後、起動する。

  • インストールツールの入手 HDDにインストールするためのツール「tc-install」を入手する。

$ tce-load -wi tc-install
$ sudo fdisk /dev/sda
…(省略)…
# →新規作成のnを入力
Command (m for help):n 
# →プライマリパーティションのpを入力
Command action
 e extended
 p primary partition(1-4)
p
…(省略)…
# →パーティション番号1を入力
Partition number (1-4):1
# →全領域を指定するので、デフォルト値を使用。
#   値を入力せずEnter
First cylinder (1-4, default 1):
#   値を入力せずEnter
Last cylinder or +size or +sizeM or *sizeK (1-6 default 6):
…(省略)…

# wで書込
Command (m for help):w

# /dev/sda1ができていることを確認
$ fdisk -l
  • TinyCoreのインストール TinyCoreをHDDへインストール
$ sudo tc-install.sh
…(省略)…

Core Installation.
Install from [R]unning OS, from booted [C]drom, or from [I]so file. (r/c/i): c
# → インストーラはcdromとしてマウントしているので「c」を指定。
…(省略)…

Select Install type [F]rugal, [H]DD, [Z]ip. (f/h/z): f
# →「f」を指定する(通常インストール)。
#   ※「h」「z」はUSBメモリから起動する場合に指定。
…(省略)…

Select Target for Installation of core
  1. Whole Disk
  2. Partition
Enter selection (1-2) or (q)uit: 1
# →1はディスク全領域、2は指定したパーティションを指定。今回はディスク全領域を使うため「1」を指定。
…(省略)…

Select disk for core
  1. sda
  2. sr0
Enter selection (1-2) for (q)uit: 1
# →sdaはHDD、sr0は光学ドライブ。HDDにインストールするので「1」を指定。

Enter selection (y,n) or (q)uit: y
# →ブートローダのインストール有無。今回はインストールするため「y」を指定。

Select Formatting Opton for sda
    1. ext2
    2. ext3
    3. ext4
    4. vfat
Enter selection (1-4) or (q)uit: 3
# →ディスクのフォーマット形式を設定。今回は「3」を指定。

Enter space separated boot options:
Example: vga=normal syslog showapps waitusb=5
# →ブートオプションを設定。今回は何も設定しない。
#   入力せずにEnterキーを押下。

Last chance to exit before destroying all data on sda
Continue (y/..)? y
# →問題がなければ「y」を入力。やり直しが必要な場合は「y」以外を入力。

Press Enter key to continue. 
# →Enterキーを押下。

# 一旦シャットダウンし、VMの設定を変更。
$ sudo poweroff

# VM設定
# 設定→システム→起動順序のファーストブートをCD→HDDに変更。
# 変更後、OSを起動。
  • ネットワーク設定 ネットワーク設定スクリプト「eth0.sh」を作成し、OS起動時に読み込ませる。
# eth0.shの作成
$ vi /opt/eth0.sh 
# 以下の内容を記載(環境に合わせる)
# ------------------------------------------
# #!/bin/sh
# pkill udhcpc
# ifconfig eth0 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255 up
# route add default gw 192.168.1.1
# echo "nameserver 192.168.1.100" > /etc/resolv.conf
# echo "nameserver 192.168.1.1" >> /etc/resolv.conf
# touch /usr/local/etc/ssh/sshd_config
# ------------------------------------------

# スタートアップ設定
$ echo "sudo sh /opt/eth0.sh" >> /opt/bootlocal.sh

# 永続設定
$ echo "opt/eth0.sh" >> /opt/.filetool.lst
$ filetool.sh -b
$ sudo reboot
  • SSH設定 今回はユーザ「tc」でログイン出来るように設定する。
# opensshのインストール
$ tce-load -wi openssh
# 必要があれば、以下を更新。今回はデフォルトで使用する。
# cd /usr/local/etc/ssh
# sudo vi sshd_config 

# sshでログインするユーザのバスワード設定
$ passwd tc

# 動作確認
$ sudo /usr/local/etc/init.d/openssh start
$ ps -ef | grep ssh
$ ssh tc@localhost     
$ exit

# スタートアップ設定
$ echo "/usr/local/etc/init.d/openssh start" >> /opt/bootlocal.sh 

# 永続設定
$ echo "usr/local/etc/ssh" >> /opt/.filetool.lst
$ echo "etc/passwd" >> /opt/.filetool.lst
$ echo "etc/shadow" >> /opt/.filetool.lst
$ echo "etc/group" >> /opt/.filetool.lst
$ filetool.sh -b
$ sudo reboot
  • dnsmasqのインストール・設定
# dnsmasqのインストール
$ tce-load -wi dnsmasq

# 設定の修正
$ vi /etc/nsswitch.conf
# 以下の通り修正
# ---------------------------------------
# hosts:      files dns
#   ↓
# hosts:      dns files
# ---------------------------------------
$ sudo vi /etc/hosts
# 以下を追記
# ---------------------------------------
# 192.168.1.100 tce-dns
# ---------------------------------------
$ sudo cp /usr/local/etc/dnsmasq.conf.example /usr/local/etc/dnsmasq.conf
# 必要があればdnsmasq.confを修正。今回はデフォルトを使用。
    
# スタートアップ設定
$ echo "sudo /usr/local/sbin/dnsmasq -9 -d" >> /opt/bootlocal.sh

# /etc/hostsファイルは.filetool.lstに書き込んでもOS再起動後にリセットされてしまうため、以下の仕組みを設定。
$ vi /home/tc/set_hosts
# 以下を追記
# ---------------------------------------
# 127.0.0.1 box localhost localhost.local
# 192.168.1.100 tce-dns
# ---------------------------------------
$ vi /opt/bootlocal.sh 
# 「sudo /usr/local/sbin/dnsmasq -9 -d」の前に以下を追記
# ---------------------------------------
# sudo cp /home/tc/set_hosts /etc/hosts
# ---------------------------------------

# 永続設定
$ echo "usr/local/etc/dnsmasq.conf" >> /opt/.filetool.lst
$ echo "etc/nsswitch.conf" >> /opt/.filetool.lst
$ filetool.sh -b
$ sudo reboot

# 動作確認
$ nslookup tce-dns

その他、TinyCoreの設定

  • 日本語キーボードマップ 日本語キーボードマップ(jp106)をインストールし、有効化。
# インストール
$ tce-load -wi kmaps

# スタートアップ設定
$ sudo echo "loadkmap < /usr/share/kmap/qwerty/jp106.kmap" >> /opt/bootlocal.sh

# 永続化
$ filetool.sh -b
$ sudo reboot

リファレンス