Ichmy's SheevaPlug

あなたは
3 2 2 8 4 5 0
人目のお客様です。 (本日429人目、昨日667人) (from 2007-09-30)

SheevaPlug で遊ぼうのこーなー

Marvell社が提唱する超小型コンピュータの基本形で、動作が安定している SheevaPlug Dev Kitを紹介します。

SheevaPlug については偉大な先人方の記事がネットにあるので、わざわざ説明不要なのですが、

Sheevaだけこのサイトにないのもアレなので、書いて見ます。


0.目次

1.SheevaPlug-Devkitとは

2.日本での入手方法

3.別途用意する持ち物

4.NANDフラッシュからテスト起動

5.U-boot の更新

6.復旧再インストール手順

7.Debian Wheezy で遊ぼう

8.Fedora17 で遊ぼう

9.Arch Linux で遊ぼう

10.Gentoo Linux で遊ぼう

11.FreeBSD/ARM で遊ぼう

12.参考にさせていただいたサイト


1.SheevaPlug-Devkitとは

(1) SheevaPlug とは

SheevaPlug とは Marvell社が提唱する プラグ・コンピューター の基本形の超小型サーバです。

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

プラグ・コンピューターは、多くのメーカから各種発売されていますが、 ここではGLOBALSCALE社の SheevaPlug - Devkit を紹介します

なお、玄人志向の 玄柴 や、sheevaplug+ は eSTATA 端子の有無だけの違いです。

SheevaPlug photo
図1.SheevaPlug の写真
表1.主な機能
機能 内容
CPU Marvell Kirkwood 1.2GHz (ARM v5)
主記憶 512MB DDR2 RAM
補助記憶 512MB NAND FLASH内蔵
(u-boot、ubuntuインストール済)
SDHC ポート
ネット ギガビットイーサ ×1
USB 1ポート+OTGポート(JTAG兼用)
E-SATA 1ポート(玄柴、Sheevaplug+)
内蔵時計 電池バックアップ付き
電源 AC電源(100~240V/50~60Hz) 20W
筐体サイズ 110mm (L) x 69.5mm (W) x 48.5 mm (H)
JTAG JTAG アダプターは本体内蔵

(※注1) せっかくのプラグ部ですが、残念ながら日本の法令(電気用品安全法)に 適合していないので

PSE マークがついていない) 日本国内で使用する場合は、コンセントに直挿しせず、 プラグ部を取り外して、日本国内で販売された電源ケーブル(メガネ型 PSE付き)で接続してください。 法令については筆者もよく分かりませんので、自己責任でお願いします


2.日本での入手方法

(1) 購入先

米国からの個人輸入になります。

以前は輸入代行業者や、日本OEM版の玄柴があったのですが 今は ( 2011/4/2筆者検索 ) 輸入代行する日本業者はなく、 直接メーカに発注するしかないようです。

価格は、日本円で¥7,859 + 送料¥3,596 (2013/6/27現在)です。

発注方法については、GuruplugDisplayで遊ぼうのこーな を参照してください


3.別途用意する持ち物

(1) 母艦パソコン

Windowsパソコンでいいので用意してください。(Macも可能) Linuxが走っていればなお良しです。

(2) 電源ケーブル

日本国内仕様のメガネ型電源ケーブル ( たとえばこちら )

(3) 端末エミュレータソフト

筆者は普段Puttyを 使っています。別の端末ソフトでもOKです


------ここからは必須ではないものの、筆者推奨品です

(4) USBケーブル

コンソール接続用ミニUSB-Bタイプは別途用意することを薦めます 付属品のケーブルは抜けやすいので


4.NANDフラッシュからテスト起動

(1) コンソールUSBのドライバーインストール

