ラベル オープンソース の投稿を表示しています。 すべての投稿を表示
ラベル オープンソース の投稿を表示しています。 すべての投稿を表示

2013-05-29

統合監視ソフトのZabbix社がZabbix 2.0搭載アプライアンス製品を提供開始


簡単導入、メンテナンスフリーな高信頼・高パフォーマンス監視ソリューションを提供

 
※本プレスリリースはZabbix SIA、Zabbix Japan LLC、ぷらっとホーム株式会社の共同プレスリリースです。
 
オープンソース統合監視ソフトウェア「Zabbix」を提供するZabbix社(本社、Zabbix SIA:ラトビア共和国、代表取締役社長: Alexei Vladishev (アレクセイ ウラジシェフ)、日本支社、Zabbix Japan LLC:東京都港区、代表:寺島広大、以下Zabbix社)は、ぷらっとホーム株式会社(証券コード:東証6836、本社:東京都千代田区、代表取締役社長:鈴木友康、以下ぷらっとホーム社)製ハードウェアを採用し、最新版Zabbix 2.0を搭載したアプライアンス「Zabbix Enterprise Appliance」の製品提供を開始し致します。オープンソース統合監視ソフトウェア「Zabbix」を提供するZabbix社(本社、Zabbix SIA:ラトビア共和国、代表取締役社長: Alexei Vladishev (アレクセイ ウラジシェフ)、日本支社、Zabbix Japan LLC:東京都港区、代表:寺島広大、以下Zabbix社)は、ぷらっとホーム株式会社(証券コード:東証6836、本社:東京都千代田区、代表取締役社長:鈴木友康、以下ぷらっとホーム社)製ハードウェアを採用し、最新版Zabbix 2.0を搭載したアプライアンス「Zabbix Enterprise Appliance」の製品提供を開始し致します。
本製品を導入することにより、サーバーの購入、検証、セットアップやZabbixのインストールと初期設定、データベースのチューニング、監視処理を最適に行うための周辺ソフトウェアの設定といった煩雑な作業を行うことなく、システム監視、障害通知、グラフ表示などZabbixの全機能を活用したシステム監視運用業務を容易に開始することが可能です。
2013年6月12日から14日に東京、幕張メッセにて開催されるINTEROP Tokyo 2013のZabbixブース内及びぷらっとホーム社ブース内にて本製品の展示を行います。
 

Zabbix Enterprise Applianceの特徴


■ 中小規模向け高信頼性・高パフォーマンス監視アプライアンス
アプライアンスのベースとして定評と実績のあるぷらっとホーム社の小型、ファンレス、スピンドルレスのハードウェアを採用し、サーバールーム(※1)だけでなくオフィススペースや店舗、工場など設置場所を選びません。
また、Zabbix専用機としてOSおよび各種ソフトウェアの最適化を行い、小型ながらおよそ200監視対象(※2)までのシステムを監視することができ、中小規模向けの監視アプライアンスとしてLinux、UNIX、Windows各種サーバー、ネットワーク機器の監視を一元的に行うことができます。
加えて自己監視機能を内蔵し、監視マネージャの障害の検知と自動復旧を行うことも可能です。
 
■ 省電力・省発熱・省スペース
Zabbix Enterprise ApplianceはCPUとしてデュアルコアMarvell Armada XP (ベースアーキテクチャ:ARM Cortex-A9)を搭載し、高い処理性能を持ちながら、通常のIAサーバー(※3)と比較して約90%の電力削減が可能な15Wという超低消費電力、周辺温度50℃でも運用可能な空調いらずの堅牢設計、占有面積にして約1/9の小型サイズ筐体と、非常に優れた省電力率・省発熱率・省スペース率を誇ります。
 
■ オールインワン監視ソリューション
Zabbix社がこれまでに培ってきたシステム監視の技術と経験を投入し、Zabbixによる監視をスムーズかつ安定して行えるよう、周辺ソフトウェアも含めてセットアップ済みの状態で監視をすぐに始めることができます。
また、ベーシックサポートにてソフトウェアアップデート、追加ソフトウェアの提供、先出しセンドバック保守を一括して提供し、長期間に渡って監視システムを安定維持するためのソリューションを提供します。
 
■ メンテナンスフリー
監視データの蓄積に最新のデータベース技術を採用し、長期運用による監視マネージャのパフォーマンス低下を防ぎます。長期に渡る安定した監視データの保存により、グラフを利用したシステムのパフォーマンスの傾向分析、障害解析を容易に行うことができます。
また、監視設定の定期バックアップ機能を内蔵し、監視設定の間違いやハードウェア障害からの復旧、同一設定の監視サーバーの複製を容易に行うことができます。
 
■ Zabbix入門トレーニングによる導入の支援
本製品を利用した監視システムの円滑な構築を支援するため、本製品をご購入頂いたお客様は2013年7月より開催をするZabbix入門トレーニング(通常18,900円(税込))に無料でご参加頂けます。(※4)
本トレーニングでは操作概要や監視設定の追加、障害通知、グラフ表示設定などZabbixの主要機能の基礎的な利用方法を、実機を利用して半日で習得することができます。


※1 ラックマウントキット別売
※2 20000監視項目、5分間隔の監視の場合。1監視対象あたり100監視項目としてパフォーマンス測定
※3 ぷらっとホーム社 TRQX-1/55SAと比較 : http://www.plathome.co.jp/products/server/trqx_155sa00/
※4 ご購入1台につき1名様のご参加となります。




製品の詳細と販売方法


■名称: Zabbix Enterprise Appliance ZS-5200
■主要機能:
  • Linux、AIX、HP-UX、Solaris、Windowsサーバーのリソース、プロセス監視
  • SNMPによるネットワーク機器の監視
  • IPMIによるハードウェア監視
  • Javaアプリケーション監視
  • Web監視
  • SNMPトラップ監視
  • 障害検知、メール通知機能
  • グラフ表示、マップ表示機能
  • 専用ツールによる監視設定の定期および手動バックアップ
■同梱物:
  • 本体および電源ケーブル
  • 取り扱い説明書
  • Zabbix設定バックアップツール
  • Windows、Linux、AIX、HP-UX、Solaris用監視エージェントソフトウェア
■販売方法: Zabbix社日本国内パートナーから販売
■本体価格: 298,000円(税抜)
■保守費用: 100,000円(税抜)
  • H/W先出しセンドバック保守
    *当社が故障と判断した場合、交換品を先出にて発送します。
  • Zabbixアップデート
    *Zabbixソフトウェアアップデート用バイナリーの提供
    *Zabbix技術問い合わせサポートは含まれません。
*技術問い合わせサポートを含む保守の価格はZabbix社パートナーまでお問い合わせください。
■受注開始: 2013年5月29日(水)
■出荷開始: 2013年6月17日(月)

 

Zabbix社パートナー賛同コメント

本製品の販売を頂けるパートナーより、ご賛同のコメントを頂戴しております。(会社名五十音順)
 
  • 株式会社アークシステム
    代表取締役社長 小和瀬 英文 様

    株式会社アークシステムはZabbix 2.0搭載アプライアンス製品の提供開始をお慶び申し上げます。新たなソリューションがラインナップに加わることで、エンドユーザー様の利便性がより高まるものと期待しております。
    システムエンジニアリング事業を展開するアークシステムはZabbix Japan LLC様と連携したSI事業を提供しておりますが、これまで以上に協力し、お客様によりよいサービスを提供し続けるよう努めて参ります。
    Zabbix Japan LLC様のますますのご発展をお祈り申し上げます。
  • 株式会社インテリジェンス ビジネスソリューションズ
    プラットフォームソリューション部 部長 吉田 裕 様

    株式会社インテリジェンス ビジネスソリューションズ(本社:東京都台東区、代表取締役:小澤稔弘 社長執行役員 長井利仁、以下IBS)は、Zabbix JapanによるZabbix Enterprise Applianceのリリースを心から歓迎いたします。OSS製品としてリリースされているZabbixをアプライアンス化する事により、顧客自身による導入が容易になり、Zabbixの活用の場がより広がる事と期待しております。
    IBSの強みである「業務システムの監視」・「大規模環境の監視」を求める顧客の環境で、小型・省電力・高性能というアプライアンスの特性を活かし、快適なシステム運用に貢献して参ります。
  • インフォコム株式会社
    エンタープライズ事業本部 本部長 尾崎俊博 様

    インフォコム株式会社は、Zabbix Japan LLC様の「Zabbix Enterprise Appliance」の販売開始を歓迎し、賛同を表明致します。
    お客様のIT基盤の構築のスピードアップが望まれる中、「Zabbix Enterprise Appliance」は、そのニーズに合致する最適化されたアプライアンス製品であり、数多くのお客様に当社が自信をもってご提案出来る製品であると確信しております。
    また本製品が、今後の更なるZabbixの拡大において大きな役割を果たすことを期待しております。
  • 株式会社オージス総研
    執行役員 サービス事業本部長 鈴木 淳三 様

    株式会社オージス総研は、「Zabbix Enterprise Appliance」の販売開始を心より歓迎致します。
    当社は、インフラ企業の基幹業務システムを30年以上に渡り運用しております。そこから得た運用管理ノウハウとZabbixを組み合わせ「ThemiStruct(テミストラクト)-MONITOR」という独自のシステム運用監視ソリューションを提供しております。今回の「Zabbix Enterprise Appliance」により、Zabbixの豊富な機能を手軽に低価格で導入できるようになりました。これまで運用監視システムにご興味を持ちながら予算や要員確保などの理由で導入を見送られてきた企業様にとって、非常に魅力のある製品になっております。これを機に様々な運用監視ソリューションへ発展しうる製品として、お客様の御要望にお応えすべくZabbix社とともに万全の体制で取り組んでまいります。
  • クロス・ヘッド株式会社
    代表取締役 長 正三 様

    クロス・ヘッド株式会社はZabbix Japan様のZabbix Enterprise Applianceの販売開始を歓迎いたします。
    弊社はこれまでに数多くの導入実績に裏付けられたエンタープライズクラスの品質でコンサルティングから構築、運用、保守とワンストップでZabbix運用監視サービスを提供しており。このZabbix Enterprise Applianceの日本市場導入でより多くのお客様にご満足頂けるサービスの提供が可能になると期待しております。
    今後もパートナーとして積極的なZabbixサービス強化に取り組み日本におけるZabbixの普及活動を推進してまいります。
  • 株式会社情報工房
    代表取締役 多田 正浩 様

    「Zabbix Enterprise Appliance」の発表を心より歓迎いたします。
    情報工房は、キャリア様から中小事業者様に到るまで、さまざまな規模のネットワーク監視システムの構築、サポートを提供してまいりました。
    「Zabbix Enterprise Appliance」がリリースされることにより、迅速なネットワーク監視システムの構築ならびにソフトとハードの両方で高品質なサポートを提供できるものと確信しております。
    これまで培った弊社のノウハウをもとに「Zabbix Enterprise Appliance」でもお客様に最適なZabbixソリューションとしてご提供させて頂く所存です。
  • 株式会社FocusWEB
    代表取締役 山下 貴正 様

    株式会社FocusWEBは、Zabbix Enterprise Applianceの販売開始を心から歓迎し、賛同致します。
    統合監視のオープンソースソフトウェアであるZabbixをアプライアンス製品にすることで、システムインテグレーションにける導入期間の短縮化およびコストメリットの見込める製品だと確信しております。
    運用監視ソリューションを検討しているお客様において、新規導入から既存の監視システムのリプレースまで幅広くご提案が可能な製品であると期待しております。本製品の活用を通してお客様の要望に最適な統合監視ソリューションの提供に邁進してまいります。
 

