WD REDのIntellipark設定

投稿日: Leave a comment

備忘録.

Ubuntuを入れている1TBのWD RED.SMARTの193 Load/Unload Cycle Countを見ると7000以上になっていて,Intelliparkのしきい値を調整してあげた方がいいような気がしたので,設定メモ.

ubuntuの場合は,以下でidle3-toolsを入れる.

# apt-get install idle3-tools

設定値の確認.生値を見るのは-g,人間の読める値で見るのは-g103とか.

# idle3ctl -g /dev/sda
Idle3 timer set to 80 (0x50)
# idle3ctl -g103 /dev/sda
Idle3 timer set to 8.0s (0x50)

8秒になっている.これを300秒に変更する.
# 8秒間HDDにアクセスがなかったからといってシステムが休んでいるとは思えないが
# 5分ならさすがに休んでいるだろうということで300秒.OFFにはしない.

設定値の変更は-sオプション.設定方法はここの一番下にあるように1-128は設定値×0.1秒,129-255は(設定値-128)×30秒.

128+300/30=138を設定すればよい.

# idle3ctl -s138 /dev/sda
Idle3 timer set to 138 (0x8a)
Please power cycle your drive off and on for the new setting to be taken into account. A reboot will not be enough!

HDDの電源オフ→オンをせよと言われる.

念のため確認.

# idle3ctl -g /dev/sda
Idle3 timer set to 138 (0x8a)
# idle3ctl -g103 /dev/sda
Idle3 timer set to 300.0s (0x8a)

ちなみに,無効にするのは-d.

# idle3ctl -h
idle3ctl v0.9.1 - Read, Set or disable the idle3 timer of Western Digital drives
Copyright (C) 2011  Christophe Bothamy

Usage: idle3ctl [options] device
Options: 
 -h : displat help
 -V : show version and exit immediately
 -v : verbose output
 --force : force even if no Western Digital HDD are detected
 -g : get raw idle3 timer value
 -g100 : get idle3 timer value as wdidle3 v1.00 value
 -g103 : get idle3 timer value as wdidle3 v1.03 value
 -g105 : get idle3 timer value as wdidle3 v1.05 value
 -d : disable idle3 timer
 -s<value> : set idle3 timer raw value

 

FreeBSD disk on Ubuntu

投稿日: Leave a comment

FreeBSD機のデータ救出するためにUbuntu studio機につないでみた.

1. 認識

何はともあれ,dmesgを見てみる.

[    1.159211] scsi 3:0:0:0: Direct-Access     ATA      Hitachi HDS5C302 ML6O PQ: 0 ANSI: 5
[    1.159330] sd 3:0:0:0: Attached scsi generic sg2 type 0
[    1.159404] sd 3:0:0:0: [sdb] 3907029168 512-byte logical blocks: (2.00 TB/1.81 TiB)
[    1.159504] sd 3:0:0:0: [sdb] Write Protect is off
[    1.159507] sd 3:0:0:0: [sdb] Mode Sense: 00 3a 00 00
[    1.159550] sd 3:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    1.184219]  sdb: sdb1
[    1.184219]  sdb1: <bsd: sdb5 sdb6 sdb7 sdb8 sdb9 sdb10 >

しっかりFreeBSDのパーティション (bsd: sdb5 sdb6 sdb7 sdb8 sdb9 sdb10) を認識してる.

2. マウント

順番にマウントしてみる.

root@dahlia:/# uname -a
Linux dahlia 3.11.0-14-lowlatency #6-Ubuntu SMP PREEMPT Wed Nov 20 23:59:04 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
root@dahlia:/# mount -r -t ufs -o ufstype=ufs2 /dev/sdb5 /mnt
root@dahlia:/# ls /mnt
COPYRIGHT  boot.config  entropy  home     media  rescue  sys  var
bin        compat       etc      lib      mnt    root    tmp
boot       dev          export   libexec  proc   sbin    usr
root@dahlia:/# umount /mnt
root@dahlia:/# mount -r -t ufs -o ufstype=ufs2 /dev/sdb6 /mnt
mount: 間違ったファイルシステムタイプ、不正なオプション、
       /dev/sdb6 のスーパーブロックが不正、コードページまたは
       ヘルパープログラムの未指定、或いは他のエラー
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

