Home > Archives > 2005年04月

2005年04月

DHCP on Cygwin

coLinux に対して DHCP でIPを割り振りたい.ホストPCがネットワークにつながっていなくても.

ということで,簡単な解決法はネットワークの共有を使ってひとつのインターフェースを 192.168.0.1 に固定し,その上で Windows の DHCP が立ち上がるようにすればいい.この場合,接続が切れていようが問題ない.しかし,この方法は少々使いにくいので,自前でDHCPを動かしてみることにした.

で,Cygwin にDHCPがあるだろうと思ってたら無かったわけで,自分でコンパイルしてやらないとならない.とりあえず,cygwin でコンパイルするためのパッチをここらへん(dhcp-3.0.1rc11-cygwin.patch)から落としてきて,本体を ISC (dhcp-3.0.2.tar.gz)から落としてくる(バージョンが違うが気にしない).落としたら解凍してパッチ当ててコンパイルしてインストール.(パッチのときに行が合わないと文句が出るが無視)

tar xfvz dhcp-3.0.2.tar.gz
cd dhcp-3.0.2
/bin/patch -p1 < ../dhcp-3.0.1rc11-cygwin.patch
./configure
make
make install

で,設定ファイル(/etc/dhcpd.conf)を適当に書いてやる.下のは 192.168.1.250 のインターフェースに対して DHCP を立ち上げている.

local-address 192.168.1.250; # This limits dhcpd to listening to this interface
max-lease-time 180;
default-lease-time 180;
ddns-update-style none;
option routers 192.168.1.250;
subnet 192.168.1.0 netmask 255.255.255.0 {
   authoritative;
   range 192.168.1.100 192.168.1.200;
   log(debug, "debug 192 DHCPD-logging");
   log(debug, binary-to-ascii(10,8, ".", packet(24,4)));
}

実行は

dhcpd -d eth1

とかやれば動くのだが...  少々問題が.とりあえず,DHCPを動かすインターフェースにケーブルが接続されていないと起動できない.そのため,coLinux の立ち上げ直後にしか dhcpを立ち上げるタイミングが無い.

さーてどうしようかなあ?

OOo2.0Beta の Impress

輪講のスライド作成に OOo2.0Beta を使ってみた.

Impress のUI がPowerPoint に近いものに変わっており,スライド作るのが楽になった気がする.でも,まだBetaバージョンだからなのかスライドの選択ができなくなったりしてしばしば再起動.あと,PDFに出力したら画面の切り替え時に変なエフェクトがかかるようになっているのはよろしくないなぁと.

なにはともあれ,速く正式バージョンが出てほしいなぁ.

XPのネットワーク共有をブリッジ接続したcoLinunxesで使う

TAPのアダプタを複数作ってブリッジ接続して仮想的に複数台のcoLinuxesを接続できていたのだが,これまではそのブリッジにさらに外部に出られるインターフェースを追加してcoLinuxesが外部に出放題な状況だった.このままでも別に問題ないといえば無いのだが,この場合はcoLinuxがDHCPでリアルのネットワークにIPを取得しに行くため,自宅にいるか研究室にいるかで取得IPが違うのが面倒だった.ということで,NATで coLinuxes のネットワークを完全に外部から隔離してみた.

やったのは単純にTAPを全てブリッジ接続して,リアルのネットワークにつながるインターフェースをその「ネットワーク ブリッジ」に対して共有かけただけ.これでcoLinuxesはXPの提供するDHCPからIPを取るようになり,どこへ持っていっても同じIPでよろしい感じ.ただ,ネットの接続を共有した場合,共有を受ける側のインターフェースが 192.168.0.1 になり,DHCPも 192.168.0.xxx を割り振ることになるのでこれが少々めんどうかも.というのも,自宅のLANはもろに 192.168.0.xxx で組んであったので IP が衝突しまくりで設定変更を余儀なくされたから.共有を受ける側のIPが 192.168.yyy.xxx のように下二つを指定できるようになってると非常に使いやすいんだけどなぁ.なんで固定なのかが非常になぞだ...

Windows 互換シェル

面白そうなので Windows の Explorer の代わりになる互換シェルを調べてみた.どうやら昔試したときより数が増えてる模様.

Geoshell(日本語サイト)

BB4Win

xoblite

BBLean

LiteStep(日本語サイト)

