steletoの日記 このページをアンテナに追加 RSSフィード

2017-07-15

[] CubieBoard2サーバが起動しなくなった問題(解決12:39  CubieBoard2サーバが起動しなくなった問題(解決) - steletoの日記 を含むブックマーク  CubieBoard2サーバが起動しなくなった問題(解決) - steletoの日記 のブックマークコメント

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だけ別のケーブルに交換するということができない。というわけで

f:id:steleto:20170715121736j:image

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

なおSSDは結局WDのWDS240G1G0A(240GiB)にしたんだけど、 Nothing found for Solid State Drive Western Digital Green Pc Ssd 240Gb にある分解写真を見たら(スッカスカなのはまぁいいとして)基板におもいっきり『SanDisk』って書いてある。やっぱ中の人一緒じゃねーかコレ。





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

2017-06-11

[] CubieBoard2サーバが起動しなくなった問題(解決済み) 12:02  CubieBoard2サーバが起動しなくなった問題(解決済み) - steletoの日記 を含むブックマーク  CubieBoard2サーバが起動しなくなった問題(解決済み) - steletoの日記 のブックマークコメント

ファイル置き場や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}>

おぉうなんでか知らんけどfsckkernel 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が出たころに改めてディスク診断をかけてクリーンインストールかなー。

2012-10-07

[] VirtualBoxでUEFI+GPTな環境にNetBSD/amd64をインストール 20:25  VirtualBoxでUEFI+GPTな環境にNetBSD/amd64をインストール - steletoの日記 を含むブックマーク  VirtualBoxでUEFI+GPTな環境にNetBSD/amd64をインストール - steletoの日記 のブックマークコメント

新調したPCことHP p6-2210jpがUEFI+GPTという環境になっていたんで、さてどうやってNetBSDを入れようかということでVirtualBoxで試したらなんとかなったというメモ。

以下ポイント。

  • ブートローダーはArchLinuxからgrub2-efiだけ拝借して使用する。NetBSD標準のブートローダは使用しない
  • BSD disklabelも使用せず。2TBの壁もあるし(2TB超のディスクなんて持ってないけど)
  • Arch Linuxを使用したのは"grub2 efi"でGoogle先生に尋ねたら最初にでてきたから。ぶっちゃけEFI対応のGRUB2があれば何でもよし。

まずは用意するものとして、NetBSD/amd64、ArchLinux(grub2インストール用)、GParted Live CD(パーティション設定用)を用意。実際に使ったファイル名は以下の通り。

  • NetBSD-6.99.11-amd64.iso
  • archlinux-2012.09.07-dual.iso
  • gparted-live-0.13.1-2.iso

VirtualBoxに新しい仮想マシンを作成し、CDから起動できるようにする。なお、VirtualBoxのUEFIが今一微妙なのか単に使い方が悪いだけなのか、CDからうまく起動できないのでしばらくEFIはOFFにしておくこと。

仮想マシンが作成できたらまずはGParted Live CDを起動する。

f:id:steleto:20121007194416p:image

Gpartedメニューから「デバイス(D)」→「パーティションテーブルの作成(C)...」とすると『警告:この作業は「ディスク /dev/sda 上の全データを削除します』と出るので、「詳細」から「パーティションテーブルの形式を選択」デ「gpt」を選択して「Apply」。

テーブルの作成が終わったら、ツールバーの「New」でまず最初にEFI領域を作成するためfat32のパーティションをディスクの先頭に作成する。容量やラベルは適当でOK。残りの領域は好きなように。どうもufsは選択できないので「未フォーマット」にでもしておく。

全て完了したら「Apply」で完了。

今回はこんな感じで、先頭にEFIパーティション、残りは全部NetBSDパーティション。

f:id:steleto:20121007194415p:image

本当はGUIDも設定したいけれども設定方法がわからず。とりあえず設定しなくても大丈夫そうなのでとりあえず進める。(GUIDについては米WikipediaのGUID_Partition_Tableを参照)

次にNetBSDインストールする。なおNetBSDのインストーラはGPTを認識できないようでご覧の通り238(0xEE)のパーティションが1つあるだけにしか見えない。仕方がないのでシェルに落ちて手動で展開する。

f:id:steleto:20121007194414p:image

GPTパーティションはdkデバイスとして認識されるらしいので、まずは正しく認識されているか確認する。

#dmesg | grep dk
dk0 at wd0: 78a10e7a-3ee5-448c-8afe-33fbd4083fa1
dk0: 524288 blocks at 2048, type:
dk1 at wd0: 12cae2aa-aa0c-4137-82d7-0ce1a6502546
dk1: 16248832 blocks at 526336, type:

