Solaris8(SPARC) でSCSI DAT 認識

Solaris8(SPARC) でDAT が動かないと言われてみてきた.

# /usr/sbin/cfgadm -al
Ap_Id                          Type         Receptacle   Occupant     Condition
c0                             scsi-bus     connected    configured   unknown
c0::dsk/c0t0d0                 CD-ROM       connected    configured   unknown
c1                             scsi-bus     connected    configured   unknown
c1::dsk/c1t0d0                 disk         connected    configured   unknown
c1::dsk/c1t1d0                 disk         connected    configured   unknown
c1::dsk/c1t2d0                 disk         connected    configured   unknown
c2                             scsi-bus     connected    configured   unknown
c2::rmt/0                      tape         connected    configured   unknown

ぱっと見問題なさそう.
でも,動かない

# mt status
/dev/rmt/0n: no tape loaded or drive offline
# mt offline
/dev/rmt/0n: no tape loaded or drive offline

念のためcfgadm -c configure をしてみる.

# /usr/sbin/cfgadm -c configure c2::rmt/0

ステータスは変わらないけど,

# /usr/sbin/cfgadm -al
Ap_Id                          Type         Receptacle   Occupant     Condition
c0                             scsi-bus     connected    configured   unknown
c0::dsk/c0t0d0                 CD-ROM       connected    configured   unknown
c1                             scsi-bus     connected    configured   unknown
c1::dsk/c1t0d0                 disk         connected    configured   unknown
c1::dsk/c1t1d0                 disk         connected    configured   unknown
c1::dsk/c1t2d0                 disk         connected    configured   unknown
c2                             scsi-bus     connected    configured   unknown
c2::rmt/0                      tape         connected    configured   unknown

使えるようになった.

# mt status
HP DDS-4 DAT (Sun) tape drive:
   sense key(0x6)= Unit Attention   residual= 0   retries= 0
   file no= 0   block no= 0
# mt fsf
# tar tv | more
--snip--
# mt rewind
# mt offline

多分,本体電源導入前にDAT の電源が入っていなかったせいだと思うので,とりあえずマシン起動時に周辺機器の電源を先に入れてくださいとお願いしておいた.

停電でTomboy が起動しなくなったけどどうにか直った

輪番停電大変ですね.
停電時にうっかりマシンを落としてしまいTomboy が起動しなくなってしまいました.
とりあえず以下の手順で起動するようになったのでメモ.


コマンドライン上で,tomboy として起動を試みます.起動しないと思いますが,メッセージがズラズラ出てきます.

% tomboy
Gtk-Message: (for origin information, set GTK_DEBUG): failed to retrieve property `gtk-enable-event-sounds' of type `gboolean' from rc file value "((GString*) 0x10076a0)" of type `gboolean'
Gtk-Message: (for origin information, set GTK_DEBUG): failed to retrieve property `gtk-enable-input-feedback-sounds' of type `gboolean' from rc file value "((GString*) 0xf1d5a0)" of type `gboolean'
Gtk-Message: (for origin information, set GTK_DEBUG): failed to retrieve property `gtk-button-images' of type `gboolean' from rc file value "((GString*) 0x10078e0)" of type `gboolean'
Gtk-Message: (for origin information, set GTK_DEBUG): failed to retrieve property `gtk-menu-images' of type `gboolean' from rc file value "((GString*) 0x1008120)" of type `gboolean'
[INFO 16:59:30.257] Initializing Mono.Addins
Exception in Gtk# callback delegate
  Note: Applications can use GLib.ExceptionManager.UnhandledException to handle the exception.
