投稿

1月, 2012の投稿を表示しています

BusyBox HTTPD で Drupal 7.10 を使う

イメージ
昨日、BusyBox で Drupal6 の作動方法を紹介しましたが今日は Drupal7 についても少し触れます。尚、ソースを2箇所修正しますので 6.x がサポートされてる間はそちらを利用する事をお勧めします。 Drupal7はindex.phpを隠す処理が施されているため、そのままではBusyBoxではフォームの変数を渡せません。 またoverlayモジュールを切ろうにもsaveボタンを押した後にurlを書き換えられているため設定が反映されない不具合が生じます。そこでindex.phpを常にurlに含むよう "includes/common.inc" を書き換えます。 includes/common.inc 2181行目 --- includes/common.inc.orig 2012-01-25 22:06:54.000000000 +0900 +++ includes/common.inc 2012-01-25 13:54:15.000000000 +0900 @@ -2178,7 +2178,7 @@ } $query = $query ? ('?' . drupal_http_build_query($query)) : ''; $script = isset($options['script']) ? $options['script'] : ''; - return $base . $script . $query . $options['fragment']; + return $base . 'index.php' . $script . $query . $options['fragment']; } } これで index.php がurlに含まれるようになりました。しかしまだ各リンクのurlは "/?=" になったままです。 それを修正するため "modules/overlay/overlay-parent.js" を書き換えます。 modules/overlay/overlay-parent.js 831行目 --- modul

BusyBox HTTPD で Drupal を動かそう

イメージ
公開しないサーバーでローカルでウェブアプリケーション等を利用したい場合、Apacheのように大規模なサーバーソフトは必要なく小規模な物が欲しい。 そこで小さいウェブサーバーとしてNginx,Lighttpd,Chrokeeが候補に上がりますがBusyBoxも利用価値は高いです。デスクトップ用のネットワークアドレスはDMZの外に置くなど外部から80ポートにアクセス出来ないよう工夫しておきましょう。 まずBusyBoxのhttpdアプレットを有効にしてビルドします。 PHPのCGIを有効にしてビルドします。 MySQL, PostgreSQL, SQLiteのいずれかのデータベースをインストールします php.iniを編集します。 cgi.force.redirect=0 cgi.redirect_status_env = "yes"; これでBusyBoxのHTTPDでPHPを動かす環境が出来上がりました。 busybox httpd -h /srv/www/htdocs とやればサーバーが起動します。デフォルトでは/etc/httpd.confを使います。もっと便利に、そしてシステムと分ける為シンボリックリンクを貼りブートスクリプトを書きます。 busyboxバイナリのインストール先: /bin/busybox httpd 関連の置き場所: /usr/local ドキュメントルート: /srv/www/htdocs # mkdir -p /usr/local/etc/init.d # ln -s ../usr/local/etc /etc/local # mkdir -p /usr/local/sbin # ln -s ../../../bin/busybox /usr/local/sbin/httpd これで下準備が整いました。次にブートスクリプトを書きます。書式はディストリによって違いますのでここではGentooで使用するopenrcのブートスクリプトを紹介します。 ※ Gentooではopenrcを利用しています。openrcをインストールしていないGentooシステムでも書式が違ってくると思います。 # cat > /etc/local/init.d/httpd <<&q

Gentoo: GNOME3 Upgrade Failed

GNOME3にアップグレード時にat-spiのブロックが消せない [blocks B ] <gnome-extra/at-spi-1.32.0-r1 ("<gnome-extra/at-spi-1.32.0-r1" is blocking app-accessibility/at-spi2-atk-2.2.2, dev-python/pyatspi-2.2.1) at-spi-1.32.0-r1はgdmが呼び出してるようでgdmのebuildを見ると以下のようなコメントがあった。 # XXX: These deps are from session and desktop files in data/ directory # at-spi:1 is needed for at-spi-registryd (spawned by simple-chooser) # fprintd is used via dbus by gdm-fingerprint-extension とりあえず USE="-accessibility" emerge -uDNav gnome として後でUSE="accesibility" emerge -uDNav world しようと試みたがやっぱり消せない。 なのでGDMだけ-accessibilityにしてemerge worldした。 /etc/portage/package.useに gnome-base/gdm -accessibility app-accessibility/dasher -accessibility として # emerge -uDNav world && revdep-rebuild

Alpine LinuxのAPKBUILDに挑戦