Zabbixについて


Zabbixはネットワーク・サーバー・ネットワーク機器・サービス・その他のITリソースの監視・追跡を行うために開発されたエンタープライズクラスのオープンソースのモニタリングソリューションです。柔軟な通知メカニズムを備えているため、ユーザーはあらゆる種類のイベントについて電子メール、Jabber、およびSMSベースのアラートを設定でき、それによって管理者はサーバーやデバイスの問題を迅速に認識することができます。Zabbixは継続的に開発が行われ、新しいバージョンのリリースのたびに新機能とパフォーマンスの改善が行われています。Zabbix監視ソリューションは金融・保険業、IT通信業、ヘルスケア、公共機関、小売業、エネルギー・化学産業などを含むすべての業界の中小企業や、大規模エンタープライズ環境で活発に使われています。
ソフトウェアのダウンロード数は毎月3万を超え、世界中に5万人以上のアクティブコミュニティメンバーがいます。

 

Zabbix社について


Zabbix SIAはラトビアのリガに本社を置くソフトウェア開発企業です。日本国内ではZabbix Japan LLCがパートナー支援と各種Zabbixサービスを行っています。Zabbix社の主力製品は、オープンソースで配布されるエンタープライズモニタリングソリューションのZabbixです。Zabbix社は技術およびコンサルタントサポート、Zabbixの導入、実装、カスタム開発のサービス、およびZabbixのプロフェッショナルトレーニングを提供しています。お客様のニーズに対する柔軟なアプローチと、最高のサービスを手頃な価格で提供することに重点を置いています。世界中でZabbix関連製品のサービスを提供する50社以上の企業とともに幅広いパートナーシップネットワークを持っています。

⇒Zabbix社企業サイト
http://www.zabbix.com/jp/
ZabbixはZabbix SIAのラトビアおよびその他の国における登録商標または商標です。

 

ぷらっとホーム株式会社について


ぷらっとホームは、創設当時の1993年に、まだ黎明期にあったLinuxオペレーティングシステムを企業として初めて国内へ輸入・販売しました。また1996年には独自ブランドとして最初のオリジナルサーバーを出荷、2000年に東証マザーズでの株式公開を果たしました。ぷらっとホームは、創業以来、日本の代表的なオープンソースOS関連企業として、また数々の先端的なプロダクトの市場投入を通じて、企業におけるビジネスの立ち上げや運用を支え続けています。

⇒ぷらっとホーム株式会社企業サイト
http://www.plathome.co.jp

 

本プレスリリースに関するお問い合わせ先

Zabbix Japan LLC
営業部 寺島 友美(てらしま ゆみ)
〒105-0004 東京都港区新橋4-21-3 新橋東急ビル 2F
sales@zabbix.com
Tel 03-6895-7527 / Fax 03-6895-7301

ぷらっとホーム株式会社
広告・マーケティング課 渡辺 美央(わたなべ みお)
〒102-0073 東京都千代田区九段北4-1-3 日本ビルディング九段別館3F
pr@plathome.co.jp
■本製品の詳細はこちら

2013-02-22

OSC 2013 Tokyo/Spring 出展中です

今週末は、OSC 2013 Tokyo/Springにブース出展しています。




開催概要は以下の通りです。

日程:2013年2月22日(金)10:00-18:00 (展示は11:00-17:30)
        23日(土)10:00-17:30 (展示は10:00-16:00)

会場:明星大学 日野キャンパス 28号館 2F
   (多摩モノレール 「中央大学・明星大学駅」から大学まで直結。会場まで徒歩6分)
   [アクセスマップ] [キャンパスマップ] [OpenStreetMap]
   (ご来場の際は公共交通機関をご利用下さい)

費用:無料

内容:オープンソースに関する最新情報の提供
   ・展示 - オープンソースコミュニティ、企業・団体による展示
   ・セミナー - オープンソースの最新情報を提供

主催:オープンソースカンファレンス実行委員会

協賛:明星大学
   明星大学 情報学部

企画運営:株式会社びぎねっと

 
OpenBlocks A Familyの展示のほか、OBDNマガジンに掲載された事例などを配布します。
また、金曜17:15分より、

 クラウド時代におけるLinuxマイクロサーバのポジショニングとその事例

と題してセミナー発表もさせていただきます。
(*intelの提唱するマイクロサーバとは別ものですのでご注意下さい)

 是非お立ち寄り下さい。

2013-02-08

今週末は、OSC 2013 Hamamatsu に出展します。

今週末の、「OSC 2013 Hamamatsu」 にてOpenBlocksの展示を行います。
開催概要概要は以下の通りです。

--

日程:2013年2月9日(土) 10:00~18:00

会場:浜松市市民協働センター 2F ギャラリー
   (JR浜松駅 徒歩8分、または 遠州鉄道西鹿島線 遠州病院駅 徒歩2分) [アクセスマップ]

費用:無料

内容:オープンソースに関する最新情報の提供
   ・展示 - オープンソースコミュニティ、企業・団体による展示
   ・セミナー - オープンソースの最新情報を提供

主催:オープンソースカンファレンス実行委員会

後援:湖西市市民活動支援事務局
   浜松市市民協働センター

企画運営:株式会社びぎねっと

--

OpenBlocks A Familyの展示のほか、OBDNマガジンに掲載された事例などを配布します。
是非お立ち寄り下さい。


2012-11-07

今週末はKOF2012 「関西オープンソース2012 関西コミュニティ大決戦」に出展します。

今週末、11/9(金)、11/10(土)は、KOF 2012に出展します。

ホーム

開催概要は、以下の通りです。

---

関西オープンフォーラム2012
関西オープンフォーラムは、「オープンソースならびに、コミュニティが元気に交流できる場を、関西でも作ろう」という目的のもとに集った有志により、2002年に活動を開始いたしました。
KOFは、昨年2011年まで「関西オープンソース+フリーウェア」「関西オープンソース、関西コミュニティ大決戦」と名称を変えながら毎年開催されてお り、このイベントは関西でオープンソースソフトウェアに対して熱心な人達が運営するコミュニティ、オープンソースソフトウェアに関わりながらビジネスを展 開する人達等、様々な人達の参加と協力で成り立っています。
会 期:
2012年11月9日(金)~11月10日(土)
11/09 13:00-18:00
11/10 10:00-18:00
会 場:
大阪南港ATC ITM棟 【道順詳細】
〒559-0034 大阪府大阪市住之江区南港北2丁目1-10
入場料:
無料(懇親会は実費)
--

「OpenBlocksによるマイクロサーバソリューション及びデベロッパネットワークのご紹介」として、OpenBlocks A Familyを中心としたデモを行います。
.testedで検証した周辺機器なども合わせて展示します。

展示会場では、実際に見て、触っていただくと共に、実際の開発の状況や、OBDNを中心としたデベロッパネットワークの状況、周辺機器評価や、Linuxを含め、様々なOSの開発状況についてなど、気軽にお声がけいただけたらと思います。

個人的には、土曜に15分のステージを行いますが、半分ネタですので笑って流してください。

では、大阪でお会いしましょう。

2012-11-03

OSC 2012 aizu

本日は、会津若松市、会津大学にてOSC 2012 aizuを開催しています。

  

当社もブース出展を行っています。

開催概要は以下の通りです。

---

日程:2012年11月3日(土) 10:00~17:00(※9:00~開場時間までの待機場所あり)
会場:会津大学 講義棟 (大講義室・M8・M9教室)  [キャンパスマップ]
    [アクセス詳細](会津若松駅からバス・タクシーで約10分)
    [GoogleMap] [OpenStreetMap]

費用:無料

内容:オープンソースに関する最新情報の提供
   ・展示 - オープンソースコミュニティ、企業・団体による展示
   ・セミナー - オープンソースの最新情報を提供

主催:オープンソースカンファレンス実行委員会
   Open Source Conference 2012 Aizu 実行委員会

後援:公立大学法人会津大学

協力:会津若松市

協賛:会津若松市役所電脳倶楽部

企画運営:株式会社びぎねっと

--

「OpenBlocksによるマイクロサーバソリューション及びデベロッパネットワークのご紹介」として、OpenBlocks A Familyを中心としたデモを行います。
.testedで検証した周辺機器なども合わせて展示します。

展示会場では、実際に見て、触っていただくと共に、実際の開発の状況や、OBDNを中心としたデベロッパネットワークの状況、周辺機器評価や、Linuxを含め、様々なOSの開発状況についてなど、気軽にお声がけいただけたらと思います。

では会津大学でお会いしましょう。

2012-10-31

OpenBlocks AX3でLXCによる仮想化を試してみる

◆はじめに

今回はOSレベルの仮想化環境を実行できるLXC(Linux Containers)を試してみます。
LXCはXenやKVMのような本格的な仮想化環境ではありませんが、導入がそれほど難しくなくオーバーヘッドが少ないという利点があります。
LXCでは複数の仮想化OSを実行することができますが、稼働するLinux Kernelは一つのみとなっています。このLXCをOpenBlocks AX3上で実際に動作させて性能等を確認してみます。

なお今回使用した機材は以下になります。

  • OpenBlocks AX3/4
  • SSD 30GB


◆LXC用にLinux Kernel再構築

LXCはLinux KernelのControl Group機能を使用しています。AX3のデフォルトのconfigだとこれが無効になっているので、Kernelのconfigを変更してbuildしなおします。

(なお、このカーネルコンフィグの変更は、2012/10/29公開の3.0.6-6以降を利用する場合は不要です。)
 $ cd /tmp
 $ wget ftp://ftp.plathome.co.jp/pub/OBSAX3/squeeze/3.0.6-5/source/linux-3.0.6-20120927-1.tar.gz
 $ su
 # cd /usr/src
 # tar zxvf /tmp/linux-3.0.6-20120927-1.tar.gz
 # cd linux-3.0.6
 # cp arch/arm/configs/obsax3_defconfig .config
 # make menuconfig