SheevaPlug のコンソールはUSBになっており、 まずはそのドライバーを入れます。 入れ方は以下。

  • ① プラグコンピュータ開発元の plugcomputer.org のサイトに行く
  • ② 上部の「resources」のタグから「downloads」を選択
  • ③ 右下の「PlugComputer Basic」の欄の「Tools/Drivers」をクリックしてください。求める各種ファイルがあります
  • ④ 一番下の「PlugComputer Software & Design Information - Revision 1.2」欄の下から3行目の SheevaPlug_Host_SWsupportPackageWindowsHost1.2.zip がUSBドライバなので取得し、展開しておく
  • ⑤ 母艦とSheevaPlugをminiB-USBケーブルでつなぐ
  • ⑥ SheevaPlug の電源を入れて母艦に認識されるとドライバの場所をきいてくるので、先ほど展開した④のドライバの場所を入力
  • ⑦ そのとき、COMの何番に紐づいたかはメモして置いてください

(2) シリアル回線の設定

母艦とSheebaPlug をminiB-USBケーブルで接続し、 端末エミュレータを起動して下さい。

通信条件は、115200bps、データ長8ビット、ストップビット1、パリティ無し フロー制御無しです。

(3) テスト起動

電源をつなぐと起動します。 ユーザー名root、パスワードnosoup4uでログインしてください。

そのまま使い続けてもよいのですが、内蔵NANDフラッシュは消耗品で 交換できないので後述する方法で、

SDカードかUSBからのブートに変更することを勧めます

一通り触ったら、shutdown -r now してください。

(4) 環境変数のメモ

再起動したら再びubootが通常起動のカウントダウンを始めます

ここでそれを一旦とめて(何かキーを叩く)、printenvコマンドを入れて 表示される各変数の値をログに

記録しておくことを薦めます。


5.U-boot の更新

最近 Sheeva を買われた方のサイトを見ると、2年前に騒がれていたバグ付きubootがいまだに入っているとのこと。新規に買われた方はubootの以下のコマンドでubootのバージョンを確認してください

 Marvell>> version
U-Boot 2012.04.01 (Jun 01 2012 - 02:27:06)
Marvell-Sheevaplug - eSATA - SD/MMC
gcc (Debian 4.6.3-5) 4.6.3
GNU ld (GNU Binutils for Debian) 2.22

上記は筆者環境の例ですが、2009年などの古いバージョンの方はこちらのページ等のやり方で更新ください。

tftp サーバー立てが、よく分からない方は、次の手順でも更新できます

① 上記3章で示したもののほかに、USBメモリかSDHCカードで中身消しても良いものを用意してください
   用意したメディアをFAT32でフォーマットします(NTFS不可)

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

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

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

(SDHC カードの場合)
   mmcinit
   fatload mmc 0:1 0x0800000 u-boot.kwb
   nand erase 0x0 0x60000
   nand write 0x0800000 0x0 0x60000
(USBメモリの場合)
   usb start
   fatload usb 0:1 0x0800000 u-boot.kwb
   nand erase 0x0 0x60000
   nand write 0x0800000 0x0 0x60000

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

⑥ イーサネットのMACアドレス設定が初期化されてしまうので以下再設定。
  xx:xx:xx のところにSheevaの裏に記載されている自分の MAC アドレスを書いてください

   setenv ethaddr 00:50:43:xx:xx:xx
   saveenv

⑦ SheevaPlug+や、玄柴など E-Sata 端子を持つSheevaをお持ちの方はさらに以下設定

   setenv machid a76
   saveenv

6.復旧再インストール手順

この章では、不幸にも起動せず、壊れたレンガと化した、Sheevaplug を復旧再インストールするツール、SheevaPlugInstaller を紹介します

(0) このツールで出来ること

このツールでは JTAG機能を用いて、SheevaPlug を工場出荷状態に戻すことが出来ます。 具体的には、

① NAND内のu-bootを更新します。

② NAND内のu-bootの環境変数を工場出荷状態に戻します。

③ NAND内のUbuntuを再インストールします。

(1) 用意するもの

上記3章で示したもののほかに、USBメモリ(中身消しても良いもの)も用意してください

