colinuxをFC6に
FedoraCore6のイメージがあったので入れなおしてみた。
http://sourceforge.net/project/showfiles.php?group_id=98788
の Root FS Images - 2.6.x-based ってところから、FedoraCore6-20070502.exeをダウンロード。
解凍すると4GBのイメージになる。
WinPcapとかcoLinuxの設定はcoLinux install memo(FedoraCore5 RootFS) - vimとかと同じ。
FC5のときにはまったpasswdもちゃんと使えたし、ssh接続も特に支障なくできた(変なメッセージは出たけど。後述)。
固定IPを割り振る,DNSとか(sample)
デフォルトでDHCPになっている。サービス登録して使用したいので変更。
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 BOOTPROTO=static IPADDR=192.168.0.100 NETMASK=255.255.255.0 GATEWAY=192.168.0.1 NETWORK=192.168.0.0 ONBOOT=yes
vi /etc/resolv/conf
nameserver 192.168.0.1
設定反映
ifdown eth0 ifup eth0
とやってみたけどうまくいかなかったからネットワーク再起動した。
/etc/init.d/network restart
よくわかんないメッセージ
sshでログインしたら
[1]+ Terminated echo >/dev/tcp/10.0.2.2/7000
というメッセージが。調べたらESD?とかなんとか書いてあったんですけど、スピーカー?そんなのは今必要としていないから潰す。
/etc/profile.d/espeaker.sh
を全部#でコメントアウトしてcolinux再起動。
時刻あわせ
ntpの設定。とりあえずバックアップをとる。
mv /etc/ntp.conf /etc/ntp.conf.bak
ntp.confの作成(/etc/ntp.conf)
server ntp1.jst.mfeed.ad.jp server ntp2.jst.mfeed.ad.jp server ntp3.jst.mfeed.ad.jp driftfile /var/lib/ntp/drift keys /etc/ntp/keys
/var/lib/ntp/driftの作成。
touch /var/lib/ntp/drift
自動起動の設定。
chkconfig --level 234 ntpd on
ntpdを起動する前に、一旦手動で時刻あわせを実行。
ntpdate ntp.jst.mfeed.ad.jp
ntpd起動。
/etc/init.d/ntpd start
動作確認。
ntpq -p
先頭に'*'や'+'が表示されればOK。ただし、同期を開始するまでに1分少々時間がかかる。その間は空白で表示される。コーヒータイム。
タイムゾーン
mv /etc/localtime /etc/localtime.bak cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
ウィンドウ番号入れ替え2
ウィンドウ番号入れ替え - vimとかでやり方は分ったけど、
bindする方法が分らない。
bind N number
とした場合、今のウィンドウ番号とタイトルが表示されるだけだし、
bind N number 1
としたら使い勝手が悪すぎる><
というわけで、ソース(4.0.2 + screen install memo (UNIX)のパッチあてたバージョン)をいじってしまいました。
numberコマンドの動作はそのままで、引数で"-i"が指定されるとウィンドウ番号の入力を求めるようにしてみました。
C-a Nでウィンドウ番号表示とかしないので、
bind N number -i
として使っています。
ソースいじらないでも出来るwwwって人はぜひ教えてください><
ついでにソース晒し。
process.cのDoAction関数の上に以下の関数3つを書く。
static void WindowNumberChange(n) int n; { struct display *odisplay = display; int old = fore->w_number; struct win *p = wtab[n]; wtab[n] = fore; fore->w_number = n; wtab[old] = p; if (p) p->w_number = old; #ifdef MULTIUSER /* exchange the acls for these windows. */ AclWinSwap(old, n); #endif #ifdef UTMPOK /* exchange the utmp-slots for these windows */ if ((fore->w_slot != (slot_t) -1) && (fore->w_slot != (slot_t) 0)) { RemoveUtmp(fore); SetUtmp(fore); } if (p && (p->w_slot != (slot_t) -1) && (p->w_slot != (slot_t) 0)) { /* XXX: first display wins? */ display = fore->w_layer.l_cvlist ? fore->w_layer.l_cvlist->c_display : 0; RemoveUtmp(p); SetUtmp(p); } #endif WindowChanged(fore, 'n'); WindowChanged((struct win *)0, 'w'); WindowChanged((struct win *)0, 'W'); WindowChanged((struct win *)0, 0); if (display != odisplay) { for (display = displays; display; display = display->d_next) if (display == odisplay) break; } } static void SelectWindowNumberFin(buf, len, data) char *buf; int len; char *data; /* dummy */ { int i; char* p; if (!len || !display) return; p = buf; i = 0; while (*p) { if (*p >= '0' && *p <= '9') i = 10 * i + (*p - '0'); else { Msg(0, "%s: invalid argument. Give numeric argument.", rc_name); return; } p++; } if (i < 0 || i >= maxwin) return; WindowNumberChange(i); } static void InputSetWindowNumber() { Input("Set window's number to: ", 20, INP_COOKED, SelectWindowNumberFin, NULL); }
あと、これも同じくprocess.cのDoAction関数内にある巨大なswitch分の case RC_NUMBER: を以下のように書き換える。
case RC_NUMBER: if (*args == 0) { Msg(0, "This is window %d (%s).\n", fore->w_number, fore->w_title); break; } if (!strcmp(*args, "-i") && !args[1]) { InputSetWindowNumber(); } else { if (ParseNum(act, &n) || n >= maxwin) break; WindowNumberChange(n); } break;
以上です。
xmleditプラグイン
htmlで自動的に終了タグを挿入してくれるプラグインを探していたときに
xmledit : XML、HTML、SGMLドキュメントのタグ編集操作サポートプラグイン — 名無しのvim使いで発見したのですが、
どうやらインストール方法が変更されているのでメモ。
fedoracoreで試しました。
他OSで使用される場合はパスをそれぞれ置き換えてください。
インストール
http://www.vim.org/scripts/script.php?script_id=301
からxml.vimをダウンロードし、~/.vim/ftplugin/に格納。
~/.vim/ftpluginフォルダが無い場合は作成してください。
.vimrcに
filetype plugin on
が定義されていればxmlファイルを開くと自動的に適用されます。
初回起動時にdocファイルが作成される。(~/.vim/doc/xml-plugin.txt)
このファイルを見るとhtml.vimのsample codeが記載されているので、
これをコピペして ~/.vim/ftplugin/html.vim を作成します。
xml-plugin.txtが作成されない場合はvimを起動して
:source ~/.vim/ftplugin/xml.vim
としてみてください。それでも作成されない場合はがんばって調べて><
あとは
:helptags ~/.vim/doc/
でtagsファイルを更新しておきます。
使ってみる
タグで囲む
vで文字列を選択し、下のコマンドを入力します。
(<LocalLeader>はdefaultでは"\"です)
<LocalLeader>x
タグ名とアトリビュートを聞かれるので、指定します(空白可)。
ここではタグ名を div、アトリビュートを id="name"と指定したとします。
<div id="name">選択した文字列</div>となります。
タグ削除
削除したいタグにカーソルを合わせ、下のコマンドを入力します。
<LocalLeader>d
対応タグにジャンプ
タグにカーソルを合わせ、下のコマンドを入力します。
<LocalLeader>5
(5は%の代わりじゃないかな)
オプション
デフォルトでは">"が入力されたときに補完されるのですが、
これを変更するには.vimrcに
let xml_tag_completion_map = "<C-l>"
とします。上記設定だとインサートモード時にCTRL-Lで補完してくれるようになります。
またdefaultでは<br>を入力しても<br />にはしてくれませんが、.vimrcに
let xml_use_xhtml = 1
と書くことで<br />と補完してくれるようになります。
他のオプションは :help xml-plugin-settings で参照してください><
コールバック
<hoge>と入力すると</hoge>を補完してくれますが、
例えばhtmlで<body>と入力すると<body bgcolor="white"></body>となってしまいます。
これを自分好みに変更するように設定します。
.vimrcに以下のfunctionを記述します。(sampleです)
"xmlファイルのときに呼ばれる function XmlAttribCallback(xml_tag) if a:xml_tag ==? "hoge" return "default=\"attributes\"" else return 0 endif endfunction "htmlファイルのときに呼ばれる function HtmlAttribCallback(xml_tag) if a:xml_tag ==? "a" return "href=\"\"" else return 0 endif endfunction
このsampleだと、xml編集中に<hoge>を入力すると<hoge default="attributes"></hoge>となり、
html編集中に<a>を入力すると<a href=""></a>となります。
if a:xml_tag ==? "タグ名" を記述して自分好みにカスタマイズしてください。
(:help xml-plugin-callbacks)
ウィンドウ番号入れ替え
ずっとやり方が分らなくてパッチ書くしかないと思ってソースを見ていて、
ここに書けばいいというところまでは当たりをつけた。
ちょっと調べたいことがあってhttp://www.linux.or.jp/JM/html/GNU_screen/man1/screen.1.htmlを見たら発見してしまった><
number [n]
でできるよ!
C-A、:(コロン)と入力するとコマンド入力できるようになるので、
そこで"number 1"と入力するとウィンドウ番号を変更することが出来る。
今のウィンドウの番号と入力されたウィンドウの番号が一緒なら変更されないし、
既に存在するウィンドウの番号を指定した場合は入れ替えとなる。
存在しないウィンドウ番号なら今のウィンドウ番号が変更されるだけ。
リファレンスはちゃんと読もう><
表示がずれるのを直した
前から気にはしていたのだけど、screenを使ってw3mを実行するとズレまくるのを調べてみた。
screen install memo (UNIX)
このサイトのとおりにやって見たらズレなくなった。
違うのはscreen-4.0.2を落としたのと、configureに--enable-colors256を指定したくらい。
4.0.2のソースはhttp://www.gnu.org/prep/ftp.htmlにいって適当に落としてきました。
4.0.4で修正されることを期待。
substitute(置換)
:s
:s/a/b/
でaをbに置き換えできる。
これは現在行の最初にaがマッチする箇所しか適用されない。
つまりカーソルがある行が
aaa
だった場合、
baa
となる。
&コマンド
前回実行した:sを再度実行する。
g&コマンド
前回実行された:sを:%s(全行に適用)してくれる。
これは知らなかった。。。
coLinux install memo(FedoraCore5 RootFS)
colinux(バージョン:0.64)とFedoraCoreのイメージをダウンロード。
colinuxはstable、FedoraCoreはRoot FS Images - 2.6.x-basedってところから。
http://sourceforge.net/project/showfiles.php?group_id=98788
install
落としてきたcoLinux-0.6.4.exeを実行し、インストール。
今回はWinPcapを使用するのでインストーラでTAPは解除しておく。
インストールパスは「C:\colinux\」に変更。
途中でWinPcapのダウンロードサイトURLが表示されるので、選択してダウンロードしておく。
インストールが終わったらWinPcapをインストール。
再起動を要求されるので再起動する。
(再起動を要求されないこともあるらしいです。ネットワーク接続ができない時は再起動するとなおるかもしれません)
FedoraCoreのイメージをcolinuxインストールフォルダに解凍する。
ちなみに落としてきたのは「FedoraCore5-2006.8-ext3-2gb.7z」。
7zipなのね。一緒にbatファイルが入っていたけど必要ないので削除。
ファイル名を「root.ext3」に変更(必須ではない)。
swapのイメージを探していたら親切な人が公開していたので利用させていただく。
サイズはお好きなものをどうぞ。
http://gniarf.nerim.net/colinux/swap/
これもcolinuxのインストールフォルダに解凍。
解凍したファイルの名前を「swap_device」に変更(必須ではない)。
C:\colinux\default.colinux.xmlを編集。
<?xml version="1.0" encoding="UTF-8"?> <colinux> <block_device index="0" path="\DosDevices\c:\coLinux\root.ext3" enabled="true" /> <block_device index="1" path="\DosDevices\c:\coLinux\swap_device" enabled="true" /> <bootparams>root=/dev/cobd0 fastboot nogui</bootparams> <initrd path="initrd.gz" /> <image path="vmlinux" /> <memory size="512" /> <network index="0" name="Local Area Connection" type="bridged" /> </colinux>
で、重要なのがnetworkのとこ。
スタートメニュー→設定→ネットワーク接続を開いて「ローカルエリア接続」を「Local Area Connection」にリネームする。
colinuxが0.62以前は「ネットワーク・アダプタ名」を指定する(はず)けど、「ネットワーク接続の名前」になった。
これでWinPcap接続ができるようになる。
password変更できねー
passwdしてもエラー発生。
/usr/share/cracklib/pw_dict: error reading header
こんなメッセージが。
ファイルサイズ0だし。
cracklibをインストールしなおせば直るらしいので再インストール。
yum install yum-utils yumdownloader cracklib-dicts rpm -Uvh --replacepkgs cracklib-dicts-xxxxx.rpm ←落としてきたファイルの名前で
ssh
sshでログインできるようにする。
sshdをインストールし起動する。
yum install openssh-server /etc/init.d/sshd start
puttyでアクセスするんだけど、
Server refused to allocate pty
と表示されたままログインできない。
とりあえずCTRL+Dで終了させる。
いろいろ調べたところ解決方法がずばり書いてあるところを発見。
CoLinux + Fedora Core 5 RootFS - group.silver.arrow - silver-arrowグループ
/etc/udev/makedev.d/50-udev.nodes に
tty0 ptmx
を追加して再起動すればOK。
ネットワーク
わざわざcolinux-daemon.exeを実行するのは面倒だし、サービス登録して利用するつもりなので、DHCPだと困る。
デフォルトはDHCPになっているのでstaticに変更する。
yum install system-config-network-tui
した後に、system-config-network を実行して設定してあげる。
coLinuxをサービス登録
一旦colinuxを終了させる。
次のコマンドを実行するとサービス登録できる。
colinux-daemon.exe -c default.colinux.xml --install-service "colinux"
逆にサービスを解除したい場合は
colinux-daemon.exe --remove-service "colinux"
でOK。「"colinux"」のところはお好きな名前で。
登録はされたけど起動はしてないので起動する。
「コントロールパネル」→「管理ツール」→「サービス」で一覧が表示されるので、
先ほど登録した名前(colinux)を選択して右クリック。
ここで開始を選んでもいいけど、Windowsの起動時に自動起動にしたいのでプロパティを選択。
スタートアップの種類で「自動」を選び、更新。
そしてサービスを開始させる。