以下の箇所を変更します。
 --- arch/arm/configs/obsax3_defconfig  2012-09-27 14:07:46.000000000 +0900
 +++ .config                            2012-10-17 16:27:42.000000000 +0900
 @@ -79,18 +79,29 @@
  CONFIG_LOG_BUF_SHIFT=17
  CONFIG_CGROUPS=y
  # CONFIG_CGROUP_DEBUG is not set
 -# CONFIG_CGROUP_FREEZER is not set
 -# CONFIG_CGROUP_DEVICE is not set
 -# CONFIG_CPUSETS is not set
 -# CONFIG_CGROUP_CPUACCT is not set
 -# CONFIG_RESOURCE_COUNTERS is not set
 -# CONFIG_CGROUP_PERF is not set
 +CONFIG_CGROUP_FREEZER=y
 +CONFIG_CGROUP_DEVICE=y
 +CONFIG_CPUSETS=y
 +CONFIG_PROC_PID_CPUSET=y
 +CONFIG_CGROUP_CPUACCT=y
 +CONFIG_RESOURCE_COUNTERS=y
 +CONFIG_CGROUP_MEM_RES_CTLR=y
 +CONFIG_CGROUP_MEM_RES_CTLR_SWAP=y
 +CONFIG_CGROUP_MEM_RES_CTLR_SWAP_ENABLED=y
 +CONFIG_CGROUP_PERF=y
  CONFIG_CGROUP_SCHED=y
  CONFIG_FAIR_GROUP_SCHED=y
 -# CONFIG_RT_GROUP_SCHED is not set
 -# CONFIG_BLK_CGROUP is not set
 -# CONFIG_NAMESPACES is not set
 +CONFIG_RT_GROUP_SCHED=y
 +CONFIG_BLK_CGROUP=m
 +# CONFIG_DEBUG_BLK_CGROUP is not set
 +CONFIG_NAMESPACES=y
 +CONFIG_UTS_NS=y
 +CONFIG_IPC_NS=y
 +CONFIG_USER_NS=y
 +CONFIG_PID_NS=y
 +CONFIG_NET_NS=y
  CONFIG_SCHED_AUTOGROUP=y
 +CONFIG_MM_OWNER=y
  # CONFIG_SYSFS_DEPRECATED is not set
  # CONFIG_RELAY is not set
  CONFIG_BLK_DEV_INITRD=y
 @@ -174,11 +185,11 @@
  #
  CONFIG_IOSCHED_NOOP=y
  CONFIG_IOSCHED_DEADLINE=y
 -CONFIG_IOSCHED_CFQ=y
 -# CONFIG_DEFAULT_DEADLINE is not set
 -CONFIG_DEFAULT_CFQ=y
 +CONFIG_IOSCHED_CFQ=m
 +# CONFIG_CFQ_GROUP_IOSCHED is not set
 +CONFIG_DEFAULT_DEADLINE=y
  # CONFIG_DEFAULT_NOOP is not set
 -CONFIG_DEFAULT_IOSCHED="cfq"
 +CONFIG_DEFAULT_IOSCHED="deadline"
  # CONFIG_INLINE_SPIN_TRYLOCK is not set
  # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
  # CONFIG_INLINE_SPIN_LOCK is not set
 @@ -1063,6 +1074,7 @@
  #
  # Classification
  #
 +CONFIG_NET_CLS=y
  # CONFIG_NET_CLS_BASIC is not set
  # CONFIG_NET_CLS_TCINDEX is not set
  # CONFIG_NET_CLS_ROUTE4 is not set
 @@ -1071,7 +1083,7 @@
  # CONFIG_NET_CLS_RSVP is not set
  # CONFIG_NET_CLS_RSVP6 is not set
  # CONFIG_NET_CLS_FLOW is not set
 -# CONFIG_NET_CLS_CGROUP is not set
 +CONFIG_NET_CLS_CGROUP=y
  # CONFIG_NET_EMATCH is not set
  # CONFIG_NET_CLS_ACT is not set
  CONFIG_NET_SCH_FIFO=y
 @@ -1812,7 +1824,7 @@
  CONFIG_HW_CONSOLE=y
  CONFIG_VT_HW_CONSOLE_BINDING=y
  CONFIG_UNIX98_PTYS=y
 -# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
 +CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
  CONFIG_LEGACY_PTYS=y
  CONFIG_LEGACY_PTY_COUNT=16
  # CONFIG_SERIAL_NONSTANDARD is not set

 # make zImage modules
 # make modules_install
uImageを作成します。
 # gzip -9 < linux-3.0.6/arch/arm/boot/zImage > zImage.gz
 # lzma -3 < ramdisk-squeeze.obsax3.img >ramdisk-squeeze.obsax3.img.lzma
 # mkimage -n "OBSAX3LXC 3.0.6-5" -A arm -O linux -T multi -C gzip -a 0x8000 -e 0x8000 -d zImage.gz:ramdisk-squeeze.obsax3.img.lzma uImage.initrd.obsax3
FlashROMに書き込みます。
 # flashcfg -y -f uImage.initrd.obsax3
Rebootして構築しなおしたLinux Kernelで起動します。
 # reboot


◆LXC導入

AX3のDebian Squeezeではaptでlxcパッケージの導入ができます。ただしパッケージでインストールされるlxcのバージョンは0.7.2となります。
aptでインストールされるものはlxc-startで問題が生じたりするので、今回はソースからビルドすることにします。使うバージョンはリリース版では最新となるlxc 0.7.5です。

まずはlxcのビルドに必要なパッケージをインストールします。
 $ su
 # apt-get install libcap-dev libcap2-bin bridge-utils live-config debootstrap
 --
2013/03/13追記 パッケージ追加における不具合の報告と対処方法について
live-configパッケージの追加により、/etc/rcS.d/S01openblocks-setupが、/etc/rcS.d/S02openblocks-setupにリネームされるのですが、openblocksのディスク共有モードの仕組みにより、本スクリプトが2重起動する不具合を確認しています。
お手数ですが、対策として以下の処置を行ってください。
・/etc/rcS.d/S02openblocks-setupを削除してください。 
・/etc/rcS.d/S01live-configをS02live-configにリネームしてください。

http://lxc.sourceforge.net のDownloadリンクをたどりlxc-0.7.5.tar.gzをダウンロードし展開します。

 $ tar zxvf lxc-0.7.5.tar.gz
 $ cd lxc-0.7.5
 $ ./configure
 $ make
 $ su
 # make install
make install で /usr/local 以下にインストールされます。/usr/local/binにPATHを通しておきます。
 $ PATH=$PATH:/usr/local/bin
lxc-checkconfigコマンドでKernelのconfigがlxcに適したものになっているかを確認します。
 $ lxc-checkconfig
 Kernel config /proc/config.gz not found, looking in other places...
 Found kernel config file /lib/modules/3.0.6/build/.config
 --- Namespaces ---
 Namespaces: enabled
 Utsname namespace: enabled
 Ipc namespace: enabled
 Pid namespace: enabled
 User namespace: enabled
 Network namespace: enabled
 Multiple /dev/pts instances: enabled

 --- Control groups ---
 Cgroup: enabled
 Cgroup namespace: required
 Cgroup device: enabled
 Cgroup sched: enabled
 Cgroup cpu account: enabled
 Cgroup memory controller: enabled
 Cgroup cpuset: enabled

 --- Misc ---
 Veth pair device: enabled
 Macvlan: enabled
 Vlan: enabled
 File capabilities: missing
 enabled

 Note : Before booting a new kernel, you can check its configuration
 usage : CONFIG=/path/to/config /usr/local/bin/lxc-checkconfig
Cgroup namespaceはCONFIG_CGROUP_NSのようですが、Linux Kernel 3.0以降では削除されているようなので無視します。
File capabilitiesもCONFIG_SECURITY_FILE_CAPABILITIESですが、同様に3.0では無視します。

/etc/fstabに以下を追加します。
 cgroup        /cgroup        cgroup        defaults    0    0 
mountでcgroupをマウントします。

 # mkdir -p /cgroup
 # mount -a
ゲストOSのイメージが置かれる場所を作成します。
 # mkdir -p /usr/local/var/lib/lxc
最後にネットワークの設定をします。今回はホストのネットワークインターフェイスeth0とゲストOSのネットワークインターフェイスeth0をブリッジbr0を用いて接続することにします。ちなみに他の設定方法もあります。

/etc/network/interfaces のeth0部分を削除して以下のように設定します。
 auto br0
 iface br0 inet dhcp
        bridge_ports eth0
これでリブートするとbr0にDHCPでIPアドレスが設定されます。
 # ifconfig br0
 br0       Link encap:Ethernet  HWaddr 00:0a:85:00:05:58
           inet addr:192.168.111.217  Bcast:192.168.111.255  Mask:255.255.255.0
           inet6 addr: fe80::20a:85ff:fe00:558/64 Scope:Link
           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
           RX packets:638 errors:0 dropped:0 overruns:0 frame:0
           TX packets:140 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:0
           RX bytes:76158 (74.3 KiB)  TX bytes:24563 (23.9 KiB)
ここまでで準備は完了です。


◆LXCでゲストOSを作成

ゲストOSを作成します。ゲストOSの作成はlxc-createコマンドで行います。
今回はDebian Squeezeのイメージを作成します。
ネットワーク設定のためにデフォルトの設定ファイルを作成します。
 # vi lxc.config

 lxc.network.type=veth
 lxc.network.link=br0
 lxc.network.flags=up
デフォルトの設定ファイルを指定してDebianのゲストOSを作成します。-nオプションで識別用のIDを指定します。
 # lxc-create -n deb-1 -f lxc.config -t debian
debootstrapを用いてイメージが/usr/local/var/lib/lxc/deb-1/rootfs以下に生成されます。
初回はパッケージのダウンロードで多少時間を要しますが、生成されたものはキャッシュされるので2度目からは同じdebianの場合には高速に生成可能です。

このままだと起動時にネットワークインターフェイスが正しく認識されずDHCPでIPアドレスが取得できないという問題があります。ゲストの/etc/network/runが/dev/shm/networkのシンボリックリンクとなっていることの起因します。今回はゲストの/etc/network/runを通常のディレクトリとすることで対処します。
 # ls -l /usr/local/var/lib/lxc/deb-1/rootfs/etc/network/run
 lrwxrwxrwx 1 root root 16 Oct 17 19:24 /usr/local/var/lib/lxc/deb-1/rootfs/etc/network/run -> /dev/shm/network
 # rm /usr/local/var/lib/lxc/deb-1/rootfs/etc/network/run
 # mkdir /usr/local/var/lib/lxc/deb-1/rootfs/etc/network/run
lxc-startコマンドでゲストOSの起動ができます。
 # lxc-start -n deb-1
 INIT: version 2.88 booting
 Using makefile-style concurrent boot in runlevel S.
 Cleaning up ifupdown....
 Setting up networking....
 Activating lvm and md swap...done.
 Checking file systems...fsck from util-linux-ng 2.17.2
 done.
 Mounting local filesystems...done.
 Activating swapfile swap...done.
 Cleaning up temporary files....
 Setting kernel variables ...done.
 Configuring network interfaces...Internet Systems Consortium DHCP Client 4.1.1-P1
 Copyright 2004-2010 Internet Systems Consortium.
 All rights reserved.
 For info, please visit https://www.isc.org/software/dhcp/

 Listening on LPF/eth0/6a:0d:f6:ca:50:14
 Sending on   LPF/eth0/6a:0d:f6:ca:50:14
 Sending on   Socket/fallback
 DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4
 DHCPOFFER from 192.168.111.22
 DHCPREQUEST on eth0 to 255.255.255.255 port 67
 DHCPACK from 192.168.111.22
 bound to 192.168.111.230 -- renewal in 122 seconds.
 done.
 Cleaning up temporary files....
 INIT: Entering runlevel: 3
 Using makefile-style concurrent boot in runlevel 3.
 Starting OpenBSD Secure Shell server: sshd.

 Debian GNU/Linux 6.0 deb-1 console

 deb-1 login:
