ラベル coLinux の投稿を表示しています。 すべての投稿を表示
ラベル coLinux の投稿を表示しています。 すべての投稿を表示

11.06.2009

zenwalk、ネットワークの設定

Slackware系ディストリビューションなんて、まともに使うのPlamo Linux3.x以来だから、重要なこともそうでないこともすっかり忘れてしまっていた(笑)

とりあえず、今日やったことをメモ

・ coLinuxを最新のdevel版に更新。カーネルが新しくなりましたが、zenwalkの動作には問題なし。
・ Zenwalkでネットワークの設定。
ネームサーバは相変わらず/etc/resolv.confにあって迷わなかったんだけれども、Debian系ではおなじみの/etc/interfacesがどこにあるか分からず、途方に暮れる。
結果、/etc/rc.d/rc.inet1.confなるファイルがその役割を担っていることがわかった。
でも、普通はnetconfigなるツールで設定してしまうみたい。
すごく楽に設定できた。
・すっかり忘れていたことだけど、LinuxとTAPは同じサブネットに配置しないとダメ。

こんなところか。
若干疲れてるから、書いてることがメチャメチャなのはご愛敬。

【追記】評判の良い6.2のcore isoイメージを見つけたので、それを入れてみることにした。

11.04.2009

Zenwalk入れてみた。

先日Ubu子さんがお亡くなりになったことで、原因究明して環境の復旧を目論むのも面倒なので、いっそ新しいディストリビューションを入れてみることにした。

白羽の矢を立てたのがZenwalk。
コンパクトでスマートなディストリビューションとして知られていて、netpkgなる独自のパッケージ管理ツールを有する、Slackwareベースのディストリビューションだ。(なんかDistroFreakっぽくなったけど、別にディストリビューションの説明するわけじゃないよ)

Slackwareなら、確かcoLinuxのwikiに導入方法が書いてあったんで、それをベースにしたコイツのcoLinux上への導入も手軽なんじゃないかと考えたワケ。

でも、ネット上を探してみると、より手軽に導入できそうな方法を発見。
参考にした(というか、まんま方法を拝借した)のはココ

2007年と若干古い記事だけど、今リリースされているdevel版でも、そのまま通用しました。
(但し、試したのはkernel 2.6.22.18版のほうで、kernel 2.6.25.20版でもうまく行くかは未確認。近々アップデートする予定なので、詳しくはその時にでも。)

用意したのは
・Zenwalk core 5.2のISOイメージ。
(6.2が最新だけど、Coreイメージは公開されていなかったので、ダウンロードサイズの関係からこちらをチョイス。別に6.2のイメージを使っても問題ない)
・QEMU for Windows+ Kqemu for windows(イメージを作るのに必要)
・dd(参考にしたページではCygwinのを使っているけど、私はWindows上で特別な手続きなしに使える、ここのを愛用している。)
・空のイメージファイル。(参考にしたページでは、fsutilあたりを使って作ってるけど、ここから適当なサイズ(3GBぐらい?)のものと、スワップイメージ用のファイル(1GB以下)を取ってくるのが楽。ちなみに、今回は前回使った10GBのルートイメージをそのまま使い回すので、なにも持ってきていない。)

以下、具体的な作業手順。
1.作業ディレクトリとしてC:\zenwalkを用意して、zenwalkのISOイメージと空のイメージファイルを放り込む。
2.QEMuをC:\qemuにインストールしておく。Kqemuはデフォルトのまま、適当にインストールしておく。
3.ddは、パスの通ったところに配置。
4.コマンドプロンプトを起動し、qemuディレクトリにcdした後、

qemu.exe -hda c:¥zenwalk¥rootfs -hdb c:¥zenwalk¥swap -cdrom c:¥zenwalk¥zenwalk-core-5.2.iso -m 128 -boot d -L .

でqemuを起動。

これで、インストーラが立ち上がる。

5.キーマップを選択。私はUS配列なので、それをチョイス。
6.パーティショニングを実施。sda1がrootfs、sda2がswapに認識されていたので、それぞれパーティションを切ってやる。変に分割せず、容量をまるまる全部割り当てると、トラブルが少ない。パーティション分割したいときは、別のイメージファイルを用意してやるといい。
7.インストール開始。フォーマットはext2,ext3,reiserfsのいずれか。それ以外だと、coLinuxでは起動できないので注意。
8.放置。終わるまで放置。小一時間かかった。(ブートローダをMBRに入れるのを忘れないようにする)
9.終わったら、いったんqemuを終了し、改めて

qemu.exe -hda c:¥zenwalk¥rootfs -hdb c:¥zenwalk¥swap -L .

として再起動する。(ウィザードに従っての再起動は失敗するので、この方法を取らざるを得ない)
10.ウィザードに従って、インストール後の基本的な設定を済ませてやる。
11.rootでログインし

cd /dev
for i in 0 1 2 3 4 5 6 7 8 9
>do
>mknod cobd$i b 117 $i
>done

としてcobdデバイス(coLinuxの使うスペシャルデバイス)を作成する。
(参考にしたサイトと違い、0から作っていることに注意)
12./etc/fstabをviなどで開き

/dev/cobd0 / ext3 defaults,noatime 1 1
/dev/cobd1 swap swap defaults 0 0
proc /proc proc defaults 0 0

