あなたは
1 6 3 2 6 2 4
人目のお客様です。 (本日452人目、昨日654人) (from 2007-09-30)

Guruplug Server Standard で遊ぼうのこーなー

このこーなでは、最近になって日本の代理店が技適付きで売り出した Guruplug Server Standard で遊びます

また、ちょっとした電子工作(圧着ケーブルを使って信号引き出し、半田づけは無し)も行います

なお、同じ Guruplug でも画像出力つきのモデルについては、GuruplugDisplayで遊ぼうのこーなを参照。


電圧破壊注意
この先に紹介するシリアルコンソール接続を実施すると、内部に保護回路が用意されておらず、
SOCに直結されているので、不注意で変な電圧に接触させると、致命的な故障につながります。
当サイトの情報を使用することにより生ずる直接または間接のいかなる種類の損失に 対しても、 当サイトは責任を負いかねます。
これらのリスクを自己責任で対処できる方のみ、以降の記事をご覧下さい

0.目次

1.Guruplug Server Standard とは

2.まずは 動作確認

3.シリアルコンソールを繋ごう

4.U-boot の更新

5.rootfs のUSBへのコピーと各種初期設定

6.Debian Wheezy で遊ぼう

7.Fedora18 で遊ぼう


1.Guruplug Server Standard とは

(1) Guruplug Server Standard とは

Guruplug Server Standard とは Marvell社が提唱する プラグ・コンピューター の1種の超小型サーバです。

プラグ・コンピューターは、電源アダプターのような形状をしており、 コンセントに挿すだけでどこでもサーバー設置できることがコンセプトの製品で、 10cm角の筐体の中にパソコンに必要な機能が一通りそろっており linux で動かすことが可能です。

プラグ・コンピューターは、他にも各種発売されていますが、 ここでは Guruplug Server Standard を紹介します

なお、同じ Guruplug でも画像出力つきのモデルについては、GuruplugDisplayで遊ぼうのこーなを参照。

Guruplug Server Standard photo
図1.Guruplug Server Standardの写真
表1.Guruplug Server Standard の主な機能
機能 内容
CPU Marvell 88F6281 1.2GHz (ARMv5TE)
主記憶 512MB RAM
補助記憶 512MB NAND FLASH内蔵 / USB
(注:SDカードアダプタが無い)
ネット ギガビットイーサ ×1
無線 Bluetooth 2.1, Wi-Fi 802.11 b/g
USB 2ポート
UART 4ピンハーフピッチ(1.25mm)コネクタ、3.3V
JTAG 8ピンハーフピッチコネクタ
電源 AC電源(100~240V/50~60Hz)
サイズ 95x65x48.5mm

(2) 日本での入手方法

内蔵の無線機器を合法的に使うには、技適証明を取得した代理店((株)ジェイエスピー)から購入下さい。

無線が不要のかたはGuruplugDisplayで遊ぼうのこーな を参考に米国から直輸入すれば安く入手できますが、そのような方には本機種ではなく、SheevaPlug など他機種をお勧めします

(3) JTAG って要るの?

Guruplug Server Standard の標準構成では、残念ながらu-bootにつながるコンソールが無いので、そのままではOSの乗せ換えが出来ません。

JTAGがあれば、OSの乗せ換えどころか、u-boot さえ動かなくなった機器を正常な状態に戻すことが出来るのですが、そこまでの機能が必要でしょうか?

本サイトではJTAGなしでシリアルコンソールにつなぐ方法を以下紹介しますが、多少のリスクと工具の投資が要ります。 まとめると

① OS乗せ換えに興味が無い → JTAG不要

② 圧着なんて面倒、純正品なら安心、最悪の状況にも備えたい → JTAG買ってください

③ 多少のリスクは敢えてとる → JTAG不要


2.まずは 動作確認

購入したらまずは、動作確認してください。って言っても、電源とネットワークケーブルをつなぐだけです。

初期ユーザー名「root」、初期パスワードは「nosoup4u」です。

ただ、guruplugのIPアドレスはDHCP で現時点で固定困難なので、接続先のIPがよく分からないが

ルーターの払出IPログを読む等で調べて、SSHでログインしてください