lxc-startを-n以外のオプションなしで起動すると上記のようにloginプロンプトがでてloginできるようになります。rootのパスワードはデフォルトではrootになっています。lxc-startに-dオプションをつけて起動すると、コンソールとは切り離された状態でスタートします。

ゲストのeth0はホストのbr0につながりますがMACアドレスはランダムに決定されるようです。MACアドレスを固定したい場合は、
/usr/local/var/lib/lxc/dev-1/configに
 lxc.network.hwaddr=XX:XX:XX:XX:XX:XX
のように追加します。XX:XX:XX:XX:XX:XXの部分はMACアドレスを指定します。


◆LXCのパフォーマンス測定

ゲストのパフォーマンス測定を行います。測定にはUnixBenchとネットワークの性能測定のためにnuttcpを使います。

まずはホスト上で行います。
 host$ wget http://byte-unixbench.googlecode.com/files/UnixBench5.1.3.tgz
 host$ tar zxvf UnixBench5.1.3.tgz
 host$ cd UnixBench
 host$ make
 host$ ./Run
ホストからゲストのファイルシステムは見えるのでこれをコピーし実行します。
 host$ cp -pr ../UnixBench /usr/local/var/lib/lxc/deb-1/rootfs/tmp

 guest$ cd /tmp/UnixBench
 guest$ ./Run
結果を以下に示します。ゲスト値/ホスト値の比率も示します。
System Benchmarks Index Values          ホスト  ゲスト  比率(%)
Dhrystone 2 using register variables    274.3   274.2    99.9
Double-Precision Whetstone               11.7    11.7   100.0
Execl Throughput                        193.6   196.9   101.7
File Copy 1024 bufsize 2000 maxblocks   236.9   235.3    99.3
File Copy 256 bufsize 500 maxblocks     165.5   161.7    97.7
File Copy 4096 bufsize 8000 maxblocks   411.8   409.4    99.4
Pipe Throughput                         190.0   184.9    97.3
Pipe-based Context Switching            126.1   122.8    97.3
Process Creation                        188.2   183.8    97.6
Shell Scripts (1 concurrent)            480.5   471.2    98.0
Shell Scripts (8 concurrent)            617.4   601.9    97.4
System Call Overhead                    314.5   318.1   101.1
------------------------------------------------------------
System Benchmarks Index Score           200.5   198.4    98.9
1%程度のオーバーヘッドとなりました。

次にnuttcpでのネットワーク性能の測定を行います。
nuttcpはホスト、ゲストともにaptでインストールし、-Sオプションをつけてデーモンで走らせます。
 $ su
 # apt-get install nuttcp
 # exit
 $ nuttcp -S
Linuxを走らせたIntel PCからOpenblocks AX3のゲスト、ホストに向けてそれぞれnuttcpを実行します。
 (for ホスト)
 $ nuttcp -i1 -T10 192.168.111.217
  109.0000 MB /   1.01 sec =  901.4193 Mbps     0 retrans
  112.1875 MB /   1.00 sec =  941.4726 Mbps     0 retrans
  112.3125 MB /   1.00 sec =  941.6154 Mbps     0 retrans
  112.1875 MB /   1.00 sec =  941.5272 Mbps     0 retrans
  112.1875 MB /   1.00 sec =  941.1534 Mbps     0 retrans
  112.2500 MB /   1.00 sec =  941.4358 Mbps     0 retrans
  112.2500 MB /   1.00 sec =  941.6438 Mbps     0 retrans
  112.2500 MB /   1.00 sec =  941.5685 Mbps     0 retrans
  112.2500 MB /   1.00 sec =  941.6052 Mbps     0 retrans

 1118.6250 MB /  10.01 sec =  937.4715 Mbps 8 %TX 100 %RX 0 retrans 0.21 msRTT

 (for ゲスト veth使用)
 $ nuttcp -i1 -T10 192.168.111.230
   81.8750 MB /   1.02 sec =  675.0750 Mbps     0 retrans
   90.1875 MB /   1.00 sec =  756.7284 Mbps     0 retrans
   91.8750 MB /   1.00 sec =  770.9370 Mbps     0 retrans
   94.3125 MB /   1.00 sec =  791.0509 Mbps     0 retrans
   93.3750 MB /   1.00 sec =  783.4030 Mbps     0 retrans
   93.5625 MB /   1.00 sec =  784.8199 Mbps     0 retrans
   92.8125 MB /   1.00 sec =  778.8270 Mbps     0 retrans
   92.9375 MB /   1.00 sec =  778.7542 Mbps     0 retrans
   92.8125 MB /   1.00 sec =  778.9330 Mbps     0 retrans

  915.8125 MB /  10.00 sec =  767.8582 Mbps 5 %TX 98 %RX 0 retrans 0.23 msRTT

767.8582 / 937.4715 = 81.9%
となりゲストの性能はホストに比べ約20%落ちるという結果になりました。

次に仮想ネットワークインターフェイスの設定をvethではなくmacvlanを用いて実験を行いました。
ホストではbr0を使用せずにeth0に直接リンクします。
 lxc.network.type=macvlan
 lxc.network.link=eth0
 lxc.network.flags=up
結果は以下のようになりました。
 (for ゲスト macvlan使用)
 $ nuttcp -i1 -T10 192.168.111.230
   111.5000 MB /   1.01 sec =  923.4068 Mbps     0 retrans
   112.2500 MB /   1.00 sec =  941.4706 Mbps     0 retrans
   112.2500 MB /   1.00 sec =  941.8548 Mbps     0 retrans
   111.6250 MB /   1.00 sec =  936.3596 Mbps     0 retrans
   112.2500 MB /   1.00 sec =  941.5365 Mbps     0 retrans
   112.2500 MB /   1.00 sec =  941.6147 Mbps     0 retrans
   112.2500 MB /   1.00 sec =  941.6599 Mbps     0 retrans
   112.2500 MB /   1.00 sec =  941.5713 Mbps     0 retrans
   112.2500 MB /   1.00 sec =  941.6184 Mbps     0 retrans

  1120.7500 MB /  10.01 sec =  939.2494 Mbps 7 %TX 100 %RX 0 retrans 0.20 msRTT
macvlanを使う方法ではホストとゲストでほぼ同一の値がでていてネットワーク性能の劣化がないという結果になりました。


◆ゲストの台数を増やしてみる実験

ゲストを何台まで起動できるか確認してみます。
lxc-cloneを用いると既存のゲストをコピーできるようですが、lxc-cloneが正しく動作できませんでした。
そこで、lxc-createを用いてゲストを作成してゲストを起動することを繰り返してみます。

 1. lxc-createでゲストを作成
 2. lxc-start -dで起動
 3. sleep 20秒

ということを繰り返して確認しました。
なおディスクアクセスが競合して遅くなってしまうのを防ぐため3でsleepをいれています。

結果は、30台ゲストを作成できました。

SSDの容量の問題(Disk Full)で31台目のゲストが起動できなくなってしまいました。
Disk Full直前でのload average, memory使用量はそれぞれ以下のようになっています。
 load average: 0.00, 0.01, 0.05
 Mem:   1029628k total,   922264k used,   107364k free,   261984k buffers
SSDの容量が許せばまだいけそうな感じです。


◆まとめ

簡単な仮想化環境を構築できるLXCを試してみました。
UNIX Benchではほとんど性能の劣化はありませんでした。ネットワークの性能はmacvlanを使うことで性能の劣化はほぼなくすことができました。

今回作成したバイナリは以下よりダウンロード出来ます。

ftp://ftp.plathome.co.jp/pub/OBSAX3/obdnmag/lxc075/uImage.initrd.obsax3
ftp://ftp.plathome.co.jp/pub/OBSAX3/obdnmag/lxc075/dot.config


◆既知の問題

udev をインストールしようとすると、エラーが発生す正常終了しません。lxc-startの実行前に、次の設定追加が必要です。

# vi /usr/local/var/lib/lxc/deb-1/config

#ppp
lxc.cgroup.devices.allow = c 108:0 rwm
#fuse
lxc.cgroup.devices.allow = c 10:229 rwm
#loop0
lxc.cgroup.devices.allow = b 7:0 rwm
#tun
lxc.cgroup.devices.allow = c 10:200 rwm

ただし、この設定をしてudevのインストールが完了しても、lxc-startの後にコンソールが表示されなくなる現象を確認しています。対策は調査中。sshは可能です。





2012-10-26

今週末はOSC 2012 Oita/Fall です。

今週末は、OSC 2012 Oita/Fall にてOpenBlocksの展示と、セミナーを行います。
開催概要概要は以下の通りです。

---
日程:2012年10月27日(土) 10:00-16:50

会場:ソフィアホール (大分市東春日町51-6 大分第2ソフィアプラザビル2F)
    [アクセスマップ]

費用:無料

内容:オープンソースに関する最新情報の提供
   ・展示 - オープンソースコミュニティ、企業・団体による展示
   ・セミナー - オープンソースの最新情報を提供

主催:オープンソースカンファレンス実行委員会、大分県オープンソースソフトウエア研究会

後援:大分県

開催協力:株式会社びぎねっと

--

「OpenBlocksによるマイクロサーバソリューション及びデベロッパネットワークのご紹介」として、OpenBlocks A Familyを中心としたデモを行います。
.testedで検証した周辺機器なども合わせて展示します。
また、10:20からのセミナー枠をいただきました。

OpenBlocksにおけるSoCベースの汎用マイクロサーバ開発について


若干昔話もしつつ、今回ARM SoCでLinuxサーバを作った理由や、開発の概要などをお伝えしようと思います。

展示会場では、実際に見て、触っていただくと共に、実際の開発の状況や、OBDNを中心としたデベロッパネットワークの状況、周辺機器評価や、Linuxを含め、様々なOSの開発状況についてなど、気軽にお声がけいただけたらと思います。

では大分でお会いしましょう。

2012-10-19

今週末はOSC 2012 Hiroshimaです。

今週末は、OSC 2012 HiroshimaにてOpenBlocksの展示などを行っています。

概要は以下の通り。

---
日程:2012年10月20日(土) 10:00-18:00

会場:広島国際学院大学 中野キャンパス 10号館 (JR山陽本線「中野東駅」下車、徒歩7分) 
   [アクセスマップ] [キャンパスマップ] [OpenStreetMap]

