Top / Note

いろいろな戯れ言とか絵空事

1年ぶりぐらいに更新(2011年11月07日)

1年ぶりぐらいに更新
新作のほうは一応順調です。
去年は別件の仕事を引き受けていたので適当に修正したゲームエンジンと
インターフェース製作周りだけで、
ほとんど製作に関わっていないのですが
本作ではかなり力を入れて色々と修正を入れました。
主にエフェクト周りの強化と、軽量化を行いました。
サーバの方は・・・日進月歩で進化してます^^;


サーバ構築メモ#3(KVM編その2)(2010年10月11日)

Ubuntu10.10(Maverick)が正式リリースされKernelのバージョンが2.6.35になったので
Ubuntu10.10+KVM+QEMU+vhost-netを試してみる際のメモ

まずはvhostモジュールを組み込んでみる
$sudo modprobe vhost-net
これでkvm上でvhostが使用可能になる

Ubuntu標準搭載のQEMUはvhostに対応していないので
gitを使用して最新版を取ってくる
まずgitをインストールし、必要なソースコードを取得
$sudo apt-get install git-core
$git clone git://git.kernel.org/pub/scm/linux/kernel/git/mst/qemu-kvm.git qemu
$cd qemu

コンパイルに必要なモジュールを取ってくる
$sudo apt-get install zlib1g-dev libpci-dev libaio-dev uuid-dev ncurses-dev

ソースコードからバイナリを構築する
$./configure
$make

インストールを行う
$sudo make install

今までのスクリプトと互換性を保つために適当にシンボリックリンクを作成
$sudo ln -s /usr/local/bin/qemu-system-x86_64 /usr/bin/kvm

毎回modprobeするのは面倒なのでrc.localで自動的に行うようにする
$sudo vi /etc/rc.local


# vhost-net module
modprobe vhost-net



以下、前回のKVM編(ブリッジ接続の項目以下)と同様の作業を行う
その際にvhostが有効になるように起動スクリプトを下記のように追記
$sudo vi /home/run_main


#!/bin/sh
kvm -m 512 -vnc :0 -monitor telnet::4000,server,nowait -k ja -daemonize \
  -drive file=/home/server-main.img,if=virtio,index=0,boot=on \
  -drive file=/home/server-sub.img,if=virtio,index=1 \
  -net nic,model=virtio,macaddr=52:54:00:12:34:56 \
  -net tap,ifname=tap0,script=/etc/kvm/kvm-ifup,downscript=/etc/kvm/kvm-ifdown,vhost=on



軽くテストを行いましたが、2TB以上のストレージをマウントするとデータを破壊するバグ等は
0.12.5以降修正されているので、問題なさそうです


サーバ構築メモ#2(KVM編)(2010年09月22日)

ubuntu10.04(lucid)で仮想化機能を搭載したサーバ構築をする際のメモ

とりあえず依存関係を解決するためにをaptで取ってくる。
$sudo apt-get install qemu-kvm

ubuntu10.04(lucid)付属のQEMU 0.12.3は2TB以上のストレージを扱うと、データ破壊する等の色々なバグがあるので
ここではubuntu10.10beta(maverick)に付属予定の、0.12.5にバージョンアップする事にします
次のファイルをダウンロードしてインストール

  • libncurses5_5.7+20100626-0ubuntu1_amd64.deb
  • libpci3_3.1.7-4ubuntu2_amd64.deb
  • pciutils_3.1.7-4ubuntu2_amd64.deb
  • qemu-common_0.12.5+noroms-0ubuntu6_all.deb
  • qemu-kvm_0.12.5+noroms-0ubuntu6_amd64.deb
  • kvm-pxe_5.4.4-7ubuntu2_all.deb

以下インストールするコマンド
$sudo dpkg -i libncurses5_5.7+20100626-0ubuntu1_amd64.deb
$sudo dpkg -i libpci3_3.1.7-4ubuntu2_amd64.deb
$sudo dpkg -i pciutils_3.1.7-4ubuntu2_amd64.deb
$sudo dpkg -i qemu-common_0.12.5+noroms-0ubuntu6_all.deb
$sudo dpkg -i qemu-kvm_0.12.5+noroms-0ubuntu6_amd64.deb
$sudo dpkg -i kvm-pxe_5.4.4-7ubuntu2_all.deb

/etc/network/interfacesを編集して仮想サーバとブリッジ接続出来るようにする
$sudo vi /etc/network/interfaces


auto lo
iface lo inet loopback

auto br0
iface br0 inet static
  address 192.168.0.1
  netmask 255.255.255.0
  network 192.168.0.0
  broadcast 192.168.0.255
  pre-up ifconfig eth0 down
  pre-up ifconfig eth0 0.0.0.0 up
  pre-up brctl addbr br0
  pre-up brctl addif br0 eth0
  post-down brctl delif br0 eth0
  post-down brctl delbr br0
  post-down ifconfig eth0 down



/etc/kvm/kvm-ifup等を定義してネット接続できるようにする
$sudo touch /etc/kvm/kvm-ifup
$sudo chmod 755 /etc/kvm/kvm-ifup
$sudo vi /etc/kvm/kvm-ifup