root@dahlia:/# mount -r -t ufs -o ufstype=ufs2 /dev/sdb7 /mnt
root@dahlia:/# ls /mnt
bin     include  libexec  ports  src             src_R83p4.tar.gz
compat  lib      local    sbin   src_82R.tar.gz  src_R83p8
games   libdata  obj      share  src_R83p4
root@dahlia:/# umount /mnt
root@dahlia:/# mount -r -t ufs -o ufstype=ufs2 /dev/sdb8 /mnt
root@dahlia:/# ls /mnt
account  backups  db     heimdal     mail   nmbd      rwho   yp
at       crash    empty  log         msgs   preserve  spool
audit    cron     games  lost+found  named  run       tmp
root@dahlia:/# umount /mnt
root@dahlia:/# mount -r -t ufs -o ufstype=ufs2 /dev/sdb9 /mnt
root@dahlia:/# ls /mnt
samba  ueda
root@dahlia:/# umount /mnt
root@dahlia:/# mount -r -t ufs -o ufstype=ufs2 /dev/sdb10 /mnt
root@dahlia:/# ls /mnt
db  samba  www

内容的に以前のマウントポイントはこんな感じの様子.

  • sdb5: /
  • sdb6: swap
  • sdb7: /usr
  • sdb8: /var
  • sdb9: /home
  • sdb10: /export

マウントポイントを作って一気にマウントするスクリプトを作っておいた.

rose@dahlia:~# mkdir /rose
root@dahlia:~# cat mount_rose_disk.sh 
#!/bin/sh

mount -r -t ufs -o ufstype=ufs2 /dev/sdb5 /rose
mount -r -t ufs -o ufstype=ufs2 /dev/sdb7 /rose/usr
mount -r -t ufs -o ufstype=ufs2 /dev/sdb8 /rose/var
mount -r -t ufs -o ufstype=ufs2 /dev/sdb9 /rose/home
mount -r -t ufs -o ufstype=ufs2 /dev/sdb10 /rose/export

ここまでくれば後は吸い出すだけだから大丈夫か.

3. 文字コードの変換

と思いきや,ファイルを読み込んでいくとEUC-JPなファイル名がゴロゴロ出てくる.そのままでは困るので convmv というツールを入れた.デフォルトでは実際に変更をかけないという超安全設計なツール.これでsamba経由で書き込んだ日本語ファイル名が元に戻った.

(事前確認)
> convmv -r -f euc-jp -t utf8 *
(実際に変換する)
> convmv --notest -r -f euc-jp -t utf8 *

 

Atom機 故障

投稿日: Leave a comment

我が家の大掃除中にportupgradeを仕掛けて,合間に様子を見に来たらプロンプトが無応答になっていた.pingも無応答なので,マシンを見に行ったところ電源LEDはついている.

シリアルケーブルをつないでシリアルコンソールをたたいてみたがやはり無応答.しょうがないので電源ボタン長押しで電源を切り,少し間をおいて電源を入れてみたがシリアルコンソールには何も出てこない.

これはいよいよまずいと思い,液晶モニタを持ち込んでつないでみるとBIOS画面で止まっていた.

切り分けのため,HDDを抜いてもダメ,メモリを別のものに入れ替えてもダメ.どうやらマザーボードが壊れたっぽい.

直近のCharlie Rootからのメールによれば,

Checking status of gmirror(8) devices:
      Name    Status  Components
mirror/gm0  COMPLETE  ad10 (ACTIVE)
                      ad12 (ACTIVE)

SMART status:
Checking health of /dev/ad10: OK
Checking health of /dev/ad12: OK

とあるので,HDDが壊れていることは考えにくい.