litestep は昔に使った記憶があるので今回はやめるとして,とりあえずどれを試そうか? モジュールとか組み込んでいろいろできるらしいので楽しみだ.

coLinux + CygwinX

Cygwin の X サーバで XDMCP の接続が使えることに気づいたので試してみる.

起動はCygwin の startxdmcp.bat で REMOTE_HOST を coLinux の IP に変更して実行するだけ(coLinux 側で xdm/gdm の設定が必要だけど.その設定自体は VNC の場合も同じ).バッチファイルのコメントを消したのは以下となる(フルスクリーン,クリップボードあり).

SET DISPLAY=127.0.0.1:0.0
SET REMOTE_HOST=192.168.0.104
SET CYGWIN_ROOT=c:\cygwin
SET PATH=.;%CYGWIN_ROOT%\bin;%CYGWIN_ROOT%\usr\X11R6\bin;%PATH%
SET XAPPLRESDIR=/usr/X11R6/lib/X11/app-defaults
SET XCMSDB=/usr/X11R6/lib/X11/Xcms.txt
SET XKEYSYMDB=/usr/X11R6/lib/X11/XKeysymDB
SET XNLSPATH=/usr/X11R6/lib/X11/locale
if not exist %CYGWIN_ROOT%\tmp\.X11-unix\X0 goto CLEANUP-FINISH
attrib -s %CYGWIN_ROOT%\tmp\.X11-unix\X0
del %CYGWIN_ROOT%\tmp\.X11-unix\X0
:CLEANUP-FINISH
if exist %CYGWIN_ROOT%\tmp\.X11-unix rmdir %CYGWIN_ROOT%\tmp\.X11-unix
run XWin -query %REMOTE_HOST% -nodecoration -lesspointer -fp tcp/%REMOTE_HOST%:7100 -clipboard

ただ,このバッチファイルは coLinux でDHCPを使ってると IP がかかわる度に編集しなきゃならんのでめんどい.

GUI の起動用のランチャでも作ろうかなぁ?

ところで, gdm で Disconnect しても Cygwin-X が再起動するのをとめるにはどうしたらいいのだらう?

GDMでローカルサーバ立ち上げない+α

coLinux で gdm を使うときにはローカルのXサーバを勝手に立ち上げてほしくない.でも,それをやるには --no-console のオプションを渡さなければならない.

ということで,/usr/X11R6/bin/gdm-nc というファイルを作って,中身を

#!/bin/bash
/usr/bin/gdm --no-console

としておいて,/etc/rc.conf 内の DisplayManagerの起動コマンドをこれに変えてしまう.

DISPLAYMANAGER="gdm-nc"

これでローカルにXサーバが起動しなくなる.めでたし.

ついでに,kinput2 を起動させるために ~/.xprofile で

export XMODIFIERS="@im=kinput2"
kinput2 &

としておくか.(ふつうはどこで設定するのだらう?)

CapsLock さようなら

いい加減 CapsLock がうざくなってきたので過去やっていたように Ctrl に変身してもらう事にした.

設定はレジストリエディタでマッピングをかえればよく,変える値は HKEY_LOCAL_MACHINE -> SYSTEM -> CurrentControlSet -> Control -> Keyboard Layout -> Scancode Map である.最初はエントリが無いのでバイナリ値のエントリを作る必要があるはず.

で,その中身はこんなんで.最初の8バイトがヘッダ,次にエントリ数,続いてマッピングのエントリとなる.エントリの最後には終端記号として 0 が必要らしい.

  00 00 00 00   ; header version
  00 00 00 00   ; header flags
  02 00 00 00   ; header エントリ数(including Terminate)
  1d 00 3a 00   ; エントリ: CapsLock -> 左Ctrl
  00 00 00 00   ; Terminalte