とかする。コレをしないと、起動できないので注意。
13.shutdown -h nowとかしてシステムを終わらせ、qemuを閉じる
14.Windows上に戻り、C:\zenwalkディレクトリに移動。
15.例えば、coLinuxがC:\coLinuxディレクトリにあるとして、そこにイメージを吐き出すには

dd if=C:\zenwalk\rootfs of=C:\coLinux\rootfs bs=512 skip=63

などとする。63ブロックをスキップするのは、MBRを読み飛ばすため。
16.これでC:\coLinuxディレクトリに目的のイメージができあがるので、それを使ってcoLinuxを起動する。
あとは煮るなり焼くなりお好きにどうぞ。

おそらく、この方法を用いればほとんどすべてのディストリビューションをcoLinux上で動かせるようにすることが可能だと思う。

いやあ。便利な世の中になったもんだ。

10.30.2009

やっちまった~い/(^o^)\

Ubuntu 9.10がリリースされたんで、調子に乗ってcoLinux内に入れてあるubuntuをdist-upgradeしたところ、見事に成功!!

かと思いきや、再起動時に/procあたりでつまる。
そりゃもう、どうしようもないぐらいにつまる。

/(^o^)\
/(^o^)\
/(^o^)\

最近使用頻度が下がってるからいいんだけどさ!
い い ん だ け ど さ !


……またディストリビューション乗り換えちゃおうかなぁ。

10.04.2009

Ngエディタ入れてみた。

これまでEmacsを長いこと愛用してきたものの、やっぱりcoLinux上で動かすとチト重い。

ということで、Ngエディタへの乗り換えを決意しました。
Ngエディタは、小型のEmacsクローンであるMicroGNUEmacs(mg)の日本語対応実装のこと。

んで、当初aptitudeからng-cjkを入れたんだけれども、どうやらUTF対応していないらしく、いったんこれをアンインストール。

こちらのブログに従って、UTF対応させたものを手動インストールすることに。

途中詰まったのは、ldでtgetsとかtputsとか、t***という関数名でエラーが出るとこ。
ざっくり調べて、ncurses-devを入れれば良いことが分かり、解決。
(ncursesを放り込んだ後、いったんクリーンな状態にしてから./configure→makeしないとうまく行かなかった。)

日本語もうまく扱えているようで一安心。
これから可能な範囲でカスタマイズせねば。

8.25.2009

coLinuxのお引っ越し

いろいろと興味の向くままに揃えすぎたせいもあってか、Debian環境がやたらと重たくなってきたので、お引っ越しをすることにしました。

そのままDebian Sid環境を新たに構築すれば良いかとも思ったんだけれども、せっかくなのでディストリビューションを乗り換えることに。

今現在手軽にcoLinuxで利用できるのは、Arch、Gentoo、Fedora、Debian、Ubuntuあたり。
ArchはTeX関連パッケージがそろっていなかった記憶があるので却下。
Fedoraはyumが嫌いだから却下。
Gentooを導入しようと思うも、ある程度構築したところで、そういえばネットワークがつながらない環境だと、Emacsの起動が大変遅くて、その解決策はまだ見つけていなかったことに気付いて却下。

というわけで、Ubuntuに移行することにしました。
Debian sid→Ubuntuだから、隣の市に引っ越しますぐらいの違いしかないか(笑)

で、いつも通り環境を移築して完了。
だいたい3日ぐらいでお引っ越しできました。
今回は堅実運営を考え、必要最低限のソフトを揃えました。
イメージファイルなんかはDebianの時に使って居たものを流用。

そうそう、今回はじめて気付いたんだけど、coLinuxってext2/ext3,ReiserFS以外は未対応ナンダネ。
JFS試そうとしてコケて、はじめて知りました。
ま、ファイルシステムにこだわるなら、実機に入れろって話だよね。
所詮、ファイルにマッピングしただけの仮想ドライブなんだし。

お引っ越ししたら、いろいろスッキリして気持ちよくなりました。
勢いに乗ってemacs-snapshot-nox入れちゃった(笑)
noxだから、フォントが綺麗だとか言われてる恩恵はまったく受けられていません。
ま、使い勝手が大きく変わらないなら、このまま使い続けますけどね。

6.01.2009

coLinuxをアップデート

なんとなく気が向いたので、最新のdevel版にアップデート。

そしたら、これまで何度もつまずいているハズなのに、coLinuxの更新に伴ってネットワークにつながらなくなったときの対処法がブログにメモされていなかったのでメモしとく。

具体的には
http://d.hatena.ne.jp/masahi6/20080122/1200978726
にある手法を参照する訳なんだけれども、

# nano -w /etc/udev/rurles.d/**_persistent-net.rules

とかしてファイルを開いて(**部分は環境によってチガウ。)
誤認識されているethデバイスの番号を書き直してやればOK。

5分で見つけられるだろう情報とは言え、やっぱり自分のトコにメモっとくと安心感があるね。
(たぶん、自作サポート~の時にメモったんだろうな(笑))

4.25.2009

私の.zshrcと.emacs―― 一番大切なファイル。

coLinuxを起動しようとしたら、どういう訳かブルースクリーンに。
ものすごく久しぶりに遭遇した青一面の画面だっただけに少々驚いたが、そういえばcoLinuxはこういうリスクもはらんでいるんだったと再確認。

