Gentoo Linux ネットブート (pxelinux)

Gentoo Linuxのネットブート関連のメモ。squashfs+aufsでブートするまで。

いろいろなwebサイト (Gentoo Linux ドキュメント – Gentooを用いたディスクレスノード, Gentoo Wiki Archives – HOWTO_Gentoo_Diskless_Install, etc.) を参考に、GentooのPXEブートにトライしていたが、どうもうまく行かず。

手始めにGentoo LiveのCDからgentoo.igz, gentoo (カーネル), image.squashfs をコピーして、そいつらを使って

APPEND initrd=gentoo-live/gentoo.igz ip=dhcp loop=gentoo-live/image.squashfs looptype=squashfs root=/dev/ram0 real_root=/dev/nfs nfsroot=172.29.4.10:/server/tftp udev nodevfs dodmraid cdroot

的な感じにしてトライ。
が、ブートできない。nfsマウントまで行かなかった。順次追っていく。

まずネットワークにつながっていないようだった。なのでまず現在動いている3.8.4のkernelとinitramfsをコピーして、LiveCDのgentoo, gentoo.igzと置き換えてみた。ネットワークドライバ (e1000e と r8169も一応) もちゃんとinitramfsに入れて。

→しかし起動せず。

仕方ないのでinitramfsのinitスクリプト色々見つつ、パラメータを追っていくとどうやらip=パラメータを指定しているとネットワークの設定 (udhcpc) が走らないようだったので、 APPENDパラメータの ip=dhcp を消した。

→とりあえずDHCPとnfsマウントまでできた。

あとはsquashfs+aufsで起動するようにする。aufsのパッチがデフォルトではカーネルに入って無いのでemerge aufs3する。後はカーネル起動時のパラメータにaufsを追加してOK。最終的にpxelinux.cfg/default の指定は下みたいな感じになった。

KERNEL boot/kernel-genkernel-x86_64-3.8.4-gentoo
INITRD boot/initramfs-genkernel-x86_64-3.8.4-gentoo
APPEND loop=images/gentoo-20130405.squashfs looptype=squashfs root=/dev/ram0 real_root=/dev/nfs nfsroot=xxx.xxx.xxx.xxx:/server/tftp udev nodevfs dodmraid cdroot aufs

ip=dhcpがいらないということに気づくまではしばらくつまづいて時間を食った。

まぁともかく、これで晴れて自在なイメージファイルでGentooをネットブートできるようになりました。めでたしめでたし。

島を意味する英単語

自分用メモ

  • island
  • isle
  • archipelago

 

ibus+anthyのかな打ちで「ぼ」が打てない (「ほ゛」になる)

いつぞやか更新したタイミングから「ぼ」が打てなくなった。

かな打ちなので「ほ」キーの後に「゛」(濁点) キーを押して入力するんだけど、どうもそれが別々の文字として出力されてしまう。

まぁ「ぼ」ぐらいいいかと思ったら、「スナガラボ」が打てないことに気がつき結構こまった。仕方ない、直すか。

まずそもそも日本語入力まわりなんていじったことないので、この機能の不具合がanthyのものなのかibusなのか、ibus-anthyなのか、はたまたまったく別のソフトの役割かすらも分からないところからスタートに。

とりあえずAnthyのソースコード落としてそれっぽい所を探したが見当たらず。というかそもそも2009年から更新されていない (この不具合は結構最近からだったと思う) ようなので、ここではないと判断。

次にibus-anthy。一旦落としてみると、engineディレクトリにそれっぽいものが。

/usr/share/ibus-anthy/engine/tables.py

 (484行目付近から)
kana_voiced_consonant_no_rule = {
    u'か' : u'が',
    u'き' : u'ぎ',
    u'く' : u'ぐ',

    ・・・

    u'ふ' : u'ぶ',
    u'へ' : u'べ',
}

kana_semi_voiced_consonant_no_rule = {
    ・・・

おお、あった。「ほ→ぼ」が抜けている。ビンゴ。
ここに「ぼ」のエントリを入れる。

    ・・・
    u'ふ' : u'ぶ',
    u'へ' : u'べ',
    u'ほ' : u'ぼ',  # <- 追加
}
    ・・・

一応、pycとpyoを削除

cd /usr/share/ibus-anthy/engine; rm tables.pyc tables.pyo

これで無事に入力できるようになりました。

なんかgitで最新版落としても「ぼ」が欠落してることもあるし、ibus-anthyの中のひとに報告した方がいいのかなぁ。

HTML5 Audio 対応表

HTML5 でサウンド鳴らすための規格。