System.IO.IOException: Invalid handle to path "/home/mk/.local/share/tomboy/dd71fac5-207f-41aa-93c6-6e2a53fce994.note"
  at System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean anonymous, FileOptions options) [0x00000] in <filename unknown>:0 
  at System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share) [0x00000] in <filename unknown>:0 
  at (wrapper remoting-invoke-with-check) System.IO.FileStream:.ctor (string,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare)
  at System.IO.File.OpenRead (System.String path) [0x00000] in <filename unknown>:0 
  at System.IO.StreamReader..ctor (System.String path, System.Text.Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize) [0x00000] in <filename unknown>:0 
  at System.IO.StreamReader..ctor (System.String path, System.Text.Encoding encoding) [0x00000] in <filename unknown>:0 
  at (wrapper remoting-invoke-with-check) System.IO.StreamReader:.ctor (string,System.Text.Encoding)
  at Tomboy.NoteArchiver.ReadFile (System.String read_file, System.String uri) [0x00000] in <filename unknown>:0 
  at Tomboy.NoteArchiver.Read (System.String read_file, System.String uri) [0x00000] in <filename unknown>:0 
  at Tomboy.Note.Load (System.String read_file, Tomboy.NoteManager manager) [0x00000] in <filename unknown>:0 
  at Tomboy.NoteManager.LoadNotes () [0x00000] in <filename unknown>:0 
  at Tomboy.NoteManager.Initialize () [0x00000] in <filename unknown>:0 
  at Tomboy.Tomboy+<Main>c__AnonStorey2.<>m__0 () [0x00000] in <filename unknown>:0 
  at GLib.Timeout+TimeoutProxy.Handler () [0x00000] in <filename unknown>:0 
   at GLib.ExceptionManager.RaiseUnhandledException(System.Exception e, Boolean is_terminal)
   at GLib.Timeout+TimeoutProxy.Handler()
   at Gtk.Application.gtk_main()
   at Gtk.Application.Run()
   at Gnome.Program.Run()
   at Tomboy.GnomeApplication.StartMainLoop()
   at Tomboy.Application.StartMainLoop()
   at Tomboy.Tomboy.StartTrayIcon()
   at Tomboy.Tomboy.Main(System.String[] args)
% rm /home/mk/.local/share/tomboy/dd71fac5-207f-41aa-93c6-6e2a53fce994.note

/home/mk/.local/share/tomboy/dd71fac5-207f-41aa-93c6-6e2a53fce994.note がなんかおかしいようです.
ls -l で確認すると0バイトだったので消して再度起動すると最新のデータは消えてましたが治りました.


これはeCryptFS のせいかもしれませんが,同じようになって困っている人が要るかもしれないので情報共有まで.

Linux でEye-fi の設定をする-Open Eye-Fi Configuration Tool-

Eye-fi card を設定するのにMac を使っているのですが,最近Mac の利用時間が減ってるのもあって面倒に.
Linux でも出来ないかなと思って探してみたらEye-Fi Configuration Tool というものを見つけました.

Open Eye-Fi Configuration Tool
http://sr71.net/projects/eyefi/

早速使ってみます.
先ずはBuild

$ wget http://sr71.net/projects/eyefi/eyefi-config-010.tar.gz
$ tar tvzf eyefi-config-010.tar.gz 
$ tar xzf eyefi-config-010.tar.gz 
$ cd eyefi-config-010/
$ make
$ ./eyefi-config
Usage:
  eyefitest [OPTIONS]
  -a ESSID      add network (implies test unless --force)
  -t ESSID      test network
  -p KEY        set WPA key for add/test
  -r ESSID      remove network
  -s            scan for networks
  -c            list configured networks
  -b            reboot card
  -f            print information about card firmware
  -d level      set debugging level (default: 1)
  -k            print card unique key
  -l            dump card log
  -m            print card mac
$ cp -p ./eyefi-config ~/usr/local/bin

SD card slot にEye-fi card を刺して以下のようにして利用します.
※付属のUSB アダプタ経由だと認識しないようです.

  • ネットワークの検索
$ ./eyefi-config -s
located EyeFi card at: '/media/Eye-Fi'
Scanned wireless networks:
security:  WEP, strength:  32 essid: 'FLETS-SPOT'
security: none, strength:  32 essid: 'wifine'
security:  WEP, strength:  32 essid: 'docomo'
security:  WEP, strength:  31 essid: '0033'
security:  WPA, strength:  19 essid: '0024A5E1864E'
security:  WEP, strength:  13 essid: 'FLETS-SPOT'
security:  WEP, strength:  13 essid: 'docomo'
security:  WEP, strength:  12 essid: 'FLETS-SPOT'
security:  WPA, strength:  11 essid: 'jp2'
security: WPA2, strength:  11 essid: 'WARPSTAR-DA22F7-G'
security:  WEP, strength:  10 essid: 'docomo'
security:  WEP, strength:   9 essid: 'WARPSTAR-D255A7-W'
security: none, strength:   9 essid: 'BBUser'
security:  WEP, strength:   8 essid: 'docomo'
security:  WEP, strength:   7 essid: 'jp2-W'
security:  WEP, strength:   7 essid: 'FLETS-SPOT'
security:  WPA, strength:   6 essid: '7B60C5CE6099485D0AC1D9B806E6FACF'
  • ネットワーク接続テスト
