chibiegg日誌

chibiegg’s Diary

  • Home
RSS

Seagete ST32000542ASのファームウエアアップデート

Posted on 2012年1月6日 by chibiegg
No Comments

自宅のファイルサーバーのHDDのチェックをしていて、たまたま気づいたのですが。

うちで8台利用しているSeagateのST32000542ASのファームウエアが、「突然電源が切れる」「電源が入らなくなる」など、不具合のあるバージョンCC34でした。

恐ろしいので、アップデートすることに。

アップデータのダウンロード

http://seagate.custkb.com/seagate/crm/selfservice/search.jsp?DocId=213915&NewLang=en

このサイトからアップデータCDのISOイメージをダウンロードします。これをCDに焼いて使います。

アップデート

アップデートに利用するPCにアップデート対象のHDDだけを接続し、CDを入れた状態で起動します。この時、USB変換とか使ってはいけません。SATAで直接接続してください。

無事CDから起動すると、READMEが表示されるのでESCを押すと、次のようなメニューが表示されます。

メニュー

メニュー

Lを押すとこのCDが対象としているHDDの型番とバージョンのリストが閲覧できます。

まず、HDDが正しく認識されているか、Sでチェックします。

HDD Scan

HDD Scan

Sを入力してしばらくすると、写真の様に認識されたHDDの一覧が表示されるので型番とバージョンが対象のものである事を確認します。確認できたらESCでメニューに戻ります。

で、メニューからアップデートできれば良いのですが、できないらしいので、「Ctl+C」「y」と入力して、メニューを終了するとプロンプトが表示されます。

コマンド入力

コマンド入力

ここに、写真のように、

FDL486A.EXE -m Hepburn -f HECC358H.LOD -s -x -b -v -a 20

と入力しEnterを入力すると、ファームウエアのアップデートが始まります。ここから完了するまで、電源を切ったり、キーの入力はしないでください。

下のように、プロンプトが表示されれば完了です。

アップデート完了

アップデート完了

「FLASH-M.BAT」と入力すると、メニューに戻れるのでZでシャットダウンしました。

Categories: 雑記 | Tags: HDD, Seagate, アップデート, ファームウエア

Can you crack it?

Posted on 2011年12月11日 by chibiegg
No Comments
Can you crack it? クリア

イギリスの政府通信本部(GCHQ)が現在採用活動の一環として、「Can you crack it?」と題して暗号解読クイズページを公開しています。

イギリス人であればこれをクリアするとエントリーフォームからエントリーできるみたいです。

Can you crack it?

Can you crack it?

で、先日大学の友達と相談しながらクリアしました。

Can you crack it? クリア

Can you crack it? クリア

実はこれ、表示されてる問題をクリアしたと思ったらstage 2 of 3が出て来ます(笑)。

面白かったので、解答までの流れをブログに書きたいのですが、期日まであと1日ちょっとあるので、その後にします。

Categories: 日記, 雑記 | Tags: GCHQ, クラック

stm32f10x_can.c のバグについて

Posted on 2011年11月27日 by chibiegg
No Comments

前回の投稿と打って変わって組込系の話題を。

最近STM32でCANとか使っているのですが、時々送信に失敗してしまうという問題がありました。

たまになので問題ないのですが、気になったので調べてみるとSTMicroが用意しているSTM32F10x standard peripheral libraryのバグでした。バージョンは04/16/2010 のV3.3.0と古いやつですが。

具体的に言うと、現在送信しようとしているメッセージの状態を確認する関数

CAN_TransmitStatus にあります。

ここでは CANxのTSRレジスタのTSS_RQCP0、TSR_TXOK0、およびTSR_TME0ビットの値を見て、

CANTXPENDING(送信中)、CANTXFAILED(失敗)、CANTXOK(成功)を返しています。

が、こんな風にレジスタにアクセスするようなコードになってます。