費用:無料

内容:オープンソースに関する最新情報の提供
   ・展示 - オープンソースコミュニティ、企業・団体による展示
   ・セミナー - オープンソースの最新情報を提供

主催:オープンソースカンファレンス実行委員会

共催:広島国際学院大学

後援:電子情報通信学会中国支部
   NPO法人 ひろしまオープンソフトウェアコンソーシアム

企画運営:株式会社びぎねっと --


「OpenBlocksによるマイクロサーバソリューション及びデベロッパネットワークのご紹介」として、OpenBlocks A Familyを中心としたデモを行います。
.testedで検証した周辺機器なども合わせて展示します。


明日は、実際に見て、触っていただくと共に、実際の開発の状況や、OBDNを中心としたデベロッパネットワークの状況、周辺機器評価や、Linuxを含め、様々なOSの開発状況についてなど、気軽にお声がけいただけたらと思います。

今週末より、広島、大分、会津、大阪、品川と、5週連続で週末のカンファレンス出展となります。

2012-10-16

OpenBlocks AX3でVyattaを動かす(起動編)

◆はじめに

前回に引き続きオープンソースルータのVyatta CORE 6.4をOpenBlocks AX3で動かします。前回は各サブモジュールのビルドまでを行いましたが、今回はISO LIVEイメージを作成しUSBメモリを用いてVyattaを起動させます。その後内蔵のSSDにVyattaをインストールしSSDから起動するようにします。そしてVyattaの簡単な動作確認を行います。

前回の記事はこちら: OpenBlocks AX3でVyattaを動かす(ビルド編)

◆VyattaのISO LIVEイメージ作成

パッケージリストから不要なパッケージの削除と必要なパッケージの追加を行います。
 $ cd ~/build-iso
 $ vi livecd/config.vyatta/chroot_local-packageslists/vyatta-full.list
 (以下を削除)
 grub-common
 grub-pc
 (以下を追加)
 libnet0
 libsablot0
自動で取得できないパッケージはあらかじめ pkgs ディレクトリにコピーします。

以下は、前回Debian lenny用リポジトリから取得したパッケージです
 $ cp /var/cache/apt/archives/libsablot0_1.0.3-1+b1_armel.deb pkgs
 $ cp /var/cache/apt/archives/libnet0_1.0.2a-7_armel.deb pkgs  
atmel-firmwareについてはpackages.vyatta.comから取得します。
 $ cd pkgs
 $ wget http://packages.vyatta.com/vyatta/pool/main/atmel-firmware_1.3-4_all.deb
 $ cd ..
livecd/mk.livecd.functions を編集します。レポジトリURLの変更と使用しない開発用レポジトリの削除を行います。
 diff --git a/livecd/mk.livecd.functions b/livecd/mk.livecd.functions
 index 248a4e2..1c92d19 100644
 --- a/livecd/mk.livecd.functions
 +++ b/livecd/mk.livecd.functions
 @@ -288,11 +288,10 @@ set_up_lh_config ()
    fi

    # set up the debian repo
 -  LB_MIRROR_BINARY="http://packages.vyatta.com/debian-$branch"
 -  LB_MIRROR_BOOTSTRAP="http://packages.vyatta.com/debian-$branch"
 +  LB_MIRROR_BINARY="ftp://ftp.plathome.co.jp/pub/debian"
 +  LB_MIRROR_BOOTSTRAP="ftp://ftp.plathome.co.jp/pub/debian"
    export LB_MIRROR_BINARY LB_MIRROR_BOOTSTRAP

 -  local dev_repo_root=http://packages.vyatta.com/vyatta-dev
    local repo_dir=unstable
    if ! eval "$VYATTA_DEV_BUILD"; then
      # not dev build => use testing.
 @@ -310,17 +309,11 @@ set_up_lh_config ()

      # set up chroot_sources
      cd ../config/chroot_sources
 -    ## "this" branch
 -    if [ ! -f vyatta.chroot ]; then
 -      echo "deb $dev_repo_root/$branch/$repo_dir $branch main" >vyatta.chroot
 -    fi
      ## "base" and "extra" branches for overlay
      for branch in "$VBUILD_BASE_BRANCH" "${VBUILD_EXTRA_BRANCHES[@]}"; do
        if [ -z "$branch" ] || [ -f "vyatta-$branch.chroot" ]; then
          continue
        fi
 -      echo "deb $dev_repo_root/$branch/$repo_dir $branch main" \
 -        >"vyatta-$branch.chroot"
        cp vyatta.chroot.gpg "vyatta-$branch.chroot.gpg"
      done
livecd/mk.livecd を編集してgrub関連部分の削除を行います。また生成されるイメージはbinary-hybrid.isoではなくbinary.isoのため該当部分を修正します。
 diff --git a/livecd/mk.livecd b/livecd/mk.livecd
 index dc2795e..6187fa9 100755
 --- a/livecd/mk.livecd
 +++ b/livecd/mk.livecd
 @@ -99,9 +99,6 @@ cp -f config/chroot_apt/preferences chroot/etc/apt
  # but that's even uglier.
  echo 'do_initrd = Yes' >chroot/etc/kernel-img.conf

 -echo 'I: creating default grub config'
 -create_default_grub_config
 -
  # build the XenSource partition image
  if eval "$create_xensourcevm"; then
    vyatta-xensource-partition-image || exit 1
 @@ -114,8 +111,6 @@ if ! lh binary ; then
    exit 1
  fi

 -# new image name (hybrid image)
 -mv binary-hybrid.iso binary.iso
  ln -nsf binary.iso livecd-"$BUILDID".iso

  echo I: Done
Linuxカーネルを指定します。
 $ echo "linux-image-3.0.32-1-obsax3-vyatta" > livecd/config.vyatta/chroot_local-packageslists/vyatta-kernel.obsax3-vyatta
Vyattaのデフォルトのシリアルの速度は9600bpsです。OpenBlocks AX3のブートローダのデフォルトは115200bpsなので115200に変更します。変更箇所はシステムのデフォルト値とVyattaの設定ファイルの二ヶ所です。
livecd/config.vyatta/chroot_local-hooks/05-event_tty:

 $ sed -i -e 's/9600/115200/' livecd/config.vyatta/chroot_local-hooks/05-event_tty