$ ./eyefi-config -t WARPSTAR-xxxxxx-G -p 'PASSPHRASE'
located EyeFi card at: '/media/Eye-Fi'
trying to connect to network: 'WARPSTAR-xxxxxx-G'
 with passphrase: 'PASSPHRASE'
 interpreting passphrase as ASCII WPA key (32 bytes)

Testing connecion to 'WARPSTAR-xxxxxx-G' (3): waiting for DHCP........
Testing connecion to 'WARPSTAR-xxxxxx-G' (4): testing connection to Eye-Fi server......
Testing connecion to 'WARPSTAR-xxxxxx-G' (5): success
Succeeded connecting to: 'WARPSTAR-xxxxxx-G'

※失敗することもあるようなのでその場合は再度試してみると良いかもしれません.

  • ネットワーク登録
$ ./eyefi-config -a WARPSTAR-xxxxxx-G -p 'PASSPHRASE'
located EyeFi card at: '/media/Eye-Fi'
trying to connect to network: 'WARPSTAR-xxxxxx-G'
 with passphrase: 'PASSPHRASE'
 interpreting passphrase as ASCII WPA key (32 bytes)

Testing connecion to 'WARPSTAR-xxxxxx-G' (2): verifying network key.....
Testing connecion to 'WARPSTAR-xxxxxx-G' (3): waiting for DHCP.
Testing connecion to 'WARPSTAR-xxxxxx-G' (4): testing connection to Eye-Fi server......
Testing connecion to 'WARPSTAR-xxxxxx-G' (5): success
Succeeded connecting to: 'WARPSTAR-xxxxxx-G'
 interpreting passphrase as ASCII WPA key (32 bytes)

※設定時に接続テストを行うので,設定時に存在しないネットワークを登録する場合は--force を付けてテストをパスさせます.

  • ネットワーク設定削除
$ ./eyefi-config -r WARPSTAR-xxxxxx-G
located EyeFi card at: '/media/Eye-Fi'
  • 設定ネットワーク表示
$ ./eyefi-config -c
located EyeFi card at: '/media/Eye-Fi'
configured wireless networks:
'OSC2Fa'
'WARPSTAR-xxxxxx-G'

という感じで普通に使えそうです.

その他以下のようなオプションも

  • card 再起動
$ ./eyefi-config -b
rebooting card...located EyeFi card at: '/media/Eye-Fi'
done
  • fw 表示
$ ./eyefi-config -f
located EyeFi card at: '/media/Eye-Fi'
card firmware (len: 27): '4.2172 Jan 31 2011 13:22:01'
  • debug level 設定
$ ./eyefi-config -d 5
set debug level to: 5
after arguments1 essid: '(null)' passwd: '(null)'
$ ./eyefi-config -d 1
set debug level to: 1
  • uniq key 表示
$ ./eyefi-config -k
located EyeFi card at: '/media/Eye-Fi'
card key (len: 32): 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
  • log 表示