switch (TransmitMailbox)
{
case (0): state |= (uint8_t)((CANx->TSR & TSR_RQCP0) << 2);
state |= (uint8_t)((CANx->TSR & TSR_TXOK0) >> 0);
state |= (uint8_t)((CANx->TSR & TSR_TME0) >> 26);
break;
case (1): state |= (uint8_t)((CANx->TSR & TSR_RQCP1) >> 6);
state |= (uint8_t)((CANx->TSR & TSR_TXOK1) >> 8);
state |= (uint8_t)((CANx->TSR & TSR_TME1) >> 27);
break;
case (2): state |= (uint8_t)((CANx->TSR & TSR_RQCP2) >> 14);
state |= (uint8_t)((CANx->TSR & TSR_TXOK2) >> 16);
state |= (uint8_t)((CANx->TSR & TSR_TME2) >> 28);
break;
default:
state = CANTXFAILED;
break;
}[/sourcecode]
これでは、レジスタに3回アクセスしてしまっており、アクセスとアクセスの間でレジスタの値が変わってしまうと変なstatusになってしまいます。その結果 default で CANTXFAILED がセットされてしまうというのが送信失敗の原因です(実際にはこの瞬間に成功しているが、失敗したと判断してしまう)。

最も修正量の少ない解決策は簡単で、CANx->TSRの値を一旦変数に入れてやればいいのです。

uint32_t _tsr =  CANx->TSR;
switch (TransmitMailbox)
{
case (0): state |= (uint8_t)((_tsr & TSR_RQCP0) << 2);
state |= (uint8_t)((_tsr & TSR_TXOK0) >> 0);
state |= (uint8_t)((_tsr & TSR_TME0) >> 26);
break;
case (1): state |= (uint8_t)((_tsr & TSR_RQCP1) >> 6);
state |= (uint8_t)((_tsr & TSR_TXOK1) >> 8);
state |= (uint8_t)((_tsr & TSR_TME1) >> 27);
break;
case (2): state |= (uint8_t)((_tsr & TSR_RQCP2) >> 14);
state |= (uint8_t)((_tsr & TSR_TXOK2) >> 16);
state |= (uint8_t)((_tsr & TSR_TME2) >> 28);
break;
default:
state = CANTXFAILED;
break;
}[/sourcecode]
こんな風に。

で、最新のV3.5.0ではちゃんと修正されてました。

  switch (TransmitMailbox)
{
case (CAN_TXMAILBOX_0):
state = CANx->TSR & (CAN_TSR_RQCP0 | CAN_TSR_TXOK0 | CAN_TSR_TME0);
break;
case (CAN_TXMAILBOX_1):
state = CANx->TSR & (CAN_TSR_RQCP1 | CAN_TSR_TXOK1 | CAN_TSR_TME1);
break;
case (CAN_TXMAILBOX_2):
state = CANx->TSR & (CAN_TSR_RQCP2 | CAN_TSR_TXOK2 | CAN_TSR_TME2);
break;
default:
state = CAN_TxStatus_Failed;
break;
}[/sourcecode]
一度でアクセスするようになってます。でも返値変わってて、最新版に置き換えるのは大変そう...

Categories: 日記, 電子工作 | Tags: CAN, STM32, 電子工作

nginxでSSL/TLSを使う

Posted on 2011年11月22日 by chibiegg
No Comments

今回はSSL(https)を使えるようにするような設定をnginxにしてみようと思います。

証明書の取得

本来はSECOMやVeriSign等に有料で証明してもらうのですが、今回は以前にも紹介したCACertを載せときます。

  • CAcertから証明書をもらおう!(その0:紹介)
  • CAcertから証明書をもらおう!(その1:アカウントの登録)
  • CAcertから証明書をもらおう!(その2:鍵と申請書の作成)
  • CAcertから証明書をもらおう!(その3:CAcertから証明書をもらう)

ということで、証明書の取得は省略します。とりあえず、サーバーの秘密鍵 server.key と サーバーの証明書 server.cer が手に入った事にします。

nginxに設定