(2) 母艦の準備

ここでは、母艦はWindows マシンとします。

① 必要なファイルの入手
  SheevaPlugInstaller を ここからダウンロードします
  ありかは、公式サイト→Downloads → Plug Computer Basic → Tools / Driversです
  さらに、LibUSBドライバを ここからダウンロードしてください。
  いくつかファイルがありますが フィルタドライバlibusb-win32-devel-filter-?.?.?.exe を落としてください

② ドライバのインストール
  母艦に4章で示した、コンソールUSBドライバをインストールしておいてください
  フィルタドライバlibusb-win32-devel-filter-?.?.?.exe を実行しインストールしてください

③ 上記USBメモリをFAT32 でフォーマットしてください (NTFS不可)

(3) 母艦での作業

① 上記SheevaplugInstallerを解凍展開ください。
  ここでは D:\sheevaplug-installer-v1.0 に展開した例を書きます

② U-Boot環境設定ファイル( MAC アドレス )を設定する
  D:\sheevaplug-installer-v1.0\uboot\uboot-envの下の、uboot-mmc-custum.txt と
   uboot-nand-custum.txt を編集します。    ethaddr 00:50:43:xx:xx:xx と11行あたりに書いてあります。
  各自のSheevaの裏に記載されている自分の MAC アドレスに変更してください

③ USBにデータを展開
   D:\sheevaplug-installer-v1.0\installer 配下のファイルをUSBメモリに展開
  uImage 等のファイルをUSBメモリのルートディレクトリにコピーします

④ 母艦からSheevaPlugを切り離し
   もし、SheevaPlug と母艦をUSBコンソールで接続している場合は、切断してください

(4) SheevaPlugでの作業

① 母艦とUSBケーブルを接続し、上記USBメモリを挿し、電源を入れてください。

(5) 再び母艦での作業

① コマンドプロンプトを起動します

② D:\sheevaplug-installer-v1.0に移動

③ 以下コマンドを実行
   (a) runme.exe nand :nand にubuntuを書き込む場合
   (b) runme.exe mmc :SDカード にubuntuを書き込む場合

④ コマンドプロンプトで以下のメッセージが2つとも出たらU-boot書込完了です
   (a) wrote file uboot-env.bin to NAND flash 0 up to offset 0x000c0000 in ??.??s」
   (b) wrote file uboot.bin to NAND flash 0 up to offset 0x00074000 in ???.??s
   上記メッセージが出れば、runme.exe はお役御免です。コントーロールCで止めてください。
  裏では、引き続きubuntu 書込みが継続されています

⑤ USBケーブルを一度抜き差しし、puttyなど端末ソフトでコンソール接続しなおしてください
  ubuntu の書込みログが流れるはず。再起動がかかり、ログイン画面まで行けば完了です。
  ユーザー名root、パスワードnosoup4uでログインしてください。

(6) u-boot などのバージョン変更

なお、上記(3)の後で

① D:\sheevaplug-installer-v1.0\uboot\uboot.bin を自分の好みのバージョンのU-boot に置換できます。

② USBに書き込んだカーネルuImage や、rootfs.tar.gz も同様に置換、変更出来ます


7.Debian Wheezy で遊ぼう

(0) はじめに

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

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

① NANDは交換できない消耗品なので、温存してOSは別のメディアにインストールしたい。

② Ubuntu は SheevaPlug の CPU ARMv6 への対応を止めていて、新しいバージョンが入手できない。

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

(1) 用意するもの

上記3章で示したもののほかに、OSをインストールするメディア、SDHCフルサイズカード、もしくはUSBメモリで、4GB以上、中身消しても良いものも用意してください

u-bootが古いと動かないので、前章5.にてu-bootを更新し u-boot 2011.12-3より新しくしてください

(2) DebianInstallerの起動

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

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

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

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

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

