Dokuwikiでmakrdownで画像挿入するとDokuwikiが台無しになる

下記のURLで書いたことと同じ内容です.
簡単に言うと,DokuwkiをMarkで対応させて画像挿入するとめんどい.
http://k32ru.hatenablog.com/entries/2012/12/04

現在はPuwikiでwikiの文書を書いている.が,メンテされてないので他のmakrdownで書けるwikiへの移行を検討している.
dokuwikiも検討したことがあったが,一番良く使うであろう見出しレベル1が=====見出しレベル1=====となっているのが非常にめんどくさいと感じた.
その点,makrdownは見出しレベル1ならば,#見出しレベル1と書けるので非常に書きやすいと感じた.
また,Puwiki記法とも似ているので新規に学習するコストも低いだろうと感じた.

移行するwikiへ求める機能としては以下のような感じ.上から順に優先は高い.

そんな感じでWikiMatrix - Compare them all http://www.wikimatrix.org/ というサイトを知り色々と検討してみた.
パッと来るものが無かったがdokuwikiがPluginでmarkdownに対応しているとのことなので試してみた.

参考にしたのは以下のURL
DokuWikiの設置と設定、Markdownを愛す。 ::ハブろぐ http://havelog.ayumusato.com/computer/software/e151-dokuwiki-install.html
makrdownに対応させるために以下のプラグインを導入
https://www.dokuwiki.org/plugin:markdownextra

以下のような感じで書ける.

#見出しレベル1
##見出しレベル2
###見出しレベル3
####見出しレベル4
#####見出しレベル5

  1. リストアイテム1
  2. リストアイテム2
  3. リストアイテム3

見出しも勝手に生成してくれるようだ.
(参考URLでは別のプラグインを入れていたが,今回は入れなかった)

ただ,一つ問題があって,画像を入れるのが複雑だと感じた.
dokuwikiには標準で素晴らしいメディアマネージャーが着いており
今までアップロードした画像が一括で管理できるようになっている.
メディアマネージャーを使って画像をアップロードして画像を挿入すると以下のような感じになる.
hoge.jpgが画像ファイル名で,300が画像サイズである.
{{ :hoge.jpg?300 |}}

当然,makrdownの内部に書かれている場合には以下のようになる.

{{ :hoge.jpg?300 |}}

もちろん,この画像の書き方はmakrdownではないために画像は表示されない.
なので,dokuwikiの書き方にするなばら以下のように一度markdownを終わらせなくては行けない.

画像は以下のようになる.

{{ :hoge.jpg?300 |}}

