User Mode Linux
どうやら時代遅れ扱いっぽいですが、あえて User Mode Linux (UML)。
かなり昔の構築例やdebianでの構築例はあったのですが、CentOS 5.3 での構築例を見つけることができませんでした。
debianだとapt-getで済むそうです。が、自分はdebian使ってないので判りません(・∀・)
ので、以下メモ。
ホストOSのパッチ(SKASパッチ)は今回はあててません。
各拠点
- UML本拠:http://user-mode-linux.sourceforge.net/
- kernel.org:http://www.kernel.org/
- UML Resources:http://uml.nagafix.co.uk/
UMLカーネルのビルド
UML Resources にビルド済みのバイナリとその時に使用されたconfigがあります。
UML Resources にある CentOS は 5.2 だったので、今回では kernel.org のソース + UML Resources の config でビルドしました。
- UML Resources からダウンロードした config をちょっと編集
カーネルデバッグログ(特にタイムスタンプ)がウザいので以下をコメントアウトします。
CONFIG_PRINTK_TIME=y
$ cp kernel32-2.6.30.3.config linux-2.6.30.3/.config
- カーネルコンフィグの実行とビルド
編集してあるとカーネルデバッグログを云々聞いてくるのでOFFにしました。
[linux-2.6.30.3] $ export ARCH=um [linux-2.6.30.3] $ make oldconfig (中略) [linux-2.6.30.3] $ make
ホストOS = UML間ネットワークの準備
$ make $ sudo make install
$ sudo tuctl Set 'tap0' persistent and owned by uid 0 $ sudo /sbin/ifconfig tap0 192.168.1.1 up
UML_switch に tapデバイスも接続することで、UMLとホストを通信可能にします。
$ sudo uml_switch -hub -tap tap0 uml_switch will be a hub instead of a switch uml_switch attached to unix socket '/tmp/uml.ctl' tap device 'tap0'
$ sudo chmod 777 /tmp/uml.ctl
UMLを起動します。
$ ./linux ubd0=./difffs,rootfs.uml eth0=daemon (中略) CentOS release 5.3 (Final) Kernel 2.6.30.3 on an i686 localhost login: root Last login: Fri Jul 31 11:06:48 on tty0 [root@localhost ~]# ifconfig eth0 192.168.1.2 up [root@localhost ~]# ping 192.168.1.1 PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data. 64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=14.6 ms
ホストOSからのpingも通ります。
$ ping 192.168.1.2 PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data. 64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=1.37 ms