Pine Tree'S electrical page

ゆくかわのながれはたえない

今さら玄柴(Sheevaplug +)の復習

5年くらい前に購入した玄柴を今さらながら復習してみた。今でも十分なスペックである。Raspberry PIが備えていないeSATAを備え、LANも1000BASE-Tなので、高速大容量ファイルサーバ等として現役復活させる価値ありと判断。RaspberryPI 3もUSBは2.0であり、高速ディスクアクセスはできないので、そういう意味でも価値がある。RaspberryPI 4はきっとUSB3.0が付くんだろうけど(^^;
【西川和久の不定期コラム】ACアダプタサイズのLinuxマシン! 玄人志向「玄柴」 - PC Watch

玄柴は発売台数が少なかった上、eSATAを動かすための敷居が高かったせいか、今さらの情報収集は大変難航した。さすがキワモノシリーズ。しかし最近の一連のRaspberryPIの工作で鍛え上げた今なら、なんとかなるかもしれないと思って頑張ってみたところ、次のページに辿りついた。

Debian(squeeze) @ 玄柴 再び: ボンタくんの備忘録

Debian installer for plug computer

注意すべきは、2つめのページにリンクされているブートイメージの中からeSATA対応版の「SheevaPlug with eSATA: uImage and uInitrd」を選択すること。これを間違えるとeSATAが動かない。Debianのバージョンは8(jessie)。尚、eSATAを動かすためにはU-bootも適切なものを選択する必要がある。ちなみに玄柴にデフォルトでインストールされているU-bootはeSATAが使えないという問題を抱えている。

U-bootはいろいろ試してみたが、次のものがeSATAもちゃんと動いて調子がよかった。

Index of /~tbm/u-boot/2011.12-3/sheevaplug

U-bootの更新はこちらを参照した。尚、U-bootの更新に失敗すると簡単に玄柴が文鎮化(レンガ化)するので注意。万が一文鎮化した場合は、JTAGとUSB直結によるここに記載された手順で復旧できる。※尚、このページに記載されているフィルタドライバlibusbはUSBを自在に操れるツールで大変興味深い。機会があれば習得したい。

U-bootの更新が完了したら、次は以下の手順でDebian8(jessie)をインストール。

手順1:まず上記uImageとuInitrdをダウンロードしたら、これをMS-DOSフォーマットで初期フォーマットされたSDカードにコピーする。フォーマットは、FAT32アロケーションユニットサイズは32キロバイトとした。

手順2:SDカードを玄柴に挿入し、玄柴の電源をオンする。

手順3:玄柴をUSBシリアルで接続するためのドライバを母艦にインストール。但しWindows8.1だとドライバの署名が有効期限切れでインストールできないので、下記ページの「手順2」に従って署名のチェックを外す必要がある。結構面倒だ。ドライバは、付属CD-ROMに収録されていたFTDIの2.4.14.0を使用。

Windows8/8.1で署名なしドライバをインストールする方法/テストモードにする方法 - ぼくんちのTV 別館


手順4:母艦PCから玄柴にターミナル接続。シリアルポートはCOM4,通信速度は115200。

手順5:コンソールに以下(太字部分)を入力。

Streaming disabled
Write allocate disabled
USB 0: host mode
PEX 0: interface detected no Link.
Net: egiga0 [PRIME], egiga1
Hit any key to stop autoboot:0 ←0 になる前に Enter

Marvell>> setenv arcNumber 2678eSATAを使うために必要
Marvell>> saveenv ← 保存
Saving Environment to NAND...
Erasing Nand...Writing to Nand... done
Marvell>>

Marvell>> mmcinit ← SDカードの接続

SDHC found. Card desciption is:
Manufacturer: 0x13, OEM "KG"
Product name: "SD08G", revision 0.0
Serial number: 3223050542
Manufacturing date: 9/2010
CRC: 0x00, b0 = 0
Marvell>> fatload mmc 0:1 0x00800000 /uImage

reading /uImage

1434220 bytes read
Marvell>> fatload mmc 0:1 0x01100000 /uInitrd

reading /uInitrd

3172851 bytes read
Marvell>> setenv bootargs console=ttyS0,115200n8 base-installer/initramfs-tools/driver-policy=most
Marvell>> bootm 0x00800000 0x01100000


あとは上記1つめのページの手順に従ってインストールすればよい。インストールには2~3時間かかるので暇な時に行ったほうがよいw 

インストールが完了したらU-bootの環境変数を次のように設定する。ここを参照。

(SDHC カードの場合)

Marvell>> setenv bootargs_console console=ttyS0,115200
Marvell>> setenv bootcmd_mmc 'mmc init; mmc init; ext2load mmc 0:1 0x00800000 /uImage; ext2load mmc 0:1 0x01100000 /uInitrd'
Marvell>> setenv bootcmd 'setenv bootargs $(bootargs_console); run bootcmd_mmc; bootm 0x00800000 0x01100000'
Marvell>> saveenv

設定した環境変数の内容はprintenvコマンドで見ることができる。短縮形priでもOK。

電源オン時にSDカードがうまく認識しなかったので、環境変数bootcmd_mmcでmmc initを2回叩いている。自分の玄柴ではこれでうまくいっている。必要に応じてsleepコマンドを挿入してもよいかもしれない。

環境変数bootdelayの値は、電源オン時やresetコマンド入力時に表示される「t any key to stop autoboot:」の値である。デフォルトは3秒に設定されているが、これでは慌ただしいのでのんびりな自分は20秒に設定した。

U-bootのコマンドプロンプトからSDカードに格納されているDebianを起動するには、

Marvell>> reset

とする。

Debianが起動した後、uname -aとしてみると次の内容が表示された。

Linux debian 3.16.0-4-kirkwood #1 Debian 3.16.7-ckt11-1+deb8u4 (2015-09-19) armv5tel GNU/Linux


続いて、dmesgコマンドでeSATAが接続できたか否かを確認する。HDDのパーティションの作成やフォーマットは次のページを参考にさせて頂いた。

第101回 玄柴(KURO-SHEEVA)ファーストインプレッション:Ubuntu Weekly Recipe|gihyo.jp … 技術評論社

HDDの取り付けや取り外しはHDDの電源オンオフで行ったほうが母艦のターミナルソフトがフリーズしなくてよい。ちなみに、USBシリアル接続したコンソールにしか、HDDを接続/切断した時のメッセージは表示されなかった。

Wifiの設定はここを参照した。apt-get upgradeが必要なので他のハードウェアに影響がないか注意。upgradeする前にSDカードのバックアップをとっておいたほうがよいかもしれない。USBドングルはこれを使った。

wpa_supplicantの設定はここを参考にした。

/etc/wpa_supplicant/wpa_supplicant.confの内容は以下のようにした。
network={
ssid="########"
proto=WPA
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP
#psk="########"
psk=5ad9cda232fd5d3305859343769e8842879a4a731c5ed086dd502c7e7c11d69a
}

以上の設定を行ったら、
service wpa_supplicant start
としてwpa_supplicantを起動させてみる。

あとはwpa_supplicantがブート時に自動で起動するようにする。
私は/etc/rc.localに次の起動時スクリプトを書いた。

#service wpa_supplicant start
sleep 30
#ifdown wlan0
#ifup wlan0

boot時に、A Start Job Is Running for LSB- Raise Network Interfaces.が煩いので、ここを参考に、/etc/default/networking の CONFIGURTE_INTERFACES を no に設定した。 

WIFIドングルによってだいぶ個性があるようなので、自分の環境で微妙なタイミング調整を行う必要があるかもしれない。それが面倒なら有線LANを選択すればよい。


以上で玄柴が蘇った。いいおもちゃができた^_^;

尚、ファイルサーバとして使う場合、玄柴用とHDD用に2系統の電源が必要になってしまうので、まずは電源を1つに統一したい。

玄柴の電源は容量が足りてないようなので、大容量の電源を用意する必要もありそうだ。


ここあたりを参考に、X環境の構築とUSBディスプレイの接続を試みるのも面白いかもしれない。

USB-DACの認識についてはこの辺りこの辺りが参考になるかも。

ミュージックプレーヤに仕立てあげる場合は、
sudo apt-get install mpd mpc
sudo apt-get install alsa-base alsa-utils
としてソフトウェアをインストールする。
alsamixerを動かすには、/etc/asound.confを作成し、ここに以下を記述する。ちなみにaplay -lとすればデバイスIDが取得できる。ここを参照した、

pcm.!default {
type hw
card 1
}

ctl.!default {
type hw
card 1
}



※※参考にさせて頂いたページ※※

デフォルトのU-bootの環境変数一覧
U-bootのマニュアル(日本語)素晴らしい。





==以下は2017-9-18に追記==

久しぶりに玄柴をいじるので接続の仕方から。
OSがWindows10に代わったのでシリアルのドライバのインストールから。
付属CD-ROMのドライバでよいのだが署名なしなのでセーフモード経由でインスト。
Windows8/8.1で署名なしドライバをインストールする方法/テストモードにする方法 - ぼくんちのTV 別館

母艦PCからTeraTermで玄柴にターミナル接続。シリアルポートはCOM4,通信速度は115200とした。

玄柴につないだHDDをSambaで共有する手順はこのページに従った。
http://gihyo.jp/admin/serial/01/ubuntu-recipe/0101?page=2


まずはdfコマンドで、現在マウントされているディスクの状態を見る。-hオプションは、通常KB単位で表示される容量をMBやGBで表示してくれる。
df -h


cfdiskでパーティションを作成。プライマリでOK
cfdisk

※2TBを超える場合はlabelを聞かれるので「gpt」を選択

続いてフォーマット
mkfs.ext4 /dev/sda1

続いて/dev/sda1のマウント先を作成しアクセス権を設定

mkdir /var/samba
sudo chmod 777 /var/samba

Linuxトラブル対策大全 - Sambaの共有フォルダにファイルが書き込めず失敗してしまう:ITpro


試しにマウントしてみる
mount /dev/sda1 /var/samba


起動時に自動的にマウントされるようにするには/etc/fstabに次の内容を追記

sudo nano /etc/fstab

UUID=9fcafa9d-7650-461c-80bc-7acbedb8eed1 /var/samba ext4 relatime 0 0
(UUIDが9fcafa9d-7650-461c-80bc-7acbedb8eed1の場合)

尚、UUIDはここ
http://qpshinqp.hateblo.jp/entry/20110214/1297698515
を参考に次のコマンドで調べた。
ls -l /dev/disk/by-uuid/ | grep sda1


※ちなみにUUIDはパーティション作成すると変わってしまうのでパーティション作成の度に設定し直す必要がある。


続いてこことかを参考にsambaをインストール
http://debianj.com/ubuntu/install/samba

sudo apt-get install samba

sudo mkdir /var/samba
sudo chown nobody:nogroup /var/samba
sudo chmod 777 /var/samba


smb.confは次のように設定

sudo nano /etc/samba/smb.conf


[global]

## Browsing/Identification ###
# Change this to the workgroup/NT-domain name your Samba server will part of

workgroup = WORKGROUP

dos charset = CP932
unix charset = UTF-8
display charset = UTF-8
map to guest = Bad User

[Share]

path = /var/samba
writable = yes
guest ok = yes
guest only = yes
create mode = 0666
directory mode = 0777
share modes = yes



続いてSambaを起動

sudo /etc/init.d/samba restart

後でSambaを停止する場合は
sudo /etc/init.d/samba stop

http://www.turbolinux.co.jp/products/server/11s/user_guide/sambaboot.html



自動起動の設定は

sudo nano /etc/rc.local
に以下2行をexit 0の前に追加すればよい


sudo chmod 777 /var/samba
sudo /etc/init.d/samba restart

exit 0



フォーマットをいろいろ試してみたければこれらを参考に
Linuxファイルシステムをまとめてみました - Qiita
LinuxにおけるFAT32フォーマットの方法 - かえでのWebログ
大容量HDDのFAT32でのフォーマット(Linux) (r271-635)
http://qiita.com/ikuwow/items/c5832fd823e869825c80USB外付けHDDをext4にフォーマットする手順 - Qiita




※玄柴はshutdownがいちいち面倒なのでボタンを付けたい。
http://jellyware.jp/kurage/raspi/shutdown_button.html