この時点で無線LANの親機になってますので使ってみてください


3.シリアルコンソールを繋ごう

本機種は残念ながら標準のままではコンソールにアクセスできません。コンソールにアクセスできないのではOSを乗せ換えて遊べません。JTAGを買えばいいのですが7千円も追加で出すのも癪なので、アダプタをつなぎこむケーブルを自作して遊びます。

シリアルコンソール接続図
図2.シリアルコンソール接続部写真
(3.3V端子は不使用、つながないで)

(1) 用意する持ち物

  ここでは端子からシリアル信号を取り出すので多少の工作を
  しますが、半田コテは使わず、圧着コネクタを用います
① USB-TTLシリアルコンバータ(3.3V) ( 筆者例:FTDI社製)
  一般のシリアルと違い組み込み系では電圧が3.3Vのものが
  よく使われます。 3.3V用のシリアル通信機材を用意してください。
  右写真の筆者機材の例では端子が2.54mmピッチメスコネクタに
  なっていて直接繋がらないので、以下でコネクタ変換をします
  ※ よく似た5V用品もあり、電圧を間違えると重大な故障
② 工具 : 精密圧着ペンチ( 筆者例:エンジニア社製PA-09)、
       ニッパ、ピンセット
③ 部品 : Guruplug側コネクタはハーフピッチ(1.25mm)のものです
       molex51021 の4極と適合ピンを買えばいいのですが、
       ハーフピッチの圧着には熟練のワザが要るので、
       筆者はこちらの出来合い品を買いました。
       シリアルコンバータ側コネクタは通常の2.54mmピッチのものを使用
        (筆者例:QIコネクタ6P適合ピン)  注:QIコネクタは2550コネクタとも言います。

(2) 変換コネクタの作成

  上記部品を使って、変換コネクタを作ります。シリアルコンバータ側の圧着は デジットさんのブログを参照し
  作業ください
  右上の図2にGuruplug側コネクタの信号順を記載しますので、それぞれGNDは→GNDに、RxDは→TxDに、
  TxDは→RxDにとクロスに繋げばOKです。
  なお今回は3.3Vの端子は使用しないので間違って接続しないで下さい (筆者は根元から切り飛ばし)

(3) 通信接続

   出来上がったコネクタをGuruplug の4ピンコネクタにつなぎます。コネクタには上下がありますので要確認
   またこのとき、かなり奥まできっちり入れ込む必要があるので、楊枝等で押し込んでください
  筆者のWin7パソコンではシリアルコンバータは挿せば勝手にドライバ入り、COM3 として認識されました。
  筆者のWin8パソコンではドライバ自動インストールに失敗しましたが、こちらからドライバを入手して
   インストールすればOKでした。
  通信条件は、115200bps、データ長8ビット、ストップビット1、パリティ無し フロー制御無しです。

通信に成功すると、U-bootの初期状態での環境変数のメモを取ることをお勧めします。

ちなみに、筆者機体の購入直後での環境変数と起動時のメッセージ例を リンク先にアップしています

(※) MACアドレス等、一部伏字にしています。ご了承ください


4.U-boot の更新

シリアル接続に成功し、debian 等のOSを別途インストールする方は、U-boot の更新をお勧めいたします。

ちなみに、この章の元ネタは、こちら

筆者が購入した直後の状態では U-bootのバージョンは以下のとうりでした

 Marvell>> version
 U-Boot 2010.03 (Oct 31 2011 - 15:23:58)
 Marvell-GuruPlug

上記は筆者環境の例ですが、2011年3月以前のVer.の方は、以下の方法等でU-boot の更新を勧めます

① まず、U-bootで以下のコマンドで、Guruplugの MACアドレスの設定をメモします

 Marvell>> print ethaddr
 Marvell>> print eth1addr

② 中身消しても良いUSBメモリを用意してください
   用意したメディアをFAT32でフォーマットします(NTFS不可)

③ U-Bootバイナリをこちらからダウンロードし、上記メディアに書き込みます

④ GuruPlug の電源を入れます。OSはシャットダウンし、U-bootコマンド待ちの状態にします
  U-boot環境変数は次の手順で初期化されるので、必要な人は現状の値をメモしておいてください