livecd/templates/community/config.boot.default:

 diff --git a/livecd/templates/community/config.boot.default b/livecd/templates/community/config.boot.default
 index 1fb6e3c..a7c043d 100644
 --- a/livecd/templates/community/config.boot.default
 +++ b/livecd/templates/community/config.boot.default
 @@ -31,7 +31,7 @@ system {
      }
      console {
          device ttyS0 {
 -            speed 9600
 +            speed 115200
          }
      }
      config-management {
OpenBlocks AX3に附属しているpshd, runledと起動スクリプトをコピーします。
 $ mkdir -p livecd/config.vyatta/chroot_local-includes/usr/sbin
 $ cp -p /usr/sbin/pshd livecd/config.vyatta/chroot_local-includes/usr/sbin
 $ cp -p /usr/sbin/runled livecd/config.vyatta/chroot_local-includes/usr/sbin
 $ mkdir -p livecd/config.vyatta/chroot_local-includes/etc/init.d
 $ cp -p /etc/init.d/pshd livecd/config.vyatta/chroot_local-includes/etc/init.d
 $ cp -p /etc/init.d/runled livecd/config.vyatta/chroot_local-includes/etc/init.d
続いてルートファイルシステム生成中に実行される4つのスクリプトを追加します。
livecd/config.vyatta/chroot_local-hooks/90-update-initramfs:
(initramfsの生成)

    #! /bin/sh
    update-initramfs -c -k 3.0.32-1-obsax3-vyatta


livecd/config.vyatta/chroot_local-hooks/91-obsax3:
(pshd, runledの起動)

    #!/bin/sh
    update-rc.d pshd start 01 2 . stop 01 0 6 .
    update-rc.d runled start 01 2 . stop 01 0 6 .


livecd/config.vyatta/chroot_local-hooks/92-disable-grub:
(install system実行時のgrub installを抑制)

    #!/bin/sh
    sed -e 's/^\(install_grub\)$/#\1/' -i /opt/vyatta/sbin/install-system


livecd/config.vyatta/chroot_local-hooks/93-inittab:
(inittabから不要エントリを削除)

    #!/bin/sh
    sed -e 's/^\([123456]:.*\)/#\1/' -i /etc/inittab

ISOイメージ生成中にuImageを生成するために以下のスクリプトを追加します。
livecd/config.vyatta/binary_local-hooks/90-uimage:

    #!/bin/sh
    gzip -9 < binary/live/vmlinuz-3.0.32-1-obsax3-vyatta > binary/live/vmlinuz-3.0.32-1-obsax3-vyatta.gz
    mkimage -n "Vyatta Linux 3.0.32" -A arm -O linux -T multi -C gzip -a 0x8000 -e 0x8000 -d binary/live/vmlinuz-3.0.32-1-obsax3-vyatta.gz:binary/live/initrd.img 3.0.32-1-obsax3-vyatta binary/uImage
    rm -f binary/live/vmlinuz-3.0.32-1-obsax3-vyatta.gz
これらに実行フラグを立てます。
 $ chmod +x livecd/config.vyatta/chroot_local-hooks/9?-*
 $ chmod +x livecd/config.vyatta/binary_local-hooks/90-uimage
configureを実行します。
 $ export PATH=/sbin:/usr/sbin:$PATH
 $ autoreconf -i
 $ ./configure --with-kernel-flavor=obsax3-vyatta --with-devbuild=false
生成された livecd/mk.livecd.conf を編集します。
 (LB_APTをaptitudeからapt-getに変更。debugに効果あり)
 declare -x LB_APT="apt-get"
 (以下の行は不要なので削除)
 declare -x LB_BOOTLOADER="syslinux"
最後にisoイメージの生成を行います。一般ユーザで作業すると途中chrootのあたりでエラーになるためrootで行います。
パッケージのダウンロード等も行われるので多少時間を要します。
 $ su
 # make iso
     .
     .
 P: Deconfiguring file /etc/apt/apt.conf
 P: Deconfiguring file /usr/sbin/policy-rc.d
 P: Begin unmounting /sys...
 P: Deconfiguring file /usr/sbin/initctl
 P: Begin unmounting /selinux...
 P: Begin unmounting /proc...
 P: Begin unmounting /dev/pts...
 P: Begin unmounting filesystems...
 I: Done

 # ls -l livecd/binary.iso
 -rw-r--r-- 1 root root 196575232 Aug 30 20:41 livecd/binary.iso


◆OpenBlocks AX3でVyattaをlive起動

vfatでフォーマットされたUSBメモリを使ってvyattaを起動します。
binary.isoを中身をそのままUSBメモリにコピーします。
 $ cd ~build_iso
 $ su
 # mkdir /tmp/mnt2
 # mount livecd/binary.iso /tmp/mnt2 -o loop
 # mount /dev/sdb1 /mnt
 # rsync -a /tmp/mnt2/ /mnt
 # ls -l /mnt
 total 6976
 drwxr-xr-x 3 root root   16384 Aug 30 20:40 doc
 drwxr-xr-x 3 root root   16384 Aug 30 20:40 isolinux
 drwxr-xr-x 2 root root   16384 Aug 30 20:40 live
 -r-xr-xr-x 1 root root    3575 Aug 30 20:40 md5sum.txt
 -r-xr-xr-x 1 root root 7077423 Aug 30 20:40 uImage
 # umount /mnt
 # umount /tmp/mnt2
OpenBlocks AX3を再起動して適当なキーを押しブートローダで停止させます。
 # reboot
   .
   .
   .
 MMC:   MRVL_MMC: 0
 Net:   egiga0, egiga1
 Hit any key to stop autoboot:  0
 openblocks>
USBの初期化をします。
 openblocks> usb start
 (Re)start USB...
 USB:   Active port:     0
 Register 10011 NbrPorts 1
 USB EHCI 1.00
 scanning bus for devices... 2 USB Device(s) found
 Waiting for storage device(s) to settle before scanning...
        scanning bus for storage devices... 1 Storage Device(s) found
FATファイルシステムのコンテンツを確認します。
 openblocks> fatls usb 0:1
 0/32 blocks
             .disk/
             doc/
             isolinux/
             live/
      3575   md5sum.txt
   7077423   uimage
 0/32 blocks
 0/32 blocks
 0/32 blocks

 2 file(s), 4 dir(s)
uimageが確認できたら、FATファイルシステムからカーネルイメージをロードします。
 openblocks> fatload usb 0:1 0x20000000 uImage
 reading uImage
 0/32 blocks
 13760/13792 blocks
 0/31 blocks

 7077423 bytes read
ブートパラメタを設定してブートします。
 openblocks> setenv bootargs boot=live union=unionfs console=ttyS0,115200
 openblocks> bootm 0x20000000
USBメモリからのlive起動なので起動完了まで時間がかかります。今回の環境では2分30秒を要しました。
起動完了するとログインプロンプトがでるのでID:vyatta, Password:vyattaでloginします。
 Welcome to Vyatta - vyatta ttyS0

 vyatta login: vyatta
 Password:
 Linux vyatta 3.0.32-1-obsax3-vyatta #2 SMP Thu Aug 30 00:19:15 JST 2012 armv7l
 Welcome to Vyatta.
 This system is open-source software. The exact distribution terms for
 each module comprising the full system are described in the individual
 files in /usr/share/doc/*/copyright.
 vyatta@vyatta:~$
この状態でVyattaの機能は使える状態になっています。


◆SSDにVyattaをインストール

USBメモリからlive起動した状態だとconfigのセーブなどが行えない状態なので内蔵のSSDにVyattaをインストールします。
本来はVyattaのinstall systemの中でパーティショニングやファイルシステムの構築なども行えますが、今回は既存のファイルシステムを一部残して起きたかったのでパーティショニングはあらかじめオリジナルのDebianで行っておきます。

Vyattaを一度終了してDebianをRAMディスクモードで起動します。
 vyatta@vyatta:~$ reboot
Debianが起動したら、fdiskを実行します。
詳細は省略しますが、最終的に以下のようなパーティショニングを行いました。
 # fdisk -l /dev/sda

 - snip -

 Disk /dev/sda: 32 GB, 32012789760 bytes
 255 heads, 63 sectors/track, 3892 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes

    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1          20      160618   83  Linux
 /dev/sda2              21        1350    10675192   83  Linux
 /dev/sda3            1351        3892    20410582   83  Linux
sda1はVyattaのLinuxカーネル保存用の領域です。OpenBlocks AX3のブートローダu-bootでは、大きいパーティションからのext2loadを行うとエラーとなるためブート専用に小さめの領域を確保しました。
sda2はVyattaの/用の領域です。10GBもあれば十分です。
sda3は既存のDebian環境用の領域です。

Vyatta用bootの領域をext2でフォーマットし、Linuxカーネルイメージをコピーしておきます。
 # mkfs.ext2 /dev/sda1

 # mount /dev/sda1 /mnt
 # mount /dev/sdb1 /mnt2
 # cp -p /mnt2/uImage /mnt
 # ls -l /mnt
 Total 6951
 drwx------ 2 root root   12288 Sep  4 16:23 lost+found
 -rwxr-xr-x 1 root root 7076480 Aug 30 23:00 uImage
rebootし、u-bootで停止し今度はsda1からのuImageを使用してUSB LIVE起動します。
 # reboot
 - snip -

 openblocks> ide reset          

 Reset IDE:
 Marvell Serial ATA Adapter
 Integrated Sata device found
   Device 0 @ 0 0:
 Model: ADATA SSD S396 30GB                    Firm: 3.3.2    Ser#: 02414202500300002255
             Type: Hard Disk
             Supports 48-bit addressing
             Capacity: 30533.8 MB = 29.8 GB (62533296 x 512)

 openblocks> ext2ls ide 0:1
 <DIR>       1024 .
 <DIR>       1024 ..
 <DIR>      12288 lost+found
          7076480 uImage
 openblocks> ext2load ide 0:1 0x20000000 uImage
 Loading file "uImage" from ide device 0:1 (hda1)
 7076480 bytes read
 openblocks> setenv bootargs boot=live union=unionfs console=ttyS0,115200
 openblocks> bootm 0x20000000
起動したらvyatta/vyattaでログイン後 install systemを実行します。
Partitionの設定はSkipしてシステムはsda2にインストールします。
 vyatta@vyatta:~$ install system
 Welcome to the Vyatta install program.  This script
 will walk you through the process of installing the
 Vyatta image to a local hard drive.

 Would you like to continue? (Yes/No) [Yes]:
 Probing drives: OK
 Looking for pre-existing RAID groups...none found.
 You have two disk drives:
         sda     32017 MB
         sdb     1006 MB
 Would you like to configure RAID-1 mirroring on them? (Yes/No) [Yes]:No
 Ok.  Not configuring RAID-1.
 The Vyatta image will require a minimum 1000MB root.
 Would you like me to try to partition a drive automatically
 or would you rather partition it manually with parted?  If
 you have already setup your partitions, you may skip this step.

 Partition (Auto/Union/Parted/Skip) [Auto]: Skip

 The Vyatta install needs a minimum 1000MB root
 with partiton type 83 (Linux).



 Looking for appropriate partitions: OK
 I found the following partitions suitable for the Vyatta image:
 Partition       Size
  sda2           10939MB
  sda3           20908MB


 Which partition should I install the root on? [sda2]:

 Creating filesystem on /dev/sda2: OK
 Mounting /dev/sda2
 Copying system files to /dev/sda2:
  97% [=================================================> ] OK
 I found the following configuration files
 /opt/vyatta/etc/config/config.boot
 Which one should I copy to sda? [/opt/vyatta/etc/config/config.boot]:

 Enter password for administrator account
 Enter vyatta password:
 Retype vyatta password:
 /opt/vyatta/sbin/install-system: line 1428: /usr/sbin/dmidecode: No such file or directory
 /opt/vyatta/sbin/install-system: line 1429: /usr/sbin/dmidecode: No such file or directory
 Done!
 vyatta@vyatta:~$
sda2へのVyattaシステムのインストールが終わりました。(「dmidecode: No such file or directory」は無視してかまいません」)


◆OpenBlocks AX3のSSDからVyattaを起動

rebootしてVyattaが起動できることを確認します。
 vyatta@vyatta:~$ reboot
再びu-bootで停止し、SSD上のsda2をrootとしてVyattaを起動します。
 openblocks> ide reset          
 openblocks> ext2load ide 0:1 0x20000000 uImage
 openblocks> setenv bootargs root=/dev/sda2 console=ttyS0,115200
 openblocks> bootm 0x20000000
loginプロンプトが出てくれば無事完了です。
 Welcome to Vyatta - vyatta ttyS0

 vyatta login:
再びrebootして、u-bootで起動時に自動的にVyattaが起動するように設定します。
 openblocks> setenv bootcmd "ide reset;ext2load ide 0:1 0x20000000 uImage;setenv bootargs root=/dev/sda2 console=ttyS0,115200;bootm 0x20000000"
 openblocks> saveenv
 openblocks> reset    (再起動)
ちなみに出荷時の状態に戻すにはu-bootで以下のように設定します。
 openblocks> setenv bootcmd "echo;echo Run Boot Selection Script;echo;run _phase_1"
 openblocks> saveenv
または、次のコマンドで出荷時の状態に戻すことができます。
 openblocks> run clr_env


◆Vyattaの基本動作確認(アドレス設定、ユーザ管理、ssh接続等)

Vyattaで基本的なインターフェイスの設定等を行います。
 vyatta@vyatta$ configure
 [edit]
 vyatta@vyatta#
eth0のアドレスはDHCPで取得するようにします。
eth1にはstaticアドレスを設定します。vyattaはcommitコマンドにより設定が有効になります。
 vyatta@vyatta# set interfaces ethernet eth0 address dhcp
 vyatta@vyatta# set interfaces ethernet eth1 address 192.168.200.1/24
 vyatta@vyatta# commit
configureモードを抜けてshow interfacesでinterfaceの状態を確認します。
 vyatta@vyatta# exit
 Warning: configuration changes have not been saved.
 exit
 vyatta@vyatta:~$ show interfaces
 Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
 Interface        IP Address                        S/L  Description
 ---------        ----------                        ---  -----------
 eth0             192.168.111.227/24                u/u
 eth1             192.168.200.1/24                  u/u
 lo               127.0.0.1/8                       u/u
                  ::1/128
pingコマンドを確認します。
 vyatta@vyatta:~$ ping 192.168.111.1
 PING 192.168.111.1 (192.168.111.1) 56(84) bytes of data.
 64 bytes from 192.168.111.1: icmp_req=1 ttl=255 time=0.851 ms
 64 bytes from 192.168.111.1: icmp_req=2 ttl=255 time=0.308 ms
dateコマンドを確認します。
 vyatta@vyatta:~$ show date
 Tue Sep  4 08:05:56 GMT 2012
TIMEZONEをJSTに変更します。
 vyatta@vyatta:~$ configure
 vyatta@vyatta# set system time-zone Asia/Tokyo
 [edit]
 vyatta@vyatta# commit
 [ system time-zone Asia/Tokyo ]
 Stopping enhanced syslogd: rsyslogd.
 Starting enhanced syslogd: rsyslogd.

 [edit]
 vyatta@vyatta# date
 Tue Sep  4 17:07:20 JST 2012
 [edit]
SSHデーモンを有効にして外からssh loginできるようにします。
 vyatta@vyatta# set service ssh
 [edit]
 vyatta@vyatta# commit
 [ service ssh ]
 Restarting OpenBSD Secure Shell server: sshd.

 [edit]
 vyatta@vyatta#
次にユーザhogeを作成しpublic keyを設定し、外からloginできるようにします。
 vyatta@vyatta# set system login user hoge
 vyatta@vyatta# set system login user hoge authentication plaintext-password hogehoge
 vyatta@vyatta# set system login user hoge authentication public-keys ono@hoge.local
 vyatta@vyatta# set system login user hoge authentication public-keys ono@hoge.local type ssh-rsa
 vyatta@vyatta# set system login user hoge authentication public-keys ono@hoge.local key AAAAB3NzaC1yc2....
 vyatta@vyatta# commit
ユーザhogeでloginできることを確認します。
 another-machine$ ssh hoge@192.168.111.217
作成したconfigをsaveし次回起動にその設定で立ち上がるようにします。
 vyatta@vyatta# save


◆まとめ

前回と今回の2回でVyatta CORE 6.4をOpenBlocks AX3にインストールしました。
VyattaをSSDから起動し基本的なインターフェイス設定等が動作することを確認しました。


作成したOpenBlocks AX3用のISOイメージは以下の場所からダウンロードできますのでご利用ください。

http://vyatta.yellowback.net
ftp://ftp.plathome.co.jp/pub/OBSAX3/obdnmag/vyatta64/

また、修正済みソース等はgithubに置いてますのでご参照ください。

https://github.com/yellowback/vyatta-build-iso
https://github.com/yellowback/vyatta-linux-image
https://github.com/yellowback/vyatta-biosdevname
https://github.com/yellowback/vyatta-cfg-system

2012-10-09

OpenBlocks AX3でVyattaを動かす(ビルド編)

◆はじめに

VyattaはVyatta社が開発しているソフトウェアルータです。有償版もありますが、Vyatta COREと呼ばれるものはオープンソースとして公開されています。有償版に比べてWebベースのGUIが無い等はありますがオープンソース版でも多くの機能を使うことはできます。Vyattaは主にIntelプロセッサ向けに開発されていますが、ARMアーキテクチャのOpenBlocks AX3でオープンソース版のVyatta CORE 6.4を動かすこと目指し、今回は各パッケージのビルドまでを行います。


◆Vyattaソースコード取得

まずはVyattaのソースコードを取得します。ソースコードの取得にはgitが必要になるのでgitをインストールします。
 $ su
 # aptitude install git-core
 # exit
次にソースコードを取得します。
今回は執筆時点での最新のリリース版のVyatta CORE 6.4を利用します。
このバージョンはoxnardというブランチ名で開発されています。
 $ git clone http://git.vyatta.com/build-iso.git
 $ cd build-iso
 $ git checkout --track -b oxnard origin/oxnard
READMEファイルにビルド方法が記載されているので参考にします。
基本的にIntelプロセッサ向けに書かれていますのでARMでは多少変更する部分があります。


◆aptで必要なパッケージを導入する

まずは必要debianパッケージをインストールします。
インストール用のスクリプトがありますのでそれを実行します。
$ su
# sh ./setup-pkg-build 
400パッケージほどダウンロードされインストールされますのでかなり時間がかかります。
まだ不足しているパッケージがあるので追加でインストールします。
 # aptitude install python-central indent parted dosfstools ntp fakechroot uboot-mkimage libattr1-dev automake libsensors4-dev libboost-filesystem1.42-dev libapt-pkg-dev
このときlibsensors-devとconflictするので削除することになります。

i386やamd64ではビルド時にpackages.vyatta.comからパッケージを取得します。そのためvyatta-pubkey.gpgのインストールが必要となるのですが、armel用のパッケージはpackaegs.vyatta.comには存在しないため自前で準備する必要があります。そのため今回はvyatta-pubkey.gpgのインストールは不要となります。


◆サブモジュール群のビルド

ここからサブモジュール群のビルドに入ります。
Intel向けだとすでにビルドされたバイナリをサイトからaptで入手できますがARM向けは存在しないので自力でコンパイルする必要があります。

まずはサブモジュールを初期化します。
 $ git submodule init
次はgit submodule updateを行うのですが、その前にnfctがgitで取得できないため.git/configから以下を削除します。
ちなみにnfctはconntrack-toolsで生成されます。
 [submodule "pkgs/nfct"]
        url = http://git.vyatta.com/nfct.git
同様に.gitmoduleから以下を削除します。
 [submodule "pkgs/nfct"]
         path = pkgs/nfct
         url = http://git.vyatta.com/nfct.git

 $ git rm --cached pkgs/nfct
全てのサブモジュールを取得します。
 $ git submodule update
各モジュールのブランチをoxnardに変更します。
 $ git submodule foreach git checkout --track -b oxnard origin/oxnard
サブモジュールのビルドは基本的にはTOPディレクトリ(build_iso直下)でmake <サブモジュール名>
で行います。またエラーになった場合など一度クリアしたい場合にはmake clear-<サブモジュール名>とします。
例えばサブモジュール名がhogeの場合には以下のようになります。
 $ make hoge         (hogeのビルド)
 $ make clear-hoge   (hogeのクリア)
まずはビルド時に必要となるライブラリ等のビルドおよびインストールを行います。

squashfs-toolsをビルドしインストールします。
 $ make squashfs
 $ su
 # dpkg -i pkgs/squashfs-tools_4.1+vyatta-7+oxnard1_armel.deb
 # cat >| /etc/apt/preferences.d/squashfs-tools <<EOF
 Package: squashfs-tools
 Pin: version 4.*
 Pin-Priority: 1001
 EOF
 # exit
Debian squeezeには存在しないlibnet0 libsablot0をインストールするためにlennyのレポジトリを一時的に登録します。
 $ su
 # echo "deb http://archive.debian.org/debian/ lenny contrib main non-free" > /etc/apt/sources.list.d/lenny.list
 # aptitude update
 # aptitude install libnet0 libnet0-dev libsablot0 libsablot0-dev
 # rm /etc/apt/sources.list.d/lenny.list
 # exit
libmnlをビルドおよびインストールします。
 $ make libmnl
 $ su
 # dpkg -i pkgs/libmnl-dev_1.0.3-6_armel.deb \
           pkgs/libmnl0_1.0.3-6_armel.deb
 # exit
libcapをビルドおよびインストールします。
 $ make libcap
 $ su
 # dpkg -i pkgs/libcap-dev_2.19-3+vyatta2+oxnard1_armel.deb \
           pkgs/libcap2_2.19-3+vyatta2+oxnard1_armel.deb 

 # cat >| /etc/apt/preferences.d/libcap-dev <<EOF
 Package: libcap-dev
 Pin: version 2.*
 Pin-Priority: 1001
 EOF
 # cat >| /etc/apt/preferences.d/libcap2 <<EOF
 Package: libcap2
 Pin: version 2.*
 Pin-Priority: 1001
 EOF
iptablesをビルドおよびインストールします。
 $ make iptables
 $ su
 # dpkg -i pkgs/iptables-dev_1.4.10+vyatta+2+oxnard2_armel.deb \
           pkgs/iptables_1.4.10+vyatta+2+oxnard2_armel.deb
net-snmpをビルドおよびインストールします。
 $ make net-snmp
 $ su
 # dpkg -i pkgs/libsnmp-base_5.6.1.1-vyatta+7+oxnard6_all.deb \
           pkgs/libsnmp-python_5.6.1.1-vyatta+7+oxnard6_armel.deb \
           pkgs/libsnmp-dev_5.6.1.1-vyatta+7+oxnard6_armel.deb \
           pkgs/libsnmp-perl_5.6.1.1-vyatta+7+oxnard6_armel.deb \
           pkgs/libsnmp15_5.6.1.1-vyatta+7+oxnard6_armel.deb
daqをビルドおよびインストールします。
 $ make daq
 $ su
 # dpkg -i pkgs/libdaq-dev_0.3-2+vyatta3+oxnard1_armel.deb \
           pkgs/libdaq0_0.3-2+vyatta3+oxnard1_armel.deb
libnetfilter-conntrackをビルドおよびインストールします。
 $ make libnetfilter-conntrack
 $ su
 # dpkg -i pkgs/libnetfilter-conntrack3_1.0.0-1+vyatta10+oxnard4_armel.deb \
           pkgs/libnetfilter-conntrack3-dbg_1.0.0-1+vyatta10+oxnard4_armel.deb \
           pkgs/libnetfilter-conntrack-dev_1.0.0-1+vyatta10+oxnard4_armel.deb
libnetfilter-cthelperをビルドおよびインストールします。
 $ make libnetfilter-cthelper
 $ su
 # dpkg -i pkgs/libnetfilter-cthelper_1.0.1-5_armel.deb
libnetfilter-cttimeoutをビルドおよびインストールします。
 $ make libnetfilter-cthelper
 $ su
 # dpkg -i pkgs/libnetfilter-cttimeout_0.2+oxnard4_armel.deb
libnetfilter-queueをビルドおよびインストールします。
 $ make libnetfilter-cthelper
 $ su
 # dpkg -i pkgs/libnetfilter-queue-dev_1.0.1-2_armel.deb \
           pkgs/libnetfilter-queue1_1.0.1-2_armel.deb  
vyatta-cfgをビルドおよびインストールします。
 $ make vyatta-cfg
 $ su
 # dpkg -i pkgs/libvyatta-cfg-dev_0.99.73+oxnard6_armel.deb \
   pkgs/libvyatta-cfg1_0.99.73+oxnard6_armel.deb 
ここまででビルドに必要なパッケージのインストールは終わりました。
次からはパッケージのビルドだけ行います。Linuxカーネル(linux-image)は厄介なので後回しにして
Linuxカーネル以外の残りのパッケージをビルドします。
最終的に使用されるパッケージリストは livecd/config.vyatta/chroot_local-packageslists/vyatta-full.list
に記載されているので、このリストに記載されているもの以外は除外しています。

また一部コンパイルが通らないパッケージ(vyatta-cfg-systemとvyatta-biosdevname)
があるので修正します。
vyatta-cfg-system
grub-pcは不要なので削除します。また、ハイパバイザの判定にIntel Processor用アセンブラを使用している
部分を削除します。
 diff --git a/debian/control b/debian/control
 index 0b06b26..7396100 100644
 --- a/debian/control
 +++ b/debian/control
 @@ -52,7 +52,6 @@ Depends:  acpid,
   apt-transport-https,
   hostapd (>= 1:0.6.9-3),
   cpufrequtils,
 - grub-pc (>= 1.98+20100804),
   libcap2-bin (>= 2.19)
  Pre-Depends: bash-completion
  Suggests: util-linux (>= 2.13-5),
 diff --git a/src/hypervisor_vendor.c b/src/hypervisor_vendor.c
 index 0a44756..9bcef8b 100644
 --- a/src/hypervisor_vendor.c
 +++ b/src/hypervisor_vendor.c
 @@ -43,6 +43,7 @@
   */
  #define HYPERVISOR_INFO_LEAF   0x40000000
  
 +#if 0
  static inline void
  cpuid(unsigned int op, unsigned int *eax, unsigned int *ebx,
  unsigned int *ecx, unsigned int *edx)
 @@ -64,6 +65,7 @@ cpuid(unsigned int op, unsigned int *eax, unsigned int *ebx,
   "=d" (*edx)
  : "1" (op), "c"(0));
  }
 +#endif
  
  
  /* Use CPUID instruction to find hypervisor vendor.
 @@ -72,6 +74,7 @@ cpuid(unsigned int op, unsigned int *eax, unsigned int *ebx,
   */
  static const char *get_hypervisor_cpuid(void)
  {
 +#if 0
  unsigned int eax = 0, ebx = 0, ecx = 0, edx = 0;
  char hyper_vendor_id[13];
  
 @@ -95,6 +98,7 @@ static const char *get_hypervisor_cpuid(void)
  else if (!strncmp("VMwareVMware", hyper_vendor_id, 12))
  return "VMware";
  else
 +#endif
  return NULL;
  }