(SDHC カードの場合)
   mmc init
   fatload mmc 0:1 0x00800000 /uImage
   fatload mmc 0:1 0x01100000 /uInitrd
(USBメモリの場合)
   usb start
   fatload usb 0:1 0x00800000 /uImage
   fatload usb 0:1 0x01100000 /uInitrd
(上記のあと、SDHC,USBメモリ共通で以下のコマンドを入力)
   setenv bootargs console=ttyS0,115200n8 base-installer/initramfs-tools/driver-policy=most
   bootm 0x00800000 0x01100000

⑥ インストーラが起動しますので、質問に適宜答えて進めてください。
  インストーラが繰り出す質問で Select a language → 言語は “ C ” を選択してください。

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

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

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

(SDHC カードの場合)
   setenv bootargs_console console=ttyS0,115200
   setenv bootcmd_mmc 'mmc init; ext2load mmc 0:1 0x00800000 /uImage; ext2load mmc 0:1 0x01100000 /uInitrd'
   setenv bootcmd 'setenv bootargs $(bootargs_console); run bootcmd_mmc; bootm 0x00800000 0x01100000'
   saveenv
(USBメモリの場合)
   setenv bootargs_console console=ttyS0,115200
   setenv bootcmd_usb 'usb start; ext2load usb 0:1 0x00800000 /uImage; ext2load usb 0:1 0x01100000 /uInitrd'
   setenv bootcmd 'setenv bootargs $(bootargs_console); run bootcmd_usb; bootm 0x00800000 0x01100000'
   saveenv 

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

(5) SheevaPlug の初期設定

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

② 日本語ローケールの設定
   以下のコマンドを実行し、ja_JP.UTF-8とja_JP.EUC-JPを追加する。 お好みでどちらかをデフォルトに設定

  $ sudo dpkg-reconfigure locales

③ パッケージのアップデートと 最小限必要と思われるパッケージ( sudo と ssh )のインストール

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


8.Fedora17 で遊ぼう

(0) はじめに

この章では、2012年5月29日にリリースされたFedora17 をインストールします。 残念ながら、Fedora18は、筆者のSheeva では起動できませんでした。 ちなみに元ねたはこちら

(1) 母艦の準備

上記3章で示したもののほかに、OSをインストールするメディア、SDHCフルサイズカードを用意してください。

また、SDHCカードアダプタをもつLinuxマシンを用意してください。 筆者はVMWare 上 で Ubuntu を用意

筆者のSDHCカードアダプタは /dev/sdb で認識されます。以後説明で必要に応じ読み替えてください

(2) 母艦での作業

① 中身が丸ごと消えてもいいSDHCフルサイズカードを用意し、アダプタに接続

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

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

 (プレビルドされたイメージ取得)
  $ wget http://download.fedoraproject.org/pub/fedora-secondary/releases/17/Images/arm/Fedora-17-arm-kirkwood-mmcblk0.img.xz
 (SDへの書込)
  $ sudo su
  # xzcat Fedora-17-arm-kirkwood-mmcblk0.img.xz > /dev/sdb
  # sync 

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

上記書き込みが完了したら、母艦とsheevaをUSBケーブルを接続し、上記SDHCカードを挿し、電源を入れて、

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

  setenv bootargs 'console=ttyS0,115200 root=/dev/mmcblk0p2 rootdelay=3'
  setenv loadInitrd 'fatload mmc 0:1 0x7400000 uInitrd-kirkwood'
  setenv loadImage  'fatload mmc 0:1 0x6400000 uImage-kirkwood'
  setenv bootcmd    'mmc init; $(loadImage); $(loadInitrd) ; bootm 0x6400000 0x7400000'
  saveenv

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

(4) SheevaPlug の初期設定

① 初期ログイン

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

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

  内蔵イーサは筆者の環境でDHCPでのIPアドレス取得に失敗した。

  /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

③ パッケージの更新

 # yum -y update 

9.Arch Linuxで遊ぼう