nginxでの設定は簡単で、既存の設定をコピーして、80番ではなく443番に変更し、SSLを有効にしてサーバーの鍵・証明書のファイルを指定してあげるだけです。

ちょっとその部分だけ書いてみます。

server {
	listen   443 default_server ssl;
	server_name	_;
	ssl_certificate /keys/server.cer;
	ssl_certificate_key /keys/server.key;

	location / {
		この辺は適当に
	}
}

リバースプロキシとしてnginxとして使っている場合も同様です。

名前ベースのバーチャルホストを使っている場合

ドメイン名を複数つかってバーチャルホストを使っている場合もあると思います。SSLではアクセスされたサーバー名がわかる前に証明書を渡さなければならないので、名前ベースのバーチャルホストでSSLは利用できませんでした。

が、SNI(Server Name Indication)というプロトコル拡張ができたので、名前ベースのバーチャルホストでも可能になりました。(ブラウザによっては対応してません)

設定は簡単で、httpと同じくserver_nameを設定するだけです。

リバースプロキシとして使っている場合は、証明書を変えるために、バーチャルホストの数だけServerディレクティブを作ってあげてください。

 

 

Categories: Webサーバー, サーバー管理, 日記 | Tags: CAcert, nginx, SNI, SSL, TLS, Ubuntu, 証明書

nginxでプロキシ&キャッシュサーバー

Posted on 2011年11月17日 by chibiegg
2 Comments

(多分)一般的なWebサーバーであるApacheは複雑な設定も可能で便利なのですが、その分重いのです。

どう重いのかというと、Apacheは一つのプロセスが一つのHTTPリクエストを同期処理で裁いてるのでその間は他の処理をしません。なので、同時アクセス数が増えるとApacheはプロセスをどんどん生成します。(あるいは後からきたリクエストを待たせる)

なので、アクセス数が増えると急激にパフォーマンスが落ちるという問題を抱えてます。(ほかにもプロセスIDが足りなくなってどんなにリソースがあっても最大プロセスIDで制限されてしまう)

で、最近話題のハイパフォーマンスWebサーバーがnginx(えんじんえっくす)です。

nginxは一つのプロセスで複数のリクエストを非同期で同時に処理します。なので、アクセス数が増えてもパフォーマンスが落ちにくいという特性があります。特に静的ファイルの場合は処理のほとんどがI/O待ちなので効果が大きいです。

そこで、PHPとかSVNとか設定がめんどくさいものはApacheに任せておいて、静的なファイルだけをnginxに処理させてみると、Apacheへのリクエスト数は激減するはずです。

例えば、このブログのトップページの場合PHPで生成されるHTMLが一個にたいして、CSSや画像等の静的ファイルが20個近くあります。単純計算で21個のリクエストのうち1個だけがApacheで処理されるのでApacheへのリクエストは約95%削減されます。

では設定してみましょう。OSはUbuntu Server 10.04(64bit)です。Apacheは既にインストール済みで運用されているとします。設定後はnginxがポート80で待ち受けて、Apacheはポート8080で待ち受けるということにします。

(記事の最後でキャッシュファイルをRAMに置くというのもやってみます)

Read more …

Categories: Webサーバー, サーバー管理, 日記 | Tags: Apache, nginx, tmpfs, Ubuntu, リバースプロキシ

WordPressを速くするにはキャッシュしかない!

Posted on 2011年11月16日 by chibiegg
No Comments

漸くわかりました。PHPを速くするのは限界があるみたいで、生成したHTMLをキャッシュしとくしかないみたいです。

で、Quick Cacheプラグインをインストールして有効にすると改善しました。

WordPress with Quick Cache

WordPress with Quick Cache

レイテンシ12ms、転送4msです。

ハードウエアのスペックでごり押しはだめですね。ちゃんとキャッシュできるところはしましょうってことです。

Categories: 未分類

WordPressはどうすれば速くなるのか、検証実験

Posted on 2011年11月16日 by chibiegg
No Comments