ちなみに,リトルエンディアンなのでキーマップのエントリは始め2バイトが変更先で後ろ2バイトが変更元.詳しくは Scan Code Mapper for Windows で.それぞれのキーのスキャンコードは以下のとおりらしい.ここから一覧が取れる.(Scan Code Set 1のほう)

    Backspace       00 0E
    Tab             00 0F
    CapsLock        00 3A
    Enter           00 1C
    Left Shift      00 2A
    Right Shift     00 36
    Left Ctrl       00 1D
    Left Alt        00 38
    Space Bar       00 39
    Right Alt       E0 38
    Right Ctrl      E0 1D
    NumLock         00 45
    Esc             00 01
    F1~F10         00 3B ~ 00 44
    F11             00 57
    F12             00 58
    Scroll Lock     00 46
    Left Win key    E0 5B
    Right Win key   E0 5C
    Application Key E0 5D
    Insert          E0 52
    Delete          E0 53
    Left Arrow      E0 4B
    Home            E0 47
    End             E0 4F
    Up Arrow        E0 48
    Down Arrow      E0 50
    Page Up         E0 49
    Page Down       E0 51
    Right Arrow     E0 4D
    DBE_KATAKANA    00 70   (カタカナ ひらがな)
    DBE_SBCSCHAR    00 77   (???)
    CONVERT         00 79   (変換)
    NONCONVERT      00 7B   (無変換)

これでWindowsキーの無いIBMマシンでもエクスプローラが楽に立ち上げられるぞ.

VNCで合わせ鏡

誰でも考えるであろうことをふと思いつき,実際にやってみた.

何をやったかというと,Windows の VNC Client から coLinux につないで X (Xvnc) を立ち上げ,そのなかから Windows 側で立ち上げた VNC Server に VNC Client で接続するということをした.これをやると,Windows で画面描画をした際に coLinux 内の VNC Client の描画が起こり,その描画は Windows の VNC Client に伝わり Windows 側の新たな描画を生じる.あとはこのサイクルが描画イベントが画面領域の外に出るまで繰り返され,合わせ鏡と同じ現象となる.

ちなみに結果はこんなもん.(ただ単に Window が重なっているようにしか見えない...)

coLinuxes -- 複数起動

無意味に coLinux を複数起動して通信させてみた.

やり方としては TAPアダプタを複数用意してブリッジ接続してやるだけ.TAPアダプタの増やし方は,[コントロールパネル]->[ハードウェアの追加]->[新しいハードウェア デバイスの追加]->[一覧から選択]->[ネットワーク アダプタ]->[TAP-Win32 Provider(coLinux)]->[TAP-Win32 Adapter V8(coLinux)] で.追加されたら [コントロールパネル]->[ネットワーク接続] で名前を TAP1, TAP2, ... とかに変えておく.

あとは,coLinux の設定XMLファイルのほうで,

    <network index="0" name="TAP2" type="tap" />

のように name 属性を接続の名前 TAP1, TAP2, .. などに重ならないように指定するだけ.MACは自動でランダムに割り当てられるはずなので指定なし.

xfs が入ってなかった

Gentoo で xorg-x11 を GRP インストールしたら xfs が入ってなかった... しょうがないからソースから作り直す.念のため USE に font-server を追加して.

で,まあ,ちゃんとコンパイルできたわけだが,今度は /etc/X11/fs/config が空... 面倒なのでここに xfs の config を書いておく.

#
# X Font Server configuration file
# 
# allow a max of 4 clients to connect to this font server
client-limit = 4
# no tcp, use sockets!
#no-listen  =  tcp
# when a font server reaches its limit, start up a new one
clone-self = on
# alternate font servers for clients to use
#alternate-servers = foo:7101,bar:7102
# where to look for fonts
# Some of these are commented out, i.e. the TrueType and Type1
# directories in /usr/share, because they aren't forced to be
# installed alongside X.
catalogue = /usr/share/fonts/75dpi,
        /usr/share/fonts/100dpi,
        /usr/share/fonts/shinonome,
        /usr/share/fonts/monafont,
        /usr/share/fonts/mplus,
        /usr/share/fonts/aquafont,
        /usr/share/fonts/aquapfont,
        /usr/share/fonts/mikachan-font,
        /usr/share/fonts/artwiz:unscaled,
        /usr/share/fonts/misc,
        /usr/share/fonts/Type1,
        /usr/share/fonts/util,
        /usr/share/fonts/local,
        /usr/share/fonts/TTF,
        /usr/share/fonts/cyrillic
# in 12 points, decipoints
default-point-size = 120
# 100 x 100 and 75 x 75
default-resolutions = 75,75,100,100
# how to log errors
use-syslog = on
# font cache control, specified in KB
cache-hi-mark = 2048
cache-low-mark = 1433
cache-balance = 70

とりあえず,これで xfs, gdm, xinetd, vncserver を設定して coLinux + VNC の GUI 環境ができた.

