CubieBoard2サーバが起動しなくなった問題(解決)

HDDがダメなのかなーということで安いSSDを手配してCubieBoardに接続……したけどfdiskでコケよる。ただfsckのこともあったしたぶんNetBSD/evbarmのどっかがおかしんだろーなーと母艦側でfdisk→disklabel→newfsまでお膳立てしたところ無事にインストール完了。

俺「ふむ、pkgsrcのビルドを始めたけど問題なさそうだしこの様子なら大丈夫かな」
→剥き出しで繋いでいたSSDを机の端に移動させる
SSDCRC Error』『CRC Error』『CRC Error』『CRC Error』『CRC Error』『CRC Error』
俺「あっこれケーブルが駄目なやつだ

SATAケーブルの根本を折るようにして筐体に無理矢理押し込んでいたという心当たりもあるので薄手のSATAケーブルに交換。これで本当に大丈夫なはず。原因がケーブルということになるとHDDは問題ないということになるんだけど、消費電力とかもあるからこのままSSDでいく予定。

ちなみにCubieBoardは基盤上のピンコネクタから+5Vを供給するため、専用のSATAケーブルが付属している。ただしこれSATAと一体化しているタイプなので、SATAだけ別のケーブルに交換するということができない。というわけで

鋸で真っ二つの刑。力技もいいところだけど電気的には問題なし。

なおSSDは結局WDのWDS240G1G0A(240GiB)にしたんだけど、 http://www.hardware-boom.com/solid-state-drive-western-digital-green-pc-ssd-240gb/ にある分解写真を見たら(スッカスカなのはまぁいいとして)基板におもいっきり『SanDisk』って書いてある。やっぱ中の人一緒じゃねーかコレ。





ところで今朝から母艦のNetBSDが起動しなくなったけど今度はなんなの。GR-PEACH移植進まねぇ…

GR-PEACH + U-Bootでtftpboot


会社帰りにパーツ屋へ閉店時刻ぎりぎりに滑り込んでLANコネクタを買ってきた。んでボードにハンダ付けして早速動作確認。TFTPの使い方をよく知らないのでGoogle先生に聞きながら適当に実施。

まずDHCPIPアドレスを取得する。

=> setenv autoload no
=> dhcp
sh_eth Waiting for PHY auto negotiation to complete.. done
sh_eth: 100Base/Full
BOOTP broadcast 1
BOOTP broadcast 2
DHCP client bound to address 192.168.0.7 (577 ms)

お、取れた。ということはU-Bootで通信はできているということなので一安心。

次に接続先のIPとファイル名を指定。

=> setenv serverip 192.168.0.5
=> setenv bootfile netbsd.bin

tftpbootコマンドで先ほど指定したIPアドレスからファイルをダウンロードして0x20000000に展開。

=> tftpboot
sh_eth:0 is connected to sh_eth.  Reconnecting to sh_eth
sh_eth Waiting for PHY auto negotiation to complete.. done
sh_eth: 100Base/Full
Using sh_eth device
TFTP from server 192.168.0.5; our IP address is 192.168.0.7
Filename 'netbsd.bin'.
Load address: 0x20000000
Loading: #################################################################
         #################################################################
         #################################################################
         ###################################
         2.8 MiB/s
done
Bytes transferred = 3376148 (338414 hex)

ダウンロードは1〜2秒で終わるので後々トライ&エラーする羽目になってもストレスが溜まることは無さそう。

で実行。

=> go 0x20000000
## Starting application at 0x20000000 ...
hey, favstar! ban stop me premiamu! -- @toshi_a

よし動いた。

というわけでなんとか目処は着いたので移植に専念できそう。よかったよかった。

GR-PEACHでxputc

GR-PEACHNetBSD載せらんねーかなという実験の手始めとしてブートローダのところを見ていると、どうもシリアルコンソールにデバッグ出力としてxputcというサブルーチンで行っているものがある。実態はおそらくsrc/sys/arch/arm/cortex/a9_mpsubr.SっぽいけどどうもRZ/A1Hでそのまま使えるかというとなんか微妙な気がする…ということでRZ/A1H向けのxputcを実装してみた。xputc以外はビルドを通すために用意しただけので空関数だったりと超適当。