#!/bin/sh
BRIDGE=br0
/sbin/ifconfig $1 0.0.0.0 up
/usr/sbin/brctl addif $BRIDGE $1



$sudo touch /etc/kvm/kvm-ifdown
$sudo chmod 755 /etc/kvm/kvm-ifdown
$sudo vi /etc/kvm/kvm-ifdown


#!/bin/sh
BRIDGE=br0
/usr/sbin/brctl delif $BRIDGE $1
/sbin/ifconfig $1 down



仮想マシン用HDDイメージを作る
$sudo dd if=/dev/zero of=/home/server-main.img bs=1M count=10000
$sudo dd if=/dev/zero of=/home/server-sub.img bs=1M count=100000
これでそれぞれ10G、100Gの空HDDイメージが作成されます

インストールに使用するisoイメージをダウンロード後
インストール起動スクリプトを書く
まずはイメージをダウンロードします

  • ubuntu-10.04-server-i386.iso

続いて起動用スクリプトを記述
$sudo vi /home/run_main_install


#!/bin/sh
kvm -m 512 -vnc :0 -monitor telnet::4000,server,nowait -k ja -daemonize \
  -drive file=/home/server-main.img,if=virtio,index=0 \
  -drive file=/home/server-sub.img,if=virtio,index=1 \
  -drive file=/home/iso/ubuntu-10.04-server-i386.iso,if=ide,media=cdrom,index=2 \
  -net nic,model=virtio,macaddr=52:54:00:12:34:56 \
  -net tap,ifname=tap0,script=/etc/kvm/kvm-ifup,downscript=/etc/kvm/kvm-ifdown \
  -boot d



スクリプト実行でインストーラが開始される
VNCクライアントで接続してOSをインストールする
$sudo /home/run_main_install

インストールが終了してディスクを抜く指示が出たところで
Telnet接続でQEMUコンソールに入って仮想マシンを落とす
$telnet 127.0.0.1 4000


Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
QEMU 0.12.5 monitor - type 'help' for more information
(qemu) q[Enter]←このコマンドを与えると仮想マシンが即時停止する



通常起動スクリプトを書く
$sudo vi /home/run_main


#!/bin/sh
kvm -m 512 -vnc :0 -monitor telnet::4000,server,nowait -k ja -daemonize \
  -drive file=/home/server-main.img,if=virtio,index=0,boot=on \
  -drive file=/home/server-sub.img,if=virtio,index=1 \
  -net nic,model=virtio,macaddr=52:54:00:12:34:56 \
  -net tap,ifname=tap0,script=/etc/kvm/kvm-ifup,downscript=/etc/kvm/kvm-ifdown



仮想マシンを本起動する
$sudo /home/run_main
あとはVNCで接続して適切にネットワーク設定を行えば
ホスト側からゲスト側へSSH接続などを行えるようになると思います

万が一設定に失敗してOSを破壊してしまった場合は
一旦telnet接続でQEMUコンソールに入り仮想マシンを落とす処理を行った後
run_main_installを実行すれば、再インストールできます


サーバ構築メモ#1(LDAP編)(2009年09月05日)

ubuntuで簡単なサーバ構築をする際のメモ

OpenLDAPをaptで取ってくる。
$sudo apt-get install slapd
$sudo apt-get install ldap-utils
色々聞かれるので適切に設定。

OpenLDAPを起動する。
$sudo /etc/init.d/slapd start

LDAPAdmin等で【cn=admin,cn=config】アカウントを使用して【cn=config】にアクセスし、
dc=hoge,dc=netにcn=admin,cn=configでアクセスできるよう権限を与える。
(アクセスコントロールはolcDatabase={1}hdbのolcAccessを参照)

MasterDNを作成する。
[Master.ldif]
dn: dc=hoge,dc=net
dc: hoge
ou: hoge
objectClass: dcObject
objectClass: organizationalUnit

dn: cn=Master,dc=hoge,dc=net
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: Master
description: LDAP administrator
userPassword: {crypt}〜

dn: cn=Auth,dc=hoge,dc=net
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: Auth
description: LDAP Authentication
userPassword: {crypt}〜

作ったMasterDNを登録
$sudo ldapadd -x -D "cn=admin,cn=config" -w secret -f Master.ldif
このあとLDAPAdmin等で、cn=Masterとcn=Authに適切なアクセス権を与える。
(アクセスコントロールはolcDatabase={1}hdbのolcAccessを参照)

cn=Masterでログイン確認のち、ou=Peoples,ou=Groupsカテゴリを作成。
その後アカウントを作成する。

nss_ldapとpam_ldapをインストールする。
$sudo apt-get install libnss-ldap
$sudo apt-get install libpam-ldap
どちらも色々聞かれるので適切に設定を行う。

まだ設定が足りないので/etc/ldap.confを書き換える。
$sudo vi /etc/ldap.conf

nsswitch.confを書き換える。
$sudo vi /etc/nsswitch.conf
passwd: compat ldap
group: compat ldap
shadow: compat ldap
失敗するとログイン不能になるので慎重に行うこと。
もしログインできなくなったらシングルユーザーモードでやり直す。

これでLDAP認証できるようになります。


過去の雑記は「忘れられた足跡」へ