ちなみに,gdm の立ち上げうサーバを Xvfb :1 とかしてディスプレイ 0 以外にしておくと native に起動したときに startx でパラメータを渡さなくていいから楽(そうでないと startx -- :1 とかしてディスプレイ番号を指定しなければならない)

Gentoo 2-Way Boot (native & coLinux)

なんとなくデュアルブート用にインストールした Gentoo を coLinux で起動してみたくなった.これができると 2-Way Boot で結構便利なので.

で,そのためには coLinux の設定XMLを書かなければならないのだが,Windows のディスクナンバーとパーティションナンバーの管理の仕方が良く分からず苦戦.diskpart コマンドの返すディスクナンバーと,同パーティションナンバーからもずれているらしい.最終的に ,hda7, hda8 が /, swap である私の PC では次のような設定になった.まあ,ext3 のパーティションは一個しかないから全パターン試して起動したのが正解であっただけだけど.

<?xml version="1.0" encoding="UTF-8"?>
<colinux>
    <block_device index="0" alias="hda7" path="\Device\Harddisk0\Partition4" enabled="true" />
    <block_device index="1" alias="hda8" path="\Device\Harddisk0\Partition5" enabled="true" />
    <bootparams>root=/dev/hda7</bootparams>
    <initrd path="initrd.gz" />
    <image path="vmlinux" />
    <memory size="256" />
    <network index="0" type="tap" />
    <block_device index="2" alias="hdc" path="\Device\Cdrom0" enabled="true" />
</colinux>

(hda2 が拡張領域で hda3,4 が存在していないので,その分を引いた数がパーティション番号になるのかな?)

とりあえず,起動時に coLinux でサポートしていない機能に関して文句を言われるが,

ログイン画面が立ち上がったので今日のところはよしとしよう.

P2P通信技術 Bittorrent を試す

Gentoo の GRP インストールのために packages CD がほしいのだけど,http/ftp ではダウンロードできず Bittorrent を利用しなければならない.ということで,Bittorrent のクライアントである BitComet をダウンロードして使ってみた.

660M の ISO イメージのダウンロードをしてみたが,平均で 470KB/s 程度とそれなりに使えるものらしい.P2P というと 某MX/NY のおかげでグレーなイメージがあるけれど,このような巨大ファイルの配布にはサーバの負荷を分散できていいなぁ.やっぱ技術(ソフト)は使い方を考えて使わないといかんね.

さて,明日にでも「昨日P2Pソフトで600Mのファイルをダウンロードしたよ」と会話を振って周りの反応を見てみよう.

Installation of coLinux with Gentoo(3)

続いて GNOME と GDM の設定をする.

とりあえず emerge する.

emerge -k gnome
emerge -k gdm

GNOMEの設定は特に無いのでGDMの設定をする.

DIsplayManager として GDM を使うように /etc/rc.conf を修正

DISPLAYMANAGER="gdm"

次いで GDM の設定ファイル /etc/X11/gdm/gdm.conf を修正.ここでは必要な部分のみを示す(Xvfb へのサーバ変更と VirtualTerminal割り当てをしないのと XDMMCPの使用).

[daemon]
StandardXServer=/usr/X11R6/bin/Xvfb
VTAllocation=false
[xdmcp]
Enable=true
[server-Standard]
command=/usr/X11R6/bin/Xvfb
[server-Terminal]
command=/usr/X11R6/bin/Xvfb -terminate
[server-Chooser]
command=/usr/X11R6/bin/Xvfb 

以上で GNOME + GDM に置き換わっているはずである.VNC で接続すれば XDM の変わりに GDM が起動する.(ちなみに,GDM をデーモンとして起動するためにはXDMの起動スクリプトを使う.なので, rc-update add xdm default を実行してあれば GDM がデーモンとして起動される.)

ところで,GNOME の起動時に xscreensaver が無いと文句を言われるが,xscreensaver の emerge で

emerge -k xscreensaver
...
media-libs/svgalib-1.9.19-r3
!!! ERROR: media-libs/svgalib-1.9.19-r3 failed.
!!! Function kernel-mod_configoption_builtin, Line 114, Exitcode 1
!!! kernel has not been configured yet
!!! If you need support, post the topmost build error, NOT this status message.

のように文句を言われるため,今のところ仕方が無い.後で考える.同様の理由で KDE も emerge できないのだが,これも後で考える.

次は KDE が入ったらいいなぁ.

ちなみに起動の様子はこんなもん(gdm, gnome).

