2011年8月30日火曜日

NFSによるディスクレスdebian,ubuntuクライアント

http://www.digriz.org.uk/debian-nfs-root
基本この通りやればok。

pxelinuxではなく、gpxe,ipxeを使う場合、
nfsroot=... などのオプションは、gpxeスクリプトのkernelコマンドでkernelイメージの後ろで指定し、
gpxeスクリプトのinitrdコマンドはinitramfsイメージだけを指定する。
最後にbootコマンドで起動開始。

ステレオミキサー録音をlinuxで行うには、snd-aloopを使えば良い

snd-aloop.koは、オーディオループバックデバイスで、(例えばskpyeが)再生したのを(例えばaudacityで)録音できる。

カーネルパッケージに入っていない場合、こちら方法で用意できるようだ。
現行debian,ubuntuにはsnd-aloop.koは入ってない。残念だ。

Public Domainクリップアートを探すならopenclipart

http://www.openclipart.org/
ここのクリップアートが便利で充実。Public Domainというのがすばらしい、ありがたや。

起動可能なisoイメージの中に、起動可能なddイメージ(usbフラッシュイメージ)になっているものがある、isohybridというらしい

詳しくはisohybrid - Palm84 某所の日記isohybridイメージの例

あまり関係ないが、KNOPPIXは、bootオプションにtoramを追加すると、
主記憶へDVD/CDの中身を一気に読み込んで快適に使えるようになるらしい。
ちなみに、読み込みのディスクアクセスは、linuxネイティブに切り替わった後なので、
toramをつけても、knoppixがiscsiドライバをもっていないので起動できない。

非常に残念。isoイメージをiscsiブートしたい。

2011年8月11日木曜日

ubuntu(11.04)をiscsiターゲットへインストールするのは簡単みたいです

Debian(妥協でUbuntu)をiscsiターゲットへ小細工なしの
標準的方法でインストールする方法を探した。
マニュアルは読まずにひたすら試す。

debian-6.0.2.1-amd64-netinst.iso
mini.iso (Index of /debian/dists/squeeze/main/installer-i386/current/images/netboot/)
ubuntu-11.04-desktop-amd64.iso

以上は、iscsiターゲットへログインする方法がわからなかった。
iscsiディスクを認識できないわけで、インストールできず。

mini.iso (Index of /ubuntu/dists/natty/main/installer-i386/current/images/netboot/)

こちらは、パーティションを切る (or その直前のダイアログ)のところで、
"login to iSCSI targets" だったかという選択肢があって、
それを選ぶとiscsiターゲットへログインでき、内臓HDDがあるのとホボ同じ手順でインストールできた。
今調べたら、
https://forums.ubuntulinux.jp/viewtopic.php?id=6473
Server版インストールCDを使えばでてくるメニューらしい・・・mini.isoじゃなくてもいいのかorz


インストール後、grubメニューの一番上ので普通に起動したところ、
initramfsがibftに従ってiscsiターゲットにログインしてくれてloginプロンプトに到達した。
ただし、NICの設定は、(固定アドレス設定ではなく)DHCPでインストールしたのだが、
(initramfs内で、ipconfigがDHCPでアドレス取得はしてくれるものの)
DHCPはとまっている(リースの更新なし)になっているようだった。
更新することは簡単だが、更新に失敗した場合、iscsiイニシエータの再起動と
NICのアドレス変更を同時に行う必要がある。
ディスクレスPCで、これは難しそうだ。
サスペンドからの復帰なんて、どうするんだろう・・・全く分からない。

固定アドレスにするしかないか。

2011年8月9日火曜日

/proc/uptimeとsysinfoのuptimeは同じだと思う

{関連ソース}

http://lxr.linux.no/#linux+v3.0.1/kernel/timer.c#L1520
1520int do_sysinfo(struct sysinfo *info)
...
1528        ktime_get_ts(&tp);
1529        monotonic_to_bootbased(&tp);
1530        info->uptime = tp.tv_sec + (tp.tv_nsec ? 1 : 0);

http://lxr.linux.no/#linux+v3.0.1/fs/proc/uptime.c
  20        do_posix_clock_monotonic_gettime(&uptime);
  21        monotonic_to_bootbased(&uptime);

http://lxr.linux.no/#linux+v3.0.1/include/linux/time.h#L153
 153#define do_posix_clock_monotonic_gettime(ts) ktime_get_ts(ts)



{メモ}
ktime_get_ts() , do_posix_clock_monotonic_gettime()
 monotonic time を得る
monotonic_to_bootbased()
 suspend中の時間を加えて、uptimeに変換する

xtime
 wall_clock
monotonic time
 Monotonic is peggedat zero at system boot time
 (bootからの時間。ただし、suspend中の時間を除く。)
wall_to_monotonic
 monotonic_time == xtime + wall_to_monotonic
 (通常、マイナスの値になる。)
total_sleep_time
 uptime         == xtime + wall_to_monotonic + total_sleep_time
 (suspendしていた時間の合計。bootからの時間であるuptimeを計算する際に使う)

boottime(bootした時刻)
 boottime       == xtime - uptime になることから、
                == - ( wall_to_monotonic + total_sleep_time ) という計算結果が得られる。