Arch Linuxはシンプルな基本構成とと強力なパッケージ管理システムが評価されて いるディストリビューションで、各種ARMガジェットに対応しています。 ためしにインス>トールしてみます。ちなみに元ネタは公式サイト

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

本来なら、本家Wiki に書いてあるSheevaplugInstaller を応用したやり方でインストールしたいのですが、筆者の環境で動かないので、以下のように手動で書き込みます

やり方はBeagleboardでの記事と基本的に同じなのであわせて読んでください。 まずは、SDHCにパーティションを2つ(boot用とrootfs用) 切ります。 ただし、先頭のブートパーティションは Linuxパーティション にしてください

 ichi@ubuntu-vm:~$ sudo fdisk /dev/sdb
 コマンド (m でヘルプ): n
 コマンドアクション
 e   拡張
 p   基本パーティション (1-4)
 [ p ]
 パーティション番号 (1-4): [ 1 ]
 最初 シリンダ (1-1021, 初期値 1): [ リターンを押す ]
 初期値 1 を使います
 Last シリンダ, +シリンダ数 or +size(K,M,G) (1-1021, 初期値 1021): [ +128M ]

 コマンド (m でヘルプ): [ a ]
 パーティション番号 (1-4): [ 1 ]

 コマンド (m でヘルプ): n
 コマンドアクション
 e   拡張
 p   基本パーティション (1-4)
 [ p ]
 パーティション番号 (1-4): [ 2 ]
 最初 シリンダ (19-1021, 初期値 19): [ リターンを押す ]
 初期値 19 を使います
 Last シリンダ, +シリンダ数 or +size(K,M,G) (19-1021, 初期値 1021):  [ リターン を押す ]
 初期値 1021 を使います
 コマンド (m でヘルプ): [ w ]     ※入力箇所をカギ括弧で強調しています 

(2) microSDHCのフォーマット

先頭パーティションは ext2 で、第2パーティションは ext3 でフォーマットします

 ichi@ubuntu-vm:~$ sudo mkfs.ext2 -L boot /dev/sdb1
 ichi@ubuntu-vm:~$ sudo mkfs.ext3 -L rootfs /dev/sdb2 

(3) bootパーティションの中身書込

Arch linux 公式サイトから SheevaplugInstaller をダウンロードしますが、うまく動かないので、手動でカーネルだけ拾い出してSDHCにコピーします

 ichi@ubuntu-vm:~$ wget http://archlinuxarm.org/mirror/sheeva/sheevaplug-installer-v1.1-lite.tar.gz
 ichi@ubuntu-vm:~$ tar xvzf sheevaplug-installer-v1.1-lite.tar.gz
 ichi@ubuntu-vm:~$ cd sheevaplug-installer-v1.1-lite/installer
 ichi@ubuntu-vm:~$ sudo mount  /dev/sdb1 /mnt/sd     (マウントポイントは各自の環境に合せ読替ください)
 ichi@ubuntu-vm:~$ sudo cp * /mnt/sd
 ichi@ubuntu-vm:~$ sync
 ichi@ubuntu-vm:~$ sudo umount /dev/sdb1 

(4) rootfsパーティションの中身書込

Arch linux 公式サイトからルートパーティションの中身をダウンロードし書き込>み

 ichi@ubuntu-vm:~$ wget http://archlinuxarm.org/os/ArchLinuxARM-armv5te-latest.tar.gz
 ichi@ubuntu-vm:~$ sudo mount  /dev/sdb2 /mnt/sd     (マウントポイントは各自の環境に合せ読替ください)
 ichi@ubuntu-vm:~$ sudo tar xvpzf ArchLinuxARM-armv5te-latest.tar.gz -C /mnt/sd
 ichi@ubuntu-vm:~$ sync
 ichi@ubuntu-vm:~$ sudo umount /dev/sdb2

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