Installation of coLinux with Gentoo(2)

続いて X の設定をする.今回は VNC で接続する形をとる.

まず,/etc/make.conf の USE に少々追加

alsa canna cjk emacs java mozilla mule ruby unicode usb xface

WMに IceWM を使うとして X 関係を emerge する.

emerge -k xorg-x11
emerge -k icewm
emerge -k kterm 
emerge -k mozilla

次いで,vnc と xinetd を emerge (VNC への接続を xinetd で管理する)

emerge -k tightvnc
emerge -k xinetd
rc-update add xinetd default

そして,日本語関係を emerge する.

emerge -k canna kinput2 
rc-update add canna default 
emerge -k kochi-substitute shinonome monafont mplus-fonts aquafont aquapfont mikachan-font

必要なものの emerge が終わったので,設定に入る.

まず,VNC が X のスタートアップに使う ~/.vnc/xstartup に以下を書き込む.

if [ -x /usr/X11R6/bin/kinput2 ] ; then
    /usr/X11R6/bin/kinput2 -canna &
    XMODIFIERS="@im=kinput2"
    export XMODIFIERS
fi 
export LANG="ja_JP.UTF8"
exec icewm-session 

そして,vnc 単体で起動したときと xdm を使ったときで同じ振る舞いをするように

ln -s ~/.vnc/xstartup ~/.xsession

でリンクを張っておく.

次にフォントサーバ Xfs の設定をする.まず,常時起動にする.

rc-update add xfs default

次にフォントパスの指定をする.編集するファイルは /etx/X11/fs/config で,以下を行う.

tcpを使いたいのでコメントアウト
# no tcp, use sockets!
# no-listen  =  tcp
catalogue に追加
	/usr/share/fonts/shinonome,
	/usr/share/fonts/monafont,
	/usr/share/fonts/mplus,
	/usr/share/fonts/aquafont,
	/usr/share/fonts/aquapfont,
	/usr/share/fonts/mikachan-font,

さらに,Xfs のポート設定をするために /etc/conf.d/xfs の書き換えをする.

XFS_PORT="7100"

以上の設定が正しいかどうかは,/etc/init.d/xfs start したあとに

xfsinfo -server localhost:7100

で正しい応答が示されればいい.

ここまでの設定で,手動でVNCサーバを立ち上げれば接続できるようになっているはず.VNCサーバの立ち上げは以下のコマンドでできる.

vncserver :1 -depth 24 -geometry 1024x768 -compatiblekbd -fp tcp/localhost:7100

そして,ホストOS の方から VNCclient で hogehoge:1 に接続すれば X が起動する.

続いて,一々ログインして手動で VNCserver を起動しなくてもいいように xinetd の設定をする.

まずはVNC接続をサービスに登録するため, /etc/services に以下を追加.

vnc-1024x768x24         5950/tcp                        # vnc server
vnc-1280x1024x24        5960/tcp                        # vnc server

これは,画面の解像度などに応じてポート 5900 以上に適当にエントリを作る.このポート番号から 5900 を引いたものがVNCのディスプレイ番号になる.なので,上の設定は 50 番で XGA, 60番で SXGA となる.

続いて,xinetd の設定ファイルを追加する.設定ファイルは画面サイズごとに作る(正確にはサービスごとに).

/etc/xinetd.d/vnc-1024x768x24 を以下のとおり作る.

service vnc-1024x768x24
{
        disable         = no
        socket_type     = stream
        wait            = no
        only_from       = 192.168.0.0
        user            = nobody
        server          = /usr/bin/Xvnc
        server_args     = -inetd -query localhost -once -compatiblekbd -depth 24 -geometry 1024x768 -fp tcp/localhost:7100
        log_on_failure  += USERID
}

同様に /etc/xinetd.d/vnc-1280x1024x24 を以下のとおり作る.

service vnc-1280x1024x24
{
        disable         = no
        socket_type     = stream
        wait            = no
        only_from       = 192.168.0.0
        user            = nobody
        server          = /usr/bin/Xvnc
        server_args     = -inetd -query localhost -once -compatiblekbd -depth 24 -geometry  1280x1024 -fp tcp/localhost:7100
        log_on_failure  += USERID
}

最後に,xinetd を常時起動にして xinetd の設定終了.

rc-update add xinetd default 

次に,ディスプレイマネージャ(GUIのログイン処理) XDM の設定をする.