なおRZ/A1Hのシリアル出力は最大16文字分のバッファがあるので、正しくシリアル出力ができているかを確認したい場合は16文字以上の文字列を出す必要がある。それと文字化けや欠けが発生してもわかるよう、それなりの意味のある文字列が望ましい。…ということで10秒くらい考えた結果こうなった。

	.section .start,"ax",%progbits

	.global	_C_LABEL(grpeach_start)
_C_LABEL(grpeach_start):
	PRINT("hey, favstar! ban stop me premiamu! -- @toshi_a")

loop:
	b loop

と、こんなておくれプログラムでとりあえずxputcでシリアル出力ができることは確認できた。

ただこれでできたnetbsd.binをGR-PEACHに読ませようとしたときに気がついたんだけど、今のところ3MBはあるnetbsd.binをGR-PEACHのメモリに配置する方法がない。というのも、

  • シリアル(xmodem等) → なぜか600KiBほど転送した段階で固まる
  • USB → microUSB端子に刺さるものを持っていない
  • Ethernet → u-bootで対応しているようだけどコネクタを付けていない、ついでにHUBのポートも足りない
  • microSD → まさかのu-boot未対応

という状況。ちなみにxputcの確認はどうせコードは手前の領域だろうということで、xmodem転送中にフリーズしたらリセットして何食わぬ顔で実行、という手段で良かったんだけども。ぐぬぬ

CubieBoard2サーバが起動しなくなった問題(解決しなかった)

はい

Welcome to minicom 2.7

OPTIONS: I18n
Compiled on Feb  9 2017, 05:05:04.
Port /dev/ttyU0

Press CTRL-A Z for help on special keys

ahcisata0 channel 0: clearing WDCTL_RST failed for drive 0
wd0a: device timeout reading fsbn 1517440 of 1517440-1517503 (wd0 bn 1525632; cn 1513 tn 8 sn 24), retrying
ahcisata0 channel 0: clearing WDCTL_RST failed for drive 0
wd0a: device timeout reading fsbn 1517440 of 1517440-1517503 (wd0 bn 1525632; cn 1513 tn 8 sn 24), retrying
ahcisata0 channel 0: clearing WDCTL_RST failed for drive 0
wd0a: device timeout reading fsbn 1517440 of 1517440-1517503 (wd0 bn 1525632; cn 1513 tn 8 sn 24)

ということでまたサーバにアクセスできなくなったのでシリアル繋いだ結果がこれである。うーんやっぱりHDDがイカンっぽいがどうしたものか。

ところでSSDの値段見てたらWestern DigitalSanDiskがそれぞれ製品出してたけどそれ中身一緒だったりしないん?

CubieBoard2サーバが起動しなくなった問題(解決済み)

ファイル置き場やproxyに使っているCubieBoard2(NetBSD/evbarm 7.1)が先週当たりから応答しない。とりあえずシリアルケーブルで母艦と繋いでみる。

wd0 at atabus0 drive 0
wd0: <Hitachi HTS545050B9A300>
wd0: 465 GB, 969021 cyl, 16 head, 63 sec, 512 bytes/sect x 976773168 sectors
boot device: wd0
root on wd0a dumps on wd0b
/: replaying log to memory
root file system type: ffs
Sun Jun  4 01:45:20 JST 2017
Starting root file system check:
panic: kernel diagnostic assertion "oldsize != VSIZENOTSET || pgend > oldsize" failed: file "/home/star/work/netbsd/src/sys/uvm/uvm_vnode.c", line 355
Stopped in pid 21.1 (fsck) at   netbsd:cpu_Debugger+0x4:        bx      r14
db{1}>