⑤ 上記メディアを GuruPlugに差込、U-bootに以下のコマンドを入れます

 Marvell>> usb start
 Marvell>> fatload usb 0:1 0x0800000 u-boot.kwb
 Marvell>> nand erase 0x0 0x60000
 Marvell>> nand write 0x0800000 0x0 0x60000

⑥ reset コマンドを入力、再起動して、再びU-boot コマンド待ちにします

⑦ イーサネットのMACアドレス設定が初期化されてしまうので以下再設定。
  xx:xx:xx のところに、先ほどメモした自分の MAC アドレスを書いてください

 Marvell>> setenv ethaddr xx:xx:xx:xx:xx:xx
 Marvell>> setenv eth1addr xx:xx:xx:xx:xx:xx
 Marvell>> saveenv

5.rootfs のUSBへのコピーと各種初期設定

(0) はじめに

この章では、NAND に初期インストールされている Debian をUSBにコピーして使います

NANDは交換できない消耗品なので温存して、書き換えが頻繁なrootfs は別の メディアに移動します。

また、NANDは512MBしか容量が無いので'/'の容量拡張の目的もあります

ただし、カーネルは書き換え頻度少ないのでNAND上の現状品を流用します

(1) USBのパーティション切り

中身をすべて消していいUSBを用意してください。ここでは全エリアを1つのパーティションに切り直します。

① NAND からGuruplug を起動してください。

② USBを挿すとパーティションがあれば勝手にマウントされます。umount してください
  出来れば事前にすべてのパーティションを消しておいてください

③ まず、全パーティションを消します。

 # fdisk /dev/sda
 Command (m for help): [ p ]   ← パーティション表示

 Disk /dev/sda: 3859 MB, 3859808256 bytes
 119 heads, 62 sectors/track, 1021 cylinders
 Units = cylinders of 7378 * 512 = 3777536 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x000b25a3

 Device Boot      Start         End      Blocks   Id  System
 /dev/sda1   *           1          28      103261   83  Linux
 /dev/sda2              29        1021     3663177   83  Linux

 Command (m for help): [ d ]   ← パーティション削除
 Partition number (1-4): [ 2 ]

 Command (m for help): [ d ]
 Selected partition 1                   ※入力箇所をカギ括弧で強調しています 

③ 以下のように単一パーティションを切ります。切り方はお好みで変えても可。

 Command (m for help): n
 Command action
    e   extended
    p   primary partition (1-4)
 [ p ]
 Partition number (1-4): [ 1 ]
 First cylinder (1-1021, default 1): [リターンを押す]
 Using default value 1
 Last cylinder, +cylinders or +size(K,M,G) (1-1021, default 1021): [リターンを押す]
 Using default value 1021

 Command (m for help): [ w ]  ← 変更をUSBに書き込む
 The partition table has been altered!           ※入力箇所をカギ括弧で強調しています 

④ ext3 でフォーマットします

 # mkfs.ext3 /dev/sda1 

(2) NAND rootfs → USBへのコピー

USBをマウントして、ベタコピーです。 /dev は別途にコピー要です。

 # mkdir /mnt/usb
 # mount /dev/sda1 /mnt/usb
 # cd /
 # tar --one-file-system -cpf - . | tar xvp -C /mnt/usb 
 # cp -a /dev /mnt/usb
 # sync
 # umount /mnt/usb

(3) U-boot 環境変数設定

コピーが完了したら、再起動し、U-bootのコマンド待ちの状態に してください

立ち上げに必要な環境変数を以下のように設定してください

オリジナルと異なるのはx_bootargs_root だけですが、念のため他の起動に必要な変数もセットしておきます。

 Marvell>> setenv x_bootargs_root 'root=/dev/sda1 rootfstype=ext3 rootdelay=10'
 Marvell>> setenv bootcmd '${x_bootcmd_usb}; ${x_bootcmd_kernel}; setenv bootargs ${x_bootargs} ${x_bootargs_root}; bootm 0x6400000;'
 Marvell>> setenv bootcmd_usb 'usb start'
 Marvell>> setenv x_bootcmd_kernel 'nand read.e 0x6400000 0x100000 0x400000'
 Marvell>> setenv x_bootargs 'console=ttyS0,115200'
 Marvell>> saveenv  