さっきの投稿でWordPressが遅い事を書きました。で、先輩のさくらのVPS(nginx+fastcgi)では速いってことも書きました。

ということで、僕も借りてるさくらのVPSで一からセットアップして実験してみました。OSはデフォルトではなくUbuntu 10.04が入ってます。

今回検証したのは、WebサーバーはApache/2.2.14とnginx/1.0.9、RDBMはMySQL(Ver 14.14 Distrib 5.1.41, for debian-linux-gnu (x86_64) using readline 6.1)とPostgreSQL/8.4.9です。なので、合計4通りですね。

Apacheではmod_phpで、nginxでは後ろでspawn-fcgiが動いてます。

で、試してみた結果です。今回検証したいのは静的ファイルではなくPHPの出力なので、画像とかCSSがブラウザでキャッシュされてたりするのは気にしないでください。

Apache + MySQL + WordPress

Apache + MySQL + WordPress

Apache + PostgreSQL + WordPress

Apache + PostgreSQL + WordPress

nginx + MySQL + WordPress

nginx + MySQL + WordPress

nginx + PostgreSQL + WordPress

nginx + PostgreSQL + WordPress

平均もとってない1回こっきりのアクセスの結果なので互いの比較はそんなに意味がないです。

が、どれもレイテンシが数百ミリ秒あります。これは何回試しても同じでした。

あれ?…

先輩のVPSと同じ環境のはずなのになんでこんなに違うの?

Categories: サーバー管理, 日記 | Tags: Apache, FastCGI, MySQL, nginx, PostgreSQL, Ubuntu, VPS, さくら

WordPressが遅い…なぜ?

Posted on 2011年11月16日 by chibiegg
No Comments

最近サーバーの設定を変えたり、リバースプロキシをしてる、HTTPのフロントをApacheからnginxに変えたり高速化を試みています。

が、どうしてもこのブログ(にかぎらず、稼働しているWordPress全部)が重い、というより遅いのです。
Memcachedでオブジェクトをキャッシュしてみたりしても改善されず…

で、Safariで開発ツールの「ネットワーク」をつかって取得の時間を見てみました。

Apache(mod_php) + WordPress 処理時間

Apache(mod_php) + WordPress ネットワーク時間

ここでPHPのファイルへのアクセスのレイテンシが334msもあることに気づきました。稼働しているどのWordPressもです。

で、WordPressはそうなのかと、さくらのVPSで運用してる先輩のWordPressを見てみると…

 

さくらのVPS nginx + WordPress(fast-cgi)

さくらのVPS nginx + WordPress(fast-cgi)

速い….レイテンシ45msです。静的ファイルはうちのサーバーのほうがレイテンシ含め速いので(どちらも304なので比較していいかな)、ネットワーク等の問題ではないみたい。

(あと、向こうはnginx+fastcgi(swanかな?)+WordPressですが、うちでもnginx+fastcgiにしてみたけど改善せず…)

なんで?

とりあえず、僕も借りてるさくらのVPSでDBをMySQLからPostgreSQLにしてみたり、いろいろ実験してみます。

 

 

Categories: サーバー管理, 日記 | Tags: Apache, FastCGI, Memcached, mod_php, MySQL, nginx, PHP, PostgreSQL, Ubuntu, WordPress

Ubuntuでレンタルサーバ その2

Posted on 2010年12月31日 by chibiegg
No Comments

前回に引き続き、今回はProFTPdをセットアップし、MySQLのテーブルに記録されたユーザー情報で認証できるようにします。

まずはProFTPdのセットアップから。proftpdをapt-getでinstallするとproftpdの設定画面が出ます。

ProFTPd セットアップ

ProFTPd セットアップ

固定IPではないのでIPマスカレードを利用しないといけませんが、そのためにもスタンダードアローンではなくinetd経由にします。