vyatta-biosdevname
仮想マシンかどうかの判定の部分でIntel Processor用アセンブラを用いている部分があるので削除します。
 diff --git a/src/bios_dev_name.c b/src/bios_dev_name.c
 index e2f8454..a5b5fdd 100644
 --- a/src/bios_dev_name.c
 +++ b/src/bios_dev_name.c
 @@ -104,6 +104,7 @@ parse_opts(int argc, char **argv)
                 opts.prefix = "em";
  }
  
 +/*
  static u_int32_t
  cpuid (u_int32_t eax, u_int32_t ecx)
  {
 @@ -114,6 +115,7 @@ cpuid (u_int32_t eax, u_int32_t ecx)
         : "%ebx", "%edx");
      return ecx;
  }
 +*/
  
  /*
    Algorithm suggested by:
 @@ -125,9 +127,11 @@ running_in_virtual_machine (void)
  {
      u_int32_t eax=1U, ecx=0U;
  
 +/*
      ecx = cpuid (eax, ecx);
      if (ecx & 0x80000000U)
         return 1;
 +*/
      return 0;
  }
 以上の修正後に、以下のコマンドでビルドを実行します。
 $ make barnyard2 conntrack-tools initramfs-tools iproute ipset
 $ make live-initramfs lldpd netplug ntp pmacct ppp squidguard linux-firmware
 $ make vyatta-base vyatta-bash vyatta-busybox vyatta-conntrack
 $ make vyatta-conntrack-sync vyatta-cfg-dhcp-relay
 $ make vyatta-cfg-dhcp-server vyatta-cfg-firewall
 $ make vyatta-cfg-op-pppoe vyatta-cfg-qos vyatta-cfg-quagga vyatta-cfg-system
 $ make vyatta-cfg-vpn vyatta-cluster vyatta-config-migrate
 $ make vyatta-dhcp3-client vyatta-idp-snort vyatta-ipv6-rtradv vyatta-keepalived vyatta-nat vyatta-op
 $ make vyatta-op-dhcp-server vyatta-op-firewall vyatta-op-qos vyatta-op-quagga vyatta-op-vpn vyatta-op-xml
 $ make vyatta-openvpn vyatta-quagga vyatta-ravpn vyatta-snort vyatta-util vyatta-wanloadbalance
 $ make vyatta-webgui vyatta-webproxy vyatta-wireless vyatta-wirelessmodem
 $ make vyatta-netflow vyatta-biosdevname vyatta-lldp vyatta-zone vyatta-config-mgmt