マシンを立ち上げたのが2011/7/7だから2年半で壊れたことになる.マザーボードは中古で買ったもので,前オーナーが結構使い込んでいたのかな.HDDは2年以上経っているのでそろそろ危ないと思っていたけど,むしろこっちのほうが大丈夫だったか.いずれにせよ,夏を乗り切っていたので大丈夫と思っていたんだけどなぁ...

というわけで,NASのリプレースの作戦.

  1. 新NAS機の用意
  2. 旧データの救出
  3. 新NASへデータ移行

で進めてみる.

1. 新NAS機候補

新NAS機の候補はReadyNASの102312.102はARMベース,312はx86ベース.どちらもHDDは2本まで.

102の方は,定価26,900円で,NTT-Xで12,600円.HDD 2TB (@9800円)を2台付けると32,200円になる.一方,312は定価84000円だが,NTT-Xで39,800円.しかもHDD 2TBをつけると34,821円になるという.同じHDD 2TBを2台にすると44,621円になる.

この価格差なら312にしたいので,今のところ

  • ReadyNAS 312 2ベイ Diskless RN31200-100AJS
  • 3.5インチ内蔵HDD 2TB SATA6.0Gb/s WD20EFRX-R 2台

が有力.

こいつに移行するとファイルサーバー以外のサーバーとして動かすマシンがなくなってしまうので,もう1台省電力なマシンを組みたいところだが,こっちは追々.Celeronとかの安いノートPCでいいかなと思っている.

2. 旧データの救出

旧データといっても,メインのデスクトップのデータのコピーと,スマートフォン内のデータの自動バックアップがメイン.今のところなくて困るデータではないがこのマシンにしかないデータもあるので吸い出しておきたい./etcとか/usr/local/etcとか/homeとか.

ディスクはgmirrorでミラーリングしていたが,ファイルシステム自体は普通のUFS.こいつをマウントさえできればいいはずなので,最近立ち上げたUbuntu studio機で復旧を試みようかと思う.

googleで”ubuntu freebsd mount ufs” とかで検索するとゴロゴロ出てくるので,まずは見えるかどうか確認し,見えたら必要なファイル(このマシンにしかないファイル)を別マシンにコピーする.

3. 新NAS機への移行

最近のReadyNASはReadyCLOUDモードなる機能があるようで,要はインターネット上のどこからでもアクセスできるようになるらしい.こいつの使い勝手がどうなのか,マニュアルを読んで新NAS機を構築しようかと思う.

Ubuntu Studio 13.10

投稿日: Leave a comment

Fedora19を入れていたHDDに不良セクタが出はじめて調子が悪くなってきたので,HDDを新調し,少し前から気になっていたUbuntu Studioを入れてみた.

なぜ気になっていたかというと,写真などを編集したいするようなクリエイティブなツールが揃っているから.

HDDはNAS用WD REDの1TB. NAS用ということで耐久性重視.初AFTなディスク(4kセクタ).

HDDのフォーマット

GPartedでMiB単位のパーティションを作成しインストール.
1MiB=2048*512B=256*4096Bと,512でも4096でも割りきれるので,アライメントがずれることがないということでWindowsでもこうなっているらしくそれがGPartedでも同じようになっているらしい.

なお,最初はGPTでパーティションを切ったがなぜかBIOSがブートディスクを見つけてくれなかったのでMBRパーティションで切り直した.

(追記) ここここそれっぽいことが書いてある.IntelのマザーボードによってはMBRパーティションでアクティブ(ブータブル)のフラグが立っているのが少なくとも1つないと起動しないらしい.使ってるマザーボードはIntelのDG965RYなのでビンゴな気がする.GPTのProtective MBRをfdiskで細工すれば良いらしいので,次にGPTにするときにやってみよう.上記サイトからリンクが切れると面倒なので引用しておく.