$ ./eyefi-config -l
located EyeFi card at: '/media/Eye-Fi'
fetching EyeFi card log part 1/4...done
fetching EyeFi card log part 2/4...done
fetching EyeFi card log part 3/4...done
fetching EyeFi card log part 4/4...done
...
[01:10] Done scanning for new media (detected 2131 MB in all media). Uploads pending.
[01:10] Done scanning for all photos. Uploads pending.
[01:10] None of the 0 configured wireless networks detected among the 0 within range.
[01:11] Starting scan of media directories...
[01:12] Done scanning for new media (detected 2131 MB in all media). Uploads pending.
[01:12] Done scanning for all photos. Uploads pending.
[01:12] None of the 0 configured wireless networks detected among the 0 within range.
[01:12] ---------------- SCAN-P -----------------------
[01:14] Scan complete
[00:00] Eye-Fi firmware 4.2172 Jan 31 2011 13:22:01 started (1), hardware revision 1, 7806/32 MB, 00-18-56-41-a6-92
[00:01] Marvell 8786 firmware version 12.55.6.p106 running, xtal offset 0/9.
[00:06] Card is in online and desktop (0xc233) transfer mode (timestamp  1299259670), geo-tagging is enabled, hotspots are enabled.
[00:06] Using sync mode AUTO.
[00:06] ---------------- SCAN-P -----------------------  
[00:06] Starting scan of media directories...
[00:06] Done scanning for new media (detected 2131 MB in all media). Uploads pending.
[00:06] Done scanning for all photos. Uploads pending.   
[00:06] None of the 2 configured wireless networks detected among the 2 within range.
[00:07] Starting scan of media directories...
[00:07] Done scanning for new media (detected 2131 MB in all media). Uploads pending.
[00:07] Done scanning for all photos. Uploads pending.   
[00:07] None of the 2 configured wireless networks detected among the 3 within  range.
[00:08] Scan complete
--snip--
  • mac adress 表示
$ ./eyefi-config -m
located EyeFi card at: '/media/Eye-Fi'
card mac address: 00:18:56:xx:xx:xx


他にもLinux で動作するEye-fi Server なんかもあるようなので試してみる予定です.

Linux/Eye-Fi - matoken's wiki.
http://hpv.cc/~maty/pukiwiki1/index.php?Linux%2FEye-Fi#u456d9df

Eye-Fi メモリーカード: お使いのカメラから、大切な写真を自動でバックアップ、アップロード。
http://www.eyefi.co.jp/

OpenSSH 5.7p1 で新しい鍵形式(ECDSA)の警告

OpenSSH 5.7p1 をセキュリティフィクスがなかったのでゆっくり目の導入をしていたのですが,build 終わって起動時に警告が.

# /usr/local/sbin/sshd
Could not load host key: /usr/local/etc/ssh_host_ecdsa_key

ECDSA というのは今回新しくサポートされた形式です.
ということで,以下のような感じで生成してみます.

# ssh-keygen -f /usr/local/etc/ssh_host_ecdsa_key -t ecdsa -N ''
Generating public/private ecdsa key pair.
Your identification has been saved in /usr/local/etc/ssh/ssh_host_ecdsa_key.
Your public key has been saved in /usr/local/etc/ssh/ssh_host_ecdsa_key.pub.
The key fingerprint is:
2d:a2:04:63:67:87:74:05:21:45:32:c8:0e:9b:1c:25 root@hoge
The key's randomart image is:
+--[ECDSA  256]---+
| E.o=o*+.        |
|..+. *           |
|.== + .          |
|oo.= .   .       |
|    . . S .      |
|   . . . .       |
|    .            |
|                 |
|                 |
+-----------------+

※念のため鍵指紋とかはダミー

こんどは警告出ませんでした.

5.7p1 他には-3 とか帯域制限がscp 以外でも使えそうとかのあたりも面白そうですね.
ちなみにこれは既にやってたし今回1.0.0c でbuild してるんですがまずいのかな…

* Support building against openssl-1.0.0a

- OpenSSH
http://www.openssh.org/
- Changes since OpenSSH 5.6
http://www.openssh.org/txt/release-5.7
- OpenSSH情報
http://www.unixuser.org/~haruyama/security/openssh/
- OpenSSH情報 - OpenSSH 5.7/5.7p1
http://www.unixuser.org/~haruyama/security/openssh/20110124.html

KVM libvirt 環境のホストマシンシャットダウン時の自動サスペンド,起動時の自動レジューム

縫いツリー
KVM で遊んだりしています.今はlibvirt で管理しているのですが,ゲストが起動したままホストをシャットダウンするとそのままゲストはぶち切りされてしまいます.これはよろしくないのですがいちいちシャットダウンしていくのも面倒.
そんな向きにDebianSqueeze/Ubuntu10.10 には/usr/share/doc/libvirt-bin/examples/ 以下にscript が用意してあったので有効になるよう設定します.
#他の環境でもあるかも