上記書き込みが完了したら、母艦とsheevaをUSBケーブルを接続し、上記SDHCカードを挿し、電源を入れて、

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

  setenv bootargs 'console=ttyS0,115200 root=/dev/mmcblk0p2 rootdelay=3'
  setenv arcNumber 2097
  setenv mainlineLinux 'yes'
  setenv bootcmd    'mmc init; ext2load mmc 0:1 0x0800000 uImage; bootm 0x00800000'
  saveenv

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

(6) SheevaPlug の初期設定

① 初期ユーザー:root 、初期パスワード: root です。なるべく早く変更してください

② 日本人向け初期設定として /etc/rc.confの以下の行を変更します

 LOCALE="ja_JP.utf8"
 TIMEZONE="Asia/Tokyo"
 KEYMAP="jp106" 

  /etc/locale.gen に、以下の行を追加し、locale-gen コマンドを実行してください

 ja_JP.UTF-8 UTF-8
 ja_JP.EUC-JP EUC-JP

③ ネットワークIPを固定にしたい方は /etc/rc.confの以下の行を変更します

 HOSTNAME="sheeva" (お好みのHOST名をセット)
 interface=eth0
 address=192.168.0.2  (この行以降のIPアドレスを空白にするとDHCPから取得になりま>す)
 netmask=255.255.255.0
 broadcast=192.168.0.255
 gateway=192.168.0.1

/etc/hosts に、以下の行を追加し先ほどセットした自分のホスト名のIPを登録します

 192.168.0.2 sheeva sheeva.ichmy.0t0.jp

  /etc/resolv.conf に、以下の行を追加し自分のネームサーバーを登録します

 nameserver 192.168.0.1 

④ パッケージ管理システムを以下のコマンドで初期化し、パッケージを最新にします

 # pacman -Sy (最新のソースリストと同期)
 # pacman -Su (既存の環境のアップデート)

11.FreeBSD/ARM で遊ぼう

(0) はじめに

2012年12月31日にFreeBSDの新Ver 9.1-Releaseがリリースされました。 これを記念し、FreeBSD 9Release (ARM版) をインストールします。

FreeBSD は残念ながらNANDフラッシュ、SDカードに未対応なので、USBメモリにインストールします

(1) 用意するもの

上記3章で示したもののほかに、OSをインストールするUSBメモリで、4GB以上、中身消しても良いものも用意してください

FreeBSD 9Release が走っている母艦を用意してください。(筆者はVMware上で用意)

(2) 母艦にてソースの取得

cvsup を用いてコースコードを取得します

① cvsup をまだインストールされていない方は、パッケージ devel/cvsup-without-gui をインストール下さい。

② 9Release のソースを取得するためのsupfile を以下のように作成 /usr/local/etc/cvsup/supfile に置きます

  *default host=cvsup.jp.FreeBSD.org
  *default base=/var/db
  *default prefix=/usr
  *default release=cvs tag=RELENG_9
  *default delete use-rel-suffix
  *default compress
  src-all 

③ 以下コマンド実行で、/usr/src に ソースが展開されます

  # cvsup /usr/local/etc/cvsup/supfile 

(3) 母艦にてカーネルコンフィグの設定

/usr/src/sys/arm/conf/SHEEVAPLUG が sheevaplug用 カーネルコンフィグ の初期ファイルです。

これを cp SHEEVAPLUG SHEEVAICHMY などとコピーして使います

筆者は以下のように修正しましたが、各自の環境に合わせてください

 (コメントアウトした行、ネットワークブートは今回しないため)
  #options      NFSCL                   #New Network Filesystem Client
  #options      NFSLOCKD                #Network Lock Manager
  #options      NFS_ROOT                #NFS usable as /, requires NFSCLIENT
  #options      BOOTP
  #options      BOOTP_NFSROOT
  #options      BOOTP_NFSV3
  #options      BOOTP_WIRED_TO=mge0

  #options      NO_SWAPPING   (←筆者はSWAPを用意したため、SWAP不要時はそのまま)
 (内容修正した行)
  ident         SHEEVAICHMY    ← カーネルの名前です。気に入った名前を付けてください
  # Root fs on USB device
  options       ROOTDEVNAME=\"ufs:/dev/da0s2a\"   ← カーネルが掴みに行く"/"の位置
 (追加した行、玄柴やSheevaPlug+ ではE-SATAガ使えます)
  # SATA
  device          ata
  device          atadisk