作業としては以下のとおり.

/etc/X11/xdm/Xservers のサーバを Xvfb に変更
/etc/X11/xdm/Xaccess  の * で始まる行のコメントアウトはずす(上から二つ)
/etc/X11/xdm/xdm-config の最後の行(requestPort)をコメントアウト

/etc/init.d/xdm start として立ち上げてみて,

外部から vnc でつなげてログイン画面がでることを確認してから常時起動の設定をする.

rc-update add xdm default 

ちなみに,Xサーバの設定が間違っているとGentoo全体が立ち上がらなくなる可能性あり.

そうなったら gentoo.colinux.xmlでシングルユーザモードにして立ち上げて修正する.

    <bootparams>root=/dev/cobd0 single</bootparams>

ちなみに,Windows 側の VNC としては Gentoo も使っている tightvnc のほか,

それの改良版(?)である UltraVNC やオリジナルの系統である RealVNCがある.

とりあえず,Gentoo にあわせて tightvnc をダウンロードしてインストールし,hogehoge:50 に接続すると XGA のログイン画面が現れ,ログインすると IceWM が起動することが確認できる.

ちなみに起動の様子はこんなもん(xdm, icewm).

次は GNOME と GDM へ.

Installation of coLinux with Gentoo

突然 coLinux を使ってみたくなってインストールしたので,その記録を残してみる.

まずはhttp://www.colinux.org/ から 0.6.2 のインストーラ(coLinux-0.6.2.exe)をダウンロード.そして, インストーラを実行して適当なディレクトリにインストール(例えばN:\coLinux).インストールオプションは,WinPcap は使う予定が無いのでチェックをはずして,さらに Gentoo をインストールするのでルートイメージのダウンロードはしない.Gentoo のルートイメージは別途 Wiki からたどってダウンロード.ルートイメージをcoLinuxのインストールディレクトリにでも展開する.

ちなみに解凍されるルートイメージは 512M なので,/usr なども同一イメージ上に作成するのであれば topo\topoenlarge.bat を使って適当にサイズを大きくする(4Gぐらいほしいなぁ).別のイメージを用意するならば,cygwin の dd とかで適当なサイズのファイルを作っておく(フォーマットはマウント後に普通にやればいい).

で,以下のような感じで設定ファイル gentoo.colinux.xml を書いて保存.

<?xml version="1.0" encoding="UTF-8"?>
<colinux>
    <block_device index="0" path="\DosDevices\n:\coLinux\gentoo512" enabled="true" />
    <block_device index="1" path="\DosDevices\n:\coLinux\swap64" enabled="true" />
    <bootparams>root=/dev/cobd0</bootparams>
    <initrd path="initrd.gz" />
    <image path="vmlinux" />
    <memory size="256" />
    <network index="0" type="tap" />
    <block_device index="2" alias="hdc" path="\Device\Cdrom0" enabled="true" />
</colinux>

起動は以下のコマンドで行う(バッチファイルでも書いて置けば楽).

colinux-daemon.exe -t nt -c gentoo.colinux.xml

あと,coLinux 側からネットワークを使うため,ホストPCのネットワークインターフェースとcoLinux の TAP ドライバをブリッジ接続しておく.

引き続きGentoo側の設定をする.

まず,portage のスナップショットを取ってくる(emerge sync でもいいけど).そのために,とりあえず手動でネットワークの設定をしておく(DHCP がイメージに入っていないので).

ifconfig eth0 192.168.0.4 netmask 255.255.255.0
ifconfig eth0 up
route add default gw 192.168.0.1
wget ftp://ftp.isu.edu.tw/pub/Linux/Gentoo/snapshots/portage-yyyymmdd.tar.bz2
tar -xvjf portage-yyyymmdd.tar.bz2 -C /usr

この作業は大量の画面出力を伴うが, coLinux のコンソールの挙動がおかしいので最後の tar コマンドは /dev/null へリダイレクトしておいたほうが無難かも.

次に,swap パーティションを大きくする.適当に大きなサイズ,ここでは512メガのファイルを swap512 という名前で手適当に作って(cygwin の dd コマンドで十分)

   <block_device index=\"2\" path=\"\DosDevices\n:\coLinux\swap512\" enabled=\"true\" />

の行を gentoo.colinux.xml に追加してマウントできるようにし,gentoo のほうで

mkswap /dev/cobd/2

