sheevaplug > memo

SheevaPlugのメモ(整理中)

目次

はじめに

アクセスログを見ると「SheevaPlug」のキーワードで飛んでくる人がメチャクチャ多いので、世の中にSheevaPlugで困っている人がメチャクチャ大勢いるようである。私の苦労が少しでも役に立てば嬉しいので、ここに自分の経験から得たメモを整理して残しておこうと思う。自分用の備忘メモが素材なので内容のレベル感はバラバラ。

私の環境は以下の通り。

  1. メインPC AthlonXP 2800+ A7N8X-Deluxe Windows2000
  2. サブノート CF-M32 Windows2000
  3. SheevaPlugに取って代わられたLinux機 Duron 1GHz A7N8X-X Vine Linux 3.2
  4. LAN構成

では健闘を祈ります。

購入直後

  • まずはUSBケーブルでWindows機に接続し、付属のドライバをインストール
    (SheevaPlug_Host_SWsupportPackageWindowsHostの中のinfファイル)
  • Tera Term ProやPuttyのようなターミナルソフトでシリアル接続を試みる
ポート(デバイスマネージャーで調べたcomポート)
ボーレート115200
データ8ビット
パリティ無し
ストップ1ビット
フロー制御無し
  • これでenterを押して何か出てくればユーザー名「root」パスワード「nosoup4u」でログイン
  • 何も出てこなければハードリセットしてみる

※リセットは下記のリセットホールにクリップの先などをまっすぐ差し込む

090803_2058~01.jpg
  • 上記でログインできればとりあえずOK
  • 私はメインのWindows2000機ではシリアル接続ができなかった。サブのWindows2000ノートだと問題なかったので(相性問題で片付けたくないが)ハードの認識が上手くいっていなかったのか、Windows2000をいじくり過ぎたのでどこか壊れていると思われる
  • カーネルやu-bootの入れ替え等、高度なカスタマイズをするためには絶対にシリアルコンソールが必要である。サブマシンやlinux機でシリアル接続できるようにしておこう
  • とりあえずの代替ログイン方法としてethernetで接続してssh2でログインする手がある
  • ルーター等のdhcpサーバーにethernetで接続し、IPアドレスを与える
  • デフォルトでssh2でログインできるので、Tera Term(Proでないやつ)等、ssh2に対応したターミナルソフトで上記IPアドレスに接続(ttsshはssh2未対応)
  • ユーザー名「root」パスワード「nosoup4u」でログイン

sheeva-2.6.39.4-uImage

  • eth0のMACアドレスは本体の裏に書いてありましたっ!
091017_1457~01.jpg
  • もう一点、rootのパスワードは必ず変更すること。さもないと最悪のセキュリティホールになる(笑)