おぉうなんでか知らんけどfsckでkernel panicしとる。最初はディスクが死んだかと思ったけどシングルユーザモードでなら起動できたのでSMARTを見た感じでは大丈夫…そうな気がする(これの読み方をよく知らない)。

# atactl /dev/wd0 smart status
SMART supported, SMART enabled
id value thresh crit collect reliability description                 raw
  1 100   62     yes online  positive    Raw read error rate         0
  2 100   40     yes offline positive    Throughput performance      0
  3 243   33     yes online  positive    Spin-up time                30064771072
  4 100    0     no  online  positive    Start/stop count            636
  5 100    5     yes online  positive    Reallocated sector count    0
  7 100   67     yes online  positive    Seek error rate             0
  8 100   40     yes offline positive    Seek time performance       0
  9  30    0     no  online  positive    Power-on hours count        30862
 10 100   60     yes online  positive    Spin retry count            0
 12 100    0     no  online  positive    Device power cycle count    615
191 100    0     no  online  positive    G-sense error rate          0
192 100    0     no  online  positive    Power-off retract count     77
193  37    0     no  online  positive    Load cycle count            638702
194 171    0     no  online  positive    Temperature                 32 Lifetime min/max 10/56
196 100    0     no  online  positive    Reallocated event count     0
197 100    0     no  online  positive    Current pending sector      0
198 100    0     no  offline positive    Offline uncorrectable       0
199 200    0     no  online  positive    Ultra DMA CRC error count   145240
223 100    0     no  online  positive    Load/unload retry count     0

であればfsckをかけてチェックをかけて…ってそこでkernel panicしてるのか。とりあえず試しにディスクを引っこ抜いて母艦に繋げてそちらで動かしてみる。

$ sudo fsck_ffs -fy /dev/wd3a
** /dev/rwd3a
** File system is already clean
** Last Mounted on /mnt
** Phase 1 - Check Blocks and Sizes
UNKNOWN FILE TYPE I=11210928
CLEAR? yes

UNKNOWN FILE TYPE I=11210929
CLEAR? yes

UNKNOWN FILE TYPE I=11210930
CLEAR? yes
   :
   :

おぉ動いた。そしてエラーまみれだ orz

そしてfsckをかけ終わったディスクをCubieBoard2に戻したら無事に起動するようになったのでとりあえずそのまま動かすことに。NetBSD 8が出たころに改めてディスク診断をかけてクリーンインストールかなー。

サイクルスタイル2017とか

cycle-styleとかいうのを数日前に偶然知ったんでせっかくなので行ってきた。場所が横浜で遠かったけど折り畳み自転車も多く試乗もできるのでミニベロ好きとしては大満足です。(そしてショップで色々買い込む)


赤レンガ倉庫の奥に海が見えたので行ってみたら海上保安庁のあきつしまさんが停泊してた。後で調べたらしきしま型の2隻(1番しきしま、2番あきつしま)は巡視船として世界最大級の大きさなんだそうで。領海はクッソ広いわ隣りの国は益々キナ臭いわで大変そうだけどがんばってください。


こっちは旧横浜船渠株式会社第一号船渠(重要文化財)で展示されている日本丸重要文化財見込)。帆船をなんてそうそう見ないけどこれはカッコいい。


旧横浜船渠株式会社第二号船渠(こっちも重要文化財)。第一号船渠と違って水が入っていないのでドックがどういうものなのかよくわかる。

しょうゆちほー

5/27に自転車で野田をぐるっと一周回ってきた。コースは上図のように、国道16号で南から不法入国のあと利根運河沿いに東へ→利根川沿いに北上→江戸側沿いに南下→再び利根運河。普段そんなに走らないので60kmはしんどかった。

んでこれが関宿城博物館。なお中は入ってない。
ちなみに立地が自転車乗りに丁度良いのか、ここでしばらく休憩してたときに*1ロードバイクとかを10人以上は見かけたきがする。

*1:ここでしばらく公園のベンチで仰向けに寝てたせいか顔だけ焼けた…