(4) 母艦にてコンパイル

以下コマンド実行

  # cd /usr/src
  # export TARGET_ARCH=arm
  # export CROSS_BUILD_TESTING=yes
  # make buildworld  TARGET_ARCH=arm -DWITH_FDT
  # make buildkernel TARGET_ARCH=arm KERNCONF=SHEEVAICHMY 

最近のカーネルコンフィグでは FDT が有効になっているので、ユーザーランドもそれに対応して -DWITH_FDT で作成します。

また、KERNCONF= の先は、先ほど作成したカーネルコンフィグファイル名を指定してください

(5) 母艦にてUSBパーティション切り

以下コマンド実行、筆者のUSBメモリはda1として認識されています。

  # gpart destroy da1
  # gpart create -s MBR da1
  # gpart add -s 32M -t freebsd da1
  # gpart add -t freebsd da1
  # bsdlabel -w /dev/da1s2
  # bsdlabel -e /dev/da1s2

筆者のUSBメモリは15Gを用意し、/=512M、swap=1536M、/var=2048M、/tmp=1024M、/usr=残り としましたので、bsdlabelはまず以下のように入力

  # /dev/da1s2:
  8 partitions:
  #        size   offset    fstype   [fsize bsize bps/cpg]
    a:     512M        *    4.2BSD        0     0
    b:    1536M        *      swap        0     0
    c: 31260600        0    unused        0     0         # "raw" part, don't edit
    d:    2048M        *    4.2BSD        0     0
    e:    1024M        *    4.2BSD        0     0

その後、残りの/usrも切り、最終的に以下のようになりました。

  # /dev/da1s2:
  8 partitions:
  #        size   offset    fstype   [fsize bsize bps/cpg]
    a:  1048576       16    4.2BSD        0     0     0
    b:  3145728  1048592      swap
    c: 31260600        0    unused        0     0         # "raw" part, don't edit
    d:  4194304  4194320    4.2BSD        0     0     0
    e:  2097152  8388624    4.2BSD        0     0     0
    f: 20774824 10485776    4.2BSD        0     0     0

ご自身の環境に合わせて切ってください。編集せず初期設定のままでも問題ありません

swap はあとでファイルにでも取れますし、全容量"/"にしても問題ありません

続いて以下のようにフォーマットします

  # newfs_msdos /dev/da1s1 (第1パーティションはFAT でフォーマットしてください。u-bootが読めるように)
  # newfs -n da1s2a  (da1s2d da1s2e da1s2fも同様にフォーマットしてください)
(tips)
ちなみに、母艦のFreeBSDでGNOMEを入れている方、HALDが頼みもしないのに 勝手にUSBをマウントしてお困りではありませんか?  こちらが、umount した直後に再マウントされたら腹立ちますよね
そういう時はGNOMEからログオフしてSSHからリモートログインして作業すると解消します。

(6) 母艦にてUSBにインストール

① カーネルのインストール
  以下のコマンドを実行。SHEEVAICHMYのところは、ご自身のカーネル名で読み替えてください

  # mount -t msdosfs /dev/da1s1 /mnt
  # cp /usr/obj/arm.arm/usr/src/sys/SHEEVAICHMY/kernel.bin /mnt
  # umount /mnt 