BuildRootでBusyBox+uClibcのシステム構築にトライしていたところ、Alpine LinuxというBusyBoxとuClibcを利用したディストリビューションに出会った。これがなかなか面白い。パッケージ管理はapkというもので $ sudo apk add hogehoge という具合にpkg_addのような使い方をする。ところがパッケージの作成にはGentooのebuildをベースにしたようなabuildというのがあり、この組み合わせが非常に面白い。Gentooに慣れてるせいでdevelやdocなどと分割パッケージするのが億劫なのだがこの際頑張って日本語環境でも整えてやろうかと思った次第。基本的にebuildに似てるんだけどAlpineの標準シェルはbusybox ashなのでbash構文が使えない。abuildの関数も少なくコンソールで打つコマンドをベタ書きすればいいようで覚える事が少ないというデメリットなのかメリットなのか戸惑う状況でもある(笑) 何から手をつけていいのか解らないのでひとまずibus-mozcを入れてみようと思いibusから手をつけてみた。Gentooでいうhogehoge-0.0.1.ebuildにあたるファイルは全てAPKBUILDという同名ファイルに記述する。 http://wiki.alpinelinux.org/wiki/Creating_an_Alpine_package チュートリアルを読みながら進めていくとカレントディレクトリに hogehoge-0.0.1-r0.apk hogehoge-dev-0.0.1-r0.apk hogehoge-doc-0.0.1-r0.apk という3つのファイルが出来ていた。さてどこまで出来る事やら。Alpine Linuxは凄くよく出来たディストリだけどやはりBuildRootでシステム全体を自分好みにビルドしたい。i686で最適化しaportsを持ってきてパッケージ管理が出来れば素晴らしい。と思ったけどRPMも捨てがたい。迷うなぁ。

Qemu でイメージの縮小に悩む

$ qemu-img resize images.qcow -1024M これだとエラーになる。 ぐぐるとコレにヒット http://lists.gnu.org/archive/html/qemu-devel/2011-04/msg02551.html $ qemu-img resize images.qcow -- -1024M これでOK!

busybox-1.19.3-r1でsshログインしたらエラーが出る: Fix

exec prefer applets を disable する。 Busybox Settings ---> General Configuration ---> [ ] exec prefer applets CONFIG_FEATURE_PREFER_APPLETS: This is an experimental option which directs applets about to call 'exec' to try and find an applicable busybox applet before searching the PATH. This is typically done by exec'ing /proc/self/exe. This may affect shell, find -exec, xargs and similar applets. They will use applets even if /bin/<applet> -> busybox link is missing (or is not a link to busybox). However, this causes problems in chroot jails without mounted /proc and with ps/top (command name can be shown as 'exe' for applets started this way). Experimentalを不用意にenableしたのがまずかった。 [ ] Standalone shell をdisableするだけでもいけそうだが、気分的に元から絶ったほうがスッキリする。ちなみに上記に加え [ ] Run 'nofork' applets directly もdisableされる。

busybox-1.19.3-r1でsshログインしたらエラーが出る

/bin/busyboxにsuidをセット ローカルログインではエラー無し $ grep ^LDFLAGS /etc/make.conf LDFLAGS="-Wl,--hash-style=both,-Wl -O1,--as-needed" $ sudo emerge -1av sys-apps/busybox $ sudo chmod u+s /bin/busybox $ sudo chmod 600 /etc/busybox.conf $ sudo cat /etc/busybox.conf [SUID] su = ssx root.0 ls = --- ログインシェルをbusybox ashに変更 $ sudo ln -sv busybox /bin/ash $ chsh -s /bin/ash USEフラグ sys-apps/busybox savedconfig sys-libs/glibc gd nls -glibc-omitfp 他のマシンからGentooマシンにログイン $ ssh gentoobox Error Messages *** glibc detected *** -ash: free(): invalid pointer: 0x0972f0d4 *** ======= Backtrace: ========= /lib/libc.so.6(+0x6e781)[0xb75f7781] /lib/libc.so.6(+0x700b3)[0xb75f90b3] /lib/libc.so.6(cfree+0x6d)[0xb75fc23d] -ash[0x804f9b3] -ash[0x804fa0e] -ash[0x804f001] -ash[0x809ffaf] -ash[0x80a4e99] -ash[0x80aa825] -ash[0x80a6c78] -ash[0x80a725e] -ash[0x80a751b] -ash[0x80aa45d] -ash[0x80a6c78] -ash[0x80a6c78] -ash[0x80a6c78] -ash[0x80a982d] -ash[0x80aa993] -ash[0x80a0f8d] -ash[0x80aa728] -ash[0x80a6c7