とにかくまずsamba

  • このままだと種々の設定をするのにターミナルからvi*1で設定ファイルを編集するハメになるので、まず最初にsambaを設定してWindows機からサクラエディタ等で設定ファイルを編集可能にする
  • samba自体は既にインストールされているので、viで頑張って/etc/samba/smb.confを編集し、295行目辺りに以下の内容を書き加える(viの使い方はググって欲しい
[root_directory]
   comment = root_directory
   path = /
   valid users = xxxxx ←Windows機のユーザーID
   admin users = xxxxx ←Windows機のユーザーID
   read only = no
   directory mask = 0744
   hosts allow = xxx.xxx.xxx.xxx ←Windows機のローカルIPアドレス
   recycle:repository = .recycle ←以下ごみ箱の設定(後でもOK)
   recycle:keeptree = yes
   recycle:touch = no
   recycle:maxsize = 0
   recycle:versions = yes
   recycle:exclude = *.tmp ~$*
   recycle:directory_mode = 777

※共有フォルダ上のファイルを削除するとファイルがいきなり無くなるのでsambaごみ箱は是非設定しておいた方がよい
※ルートディレクトリ直下に上で設定した.recycleディレクトリを属性777で作っておく
※ゴメン、コレ忘れてた↓

[global]
    vfs objects = recycle
  • コマンドラインから以下の通りでユーザー追加
    # useradd xxxxx ←Windows機のユーザーID(smb.confに記述したもの)
    # passwd xxxxx ←パスワード設定
    # smbpasswd -a xxxxx ←-aオプション必須
  • コマンドラインから以下の通りsamba起動
    # /etc/init.d/samba start
  • これでWindows機からSheevaPlugの全てのフォルダにアクセスできるようになるのでテキストエディタで設定ファイルを書き換えることができる
  • とりあえず/etc/rc.localの最後の方に下記記載しておくと再起動時にsambaが自動で起動する
    # /etc/init.d/samba start
  • しかし後でchkconfigをインストールしてちゃんと起動スクリプトを設定する

初期設定みたいなもの

  • /etc/rc.localから以下の行を削除またはコメントアウト
    insmod /boot/fat.ko
    insmod /boot/vfat.ko
    /root/discoverd
    cd /
    ./demo.sh
    date 012618002009
    hwclock -w
  • ロケールとタイムゾーン設定
    # locale-gen ja_JP.UTF-8
    # echo 'LANG="ja_JP.UTF-8"' > /etc/default/locale
    # dpkg-reconfigure tzdata →メニューが出るのでAsia→Tokyoを選択
    # apt-get install ntp
    # ntpq -p
    # hwclock -w
  • /etc/apt/sources.listの内容を書き換える。Ubuntu 9.04のレポジトリはもうここにしかない...
    deb https://old-releases.ubuntu.com/ubuntu
     jaunty main universe multiverse restricted

パッケージを色々入れる

  • exim4は使いもんにならんので代りにpostfix
    # apt-get install wget →必須
    # apt-get install chkconfig →便利
    # apt-get remove exim4 →メッセージを参考に付属物も2-3取り除く
    # apt-get install postfix →エラーログをメールで受け取るのに必要
    # apt-get install bind9 →お好み
    # apt-get install dhcp3-server →dhcpクライアントがあれば
    # apt-get install logcheck →必須
    # apt-get install qpopper エラーログをメールで受け取るのに必要

u-bootにバグがあるので書き換え(プランA、ノーマルコース)

  • そのまま放っておくと再起動不能になるらしいので、まずu-bootのバージョンを確認、シリアルコンソールで接続してresetし、カーネル起動前に何かキーを押してu-bootで止め、versonコマンドで確認する
    Marvell>> version
    U-Boot 1.1.4 (Mar 19 2009 - 16:06:59) Marvell version: 3.4.16
    タイムスタンプが上記の日時の場合アップデートが必要
  • Win2K用のtftpdをダウンロード、母艦のWin機で起動
  • MarvellのWEBから最新の開発キットをDLし、u-bootのイメージu-boot-rd88f6281Sheevaplug_400db_nand.binを母艦のtftpdの作業フォルダにコピー
  • SheevaPlugのeth0と母艦をethernetのクロスケーブルで繋ぐ
  • u-bootで以下の環境変数を設定
    Marvell>> setenv ipaddr xxx.xxx.xxx.xxx →母艦と同じセグメントで
    Marvell>> setenv serverip xxx.xxx.xxx.xxx →母艦のIPアドレス
    Marvell>> saveenv
  • u-boot書き換え
    Marvell>> bubt u-boot-rd88f6281Sheevaplug_400db_nand.bin
  • 環境変数が全部書き換わってしまうので再起動したu-bootで以下設定、reboot時にシリアルコンソールからカーネル起動前に何かキーを押してu-bootで止め、下記の通り環境変数を設定し保存
    Marvell>> setenv mainlineLinux yes
    Marvell>> setenv arcNumber 2097
    Marvell>> setenv bootcmd 'nand read.e 0x800000 0x100000 0x400000;
               bootm 0x800000'
    Marvell>> setenv bootargs rootfstype=jffs2 console=ttyS0,115200
               mtdparts=orion_nand:0x400000@0x100000(uImage),
              0x1fb00000@0x500000(rootfs) rw root=/dev/mtdblock1
    Marvell>> setenv ethaddr xx:xx:xx:xx:xx:xx →本体裏のMACアドレス
    Marvell>> saveenv
    bootコマンドを使わずにresetコマンドか上記ハードリセットで再起動

※mainlineLinux、arcNumberの大文字に注意。小文字で書いてしまうと起動しないよ。
(unrecognized/unsupported machine 0x0000020f というエラーが出て起動が止まる)

u-bootにバグがあるので書き換え(プランB、SDカードから起動)

  • u-bootのバグ回避のためにアップデートする際、SDカードから起動して高速化とストレージ容量UPを狙う人は対応したu-bootを使うべし
  • 使用したSDカードは下記安心の金パナソニック、Class10でとりあえず現在最高速でSheevaPlugで動作に問題なし
  • 下記に情報がある
  • しかしコンパイルがめんどくさいのでopenplug.orgに置いてあったコンパイル済みのu-bootイメージを下記にUPしておく
  • SDカードはパーティションを適宜分けてスワップパーティション以外をext3でフォーマット
  • SDカードに全てのファイルをコピー
  • SDカードとu-bootイメージの準備ができたら後はプランAと同じだが(書き換え時のbubtコマンドで指定するファイル名は当然上記ダウンロードしたもの)、SDカードから起動するときのu-bootの環境変数は少し違う
    Marvell>> setenv mainlineLinux yes
    Marvell>> setenv arcNumber 2097
    Marvell>> setenv bootcmd 'mmcinit; ext2load mmc 0:1 0×800000
               /uImage; bootm 0×800000'
    Marvell>> setenv bootargs console=ttyS0,115200
               mtdparts=orion_nand: 0×400000@0×100000(uImage),
              0×1fb00000@0×500000(rootfs) rw root=/dev/mmcblk0p2
               rootfstype=ext3 rootdelay=3
    Marvell>> setenv ethaddr xx:xx:xx:xx:xx:xx →本体裏のMACアドレス
    Marvell>> saveenv
    Marvell>> reset →もしくはハードリセット

※mainlineLinux、arcNumberの大文字に注意。小文字で書いてしまうと起動しないよ。
(unrecognized/unsupported machine 0x0000020f というエラーが出て起動が止まる)

カーネルのアップデート(プランA、お手軽コース)

  • https://sheeva.with-linux.com/sheeva/から/README-2.6.xx.x(お好きなバージョン)をダウンロード、実行権を与えて実行すると自動的にkernelをダウンロードしてnandフラッシュを書き換える
  • 環境変数が全部書き換わってしまうので再起動したu-bootで以下設定、reboot時にシリアルコンソールからカーネル起動前に何かキーを押してu-bootで止め、下記の通り環境変数を設定し保存
    Marvell>> setenv mainlineLinux yes
    (以下u-bootの書き換えと同じでプランに応じて環境変数を再度設定)

カーネルのアップデート(プランB、自分でコンパイルコース)

  • だんだんまとめるのめんどくさくなってきた...
  • そーいえば昔からヘルプ書くの嫌いやったなぁ...

以下手抜き☆彡

  • カーネルソースはMarvellのgitレポジトリから取るべし
    (詳細ページを開いてsnapshotをクリック、2.6.29.6はココ
  • kernelコンパイルの手順
  • .configファイルにきちんとセーブすべし!
  • modulesもコンパイルしてね☆彡
  • クロスコンパイルをVine3.2でやるときはVineにncursesとncurses-develをapt-get
    ↑make menuconfig用
  • 詳細はまた後ほど...

GU-1000Tが動くカーネル2.6.29.6の.configファイル

実用事例1 24時間稼働のPCルーター

  • ごめん、これもちょw手抜き
  • 2つ目のNICはPlanexのGU-1000Tがオススメ、Kernel2.6.29.6でそのまま動く
  • iptablesのインストール、これもKernel2.6.29.6で動く
    # apt-get install iptables
  • iptablesの設定はググってね☆彡
  • ここら辺を書き換えてNICのエイリアスを整理
    • /etc/udev/rules.d/70-persistent-net.rules に下記行追加
      # USB device 0x:0x (asix)
      SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*",
       ATTR{address}=="[GU-1000TのMACアドレス]", ATTR{type}=="1",
       KERNEL=="eth*", NAME="eth1"
      ※既存の行もeth0とeth1がダブらないように書き換え
  • /etc/network/interfacesに下記行追加
    auto eth1
    iface eth1 inet static
    address xxx.xxx.xxx.xxx
    netmask 255.255.255.0
    ※既存の行もeth0とeth1がダブらないように書き換え

PostgreSQLとPerlからDBにアクセスするDBIの導入

# apt-get install postgresql
# apt-get install libdbd-pg-perl

これでPerlからuse DBI;でPostgreSQLにアクセスできる。
まずpsqlでDBを作る。

# su postgres
$
$ createdb test ← testという名のDB

psqlでDBに入ってテーブルを作る。
※例ではnoという整数型フィールドとnameという文字型フィールドを持つテーブル。
(テーブル名もDBと同じtestにしちゃった!ややこしい)

$ psql test ← test DBに入って色々とやる
test=#
test=# CREATE TABLE test (no int, name text);

できたテーブルに値を入れる。
※例ではnoに1、nameにrockyという値。

test=# INSERT INTO test (no, name) values (1, 'rocky');

入力した内容を確認。

test=# SELECT * FROM test;
 no | name
----+-------
  1 | rocky
(1 row)

このDBにPerlからアクセスする。
※ファイル名はdbtest.cgi(dbtest.plの方が良かったか?)

#!/usr/bin/perl

use DBI;

$dbname = "test";
$dbh = DBI -> connect("dbi:Pg:dbname=$dbname", "", "");

$res = $dbh -> prepare("select * from test");
$res -> execute;

print "no name\n";
print "--------------------------------------\n";
while(@item = $res -> fetchrow) {
  print "@item[0] @item[1]";
  print ("\n");
}

ユーザーpostgresになって実行。

# su postgres
$
$ ./dbtest.cgi
no name
--------------------------------------
1 rocky

Perl等でCGIからPostgreSQLにアクセスするためには/etc/apache2/envvarsに記載のApache2のユーザー名でDBユーザーを作成し、そのユーザーでDBを作る。

# su postgres
$
$ createuser -d -A www-data ←envvarsに記載のユーザー名
$ exit
# su www-data
$
$ createdb cgidb ←CGIで使用するDB名
$ psql cgidb
cgidb=#
cgidb=# CREATE TABLE test (no int, name text);

Movable Type 5のインストール

5からPostgreSQLをサポートをしなくなったので(せっかく入れたのに!)MySQLを入れる。

# aptitude install mysql-client mysql-server

途中でブルースクリーンになってrootのパスワードを聞いてくるので入力。
インストールが完了したらMovable Type(以下MT)用のDBとアカウントを作る。

#mysql -u root -pPASSWORD ←pのあとにスペースを入れず上記パスワード
mysql> create database mt character set utf8;

MT用のユーザーとパスワードを設定(ユーザー mtuser、パスワード PASSWORD)

mysql> grant all on mt.* to mtuser@localhost identified by 'PASSWORD';

libwww-perlも必要みたいなので入れておく。

# aptitude install libwww-perl

DBIも絶対要るので入れておく。

# aptitude install libdbd-pg-perl

次に、MTを設置するディレクトリ構成を以下の通りとし、各々mkdirで作っておく。

アプリケーションディレクトリ/var/www/mt/cgi-bin/
スタティックディレクトリ/var/www/mt/mt-static/
ウェブサイト(ブログ)ディレクトリ/var/www/mt/

※以下、/var/www/ には https://sheevaplug/ でアクセスできるものと仮定して話を進める。

下記の場所から個人用無償ライセンスのMT5.01をDLする。

DLして解凍した内容を以下のディレクトリにコピー(or FTPでUP)。

mt-staticの中身 → /var/www/mt/mt-static/ へ
それ以外 → /var/www/mt/cgi-bin/ へ

※/var/www/mt/ 直下には mt-static と cgi-bin のディレクトリが二つあるだけ。
※/var/www/mt/cgi-bin/ 直下に index.html や mt.cgi がくる。

次に各ディレクトリのパーミッションの設定。
ハッキリ言ってMTのインストールが上手く行かない理由の9割はパーミッションの設定だ!

# cd /var/www/
# chmod 777 mt
# cd mt
# chmod 755 -R cgi-bim
# chmod 777 -R mt-static

※マニュアル通りに個別にパーミッション設定すると必ずどっかでひっかかるので-Rオプションを使って中身丸ごと同じパーミッションにしとくとよい。

/var/www/mt/cgi-bin/のCGIが有効になるよう/etc/apache2/sites-available/defaultの

DocumentRoot /var/www
<Directory />
  Options FollowSymLinks
  AllowOverride None
</Directory>
<Directory /var/www/>
  Options Indexes FollowSymLinks MultiViews
  AllowOverride None
  Order allow,deny
  allow from all
</Directory>

以下に次の設定を挿入。

<Directory "/var/www/mt/cgi-bin/">
  Options +ExecCGI
</Directory>

/etc/apache2/apache2.confの末尾に以下の行を追加。

AddHandler cgi-script .cgi

/var/www/mt/cgi-bin/の中にあるmt-config.cgi-originalをコピーしてmt-config.cgiとリネームし、内容を以下の通り書き換える。

CGIPath https://sheevaplug/mt/cgi-bin/ ※https://sheevaplugは適宜置き換え
StaticWebPath https://sheevaplug/mt/mt-static ※https://sheevaplugは同上
ObjectDriver DBI::mysql
Database mt
DBUser mtuser
DBPassword PASSWORD ※MySQLのところで設定したパスワード
DBHost localhost

ここまで来たらインストーラーが動くはずなので、下記URLにアクセス。

https://sheevaplugは適宜置き換え。

サインインを押すとインストーラーが始り、以下のURLの説明通りにできるはず。

"Create Your First Website"のところで色々なパスを入れるところがあるが、

アプリケーションディレクトリhttps://sheevaplug/mt/cgi-bin/
スタティックディレクトリhttps://sheevaplug/mt/mt-static/
パブリッシングディレクトリhttps://sheevaplug/mt/

になるよう注意して書き直す(この画面もう見られないのでうろ覚え)。
https://sheevaplugは適宜置き換え。

最初のページを作ったら https://sheevaplug/mt/ でアクセスできるはずだ!
管理画面は https://sheevaplug/mt/cgi-bin/ でアクセス。

perlで暗号化(RC4)

ちょっとperlで暗号化したくなったので色々調べてRC4という方式でやることにした。
しかしもうちょっと色々調べたらRC4のperl用モジュールのパッケージがUbuntuに無いことがわかった。
しゃーないのでCPANというところからソースを落としてきてインストールする。

https://search.cpan.org/~sifukurt/Crypt-RC4-2.02/

DLしたファイルがあるディレクトリに移動して、

# tar zxvf Crypt-RC4-2.02
# cd Crypt-RC4-2.02/
# perl Makefile.PL

Checking if your kit is complete...
Looks good
Writing Makefile for Crypt::RC4

# make install

cp RC4.pm blib/lib/Crypt/RC4.pm
Manifying blib/man3/Crypt::RC4.3pm
Installing /usr/local/share/perl/5.10.0/Crypt/RC4.pm
Installing /usr/local/man/man3/Crypt::RC4.3pm
Writing /usr/local/lib/perl/5.10.0/auto/Crypt/RC4/.packlist
Appending installation info to /usr/local/lib/perl/5.10.0/perllocal.pod

# perl test.pl

1..9
ok 1
ok 2
ok 3
ok 4
ok 5
ok 6
ok 7
ok 8
ok 9

インストール成功。次のテストスクリプト(test.cgi)を走らせた。
相変わらず拡張子は.cgi

#!/usr/bin/perl

use Crypt::RC4;

$passphrase = "password";
$plaintext = "hello world";

$ref = Crypt::RC4->new($passphrase);
$encrypted = $ref->RC4($plaintext);

$unpacked = unpack('H*', $encrypted);

print $unpacked . "\n";

$ref2 = Crypt::RC4->new($passphrase);
$decrypted = $ref2->RC4($encrypted);

print $decrypted . "\n";

これを実行。

# perl test.cgi

97905462231ec3c1133dcf
hello world

とりあえず成功!

sheevaplugでapt-get updateが失敗する

/etc/hostsの下記の行をコメントアウト

127.0.0.1 localhost
#91.189.88.36 ports.ubuntu.com ←この行の頭に#

次に/etc/apt/sources.listを以下の通り書き換える。

deb https://old-releases.ubuntu.com/ubuntu
 jaunty main universe multiverse restricted

これでOK!

apache2をSSL対応に(書きかけ)

/etc/apache2/の下にsites-availableとsites-enabledという2つのディレクトリがある。
このsheevaplugのapache2の設定はsites-enabledにsites-availableの中の設定ファイルへのシンボリックリンクを貼る仕様になっている。んでssl用の設定ファイルにシンボリックリンクをはる。名前は何でもいいみたい。ここでは001-default-sslとする。

# cd /etc/apache2/
# ln -s ../sites-available/default-ssl 001-default-ssl

以下続く...

以下未整理!!

  • To do
    • このmemoの更新(named9, dhcp3-server)
    • dhcp3-serverの対象IFの限定(/etc/default/dhcp3-server)


[ << 戻る | Δ ページトップ | ホームホーム ]

*1 使えないとバカにする方々がいるUnixにデフォでついてるテキストエディタですげーマニアが多いが今から使いこなすのはもー不可能よ

添付ファイル: file.config.zip 810件 [詳細] file091017_1457~01.jpg 543件 [詳細] fileyu's_icon.gif 570件 [詳細] fileu-boot_w_SD.zip 959件 [詳細] file090803_2058~01.jpg 697件 [詳細]

Last-modified: 2008-05-05 (Mon) 21:04:54 (4034d)
ホーム 編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード 新規 一覧 単語検索 最終更新 ヘルプ
Counter: 20797
Today: 3
Yesterday: 0
最近売れているモノ
@Amazonランキング
ダイアクロン DA-39 パワードシステム マニューバイプシロン ...

ダーリン・イン・ザ・フランキス ゼロツー 1/7スケール ABS ...

SSSS.GRIDMAN 新条アカネ 1/7スケール ABS&P ...

【Amazon.co.jp限定】ラブライブ! サンシャイン!!T ...

ラブライブ! サンシャイン!! Aqours 4th LoveL ...

スーパーマリオメーカー 2 -Switch (【早期購入者特典】 ...

FPS Freek Vortex | FPSフリーク PlayS ...

30歳まで童貞だと魔法使いになれるらしい 2巻【デジタル版限定特 ...

弱虫ペダル 1 (少年チャンピオン・コミックス) ...