そんでもって、やっぱりバックアップしておいた方が良さそうだと思うファイルをブログに貼り付けて保存しておこうと決意したワケ。
以前のソフトサポート用ブログは既に削除してしまったので、あちらに取ってあったバックアップが無いのだということに気づいたってのも一つの理由だけれども。

まずは.zshrc。
環境変数は.zprofileで設定してあるけど、それほど複雑じゃないから省略。

autoload -U compinit
compinit
bindkey -e
setopt auto_cd
setopt auto_pushd
setopt correct
setopt list_packed
setopt nolist_beep
setopt hist_ignore_dups
setopt share_history
export LSCOLORS=ExFxCxdxBxegedabagacad
export LS_COLORS='di=01;34:ln=01;35:so=01;32:ex=01;31:bd=46;34:cd=43;34:su=41;30:sg=46;30:tw=42;30:o
w=43;30'
zstyle ':completion:*' list-colors 'di=;34;1' 'ln=;35;1' 'so=;32;1' 'ex=31;1' 'bd=46;34' 'cd=43;34'

# Lines configured by zsh-newuser-install
HISTFILE='/home/hogehoge/.histfile'
HISTSIZE=10000
SAVEHIST=10000
PROMPT='[%D{%Y/%m/%d(%a)} %T <%(5~,%-2~/.../%2~,%~)>]
[%n@%m]%# '

# command aliases
alias ls='ls -B --color=auto'
alias ll='ls -ABl --color=auto'
alias la='ls -al --color=auto'
alias less='lv'
alias rm='rm -rf'


つづいて.emacs
(setq inhibit-startup-message t)
(setq scroll-step 1)