を実行して swap 用にする.そして, gentoo.colinux.xml を書き換えて

    <block_device index="1" path="\DosDevices\n:\coLinux\swap512" enabled="true" />

にする.これで swap パーティションの切り替え終了.

あとは基本的に Gentoo のインストールに従うだけでしょう.http://www.gentoo.org/doc/ja/gentoo-x86-install.xmlの「13. ステージ3から始める場合」以降からで.

ホスト名の設定

echo hogehoge > /etc/hostname

タイムゾーン設定

ln -sf /usr/share/zoneinfo/Japan /etc/localtime

システムロガーとCronのインストール

emerge -k syslog-ng
rc-update add syslog-ng default
emerge -k vixie-cron
rc-update add vixie-cron default

ルートパスワード設定

passwd

ネットワーク設定

/etc/conf.d/net で eth0 を dhcp にして gateway の設定もなくすDHCPを使うので dhcpcd を入れて自動で立ち上げるように設定

emerge -k dhcpcd
rc-update add net.eth0 default

SSHを常時使用に

rc-update add sshd default 

その他に必要なものとして, screen, vi は必須なので入れておく.

emerge -k screen
emerge -k vim

次は X の設定で.

RMagick Compilation on Cygwin Failed...

Cygwin 上の ruby に RMagick をインストールしようとしたら

checking for InitializeMagick in -lMagick... no
configure: error: Can't install RMagick. Can't find libMagick

と怒られた.いや,libMagick-devel 入れてるし /usr/lib/libMagick.a あるし.ということで config.log を見てみると...

/usr/lib/gcc-lib/i686-pc-cygwin/3.3.3/../../../../i686-pc-cygwin/bin/ld: cannot find -lxml2

をい,libxml2 が見つからないんじゃんと.何でこんなオプション(-lxml2)がここで付いているのか不明だが,これもちゃんとチェックしとけよ configure .とりあえず libxml2-devel をインストールしてやったら ./configure がちゃんととおりましたとさ.

次は make で.C のコンパイルは成功してちゃんと shared library ができたらしい.が,その後のテストで RMagick.so のロードに失敗したと文句を吐きまくる.Cygwin で shared library って特別な作り方が必要だっけ? とりあえず面倒なので gem でのバイナリインストールに切り替える.gen 自身が入っていなかったので落としてきて(RubyGems)インストール

ruby setup.rb

続いて RMagick のバイナリアーカイブを解答して gem でインストール

gem install RMagick-win32-1.7.0-mswin32.gem

よし,動くだろう.ということで

ruby -e 'require "RMagick"'
/usr/lib/ruby/site_ruby/1.8/i386-cygwin/RMagick.so: dlopen, Win32 error 126 - /usr/lib/ruby/site_ruby/1.8/i386-cygwin/RMagick.so (LoadError)
        from /usr/lib/ruby/site_ruby/1.8/RMagick.rb:11
        from -e:1:in `require'
        from -e:1

ダメじゃん.

今日は日が悪いらしいのでまた今度にしよ

RMagick Compilation with Older GCC

CGI での画像操作に ImageMagick の Ruby interface である RMagick を使いたい.ということで RMagick をサーバ上でコンパイルしたのだが,少々問題発生.

RMagick は古い gcc2.95 とかでコンパイルすると -std=gnu99 オプションのせいでコンパイルがこける.なので,ext/RMagick/extconf.rb.in の

$CFLAGS = "-std=gnu99 -Wall -g @CFLAGS@"

$CFLAGS = "-Wall -g @CFLAGS@"

に書き換えてオプションをはずしてしまう.これでコンパイルできる.ついでに,インストール先を変えた場合パスを通しておかないと動かないので,たとえば

./configure --prefix=/home/ls-al/local/usr/

としたときには

ruby -I/home/ls-al/local/usr/lib/ruby/site_ruby/1.8/ -I/home/ls-al/local/usr/lib/ruby/site_ruby/1.8/i386-freebsd4 -e'require "RMagick"'

みたいに RMagick.rb, RMagick.so へのパスを渡す.一般的には次のような感じだと思う.

./configure --prefix=_PREFIX
ruby -I_PREFIX/lib/ruby/site_ruby/1.8/ -e'require "RMagick"' -I_PREFIX/lib/ruby/site_ruby/1.8/_ARCH

Home > Archives > 2005年04月

Search
Feeds

Page Top