fdisk をインストールするディスクで起動し (例: fdisk /dev/sda)、a を押してから数字を入力してブータブルにしたいパーティション (おそらく #1) を選択してください。最後に w を押して変更を MBR に書き込みます。

Particularly if you’ve got an Intel motherboard, use Linux fdisk or a similar tool to mark the EFI GPT protective partition entry in the MBR as active/bootable. In fdisk, type a followed by the partition number (probably 1), then type p to view the partition table. An asterisk (*) should appear in the Boot column for the relevant partition. You can then type w to save your changes. Do not use GParted, GNU Parted, or another libparted-based tool to make this change; these tools interpret the “boot flag” as being synonymous with an EFI System Partition type code on GPT disks, so changing the “boot flag” with these tools will not have the desired effect. You must use fdisk or some other tool that will alter the MBR data structures, not the GPT data structures!

プリンタのインストール

スクリプト一発だと思っていたがそうはうまくいかなかったのでメモ.

  1. ここからdebパッケージをダウンロードする.
  2. libtiff4ライブラリをインストール. apt-get install libtiff4
  3. tarを展開し,install.shを実行.
  4. [システム設定]→[プリンター]→[MG5400LAN]を開く
  5. [設定]-[製造元とモデル]の「Local Raw Printer」の右の変更を押し,/usr/share/ppd/canonmg5400.ppd を選択

ppdファイルが見つからないエラーに気づいてから,5の対処にたどり着くのに時間がかかった.

 

I2C温度センサー

投稿日: Leave a comment

ちょっと前にI2Cの温度センサー基板を買っておいたので,朝からちょっと工作をして Raspberry Piとつないでみた.

20131027_rpi_temp

 

I2C以外にもHDMI,Ether,USBがつながっている状態.I2Cの結線は回路図(PDF)から以下のようにした.

  • RPIのP1: 1 (3.3V) → 温度センサーのV+端子
  • RPIのP1: 3 (SDA1) → 温度センサーのSDA端子
  • RPIのP1: 5 (SCL1) → 温度センサーのSCL端子
  • RPIのP1: 9 (GND) → 温度センサーのGND端子

ちなみに使った温度センサーはここのTMP102という温度センサーチップの載った基板.マニュアルによるとADD0ピンの接続先でアドレスが変わるというので,基板のレジストをはがしてGNDとショートさせて,アドレスを0x48に設定した (C1の右下の半田の盛ったところ).また,SDAとSCLはRaspberry Pi上でプルアップされているので,この基板のプルアップ抵抗 R1,R2 (ともに1608サイズの1kΩ)は取り外した.

20131027_i2c_temp

で,Raspbianから動作確認.i2cdetectでアドレスを確認.

# i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

確かに0x48で見えている.

次に,レジスタの読み出し.

  • レジスタ0: 温度
  • レジスタ1: コンフィギュレーションレジスタ
  • レジスタ2: T_LOW
  • レジスタ3: T_HIGH

だそうなので,順に読みだしてみた.

# i2cget -y 1 0x48 0 w
0xd015
# i2cget -y 1 0x48 1 w
0xa060
# i2cget -y 1 0x48 2 w
0x004b
# i2cget -y 1 0x48 3 w
0x0050

レジスタ0の読み出し結果が0xd015になっているが,バイト0の下4ビットは0のはずなので,エンディアンが逆っぽい。0x15d0だとすると,0x15d0 = 5584, 5584/256 = 21.8125℃.ほぼ室温.

読み出しはi2cdumpでもいいみたい.

# i2cdump -y -r 0-3 1 0x48 w
     0,8  1,9  2,a  3,b  4,c  5,d  6,e  7,f
00: f015 a060 004b 0050

温度がちょっと変わったらしい.

今回はテスト用に短めの線でつないだけど,もう少し長くして情報盤 (LAN SWとTVブースターが入っている) の内部温度をモニターしようと思う.

Raspberry Pi で SPI, I2C, 1-wire デバイスを使えるようにする

投稿日: Leave a comment

Raspberry PiでI2Cと1-wireデバイスを使えるように設定した.

I2Cはモジュール追加とパッケージ追加,SPIと1-wireはモジュールの追加のみ.I2Cはここ,SPIはここ,1-wireはここを参考にした.

今回は設定のみ.動作確認はまたの機会.

1. デフォルトでデバイスを探しにいかないようなので,/etc/modulesに以下を追加

i2c-dev
spidev
w1-gpio
w1-therm

※参考にしたページにはi2c-bcm2708も追加するよう書いてあったけど,なくても認識した.

2. /etc/modprobe.d/raspi-blacklist.conf の 以下をコメントアウト

i2c-bcm2708

3. i2c-tools パッケージをインストール

$ sudo apt-get install i2c-tools

NOOBS (New Out Of Box Software)

投稿日: Leave a comment

Raspberry Pi で GPIO とか I2C とかを触ろうと思ったら NetBSD だと情報がなさ過ぎてつらいのでDebian Linux ベースの Raspbian を入れることにした.

本家のページに行ったらNOOBS (New Out Of Box Software)と書いてあるのでRaspbianのイメージを直接焼かず,NOOBSからインストールすることにした.

手順:

  1. SD AssociationのSDフォーマッターで論理サイズ調整ONでフォーマット
  2. NOOBS_v1_3.zip をダウンロードして展開
  3. osフォルダの中のraspbian以外のフォルダを削除
  4. フォーマットしたSDにコピー
  5. Raspberry Piに挿して起動

NOOBSはHDMI接続のモニターとUSBキーボード・マウスが必要なので,モニターはHDMI-DVI変換アダプター経由で液晶モニターに接続し,キーボードとマウスはセルフパワーのUSBハブ経由で接続して起動した.

電源を入れるとモニターの最適解像度を自動検出して 1280×1024 で表示.パーティションが自動的に変更され,インストーラーが起動する.そして,Raspbianにチェックを入れて Install を押すとインストールが開始される.

インストールは主にイメージの展開.しばらく待つと終了し,OSが起動し,raspi-configが立ち上がるのでホスト名とか適当に設定して終了.

デフォルトでIPv6が無効になっているようなので有効になるように設定を追加しておいた.

  1. /etc/modprobe に ipv6 を追加 (ipv6有効化)
  2. /etc/sysctl.conf に net.ipv6.conf.eth0.use_tempaddr = 2 を追加 (匿名アドレスの有効化)

 

 

NetBSD/evbarm

投稿日: Leave a comment

Fedora上でNetBSD/evbarmをビルドしたのでその記録.ここを参照した.

Linux上でのクロスコンパイルなんだけど,見た目Linuxで動作させている感じが全く現れていない.というか何の問題もなくクロスビルドできちゃうところがすごい.

ソースの取得

CVSから.コマンドはこんな感じ.

$ cd work/netbsd/current
$ export CVSROOT=anoncvs@anoncvs.NetBSD.org:/cvsroot
$ export CVS_RSH=ssh
$ cvs checkout -P src

クロスビルド環境の構築

$ cd src
$ ./build.sh -O ../objarm -m evbarm -j 4 -u -U tools

./build.sh –help するといろいろ説明が出てくるけど,-uはcleanしない,-Uは非rootユーザーでビルドを実行する,の意味.

リリースビルド

$ cd src
$ ./build.sh -O ../objarm -m evbarm -j 4 -u -U release

初回ビルドだと結構時間がかかるが一度ビルドすると差分ビルドになるので時間はかなり短縮される.

ビルドが完了すると,../objarm/releasedir/evbarm/binary/gzimg/rpi.img.gz に SDカードのイメージができる.

SDカードの作成

Windows環境でイメージファイルをSDに焼くツールはいろいろあるけど,今回使ったのは win32diskimager というツール.USBメモリーやSDカードなどのフラッシュメモリの消去やチェックができるChkFlshというツールでも書き込み可能.

どのツールを使うにせよ,SDにパーティションが切られているとうまくかけないので,Windows標準(Vista以降?)のdiskpartコマンドでパーティションを消去する.

DISKPART> list disk

  ディスク      状態           サイズ   空き   ダイナ GPT
  ###                                          ミック
  ------------  -------------  -------  -------  ---  ---
  ディスク 0    オンライン     298 GB   0 B
  ディスク 1    オンライン     947 MB   0 B

ここでは1GBのSDカードを入れたのでディスク1を選択する.

DISKPART> select disk 1

ディスク 1が選択されました。

削除する前に,念のためパーティションを確認する.

DISKPART> list part

  Partition ###  Type                Size     Offset
  -------------  ------------------  -------  -------
  Partition 1    プライマリ          56 MB    4096 KB

消して良さそうなら削除する (次のコマンドを実行した瞬間に反映されるのでEnterを押すときは慎重に)

DISKPART> clean

DiskPart はディスクを正常にクリーンな状態にしました。

いよいよrpi.imgの焼きこみ.ドライブ文字とファイルのパスを指定して書き込んでおしまい.

ファームウェアの入れ替え

このままSDカードに焼いても手元のRaspberry Piはブートせず.どうやらファームウェアがダメみたいなので,ファームウェアを最新のものに入れ替える.

ファームウェアはSD上のMSDOSファイルシステム(64MB)においてあるので,GitHubから持ってきて差し替える.

具体的には,bootフォルダのkernel.img以外をダウンロードしてSDに突っ込むだけ.

これで無事カーネルが起動してOSが立ち上がった.

以下,おまけ.

ソースを更新するには

$ cvs update -dP

カーネルを作り直すには?

src/sys/arch/evbarm/conf/ にコンフィグレーションファイルをおいて,

./build.sh -O ../objarm -m evbarm -j 4 -u -U kernel=<コンフィグレーションファイル名>

を実行すると,../objarm/sys/arch/evbarm/compile/<コンフィグレーション>/netbsd.bin ができるので,これを kernel.img にリネームしてSDカードに置く.

Fedora Linuxをインストール

投稿日: Leave a comment

1年半ほど前にVistaのサポート期限を迎えそうになりcore i5+Windows7で新しくマシンを構築した結局サポート期限が延長されてずるずる使い続けていた古いデスクトップのHDDがリードエラーを出し始めてしまったので,ちょっと前まで手動でミラーを組んでいて使わなくなっていた1TBのHDDにVistaを再インストールすることにした.

が,別にVistaである必要もないので,入れるOSをどうするかあれこれ考えてみた.その中で重視したのは以下の4点.

  1. スキャナ(CanoScan 9000F) が使えること
  2. 複合機 (Canon Pixus MG5430) が使えること
  3. Galaxy Noteのファームウェアの書き換えができること
  4. NetBSDのクロスビルドができること

1~3 は Windows が無難なので,Windowsでいいじゃんという話もある.4は Windows でcygwinを入れればできるらしいけど,cygwinは好きじゃないのでパス.というわけで,Windows 以外でどれがいいか少し調べつつ考えてみた.

続きを読む Fedora Linuxをインストール

Raspberry Pi type B

投稿日: Leave a comment

マイクロサーバー的なものを作って遊ぼうと思っていろいろ調べていたら Raspberry Pi type B (Ether付) が良さそうなので買ってみた.

DebianベースのLinuxを入れるのが一般的のようだけど,何となくNetBSDを入れてみることにした.

とりあえずここにあった 2013-07-30-netbsd-raspi.img をSDカードに書き込んでブート.

最初はUSB-UARTが手元になかったので,HDMIコネクタをプラズマテレビにつないで起動.37インチの画面にブートログがたらたら流れ始めた.さすがに,USBキーボードをつないだりというのは鬱陶しいので,組み立てていなかったUSB-UARTボードにピンを立ててRaspberry Piに立っているピンヘッダーのUART端子とつないでブート.

回路図はここ(PDF)を参考に.2列のピンヘッダー(P1)の6番がGND,8番がTXD0,10番がRXD0なので,それぞれUSB-UARTアダプタのGND,RXD,TXDに接続.ボーレートは115200 bpsに設定.

でこんな感じに表示される.

20130831_NetBSD_RPI_BOOT

dmesgはこんな感じ.エラーがパラパラでているけど,何とか動作している(?)

続きを読む Raspberry Pi type B