② ユーザーランドのインストール
  まず、ユーザーランドのインストールをするのに、auditdistd 用のユーザーを作らなければならないらしい
  まだ、auditdistd というユーザーを作っておられない方は # vipw コマンドで/etc/passwd に以下の行を追加

  auditdistd:*:78:77::0:0:Auditdistd unprivileged user:/var/empty:/usr/sbin/nologin
  以下のコマンドを実行し、USBパーティションをマウント(2行目以降は必要な方のみ)

  # mount /dev/da1s2a /mnt
  # mkdir /mnt/var;  mount /dev/da1s2d /mnt/var
  # mkdir /mnt/tmp;  mount /dev/da1s2e /mnt/tmp
  # mkdir /mnt/usr;  mount /dev/da1s2f /mnt/usr

  次に /etc 周りを設定

  # cd /usr/src
  # export DESTDIR=/mnt
  # mergemaster -p

  ここで聞かれる質問は、さいしょの2つは「i」を押して/etc/groupと/etc/master.passwdを新しいファイルで

  上書きを選択し、3つの質問には「y」を押してpasswdファイルを更新を選択します。

  次にユーザーランドのインストール

  # make installworld TARGET_ARCH=arm
  # make distrib-dirs TARGET_ARCH=arm
  # make distribution TARGET_ARCH=arm

③ 初期設定
  (a) /mnt/etc/rc.conf をたとえば以下のように設定

  hostname="ichmy.0t0.jp"
  ifconfig_mge0="DHCP"
  defaultrouter="192.168.24.1"
  sshd_enable="YES"

  (b) /mnt/etc/fstab をたとえば以下のように設定

 # Device                Mountpoint      FStype  Options         Dump    Pass#				
/dev/da0s2b             none            swap    sw                       0  0				
/dev/da0s2a             /               ufs     rw,noclusterr,noclusterw 0  0				
/dev/da0s2d             /var            ufs     rw,noclusterr,noclusterw 0  0				
/dev/da0s2e             /tmp            ufs     rw,noclusterr,noclusterw 0  0				
/dev/da0s2f             /usr            ufs     rw,noclusterr,noclusterw 0  0	

最後にすべて umount して、USBメモリを抜いてください

(7) SheevaPlug 起動

① 起動に必要な u-boot の環境変数の設定
  立ち上げに必要な環境変数を以下のように実施してください

  setenv bootcmd 'usb start;fatload usb 0:1 900000 kernel.bin;go 900000'
  saveenv

② 起動
  リセットして起動。 初期ユーザはroot パスワードなしです。起動したらすぐにパスワード設定してください

(8) Ports のアップデート

FreeBSD(ARM版) はまだ正式対応に至っていないので、パッケージがありません

かなり時間が掛かりますが、各アプリケーションはportsを使って自分でコンパイルします

1回コンパイルすれば、パッケージが手元に残りますので、2回目以降はそれを使います

まず、以下の行を /etc/portsnap.conf に追加して、不要なportsを指定します

REFUSE arabic chinese french german hebrew hungarian
REFUSE korean polish portuguese russian ukrainian vietnamese
REFUSE x11 x11-clocks x11-fm x11-fonts
REFUSE x11-servers x11-themes x11-toolkits x11-wm

続いて以下実行

  # portsnap fetch
  # portsnap extract  (2回目以降から不要)
  # portsnap update
  # mkdir /usr/ports/packages (これも2回目以降から不要)

これで /usr/ports 以下にポーツが展開されます。あとの使い方はPCと同じなので省略

(9) FreeBSD/ARM での Ports の注意点(バッドノウハウ)

残念なことに、いくつかのPorts は ARM版ではコンパイルエラーが出ます

筆者の環境で発生したのは参考までに

① mysql 5.5.20 : お手上げ。


12.参考にさせていただいたサイト

(1) 開発元公式サイト plugcomputer.org

(2) Martin Michlmayr 様サイト Debian HOWTOs

(3) Papa様ブログ 「パパ日記」 旧ブログでFreeBSD/ARM のコンパイル等を解説されておられましたが
  旧ブログの内容は故障で消失されたとのこと

(4) might様ブログ 俺日記


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


ichmy本家サイト

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