それでは /etc/proftpd/proftpd.conf を書き換えていきます。

  • ServerName を好きな文字列に
  • ListOptions を “-l” に “-la” に
  • PassivePorts をコメントアウトして ポート範囲を決定(デフォルトは49152 65534)
  • MasqueradeAddress を コメントアウトして hogehoge.net(ドメイン名)に
  • ServerIdent を off で追加
  • RootLogin を off に
  • DefaultRoot を ~ に
  • RequireValidShell を off に

ここまではMySQLによる認証は関係ありません。これからMySQLで認証するための設定を追記します。この部分は「にわか鯖管のメモ – ProFTPD ~ MySQL + quota 編 ~」をもとにというかそのまま。

注意点はmodule.confをいじったときは sudo /etc/init.d/proftpd reload をしないとだめってとこです。

Categories: サーバー管理 | Tags: ProFTPD, Ubuntu, サーバー

Ubuntuでレンタルサーバ その1

Posted on 2010年12月30日 by chibiegg
No Comments

今日からUbuntuでレンタルサーバを構築するまでの記録を載せようと思います。まぁ気力が続けばですけど。

それと、メモみたいなもので解説はたぶんしないとおもいます。LinuxをCUIで使えるぐらいの知識がないともしかすると読めないかもしれないです。解説でなく日記ですね。

レンタルサーバといっても身内、友人、後輩などに貸してるだけですのであまりセキュリティ、特にユーザー間のセキュリティはよろしくない設定をしていくかもしれませんのでそういう意味でもあまり当てにはしないでくださいね。

で、なぜいまさらサーバー構築なのかということなのです。普段はMac OSX Serverの上でこのページ含め個人のサーバと上記のレンタル部分とを稼動させているのですが、いわゆる公私混同の部分の管理がめんどくさくなってきた(なんとなくしんどくなってきた)ので他人の分は仮想環境のUbuntuに移動させてしまおうと思い立ったわけです。

で現状は、Ubuntu 10.04 ServerをLAMP + SSHのみでインストールしたまでです。

このあとユーザー情報をMySQLで管理してユーザーごとにApacheのバーチャルホストを設定し、proftpdはMySQL上の情報で認証できるようにしていくことが目標です。

Categories: サーバー管理 | Tags: Ubuntu, サーバー
Previous Entries
  • テスト

  • 最近の投稿

    • Seagete ST32000542ASのファームウエアアップデート
    • Can you crack it?
    • stm32f10x_can.c のバグについて
    • nginxでSSL/TLSを使う
    • nginxでプロキシ&キャッシュサーバー
  • 最近のコメント

    • nginxでプロキシ&キャッシュサーバー に chibiegg より
    • nginxでプロキシ&キャッシュサーバー に ななし より
    • WordPressの自動アップデートエラーについて に Wordpressの自動アップグレード | Monai Hiromu より
    • iTunesの曲に自動でふりがな登録 に 黒生鉄心 より
    • WordPressから外部SMTPを使う に Wordpressから外部に通知メールを送る | inashiro's blog より
  • アーカイブ

    • 2012年1月
    • 2011年12月
    • 2011年11月
    • 2010年12月
    • 2010年9月
    • 2010年8月
    • 2010年7月
    • 2010年5月
    • 2010年4月
    • 2010年3月
    • 2010年2月
    • 2010年1月
    • 2009年11月
    • 2009年8月
    • 2009年7月
    • 2009年6月
    • 2009年5月
    • 2009年4月
    • 2009年2月
    • 2009年1月
    • 2008年12月
    • 2008年8月
    • 2008年7月
    • 2008年6月
    • 2008年5月
    • 2008年3月
    • 2008年2月
    • 2008年1月
    • 2007年12月
    • 2007年11月
  • カテゴリー

    • Mac
    • Webサーバー
    • Windowsプログラミング
    • サーバー管理
    • ソーラー発電
    • プログラミング
    • 写真
    • 日記
    • 未分類
    • 雑記
    • 電子工作
  • メタ情報

    • ログイン
    • 投稿の RSS
    • コメントの RSS
    • WordPress.org
© chibiegg日誌. Proudly Powered by WordPress | Nest Theme by YChong