つぎに,(ry

はっきし言ってだるい.めんどい.
そこでmarkdown記法で画像を埋め込むことにしよう.
その場合には画像へのリンクを絶対パスなり相対パスなりで書かなくはいけない.

![hoge](lib/exe/fetch.php?media=hoge.jpg? "hoge")

これまた,相対パスを画像ごとに書かなくはいけないため
dokuwikiの持っている素晴らしいメディアマネージャーが台無しだ.

そんなわけでamrkdownで書くと画像を挿入するがめんどいという問題があり
もう一度他のwikiを検討すべきなのか迷っている.

dokuwikiでやるのであれば,メディアマネージャーで画像を挿入する場合に
自動でmakrdownの終わりと開始タグを入れるように改造するしか無いのではないかと思う.

ESXi 5.0->5.1

5.0->5.1 アップグレード

大体参考URLのまんま

  1. SSHを使えるようにする
  2. https://my.vmware.com/group/vmware/details?downloadGroup=VCL-VSP510-ESXI-510-EN&productId=285 からVMware-ESXi-5.1.0-799733-depot.zip をDL
  3. ローカルドライブに保存しているVMware-ESXi-5.1.0-799733-depot.zip をvSphere Clinetを使って、ホスト上(ESXi)上にコピー
  4. 仮想マシンのシャットダウン
  5. 適用させる

以下適用方法。datastore1というのは人によって違う。

 esxcli software profile install -d /vmfs/volumes/datastore1/VMware-ESXi-5.1.0-799733-depot.zip -p ESXi-5.1.0-799733-standard

置いた .zipへのフルパスであれば以下のようなものでもおK

 esxcli software profile install -d /vmfs/volumes/4e9360ae-0f2bbd5e-7c5d-f46d04d42045/esxi_update/VMware-ESXi-5.1.0-799733-depot.zip -p ESXi-5.1.0-799733-standard

後は成功すれば再起動を促されるのでESXiを再起動させる。
In case you want to revert back, just press Shift+R at the boot loader screen…
Insta

適用前
esxi.localhsot VMware ESXi,5.0.0,469512
適用後
esxi.localhsot VMware ESXi,5.1.0,799733

参考URL [#q0a86b3e]

ESXi Free - how to upgrade to ESXi 5.1 - ESX Virtualization - ESX Virtualization
いつか、そのとき、あの場所で。 | [VMware][備忘録] vSphere Hypervisor (ESXi) 5.1へアップデートを試してみた。[成功] http://kometchtech.blog45.fc2.com/blog-entry-1023.html

その他

パッチがDLできる、
Download

テスト

あとは実際に入って、入れればOK

CENTOS /home/k32ru% ssh ldapuser@127.0.0.1
ldapuser@127.0.0.1's password: (ldapuserと入力)
Last login: Sun Nov 11 00:56:21 2012 from centos.localhost
Could not chdir to home directory /home/ldapuser: No such file or directory
id: cannot find name for group ID 1000
-bash-3.2$ id
uid=1000(ldapuser) gid=1000 所属グループ=1000
-bash-3.2$

設定

/var/logにログを吐くようにする。

-は削除行、+は追加行です。
 vi /etc/syslog.conf
 -*.info;mail.none;authpriv.none;cron.none               /var/log/messages
 +*.info;mail.none;authpriv.none;cron.none;local4.none           /var/log/messages
 +local4.*                                               -/var/log/slapd.log
vi /etc/logrotate.d/syslog syslog
 -/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron {
 +/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron    /var/log/slapd.log{

syslogの再起動

service syslog restart

slapd.conf

mv /etc/openldap/slapd.conf /etc/openldap/slapd.conf.orig
chgrp ldap /etc/openldap/slapd.conf
chmod g+r /etc/openldap/slapd.conf
vi /etc/openldap/slapd.conf
(設定は後ほど)
chkconfig ldap on
 service ldap start

以下のようにログが吐けてればよい。

CENTOS /etc/openldap# tail /var/log/slapd.log
Nov 10 12:31:06 centos slapd[3763]: slapd starting
vi /etc/openldap/ldap.conf
URI     ldap://127.0.0.1/
BASE    dc=my-company,dc=com

以下は第1回 まずは使ってみよう:そろそろLDAPにしてみないか?|gihyo.jp … 技術評論社の設定パラメータをそのまま利用しています。

vi  /etc/openldap/slapd.conf
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args
database bdb
suffix "dc=example,dc=com"
rootdn "cn=Manager,dc=example,dc=com"
rootpw secret
directory /var/lib/ldap
/etc/init.d/ldap restart
もしくは
service ldap restart

passwd.ldifの作成

cd ~/
vi passwd.ldif
dn: dc=example,dc=com
objectClass: dcObject
objectClass: organization
dc: example
o: example

dn: ou=People,dc=example,dc=com
objectClass: organizationalUnit
ou: People

dn: uid=ldapuser,ou=People,dc=example,dc=com
objectClass: account
objectClass: posixAccount
uid: ldapuser
cn: ldapuser
userPassword: ldapuser
loginShell: /bin/bash
uidNumber: 1000
gidNumber: 1000
homeDirectory: /home/ldapuser

passwd.ldifを追加

ldapadd -x -D "cn=Manager,dc=example,dc=com" -w secret -f passwd.ldif

以下のように出れば良い。以前はここでldap_bind: Invalid credentials (49) というエラーが出た。

ENTOS /root# ldapadd -x -D "cn=Manager,dc=example,dc=com" -w secret -f passwd.ldif
adding new entry "dc=example,dc=com"

adding new entry "ou=People,dc=example,dc=com"

adding new entry "uid=ldapuser,ou=People,dc=example,dc=com"

LDAP認証の有効化

後はLDAP認証と使えるように設定する.
authconfigについては以下のURLを参考にした。
05_authconfigコマンドによるOSの認証設定 - あっくんの作業ログ

authconfig-tui
項目をTabで移動して「LDAP認証を使用する」と「LDAPを使用」にチェック入れる。

lqqqqqqqqqqqqqqqqqqqu 認証の設定 tqqqqqqqqqqqqqqqqqqqqk
x                                                     x
x  ユーザー情報         認証                          x
x  [ ] キャッシュ情報   [*] MD5 パスワードを使用      x
x  [ ] Hesiod を使用    [*] シャドウパスワードを使用  x
x  [*] LDAP を使用      [*] LDAP 認証を使用           x
x  [ ] NIS を使用       [ ] Kerberos 5 を使用         x
x  [ ] Winbind を使用   [ ] SMB 認証を使用            x
x                       [ ] Winbind 認証を使用        x
x                       [ ] ローカル認証は十分です    x
x                                                     x
x         lqqqqqqqqqqk                lqqqqk          x
x         x 取り消し x                x 次 x          x
x         mqqqqqqqqqqj                mqqqqj          x
x                                                     x
x                                                     x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj

LDAPを使用するにチェック入れると以下の画面になる。
特にいぢる必要無いのでそのまま「OK」を選択。

lqqqqqqqqqqqqqqqqqqqqu LDAP 設定 tqqqqqqqqqqqqqqqqqqqqk
x                                                     x
x            [ ] TLS を使用                           x
x  サーバー: ldap://127.0.0.1/_______________________ x
x ベース DN: dc=example,dc=com__________________________ x
x                                                     x
x          lqqqqqqk                  lqqqqk           x
x          x 戻る x                  x OK x           x
x          mqqqqqqj                  mqqqqj           x
x                                                     x
x                                                     x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj

一応設定確認しておく

 LANG=en_US.UTF-8 authconfig --test
(略)
pam_ldap is enabled

 LDAP+TLS is disabled
 LDAP server = "ldap://127.0.0.1/"
 LDAP base DN = "dc=example,dc=com"
(略)

とかなっていればOk

OpenLDAP

第1回 まずは使ってみよう:そろそろLDAPにしてみないか?|gihyo.jp … 技術評論社を参考にLDAPを動かした時のメモです。私が最初に上記URLの通りに設定した時はldap_bind: Invalid credentials (49) というエラーが出てうまく行きませんでした。そこで、Amazon.co.jp: プロのための Linuxシステム・ネットワーク管理技術 (Software Design plus): 中井 悦司: 本OpenLDAP部分(P180付近)の設定を行った後に最初に上げたページを実行したうまく行きました。正直何が良かったのかさっぱり掴めてないのですが本を参考にした時の設定を公開します。殆どコマンドしか書いてないのでLDAPの技術詳細については上記URLや本を参考にしてください。

 FreeBSD勉強会 第11回 FreeBSDハイパーバイザ「BHyVe」の仕組み・使い方紹介

話は全体的に仮想化技術についてでした。最後の方でBHyVeについて話していました。

完全仮想化 VirtualBOX

実ハードウエアを完全にエミュレートし、既存のOSをそのまま仮想マシン上で動作させる。OSに一切手を加えない。高速化のためにCPUの部分はエミュレートしない。CPUにはユーザモードとカーネルモードがある。アプリケーションが破壊しそうな行動がきたらハンドルしてエラーを返す。権限の分離を行なっている。ユーザモードで仮想化のマシンを動かす。システム全体に影響を与えるのはユーザモードではできない。なので、できないのをトラップで検知して特権処理に合わせてエミュレートを行う。特権命令ではないセンシティブ命令がある。

昔の手法

バイナリトランスレーション

ゲストのプログラムを実行中に書き換え。実行されるとまずい命令を置き換える。システム影響を与えないで実行できるようにする。VMwareが主にやっている。ハードウエア仮想化支援ができる前にはこれが行われていた。

ハードウエア仮想化による仮想化(IntelVT,AMD-V)

Intelだとリングだと呼ばれている。ハードウエアに仮想化用のモードが用意されている。ハードウエア的にトラップできるようになっている。仮想化のオーバヘッドがなくなると共に、ハイパーバイザーの実装が簡単になった。

仮想化のソフトウエアの種類

Virtual Box

FreeBSDでBHyVe以外で動く唯一のハードウエア仮想化対応のハイパーバイザー。あまりサーバ用途ではなく、デスク通っップ用途。特徴として多くのホストOSで動く。

Xen(HVM)ゼン
  • ハードウエア上で直接Xenハイパーバイザが動作する。
  • 準仮想化された管理OSを用いる必要がある。FreeBSDは対応してない。(dom0が動けない)LinuxtとかNetBSDが動く。サーバ用途が中心。
  • HVMはそのままWindowsが動く。
LinuxKVM

BHyVe

準仮想化

Xen(PVM)

P実ハードウエアを完全にエミュレートするのではなく、仮想化に都合が良い構造にゲストOSを改変。センティブ命令はソースコードレベルであらかじめ書き換えられている。バイナリトランスレーションなどのように実行中に書き換えてない。そのため、バイナリトランスレーションよりもいくつかのベンチマークでは性能が高く評価される。オーバヘッドが低い。OSを書き換えてしまえという発想から生まれた。

完全仮想化に用いられている実ハードウエアと仮想化ディバイスをエミュレートするのは必ずしも良いわけでは無い。なぜならば、ゲストとハイパーバイザ間のモード切り替えの回数が無駄に多いためメモリコピーが発生して必ずしも性能が高くない。

準仮想化ではゲストとハイパーバイザのやりとりに最適化されているため既存のディバイスよりもオーバヘッドが少ない。NICとHDDのがKVMでは導入されている。BHyVeでも実装されている。ソースまるごとではなく公開されている資料を作られている。

Jail

コンテナ型仮想化

  • 一つのOS上に擬似的に複数のOS環境を作り、OSの各種リソース情報をコンテナごとに別々に管理することにより、プロセスごとにして別のOSで有るかのように見せる。
  • 複数のバージョンのOSを仮想化には向いてない
  • ホストがカーネルパニックになるとダメ

あるプロセスに対して、あるディレクトリをルートディレクトリに見せる。上位ディレクトリが見えないような挙動を行う。

  • Jail

chrootに加えて、プロセス空間も独立

  • Jail+VIMAGE

ネットワーックスタックも独立
netstat -nrを実行してもJailの外側のルーティングテーブルは見えない。

準仮想化原理的にはオーバヘッドが少ないが、できることが少ない。

BHyVeの詳細

  • Linux KVMのようなもの
  • FreeBSD10へのマージを目指して開発中。
  • Intel-VT-x EPT対応のCPUで動作Nehalem以降のCPU
  • http://ark.intel.com/にCPUのリストがあり。対応しているからしてないかがわかる。dmesgはEPTではわからない。
  • NetAPの二人が頑張って開発している。
  • 今はKVMのような機能が揃っているわけではない。
  • FrreeBSD8.1-10 amd64は無改造で動く
  • FreeBSD7.22-10/amd64は要改造
  • amd64のみ32bitは対象外
  • 最初はFreeBSD8ベースで開発していた。8と9と10ではうごくのではないか。
  • 現在はFreeBSDのみ動く。
  • Linuxも動くらしいがコードは出してない。(ぼそっとRedhatが動いたみたいな事を行っていた時があった。)
  • 仮想コンソールはビデオというより文字が表示できるのみ。でもなぜか、CPIパススルーはできている。
  • SMP対応(最大8コア)
  • HDDとNICとはバートIO
設定方法

CFT: Hands-on BHyVe http://callfortesting.org/bhyve/

  • VMware上でBHyVeを動かせる
  • デモではVMwareFusionで動かしていた。
  • ホスト側での設定
  • Pysicalmen で使うメモリ量を指定する。これをしてしないとメモリが無いと言われる。
  • vmm.koをロードする必要がある
  • #/root/bhyve-guest
  • Bhyveload-m 128 -h . mygest
  • BIOSが無いのメモリをかくほしてやる
  • Destoryしないとメモリを確保されたままになる。
  • Hw.physmem
  • VMごとにディバイスファイルができる、中には状態が入る。/dev/vmm/$VMNAME ができる。
  • BIOSが無いのでディスクイメージのブートセクタから起動できないで変わりんbhyveloadによりメモリの構造体を作る。
  • コンソールが遅いだけ。ネットからSSHでつなげれれば速い
  • PCIはビデオ周りはだめ。NIC周りはいける。IOAPICエミュレートを持たないためレガシ割り込みは非サポート。MSIのみMSIーXはダメ、MSI割り込みをするとわかっているもの飲み使える。
  • Virtioの仕様にそったネットとbloc(HDD)をサポート

仕様の書いてあるPDFは以下の通り
http://ozlabs.org/~rusty/virtio-spec/virtio-paper.pdf

ゲストカーネルの変更点
  • 変更している点は実装してない部分
  • カスタムコンソールとデバッグポート
  • com0 emulation or VGA emulationが必要
  • コンソール出力がOSに無いものを利用しているため
  • 設定しないと何も出ない。
  • Local API はMSR経由でアクセス(MMIO非サポートのため)
  • Local APIC MMIO supportが必要、
  • memory mapd IOが無い状態。
  • SMPの場合2個めからどうするか?
  • 2つめ以降のquick hackが必要。
実装中の機能
  • BIOS 7割、8割はできている。が10割できないと使えない。起動してFreeBSDのロゴは見えるようにはなっている。
  • Guest suspend /resume これがライブグレーションができるようになる。動いているマシンを移動できるようになる。

MMIO local APIC できたと言っているがソースは見てない

  • IOAPIC emulation できた。レガシー割り込みができるようになったらしい。現在はMSI割り込みのみ
  • AMD-V support 命令とかゲストマシンの情報の持ち方が違う、AMD用のコードは書かないといけない。

やろうと思っているが手はつけてない。

  • Older Intel CUP supprt(witout EPT)Core2tDuoとかうわっどで動かすようにしたいが、優先度は高くない。
  • libvirt対応
  • これがあると、情報が取れるようになる。
  • ブートローダ
  • ゲスト側を改造しなくてすむ。
  • NetBSDからだと楽なのでは
  • Q10ではどれくらいでうごくのをマージされるの?
  • AゲストとしてFreeBSDで、手を加えないでうごけばいいなレベルにする予定。
  • FreeBSDはベースとportsにわかれており、ベースに全部入れようとしているが、LInuxのboot loader はporsでいいのではないかと思っている。
  • Q複数立ち上げる場合には
  • A/dev/vmm/$vmname ごとにつくってそれを立ち上げる。他のプロセスと同じ。
  • QEMUにたよるとBIOSとか支援されて楽になる。が、ソースを読んでいて残念になるのと、GPL汚染があるので全部自前でやる。
次回

次回は佐藤先生がやる予定
FDTが導入されたよ!的な組み込み系の話になるみたい。
日時は11月2日