対象がdk1として認識できているようなので、newfsでフォーマット。WARNINGは気にしない(おぃ

# newfs -I -O 2 dk1
cprng sysctl: WARNING pseudorandom rekeying.
/dev/rdk1: 7934.0MB (16248832 sectors) block size 16384, fragment size 2048
        using 43 cylinder groups of 184.52MB, 11809 blks, 22912 inodes.
super-block backups (for fsck_ffs -b #) at:
160, 378048, 755936, 1133824, 1511712, 1889600, 2268488, 2645376, 3023264,
...............................................................................

後はマウントして必要なものを展開する。

# mount -t ffs /dev/dk1 /targetroot
# cd /targetroot
# tar zxpf /amd64/binary/sets/base.tgz
  (以下略)

必要なら /targetroot/etc/以下を適当に編集して完了。ブートローダーにはgrubを使うのでinstallbootの出番はなし。

最後にArch Linuxを起動してgrub2-efiをインストールさせる。

f:id:steleto:20121007194413p:image

なおgrub2のインストールは基本的には「https://wiki.archlinux.org/index.php/GRUB2」の通り。

まずはgrub-efi-x86_64をインストールする。

root@archiso ~ # pacman -yS grub-efi-x86_64

EFIパーティションを/boot/efiへマウント。

root@archiso ~ # mkdir -p /boot/efi
root@archiso ~ # mount -t vfat /dev/sdxx /boot/efi

grubをインストールする。モジュールやらもEFIパーティションに入れたいので--boot-directory=/boot/efi/EFIを指定しておく。

root@archiso ~ # modprobe dm-mod
root@archiso ~ # grub-install --target=x86_64-efi --efi-directory=/boot/efi \
                              --bootloader-id=arch_grub --boot-directory=/boot/efi/EFI \
                              --recheck --debug
root@archiso ~ # mkdir -p /boot/efi/EFI/grub/locale
root@archiso ~ # cp /usr/share/locale/en@quot/LC_MESSAGES/grub.mo /boot/efi/EFI/grub/locale/en.mo

PC起動時に実行させるため/EFI/BOOT/bootx64.efiにgrubをコピー。

root@archiso ~ # mkdir -p /boot/efi/EFI/BOOT
root@archiso ~ # cp /boot/efi/arch_grub/grubx64.efi /boot/efi/EFI/BOOT/bootx64.efi

/boot/efi/EFI/grub/grub.cfgを以下のように設定する。rootで指定するのはgrubが認識しているデバイス(hd0,gpt2)で、knetbsdで指定するのはNetBSDが認識するデバイス名なのでdk1になる。

# Timeout for menu
set default=5

menuentry "NetBSD" {
	insmod efi_gop
	set root=(hd0,gpt2)
	knetbsd /netbsd --root=dk1
	boot
}

なお、"insmod efi_gop"はつけ忘れると以下のようなメッセージがでてそれ以降なにも表示されなくなる。

error: no suitable video mode found.
Booting in blind mode

これでインストール作業は全て完了。仮想マシン設定でEFIを有効にして起動させるとGLUB2のメニューが面が表示される。

f:id:steleto:20121007201655p:image

"NetBSD"を選んでEnter(他に選択肢はないが)すると数秒後に起動。

f:id:steleto:20121007194411p:image

おつかれさまでした。

2010-01-24

[][]Zaurusクロス環境クラッシュ 00:08 Zaurusクロス環境クラッシュ - steletoの日記 を含むブックマーク Zaurusクロス環境クラッシュ - steletoの日記 のブックマークコメント

  1. 適当にbitbakeでビルドをかけていたらI/O Errorとか発生
  2. とりあえずfsck -y
  3. 再起動
  4. 永眠

というわけで開発環境が見事にふっ飛んだ…といってもXenの中だし実質クロスビルドにしか使っていないため他に害はナシ。…と思ったがよく考えてみたら自前パッチとか消失してるな…まぁまた作ればいいか。

何にせよZaurusで遊ぶにはクロス環境がないと話にならないので、ディスクイメージを作りなおしてインストールし直すことに。…がディスクを認識せぬ。なぜじゃ。

2009-11-01

[][] イメージが作れない→作れた 22:23  イメージが作れない→作れた - steletoの日記 を含むブックマーク  イメージが作れない→作れた - steletoの日記 のブックマークコメント

usr.sbin/mdsetimage/mdsetimage.cのソースを適当に読んでみて、「カーネルオプションがなんか足りていない故にシンボルが未登録になっている?」と推測。んでi386のGENERICや「NetBSD Documentation: Porting NetBSD to a new ARM SoC」をまたチェックしてみたところ、

options     MEMORY_DISK_HOOKS            # boottime setup of ramdisk
options     MEMORY_DISK_ROOT_SIZE=10000   # Size in 512-byte blocks
options     MEMORY_DISK_IS_ROOT          # use memory disk as root
options     MEMORY_DISK_SERVER=1        # make the ramdisk writeable

と何やら怪しげな項目が。

早速こいつらをコピペしてカーネルを再ビルドし、再びmbsetimage。

$ /common/netbsd5-zaurus/usr/tools-zaurus/bin/arm--netbsdelf-mdsetimage -v -s netbsd /common/netbsd5-zaurus/binary/rootfs_ramdisk.img 
got symbols from netbsd
mapped netbsd
arm--netbsdelf-mdsetimage: fs image (5242880 bytes) too big for buffer (5120000 bytes)

あら、シンボルは無事見つかったがファイルが溢れた。深く考えずにキリの良いところで5,120KiB(=5,120×1,024=5,242,880byte)で作成したんだった。というわけで、さっくりと5,120kBで再構築してGo。

$ makefs -s 5000k rootfs_ramdisk.img ramdisk
Calculated size of `rootfs_ramdisk.img': 5120000 bytes, 113 inodes
Extent size set to 8192
rootfs_ramdisk.img: 4.9MB (10000 sectors) block size 8192, fragment size 1024
	using 1 cylinder groups of 4.88MB, 625 blks, 128 inodes.
super-block backups (for fsck -b #) at:
 32,
Populating `rootfs_ramdisk.img'
Image `rootfs_ramdisk.img' complete
$ /common/netbsd5-zaurus/usr/tools-zaurus/bin/arm--netbsdelf-mdsetimage -v -s netbsd /common/netbsd5-zaurus/binary/rootfs_ramdisk.img 
got symbols from netbsd
mapped netbsd
copying image /common/netbsd5-zaurus/binary/rootfs_ramdisk.img into netbsd
done copying image
setting md_root_size to 5120000
exiting

おーけい。

しかしここまでやっておいて何だが、w100ドライバが存在しないためもし起動したとしても画面は一切表示されないというオチ。