◆OpenBlocks AX3対応のvyatta用Linuxカーネルをビルド

最後にLinuxカーネルパッケージ linux-imageをビルドします。
準備としてオリジナルのLinuxカーネルからOpenBlocks AX3用の差分を抽出します。
OpenBlocks AX3のカーネルにはunionfsのパッチが適用されています。また、vyattaのカーネルにもunionfsのパッチが適用されています。そこでオリジナルのLinuxカーネルにunionfsのパッチを適用してその後に差分をとるという手順にします。

まずはOpenBlocks AX3用のカーネルを取得します。
 $ cd ~
 $ wget ftp://ftp.plathome.co.jp/pub/OBSAX3/squeeze/3.0.6-4/source/linux-3.0.6-20120820-1.tar.gz
 $ tar zxf linux-3.0.6-20120820-1.tar.gz
 $ mv linux-3.0.6 linux-3.0.6.obsax3
次にオリジナルのカーネル3.0.6とunionfs用の差分を取得し差分を適用します。
 $ wget ftp://ftp.ne.jp/Linux/kernel.org/linux/kernel/v3.x/linux-3.0.6.tar.xz
 $ wget http://download.filesystems.org/unionfs/unionfs-2.x/unionfs-2.5.11_for_3.0.18.diff.gz
 $ tar Jxf linux-3.0.6.tar.xz
 $ cd linux-3.0.6
 $ zcat ../unionfs-2.5.11_for_3.0.18.diff.gz |patch -s -p1
 (ここで一ヶ所rejectされるので手動でパッチをあてます。)
 $ cd ..
OpenBlocks AX3用の差分を抽出します。
 $ diff -urN linux-3.0.6 linux-3.0.6.obsax3 > linux-3.0.6.obsax3.diff
準備ができたのでvyattaのlinux-imageのビルドに戻ります。
まずは準備したOpenBlocks AX3用の差分を適用します。
 $ cd build-iso/pkgs/linux-image
 $ patch -s -p1 < ~/DIFF-3.0.6 
 1 out of 5 hunks FAILED -- saving rejects to file arch/arm/kernel/smp.c.rej
 1 out of 2 hunks FAILED -- saving rejects to file drivers/tty/tty_ldisc.c.rej
 2 out of 10 hunks FAILED -- saving rejects to file fs/splice.c.rej
 The next patch would delete the file include/linux/namei.h.orig,
 which does not exist!  Assume -R? [n] 
 Apply anyway? [n] 
 1 out of 1 hunk ignored
 1 out of 2 hunks FAILED -- saving rejects to file include/linux/socket.h.rej
 1 out of 1 hunk FAILED -- saving rejects to file kernel/printk.c.rej
 3 out of 11 hunks FAILED -- saving rejects to file net/bridge/br_fdb.c.rej
rejectされた箇所を順番に確認していきます。
arch/arm/kernel/smp.c.rej
           手動で差分を適用します。
drivers/tty/tty_ldisc.c.rej
           tty_ldisc_reinit()関数への差分は不要なようなので適用しません。
fs/splice.c.rej
           該当部分を以下のように修正しました。
        int ret, more;

        ret = buf->ops->confirm(pipe, buf);
        if (!ret) {
                more = (sd->flags & SPLICE_F_MORE) ? MSG_MORE : 0;

                if (sd->len < sd->total_len)
                         more |= MSG_SENDPAGE_NOTLAST;
                ret = file->f_op->sendpage(file, buf->page, buf->offset,
                                           sd->len, &pos, more);
        }

        return ret;

include/linux/socket.h.rej
           MSG_KERNSPACE, MSG_NOCATCHSIGはMarvellが追加したもののようで、
           MSG_SENDPAGE_NOTLASTとconflictしてしまします。
           そこで番号を以下のように変更します。
   #define MSG_KERNSPACE   0x200000
   #define MSG_NOCATCHSIG  0x400000

kernel/printk.c.rej
           手動で差分を適用します。
net/bridge/br_fdb.c.rej
           手動で差分を適用します。


続いてlinux-imageのarmel用build設定をします。
 $ cd ~/build-iso/pkgs/linux-image
 $ mkdir debian/arch/armel
 $ touch debian/arch/armel/config

debian/arch/armel/defines.obsax3-vyatta を以下のように作成します。
 $ vi debian/arch/armel/defines.obsax3-vyatta 
 [base] 
 flavours: obsax3-vyatta 
 kernel-arch: arm 
 kernel-header-dirs: arm 
 [obsax3-vyatta_build] 
 image-file: arch/arm/boot/zImage 
 [obsax3-vyatta_description] 
 hardware: OpenBlocks AX3
 hardware-long: OpenBlocks AX3
 [obsax3-vyatta_image] 
 recommends: uboot-mkimage 
 check-size: 2097080
 [obsax3-vyatta] 
 class: arm 
 longclass: arm and compatible 

armel archを追加します。
 $ vi debian/arch/defines
 arches:
  i386 amd64 armel

次にconfigを生成します。
まずはOpenBlocks AX3のデフォルトconfigをコピーしmenuconfigは必要な設定を追加します。
 $ cp arch/arm/configs/obsax3_defconfig .config
 $ make menuconfig
 (以下を追加しました)
 CONFIG_NETFILTER_NETLINK_CTHELPER=m
 CONFIG_NF_CONNTRACK_TIMEOUT=y
 CONFIG_NF_CT_NETLINK_TIMEOUT=m
 CONFIG_IP_SET_BITMAP_IP=m
 CONFIG_IP_SET_BITMAP_IPMAC=m
 CONFIG_IP_SET_BITMAP_PORT=m
 CONFIG_IP_SET_HASH_IP=m
 CONFIG_IP_SET_HASH_IPPORT=m
 CONFIG_IP_SET_HASH_IPPORTIP=m
 CONFIG_IP_SET_HASH_IPPORTNET=m
 CONFIG_IP_SET_HASH_NET=m
 CONFIG_IP_SET_HASH_NETPORT=m
 CONFIG_IP_SET_LIST_SET=m
 CONFIG_IP_VS_FTP=m
 CONFIG_IP_NF_MATCH_IPP2P=m
 CONFIG_SQUASHFS=y
 CONFIG_SQUASHFS_XATTR=y
 CONFIG_SQUASHFS_LZO=y
 CONFIG_SQUASHFS_XZ=y
 CONFIG_SQUASHFS_EMBEDDED=y
 CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
生成された .configを必要な場所にコピーします。
 $ cp .config debian/arch/armel/config.obsax3-vyatta
次にbuild-flavour.shを実行してdebian/controlファイルを生成するのですが、その前に生成されるcontrolファイルのSection: adminがSection: kernelになるようにtemplateファイルに修正を加えます。
これをしないと後ほどパッケージビルド時にエラーが起こります。
 $ for f in debian/templates/control.image.*
   do
     sed -i -e 's/^Section: admin/Section: kernel/' $f
   done
kernel flavour の準備をします。最後にエラーがでますが無視して問題ありません。
 $ ./debian/bin/build-flavour.sh obsax3-vyatta

 (snip)
 This target is made to fail intentionally, to make sure
 that it is NEVER run during the automated build. Please
 ignore the following error, the debian/control file has
 been generated SUCCESSFULLY.
 exit 1
 make[1]: *** [debian/control-real] Error 1
 make[1]: Leaving directory `/home/ono/build-iso/pkgs/linux-image'
 make: *** [debian/control] Error 2

ようやくlinux-imageパッケージ生成の準備ができましたのでビルドします。

 $ cd ~/build-iso
 $ make linux-image


◆まとめ

今回はOpenBlocks AX3上でVyatta CORE 6.4のサブモジュールのビルドを行いました。次回はLIVE ISOイメージを作成して実際にOpenBlocks AX3で起動させてみます。