reset コマンドで再立ち上げすると、Debian が起動します。

(4) GuruPlug の初期設定

① 内蔵イーサネットの設定
  内蔵イーサは eth0 で認識。 デフォルトではDHCPに設定されています
  お好みで /etc/network/interfaces を修正し固定IPに設定します。

② root のパスワード修正、初期ユーザーを追加

 # passwd
 # adduser hoge
 # visudo 

② パッケージのアップデート、と筆者の機材ではなぜかsudo がうまく動かないので再インストール

 # aptitude update
 # aptitude safe-upgrade
 # aptitude remove sudo
 # aptitude install sudo

③ 日本語ローケールの設定
   以下のコマンドを実行し、「All locales」のチェックは外して、ja_JP.UTF-8とja_JP.EUC-JPを追加する。
  お好みでどちらかをデフォルトに設定。aptitude safe-upgrade より先にやった方がよかったかも知れない。

 $ sudo dpkg-reconfigure locales

   さらに以下のコマンドを実行し、タイムゾーンをAsia/Tokyoに設定する。

 $ sudo dpkg-reconfigure tzdata

(5) GuruPlug の無線設定

ここでは、Guruplug を無線LAN のAP(基地局)にするための設定をします

購入直後から Guruplug は無線LANのAPになっていますが、セキュリティー無しなので設定します。

① SSIDの設定

/root の下にある init_setup.sh の11行目付近を以下のように修正。例題ではhoge-APにしてますが、気に入った名前を付けてください。

 #SSID=guru-uAP-`ifconfig uap0 | awk -F ":" '/HWaddr/ {print $6$7}'`
 SSID=hoge-AP

② セキュリティーの設定

同じく /root の下にある init_setup.sh の15行目付近に以下のような行を 元からある行の間に追加。

 ifconfig uap0 192.168.1.1 up                      ← 元からある行
 /usr/bin/uaputl sys_cfg_ssid $SSID                ← 元からある行
 /usr/bin/uaputl sys_cfg_protocol 32               ← 追加する
 /usr/bin/uaputl sys_cfg_wpa_passphrase "hogehoge" ← 追加する
 /usr/bin/uaputl sys_cfg_cipher 8 8                ← 追加する
 /usr/bin/uaputl bss_start                         ← 元からある行 

3行目の sys_cfg_protocol 32 はWPA2 を表します。WPAにする場合は 8

4行目の sys_cfg_wpa_passphrase はパスワードです

5行目の sys_cfg_cipher 8 8 は暗号化アルゴリズム「AES CCMP」を表します

それぞれ詳細が知りたい、ほかの設定に変えたい場合は以下コマンドで調べてください

 # /usr/bin/uaputl sys_cfg_知りたいコマンド --help

③ 再起動してください。設定は再起動後に有効になります


6.Debian Wheezy で遊ぼう

(0) はじめに

この章では、2013年5月4日にリリースされた Debian の“Wheezy” をインストールします。

NAND に初期インストールされている Debian を使い続けてもいいのですが、

OSを新しくインストールしなおします。ちなみに、元ネタは、こちら。

なお、移植者のMartin Michlmayrさんは無線にはあまり興味を持たれていないので、無線ドライバは未導入。

また、本記事は基本的にSheevaplug用記事と同じものです。

(1) 用意するもの

① 母艦パソコン

② 端末エミュレータソフト
  筆者は普段Puttyを 使っています。別の端末ソフトでもOKです

③ OSをインストールするメディア、USBメモリで、4GB以上、中身消しても良いものを用意してください

④ コンソール接続する装置、JTAG、または前章3、で作ったケーブル

⑤ u-bootが古いとインストーラーが動かないので、前章4.にてu-bootを更新してください

(2) DebianInstallerの起動

① 上記で用意したUSBをFAT32でフォーマットします(NTFS不可)

ここから インストーラの uImage と uInitrd をダウンロードして、 インストールメディアに書き込み