ただし、jPlayer (http://www.jplayer.org/) を使えば古いIEやAndroidでもどうになかるもよう。

 

 

Mercurial入門の導入関連

大まかな概念図

Mercurialのリポジトリの概念

Mercurialのリポジトリの概念

Mercurial チートシート 日本語版 (カンペ的なもの)

困ったときは・・・

  • とりあえずcommit→push→pull→updateの流れを一周してみる
  • hg revertする
  • もう一旦あきらめて、新しくフォルダ作っちゃってhg cloneからやりなおす

MercurialのSSLエラー → [hostfingerprints]

スーパーemergeタイムかましてからなんかMercurialの様子がおかしくなった。

https://www.hogehoge.com/repository への反映中
中断: エラー: _ssl.c:504: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

SSL関連のエラー。今まではでなかった。証明書かえたわけでもなく。

どうやら1.7.4から設定ファイルにhostfingerprintsセクションなるものが出来て、それを設定しなければいけなかったらしい。

~/.hgrcに以下のようにfingerprintを追加したらなおった。

...
[hostfingerprints]
www.hogehoge.com = 11:22:33:44:55:66:77:88:99:10:aa:bb:cc:dd:ee:ff:1a:2b:3c:4d

ちなみに、cloneとかpush時に–insecureオプション追加してもとりあえずいけるっぽい。

Gentoo-Prefix上でMercurialのSSL関連エラー

Gentoo-Prefix@MacでMercurial使おうとしたら謎のエラー。

user@hogehoge ~/projects $ hg clone https://***.com/***
abort: Python SSL support not found

Python用のSSLが入っていないようだ。

とりあえずpythonをemerge -avしてみる。

taka@mobuild ~/projects $ emerge -av python

 * IMPORTANT: 3 news items need reading for repository 'gentoo_prefix'.
 * Use eselect news to read news items.

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R    ] dev-lang/python-3.3.0:3.3::gentoo [3.3.0:3.3::gentoo_prefix] USE="ipv6 ncurses readline sqlite* ssl threads xml -build -doc -examples -gdbm -tk -wininst" 0 kB

Total: 1 package (1 reinstall), Size of downloads: 0 kB

おやおや、SSLフラグは入っている。おかしいなぁ。

と思ったらPython 3をemergeしていた。スロット分けされている2.7の方をemerge -avしてみると・・・

taka@mobuild ~/projects $ emerge -av "<=dev-lang/python-3.0"

 * IMPORTANT: 3 news items need reading for repository 'gentoo_prefix'.
 * Use eselect news to read news items.

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R    ] dev-lang/python-2.7.3-r2:2.7::gentoo [2.7.3-r2:2.7::gentoo_prefix] USE="aqua ipv6* ncurses readline* sqlite* ssl* threads (wide-unicode) xml (-berkdb) -build -doc -examples -gdbm -tk -wininst" 0 kB

Total: 1 package (1 reinstall), Size of downloads: 0 kB

ビンゴ。sslフラグが入ってませんでした。

Gentoo Prefixはデフォルトではsslフラグ入って無いんですね。Python 3のほうは入ってるのに。まぁなんか事情があるんでしょう。

とりあえず無事にhg cloneできるようになりましたとさ。

 

Titanium Mobile で Facebookログインをするとき

AndroidとiPhone同時進行の案件をやっているので、唐突ながらTitaniumを使ってみることにした。

まぁなんか思ったより結構いろいろとできるのね。

それでとりあえずが最初に引っかかったところ。Facebookログイン。

見よう見まねでとりあえずログインボタン作って、Facebook Appに登録して・・・見たいな事を一通りしたらかなりあっさりログインまでできた。

が、問題が一つ。どうあがいてもWebView的なのがポップアップしてログインIDとパスワードを求められてしまう。

本当は端末にインストールしてあるFacebookアプリに引き継いで、そのセッション情報を使いたい。つまり、パスワードを何度も入れさせたくない、ということだったので、これだと困る。

いろいろとあさっていると、どうやらやりたいことはSingle-Sign-On (SSO) と呼ばれているらしいこととか、Facebook側の管理画面をちゃんと設定しろ、とか、拡張を使えば出きるよ、とかいろいろと情報がでてきたが解決できず。

最終的にたどり着いて (とりあえずAndroidに関しては) 解決したのが「Titanium.Facebook.forceDialogAuth」をfalseに設定すること。

これでとりあえずAndroidではうまく動いた。Facebookアプリが起動して、そこからセッション情報を引き継いでくれた。 (iOSは未確認。またFacebookアプリが入っていない場合も未確認。だがきっとうまく動いてくれるに違いない。違いない。)めでたしめでたし。

多分ちゃんとマニュアルを舐めるように読めばかいてあるんだろうな。あんまみんな悩んでなかったっぽいし。

iPadでも早めに試しておこう。

(参考: API for Titanium.Facebook.forceDialogAuth)

window.showModalDialog

JavaScript で簡単にModalDialogチックなのだそうとしてて、window.openとか使って適当にやろうかと思ってたけど、それ専用のAPIがあるんですね。知らなかった。

  • window.showModalDialog(url [, arg [, opt]]) – モーダルダイアログとしてURLを開く
  • window.showModelessDialog(url [, arg [, opt]]) – 非モーダルのダイアログを開く
  • window.dialogArguments – 与えられたパラメータ?
  • window.returnValue – 戻り値

呼出側は

var result = window.showModalDialog('./hoge');\

とやればいいし、ダイアログ側は閉じるときに

returnValue = {戻り値};
close();

とかやればいい。

Gnome 3 の nautilus でのファイルパスバー表示関連

(From: http://forums.fedoraforum.org/archive/index.php/t-270436.html)

  • 設定で固定化する→dconf-editor で org > gnome > nautilus > preferences で 「always using a location」をいじる
  • ショートカットキー→ CTRL + L (デフォルト)
  • フルパス入れる場合は / キーが使える