$ ls -la /usr/share/doc/libvirt-bin/examples/libvirt-suspendonreboot 
-rw-r--r-- 1 root root 1383 2010-10-01 20:08 /usr/share/doc/libvirt-bin/examples/libvirt-suspendonreboot
$ sudo cp /usr/share/doc/libvirt-bin/examples/libvirt-suspendonreboot /etc/init.d/
$ sudo chmod 755 /etc/init.d/libvirt-suspendonreboot
$ sudo mkdir -p /var/lib/libvirt/autosuspend
$ sudo update-rc.d libvirt-suspendonreboot defaults 21 19
update-rc.d: using dependency based boot sequencing

$ find /etc/rc?.d -name "*libvirt-suspendonreboot"
/etc/rc0.d/K01libvirt-suspendonreboot
/etc/rc1.d/K01libvirt-suspendonreboot
/etc/rc2.d/S21libvirt-suspendonreboot
/etc/rc3.d/S21libvirt-suspendonreboot
/etc/rc4.d/S21libvirt-suspendonreboot
/etc/rc5.d/S21libvirt-suspendonreboot
/etc/rc6.d/K01libvirt-suspendonreboot

これで,ホストシャットダウン時に起動しているゲストをサスペンドに,ホスト起動時にサスペンドマシンがあったらレジュームしてくれます.
便利ー.

中では,virsh save/virsh restore をやっています.

- Linux/KVM - matoken's wiki.
http://hpv.cc/~maty/pukiwiki1/index.php?Linux/KVM

date コマンドで昨日の日付を求める

shell script やcrontab なんかで昨日の日付を求めるのに計算するのはめんどくさいなと常々思っていたのですが,GNU date コマンドで出来るのを知りました.

$ date --date '1 day ago'
$ date -d '1 day ago'

1の部分を7にすれば7日前ですし,30にすれば30日前です.

他にも
$ date --date='1 months ago'
1月前
$ date --date='1 months ago 1day ago'
1月と1日前
$ date --date='3 months'
3ヶ月後

といったことも可能です.

format option も同時に利用できるので,以下のようなことも.

rsync -avv --delete --exclude-from=/export/home/mk/denylist --link-dest=/export/home/mk/`/bin/date -d '1 day ago' +%Y%m%d`/ /home/mk/ /export/home/mk/`date +%Y%m%d`/

rsync で前日のバックアップとの差分を今日のディレクトリ名の場所にバックアップしています.

GNU date の機能のようで,Solaris の/bin/date では使えませんでした.勿論SolarisGNU date(coreutils) を入れれば利用できます.

- Examples of date - GNU Coreutils
http://www.gnu.org/software/coreutils/manual/html_node/Examples-of-date.html

追記)

前月を知る - sh編 - (ひ)メモ
http://d.hatena.ne.jp/hirose31/20100916/1284628891

安直に「1 month ago」でいいじゃん!と思った人は負けです(ぼくもですけど><)。

手元でも試してみる.

% date +%Y/%m/%d -d '20110531 1 month ago'
2011/05/01
% date +%Y/%m/%d -d '20110331 1 month ago'
2011/03/03

なんとorz

dm-crypt swap 手動設定

Ubuntu10.10 amd64 でswap をdm-crypt で暗号化fs にしているのですが,いつの間にか起動時にパスフレーズを聞かれるタイミングが変わってgdm 起動寸前になってしましました.
入力できないうちにgdm が起動してしまうのでswap が利用できません.

てことでとりあえず手動マウントの手順をメモ

mk@x201s:~$ sudo cryptsetup luksOpen /dev/sda2 sda2_crypt
Enter passphrase for /dev/sda2: 
mk@x201s:~$ sudo swapon -a
mk@x201s:~$ free
             total       used       free     shared    buffers     cached
Mem:       5918952    5698152     220800          0        384    2615892
-/+ buffers/cache:    3081876    2837076
Swap:     15624184          0   15624184

バグなのかどっかいじっちゃったのか…
#しかし,暗号化fs 周りのネタもまとめなきゃと思いつつ早数年><

追記20101201)
Kernel のアップデートが来たので久々に再起動したら直ってるぽい.最近のアップデートで直ったみたいです.多分.
勘違い.fsck が掛かってただけみたいorz