(set-locale-environment nil)
(coding-system-put 'utf-8 'category 'utf-8)
(set-language-info
"Japanese"
'coding-priority (cons 'utf-8
(get-language-info "Japanese" 'coding-priority)))
(set-language-environment "Japanese")
(set-default-coding-systems 'utf-8)
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(set-buffer-file-coding-system 'utf-8)
(setq default-buffer-file-coding-system 'utf-8)
(global-font-lock-mode t)
(setq backup-inhibited t)
(setq delete-auto-save-file t)

;;Anthy
(load-library "anthy")

;;uim
(setq default-input-method "japanese-anthy-uim")
(setq uim-default-im-prop '("action_anthy_hiragana"))
(setq uim-candidate-display-inline t)

;;slime
(add-to-list 'load-path "/usr/share/emacs/site-lisp/slime/")
(add-hook 'lisp-mode-hook (lambda ()
(slime-mode t)
(show-paren-mode)))

(require 'slime)
(setq inferior-lisp-program "clisp")
(slime-autodoc-mode)

;; scheme-mode
(autoload 'scheme-mode "scheme-mode" "scheme" t)
(setq auto-mode-alist (cons '("\.ss$" . scheme-mode) auto-mode-alist))

;; html-helper-mode
(autoload 'html-helper-mode "html-helper-mode" "Yay HTML" t)
(setq auto-mode-alist (cons '("\.html$" . html-helper-mode) auto-mode-alist))

;; css-mode
(autoload 'css-mode "css-mode" "Editing CSS" t)
(setq auto-mode-alist (cons '("\.css$" . css-mode) auto-mode-alist))

;;cedet
(require 'cedet)
(global-ede-mode t)
(semantic-load-enable-code-helpers)
;; region
(setq transient-mark-mode t)

;; show clock
(display-time)

;; show column number
(column-number-mode t)

;; scheme
(setq process-coding-system-alist
(cons '("gosh" utf-8 . utf-8) process-coding-system-alist))

;; gosh interpriter path. -i option is interactive mode
(setq gosh-program-name "/usr/bin/gosh -i")

;; scheme-mode and run-scheme-mode use to cmuscheme.el
(autoload 'scheme-mode "cmuscheme" "Major mode for Scheme." t)
(autoload 'run-scheme "cmuscheme" "Run an inferior Scheme process." t)

;; pair of brace
(show-paren-mode)

;; indent
(put 'and-let* 'scheme-indent-function 1)
(put 'begin0 'scheme-indent-function 0)
(put 'call-with-client-socket 'scheme-indent-function 1)
(put 'call-with-input-conversion 'scheme-indent-function 1)
(put 'call-with-input-file 'scheme-indent-function 1)
(put 'call-with-input-process 'scheme-indent-function 1)
(put 'call-with-input-string 'scheme-indent-function 1)
(put 'call-with-iterator 'scheme-indent-function 1)
(put 'call-with-output-conversion 'scheme-indent-function 1)
(put 'call-with-output-file 'scheme-indent-function 1)
(put 'call-with-output-string 'scheme-indent-function 0)
(put 'call-with-temporary-file 'scheme-indent-function 1)
(put 'call-with-values 'scheme-indent-function 1)
(put 'dolist 'scheme-indent-function 1)
(put 'dotimes 'scheme-indent-function 1)
(put 'if-match 'scheme-indent-function 2)
(put 'let*-values 'scheme-indent-function 1)
(put 'let-args 'scheme-indent-function 2)
(put 'let-keywords* 'scheme-indent-function 2)
(put 'let-match 'scheme-indent-function 2)
(put 'let-optionals* 'scheme-indent-function 2)
(put 'let-syntax 'scheme-indent-function 1)
(put 'let-values 'scheme-indent-function 1)
(put 'let/cc 'scheme-indent-function 1)
(put 'let1 'scheme-indent-function 2)
(put 'letrec-syntax 'scheme-indent-function 1)
(put 'make 'scheme-indent-function 1)
(put 'multiple-value-bind 'scheme-indent-function 2)
(put 'match 'scheme-indent-function 1)
(put 'parameterize 'scheme-indent-function 1)
(put 'parse-options 'scheme-indent-function 1)
(put 'receive 'scheme-indent-function 2)
(put 'rxmatch-case 'scheme-indent-function 1)
(put 'rxmatch-cond 'scheme-indent-function 0)
(put 'rxmatch-if 'scheme-indent-function 2)
(put 'rxmatch-let 'scheme-indent-function 2)
(put 'syntax-rules 'scheme-indent-function 1)
(put 'unless 'scheme-indent-function 1)
(put 'until 'scheme-indent-function 1)
(put 'when 'scheme-indent-function 1)
(put 'while 'scheme-indent-function 1)
(put 'with-builder 'scheme-indent-function 1)
(put 'with-error-handler 'scheme-indent-function 0)
(put 'with-error-to-port 'scheme-indent-function 1)
(put 'with-input-conversion 'scheme-indent-function 1)
(put 'with-input-from-port 'scheme-indent-function 1)
(put 'with-input-from-process 'scheme-indent-function 1)
(put 'with-input-from-string 'scheme-indent-function 1)
(put 'with-iterator 'scheme-indent-function 1)
(put 'with-module 'scheme-indent-function 1)
(put 'with-output-conversion 'scheme-indent-function 1)
(put 'with-output-to-port 'scheme-indent-function 1)
(put 'with-output-to-process 'scheme-indent-function 1)
(put 'with-output-to-string 'scheme-indent-function 1)
(put 'with-port-locking 'scheme-indent-function 1)
(put 'with-string-io 'scheme-indent-function 1)
(put 'with-time-counter 'scheme-indent-function 1)
(put 'with-signal-handlers 'scheme-indent-function 1)
(put 'with-locking-mutex 'scheme-indent-function 1)
(put 'guard 'scheme-indent-function 1)

;; memo
(setq user-full-name "hogehoge")
(setq user-mail-address "e-mail@example.jp")
(defun memo ()
(interactive)
(add-change-log-entry
nil
(expand-file-name "~/.memo/memo.txt")))
(define-key ctl-x-map "M" 'memo)

;; password hide
(add-hook 'comint-output-filter-functions
'comint-watch-for-password-prompt)

;; c-mode hook
(add-hook 'c-mode-hook
'(lambda ()
(c-set-style "BSD")))

(add-hook 'c++-mode-hook
'(lambda ()
(c-set-style "BSD")))
;; ls color mode off
(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)

;; w3m
(require 'w3m-load)

;; wget-el
(load "w3m-wget")


.emacsが長いのはご愛敬。

# ブルースクリーンになった原因が、昨日のお引っ越しじゃなきゃいいんだけど……。

4.24.2009

coLinuxのディスクを拡張

これまで4GBのディスクイメージを割り当てて動かしてきたけれど、使用率が90%を超え、いい加減足りなくなる気配が見えてきたので、足りなくなる前に増設することに。

これまで何度も経験しているから、もう慣れたもんだね。

下準備として、10GBのブランクイメージ(hogehoge)を用意。今回はfsutilでやったけど、ネット上で適当に拾ってきても良いと思う。

拾ってきたら、coLinuxを止め、設定ファイルを書き直す。
具体的には、
cobd2="C:\coLinux\hogehoge"
のような感じで、今持ってきたイメージを適当な番号のcobdデバイスに割り当ててやる。

ここまでできたらcoLinuxを起動。
(心配ならシングルユーザモードでやるべし)

coLinuxコンソールからrootでログインし
# dd if=/dev/cobd0 of=/dev/cobd2
とかして、古いディスクの内容を新しいディスクに書き込んでやる。

書き込みが終わったら(我が家の環境では20分ぐらいかかった)、新しいディスクに対して
# e2fsck -f /dev/cobd2
とかしてディスクチェックを書ける。

ディスクチェックがすんだら、
# resize2fs -p /dev/cobd2
とかしてディスクサイズをリサイズしておく。
リサイズ後には、もう一度ディスクチェックをかけてcoLinuxを終了。

今度は設定ファイルのプライマリディスクに新しいディスクを持ってきて起動検査をする。
うまくいけばそれでよし。
古いディスクは、しばらくバックアップのためにとっておいて、トラブルがあったらいつでもリストアできるようにしておいた方が良さげ。

3.29.2009

coLinux+MinGW+Debian+OpenGLなクロスコンパイル環境でfreeglutを使う

久しぶりの変態環境下での作業に関するメモ。

以前構築したglut環境ではキーボードの同時押しとかが利用できなくてちょっと不便だなぁと思っていたので、その代替え手段を探していたところ、freeglutなる代替え手段が存在することを発見。

通常リリースの最終更新が2005年と、既に枯れていて安定した運用が望めそうなので、さっそく入手。
(かといって開発が停止しているわけではないので、ソコントコよろしく。)
入手すると、中身はソースコードのみ。
ドキュメント曰く、「使うなら自分でビルドしたまえ明智君。」という事らしい。
既に変態環境で使うことをもくろんでいるので、こんなの予想していなかった。

けれども、せっかくやろうと決めたので方策を練る。
んで、実際に試したのが
・ VS2008でビルド
・ 変態環境に移して運用
というもの。結論から言えば、それでうまくいっている。
んで、この文書がその時のメモ。


まずはVS2008でビルド。
これについては特に書くことはないけど、自前でビルドしようと思っている人は、通常のビルドではなく、バッチビルドを実行しなければ正しいファイルを得られないという点に注意。

「自分でビルドするのがめんどい」って人向けに、私の私家製ビルド品をいつものところに置いておきますんで使ってください。
私がやったのはVS2008によるバッチビルドだけで、ソースに関していじったところはない(プロジェクトファイルの変換ぐらいはしたけど)ので、ソースが欲しい人はオリジナルのものを。
ライセンスはXライセンスらしいので、それに従った運用をすればOkだと思う。
(問題があればご連絡ください。)
※ ちなみに配布しているアーカイブ中では、*_d.libってやつがデバッグ版で、_dの無いものがリリース版のビルドなのでお間違いなく。

ヘッダーファイルとライブラリファイルをゲットしたら、まずはヘッダーを以前の記事同様、OpenGLのインクルードファイルを展開したGLディレクトリ以下に放り込む。
ライブラリは、
/usr/i586-mingw32msvc/lib

以下に。
(アーカイブに入っているのは*.aファイルではなく*.libファイルだけれども、特に変換の必要は無く、そのまま利用できる。)

そこまでできたら、適当なソースコードを用意。
今回は前回の記事で使ったのと同じものを利用。


#include <gl/freeglut.h>

void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_POLYGON);
glColor3d(1.0, 0.0, 0.0); /* red */
glVertex2d(-0.9, -0.9);
glColor3d(0.0, 1.0, 0.0); /* green */
glVertex2d(-0.9, 0.9);
glColor3d(0.0, 0.0, 1.0); /* blue */
glVertex2d( 0.9, 0.9);
glColor3d(1.0, 1.0, 0.0); /* yellow */
glVertex2d( 0.9, -0.9);
glEnd();
glFlush();
}

int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA);
glutCreateWindow(argv[0]);
glutDisplayFunc(display);
glClearColor(0.0, 0.0, 0.0, 0.0);
glutMainLoop();

return 0;
}


ポイントは、#includeにfreeglutを指定すること。
それから、コンパイルのためのコマンドは

mingw-cc gl.c -lfreeglut -lglu32 -lopengl32 -mwindows


などとする。
-lfreeglutの部分は、使うfreeglutなファイルに合わせて変えると良い感じ。
(デバッグ版なら_dをつけるし、スタティックリンク版ならそのようする)

こうしてできたファイルは、実行時にfreeglut.dllを要求するので、そこだけ注意。
glutがglut32.dllを要求したのと同じやね。

※ ここでも、配布しているアーカイブはデバッグ版とリリース版で別名にしているけれど、これは単に衝突しないように&見分けがつくようにとの配慮なので、使うときにはどちらもfreeglut.dllにリネームしないと正しくお動かないので注意

して、できあがったものの実行結果が以下。



使えるAPIについては公式サイトからAPIのリストを確認できるけれども、基本的にはglut互換なので心配なし。
あとは何に使うかが問題か(笑)

11.04.2008

秋の夜長に。

なんだか眠れないなぁと思いながら、先日やりはじめたcoLinux Managerの日本語化作業をしはじめたら、こんな時間になってしまった;;

前回のリンクの内容はすでに最新のものに置き換わっている。(というか、上書きしてしまった)
というわけで、前回の記事から落としてもらうのも良いんだけど、こちらでもリンクだけ貼っておく。


本体

VC#2008で開けるソース

ライセンスは詳しく書いてないけど、本家と同じ。(日本語化した部分についても。)
変更点については、ソースファイルの方に入れたChangeLogが詳しい。

サポート等は一切してませんのでヨロシク。所詮自己満足のおすそ分けといったところ。
本家に日本語化したよーってメールしようか迷ってるんだけど、どうしよう?
(今のところChangeLogは日本語だけど、本家にメールするなら英語に書き直すかも。)

10.29.2008

coLinux Managerの日本語化。

前々からやろうやろうと思いつつ、やってなかったこととして、coLinux Managerを日本語化した。
ベースはcoLinux Manager 0.7.0。
といっても、完全じゃない気はするし(デバッグ用のコンソールメッセージはわざとオリジナルのままにしてある)、日本語にしたからって誰が使うわけでもないだろうけど。

ちなみに、WindowsFormの多言語化手法は探して見つかったので、それを用いて日本語化しているから、設定フォームは今のところ英語と日本語が混在している状況になっているはず。

でも、タスクトレイアイコンの右クリックメニューをどうやって多言語対応させていいかわからなかったから、元のメッセージと共に併記してある。
何かご存知の方、教えてぷりーず☆


以下、本体とソース。

本体は、あらかじめ公式から配布されているcoLinuxManagerをインストール→上書きでとかして使ってくださいな。(単体でも動くだろうけど。)

本体
ソース(VC# 2008)

ライセンスとか、詳しいことは本家をどうぞ。
それから、動作には.NET Framwork 2.0+が必要ですんで、あらかじめご用意を。

9.16.2008

便利なcoLinuxコンソール

久々にcoLinuxの話題。
dev-MLだけに投げられた投稿ならよそうかと思ったけど、users-MLにも同様のメールが投げられているようなので。

本文をそのまま載せるのもアレなので、件のプログラムについて、ざくっと要約&紹介をしておきます。

coLinuxユーザーのPaoloさんが、colinux-console-ntに機能付加をしたそうです。
これまでのコンソールを踏襲しつつ、

・範囲選択でのコピー&右クリックでのペースト

の機能を付加。

すごくちっさい改良に見えますが、これが実に便利。
(colinux-consoleを使う人にとってはという但し書きつきですけどね。)
ダウンロードは以下から。

http://xoomer.alice.it/paolo.minazzi/colinux-console-nt.exe

使い方は、従来のcolinux-console-ntにコピペでインストール。
あとは従来のものと同じように呼び出し。
WIN+ALTキーで、従来のcolinux-consoleと同じふるまいをします。

85x25キャラクタの表示に対応しているので、まぁ、標準的なコンソールプログラムなのかなぁ。
Ver:0.7.3-20080524で動作確認がとれている様子。
ただ、自己責任で使うのは言うまでもないことですよ。

大きなブロックをコピペするときに、コンソールがクラッシュするという既知の問題があり。
Henryによれば、テキストカーソルの点滅スピード速すぎない?とのこと。

言われてみれば、確かにそう思う(笑)

まぁ、興味のある人は使ってみるといいかもね。

8.08.2008

MinGWで自作プログラムにアイコンを付与する方法

15パズルなんですが、うまいぐあいの判定関数&パズル生成関数が思い浮かばなくて、結局ちょこちょこと内部をリファクタリングしただけで、ニコニコを見てしまうという悪循環に(以下略

さて、そんな中で、MinGWでプログラムにアイコンを設定できないものかと思い立ち、ちょろっと探してやってみました。
(すでにダウンロードできる15パズルのファイルは差し替わっています)

ちなみに、(SDLとあわせているせいかもしれませんが)ウィンドウ左上のミニアイコンにはリソースからの設定ができていません。
たぶん、ゲームプログラムならフルスクリーンだったり、左上アイコンにはこだわらないだろうから問題ないんでしょうけど。

一番簡単なのは、
101 ICON "iconfilename.ico"
なんてのを適当なテキストエディタで作成して、resource.rcか何かのファイル名で保存しておきます。

次に、windres(今回私が相手にしているクロスコンパイル環境においては、i586~という長い名前だったので、適当にlnしておきましたよ。)を使って、
$ windres -o resource.o resource.rc
とすると、resource.oというオブジェクトファイルが生成できます。

あとはこれをコンパイル時に渡してあげればOK。
具体的には
$ mingw-cc filename.c resource.o
でいけるはず。
私はリソースIDを101にしたんだけれども、(リソースファイル内にほかのアイコンが無いせいかもしれないが)勝手にデフォルトアイコンとして付与されたから、よっぽど変なことしてない限り、これでいけるんじゃなかろうかと。

よし。今度こそ続きは帰ってきてからやろう。

# 何かいい判定関数/生成関数のアイディアをお持ちでしたら、教えてください。


以下、参考サイト(順不同)
http://www.sixnine.net/cygwin/translation/cygwin-ug-net/windres.html
http://www.m-oz.com/soft/mingw.html
http://www.arcpit.co.jp/winapi/api_01/ap010312.htm

8.04.2008

祝・投稿数200件突破。

って、祝うべきなのか否か…。

まぁいいや。


久しぶりにLennyさんでapt-get update && apt-get upgradeしてみたら、驚くほど大量のアップデートが来てて目が点になってしまった。

よく考えてみれば、Lennyってまだtestingなんだよね(笑)

そういうところをまったく考えないで使っているあたり、ダメなんだろうなぁ。。。
これでもし、sidとかに移行したら、私は浦島太郎状態になること間違いなしだな。

cronにアップデートをスケジューリングするのも面倒だし…。

今度からはこまめにするようにしようと、100MB超えのファイル群を見ながら思うのでした。

# アップデートが終わらないことには、安心してSDLの続きができないじゃない!

8.03.2008

Visual C#を放り込む。

キーボードとともに押し入れから出てきたウィザードリィをプレイしようとインストールしたら、インストールそのものは成功するものの、どうにもゲームのプレイまで行きつかない。具体的には、#4か#5かを選択する画面で、どちらを選んでもエラーをはいて終了してしまうのだ。

こうなったらしょうがない。
早くSDLを覚えて、そのうちウィザードリィ風ゲームを作らなくちゃいけないだろう。

そんなわけで、いつものとおりcoLinux managerからcoLinuxを立ち上げるわけだけれども、やっぱり右クリックへの反応がいまいち…というか、右クリックメニューが出てこないことが多々ある。

そんなわけで、多少改造できないものかとソースをダウンロード。
誰もやってくれないので自分で改造してみることにした。

が、いろいろとファイル構造が複雑。
うーん。。。こんなのいじってられないなぁ。。。
ドキュメントもないし。。。

ということで、リビルドだけ通してみることに。
対象の.NET Frameworkを1.0→3.5にあげてリビルドしてみた。

いまのところ、右クリックへの反応がいまいちだった症状は改善されているように見える。
今後、どうしても困ることがあったら、より深くソースを見ていこう。

バルーンヒントのON/OFFぐらい調節できるようにしたいしな。

8.02.2008

DirectX SDK を入れ替えてみる。

私にとって影響のありそうな変更はなかったものの、なんとなく気になったので入れてみる。
また400MB強をダウンロードしてしまった…。
おかげでWiiのバーチャルコンソールで落としたゼルダがだいぶ進んだ。

落としたら、前回同様Windowsにインストール→Linuxにコピー→Windows側のSDKを削除。
コンパイル&リンクも問題なし。
前回と同じ内容のプログラムだが、stripしたら9KBというコンパクトサイズで実現できた。
(いや、DLLが下請けしてくれてるからってことなんだけど)

最近気になってるのが、coLinuxManagerの安定性。
0.7.0以降更新されていないみたいなんだけど、タスクトレイに常駐するのはいいものの、たまに右クリックメニューが出てこないことがある。

バルーンヒントのON/OFFも調整したいし、いじってみるかと思ってダウンロードしたら、ソースがC#だった。
…開発環境入れるのが面倒だから、とりあえず我慢しよう。

あと気になってるのが、キーボードのFキー。
たまに利かないことがある。

4年目で色々ガタが来てるし、そろそろ修理なり買換えなり考えないといけないんだけれども、そんなお金はないんだよなぁ…。


よし、そのうち考えよう。

8.01.2008

SDL + DirectX9 + Direct3D + MinGW + Debian/GNU Linux での、DirextX9アプリケーションのクロスコンパイル

フレームレートの計算ばっかりじゃ面白くないなぁと思っていたら、手が勝手に動いてました(笑)
8月一発目のネタがこれとはね。

そんなわけで、やたら長ったらしいタイトルの通り、ド変態クロスコンパイル環境に、さらに変態な環境を付け加えてみようという試み。

まず理解していただきたいのが、DirectXを利用することで、確かに最近の3DCGで話題な機能の恩恵を受けることができるものの、SDLを使う意味はほとんどないということ。
つまり、SDLの利点であるマルチプラットフォームとか、高い移植性とか、そういうのをガン無視できる人だけがやっていい裏ワザ的なものだということ。
(もしマルチプラットフォームを捨てたくないならば、素直にOpenGLを使うべきですよ)

それから、そんなにWindows環境に依存したアプリを書きたいというのなら、素直にクロスコンパイル環境じゃなくてVisual C++とかを使うべきだということ。

この辺を理解していないと、(理解していても)「???」が頭に残る展開になること請け合い。



まず、前準備としてDirectX 9 SDK(以下SDK)をダウンロードしておく。
執筆時点での最新版はMarch 2008。ライブラリファイルを覗くと、すでにd3d10.libとかが用意されてる。違った。よく調べてみると、June 2008が最新らしい。時間があったら差し替えようか…。でも、そんなに大きな変更はないみたいだしなぁ…。悩むなぁ…。)

ダウンロードしておいたSDKを展開して、インストールを開始する。
入れるのはヘッダーとライブラリのセットだけ。
x86版に限れば(SDKにはx64版も付属している)、ヘッダーとライブラリを合わせてzip圧縮かければ、せいぜい3MBちょっと。
それに対してSDK全体の容量は圧縮時で400MB強、展開時で1GB弱。

なぜMicrosoftは必要なものだけダウンロードしてくれる、JavaSDKタイプのインストーラーにしなかったんだろうと小一時間考えたら、インストールしたヘッダーとライブラリをいつもの場所にコピー。
ヘッダーはめんどうならベタでコピーしてもいいけど、私はDXってディレクトリを新たに切って、そこに放りこみましたよ。(ライブラリはベタで放り込んだ)

いつもどおりの事だけど、ライブラリの変換作業とかそんなのは必要なかった。
いつからMinGWはこんなに進化したんだろう?

それが出来たら、チュートリアルサイトを見ながらコードを組む。

あ、WindowsにインストールしたSDKはもう必要ないから、削除してかまわないですよ。

出来上がったらコンパイル。
ここでもコンパイルコマンドには気をつける必要があって、
mingw-c++ filename -lmingw32 -lSDLmain -lSDL -ld3d9 -ld3dx9 -mwindows
のように指定する必要がある。
※ 必ずSDL関連ファイルを先頭に指定するというのがミソ。

あとはできたものをWindowsにコピーして実行すればOK。
サンプルそのままだと、全画面表示になるので注意。

ソースをみてもらえば分かると思うけど、コードはほとんどが通常のをDirectXを使ったプログラミングで使われるものがそのまま使われている。
というのも、DirectX自体、渡されたウィンドウハンドルを持つウィンドウに描画を行うかららしい。

だから実は、SDLで作られていようが、WinAPI直叩きで作られていようが、DirectXさんにとっては何の関係もないものということだ。

それなら私は、ウィンドウ生成が楽チンなSDLを選ぶなぁ。実行時にDLLが必要って手間はあるけどさ。
そうそう、コンパイルしたバイナリを動かすには、最新のDirectXランタイムが必要だから、動かない場合はそちらをインストールするとよさげ。

7.27.2008

SDL_gfx for Windows (and MinGW??)

SDL_gfxを試してみようかと思ったんだけど、いかんせん公式サイトじゃソースが配布されているだけで、Windows向けlibファイルとか、dllなんかが配布されていない。

で、みんなどうしてるのかと思って探してみたら、どうやらソースから自前でコンパイルしているらしい。
(なんて面倒なことを…)

きっと、ネット上にはそんな迷える私のために、コンパイル済みライブラリを配布してくれている親切な人がいるはずだと思って探してみるも、古いバージョンばかりが見つかる。

古いバージョンで我慢するかな・・・と思っていたところに、JessePなる人物が、2008/7/9付(ついこないだ!)で、最新と思しきSDL_gfxのコンパイル済みライブラリを作ったって、SDLのMLに投稿してた。

これを使わない手はないと思って、さっそくインストール。
(手順はSDL_imageなんかと同じ。)
で、入れたところで力尽きて、まだ試していない(笑)

時間があったら試そう。(どうやら、VC向けにコンパイルされたものらしいから、MinGWじゃだめかもしらんし。)

あと、そこで配布されていたものにはSDL_gfxのヘッダーファイルが含まれていなかったから、勝手に含ませてzipで固めて配布。
LGPLだし、問題ないよね?

(配布物に含まれているのは2.0.17のヘッダーだけど、DLLとlibがそれに対応していない可能性大。{←まだ試していないことに起因する}そんなわけで、もしうごかねーぞ、コンパイルとおらねーぞという問題が出たら教えてください。{&古いバージョンのSDL_gfxライブラリに切り替えればイケる可能性大なので、あきらめないでください})


# 以下、別文の機械翻訳

I need the SDL_gfx pre compiled library.

But, that library not distribute from the official SDL_gfx web site.

Today, I found the web, and I got that files.

Relation:
[I made below zip file include SDL_gfx header files]
[libsdl.org ML archives]
[JesseP's web site]
[SDL_gfx official web site]

7.14.2008

Linux/Windowsのクロスコンパイル環境の構築2

つづき。

http://www.libsdl.org/extras/win32/common/opengl-devel.tar.gz
から、OpenGLのヘッダーファイルをもってくる。

tarで展開して、/usr/i586-mingw32msvc/include/下に、展開したヘッダーをコピー。

次に、glutを放り込む。
ナマのOpenGLたたくより便利だろうから。
そんなわけで、
http://www.rimath.saitama-u.ac.jp/lab.jp/tsakurai/opengl/mingw-lib/
からglut.hをとってきて、OpenGLのヘッダーを叩き込んだところに同居させる。

こちらのサイトにあるサンプルソースを拝借して、適当にテスト用のCプログラムを書く。
書けたら、
$ mingw-cc filename -lglut32 -lglu32 -lopengl32 -mwindows
などとしてコンパイル。
できあがったファイルを、Windowsにもっていく。

Windowsサイドでは、
ftp://ftp.sgi.com/sgi/opengl/glut/glutdlls.zip
あたりからdllをもってきて保存。そして展開しておく。
展開したら、パスの通ったディレクトリか、さっきWindows側にもってきた、Linuxで作ったexeファイルのある場所と同じ場所に、glut32.dllとglut.dllをコピーする。

ここまでできたら、持ってきたexeを実行する。
で、下図のようになればOK。うれしいたのしい。ハッピーハッピー。

Linux/Windowsのクロスコンパイル環境の構築1

というわけで、coLinux+Debian(Lenny)+mingw-cc+OepnGLで、Windows上で動くOpenGLアプリをcoLinux上で作れる環境を整えてみようっていう話。

以前にetch上で整えたときに、時間があればまとめる的な話をしつつ、まったく手をつけていなかったのに、今回の再インストールという事態になったため、早めに残しておくことに。

まずは

# apt-get install mingw32 mingw32-binutils mingw32-runtime
で、必要なものを放り込む。

次に、
# locate mingw32
して、mingw32コンパイラなどの関連ファイルを見つける。
我が家のcoLinux+Debianでは、/usr/bin/i586-mingw32msvc-*としてコンパイラ群がインストールされていた。

そこで、これに対してシンボリックリンクを作成し、コンパイルの時打ち込むコマンドが少なくて済むようにする。
私はmingw-ccをCコンパイラに、mingw-c++をC++コンパイラに割り当てた。
全体で使うなら、コンパイラのあるディレクトリ内に一緒にシンボリックリンクを作成してもいいけど
個人で使うだけなら/home/user_name/binあたりに置いとくほうがいいかも。

リンクをはったら、
$ mingw-cc --version
とかして、うまくいってることを確認。

うまくいっていたら、Hello world.あたりを書いてコンパイルする。
コンパイルしてできたファイル(デフォルトならa.exe)をWindowsに移動させ、実行する。

うまくいったら、クロスコンパイル環境はできあがり。
(ここまでうまくいってれば、mathライブラリを使うときのコンパイルオプション-lmとかも普通に通るはず。)

まずはここまで。
OpenGL導入は次の記事で。