③ Guruplug の電源を入れます。OSはシャットダウンし、U-bootコマンド 待ちの状態にします

④ 必要なファイルをネットから落とすインストーラのため、GuruPlug に ネットワークをつないでおきます

⑤ 上記メディアをGuruPlugに差込、U-bootに以下のコマンドを入れます

  Marvell>> usb start
  Marvell>> fatload usb 0:1 0x00800000 /uImage
  Marvell>> fatload usb 0:1 0x01100000 /uInitrd
  Marvell>> setenv bootargs console=ttyS0,115200n8 base-installer/initramfs-tools/driver-policy=most
  Marvell>> bootm 0x00800000 0x01100000

⑥ インストーラが起動しますので、質問に適宜答えて進めてください。
  インストーラが繰り出す質問で Select a language → 言語は “ C ” を 選択してください。
  イーサネットは “ eth0 ” を 選択してください。
  パーティションは、Guided - use entire disk でOKです。

(4) U-boot 環境変数設定

インストールが完了したら、再起動し、U-bootのコマンド待ちの状態に してください

立ち上げに必要な環境変数を以下のように設定してください

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

reset コマンドで再立ち上げすると、Debian が起動します。

(5) GuruPlug の初期設定

前章5.と同じ内容なので省略。ただし、無線関係は設定出来ません。


7.Fedora18 で遊ぼう

(0) はじめに

この章では、2013年1月8日にリリースされた Fedora18をインストールします。 ちなみに元ねたはこちら

(1) 用意するもの

前章6のDebianと用意するものは同じです。

(2) 母艦での作業

① 中身が丸ごと消えてもいいUSBディスクを用意し、アダプタに接続

  次の手順で、全パーティションが消されて一から作成されます。mountされていたら umount ください。

② 適当な作業ディレクトリに移動し、以下のコマンドを実行してください

 (プレビルドされたイメージ取得)
 $ wget http://fr2.rpmfind.net/linux/fedora-secondary/releases/18/Images/arm/Fedora-18-kirkwood-arm.img.xz
(USBへの書込)
 $ sudo su
 # xzcat Fedora-18-kirkwood-arm.img.xz > /dev/sdb
 # sync 

(3) U-boot 環境変数設定

上記書き込みが完了したら、母艦とguruplugをコンソール接続し、上記USBを挿し、電源を入れて、

U-bootのコマンド待ちの状態にしてください。 立ち上げに必要な環境変数を以下のように設定してください

 Marvell>> set bootargs 'console=ttyS0,115200 root=LABEL=rootfs rootwait'
 Marvell>> set loadInitrd 'ext2load usb 0:1 0x7400000 uInitrd'
 Marvell>> set loadImage 'ext2load usb 0:1 0x6400000 uImage'
 Marvell>> set bootcmd 'usb start; ${loadImage}; ${loadInitrd} ; bootm 0x6400000 0x7400000'
 Marvell>> saveenv  

reset コマンドで再立ち上げすると、Fedora18 が起動します。

筆者の環境で初回起動で失敗し、自動で再起動しましたが、2回目ではOKでした。

(4) GuruPlug の初期設定

① 初期ログイン

  初期ユーザーは「root」、初期パスワードは「fedora」です。 ログイン後すぐにパスワード修正ください。

② パッケージの更新

 # yum -y update 

③ 内蔵イーサネットの設定

  お好みで、/etc/sysconfig/network-scripts/ifcfg-eth0 を以下のようにし固定IPに設定します。

  DEVICE=eth0
  BROADCAST=192.168.11.255
  IPADDR=192.168.11.10
  NETMASK=255.255.255.0
  NETWORK=192.168.11.0
  ONBOOT=yes
  TYPE=Ethernet
  GATEWAY=192.168.11.1
  DNS1=192.168.11.1

つづいて、以下コマンドを実行

 # systemctl disable NetworkManager.service
 # chkconfig network on 
 # reboot  

ガジェットで遊ぼうのこーなーへ戻る


メインメニュー

資格取るぞのこーなー

OS伝説で遊ぼうのこーなー

ガジェットで遊ぼうのこーなー