我家に「DELL XPS 15 2-in-1」が来た!(デルアンバサダーXPS体験モニター) #デルアンバサダー
DELL XPS 15 2-in-1 レビュー
LinuxではLenovo ThinkPadの「赤ポチ」。
Windowsでは、タッチパッドが2nd小型ディスプレイとなるScreenPad機能な変態PC ASUS ZenBook14をこよなく愛する私が最近ちょっとだけ気になるPCがDELLのXPS。
HPのElite Dragonflyといい、企業向けのLaptopでもスタイリッシュなデザインの物が多くなってきましたよね。 今回、DELLアンバサダープログラムのモニター参加で、DELL XPS 15 2-in-1をモニタする機会がありましたのでレビューしたいと思います。
会社では、DELL一辺倒なんだけど予算の都合でLaptopはLatitude止まりだったりしている中、 初XPSということで自分が気になっている点をレビューしたいと思います。
レビュー品スペック
スペック | |
---|---|
OS | Windows10 Home x64 JPN |
CPU | 第8世代インテル® Core™ i7-8705G プロセッサー |
メモリ | 16GB DDR4-2400MHz 内蔵 |
ストレージ | 512GB M.2 PCIe NVMe SSD |
グラフィックカード | Radeon™ RX Vega M GL グラフィックス |
ディスプレイ | 15.6インチ IPS液晶 4K(3840 x 2160) タッチパネル付き |
付属品 | 130W ACアダプタ DellアクティブStylusペン付き USB Type-CからType-Aへの変換USBアダプタ |
DELLのサイトでみてみると、定価269,980円! なかなかの価格です。
外観チェック
外観
タッチパネル液晶にもかかわらず狭ベゼルとなっており、15.6インチのモニタを搭載しているにもかかわらず14inchサイズの354mm(幅) x 235mm(奥行き) サイズ。
自分のThinkpad L380(13.3インチモニタ) のサイズ322mm(幅) x 224mm(奥行き)と比べてもそんなに大きくなくていいですね。
カタログスペックにもあるように最小重量1.98kg。
意外と重さはあるが厚みが20mmを切っていることから持った感じは思ったよりは軽く感じ、ちょっとした部屋から部屋への移動では個人的に気になりませんでした。
個人的には1kgを切るLaptopは軽すぎて雑に扱ってしまうので、ある程度重いほうが好みです。
ただし、これをカバンに入れて持ち運ぶにはちょっと重く感じますね。
外に運ぶなら1.5Kgの重さがギリギリ許容できる範囲だと思います。
モニタ
2 in 1ってモニタが回転するPCも含まれるんですね。 てっきりキーボード部分とモニタが分割できるものかと思ってました。(PC到着時にどうやってモニタが分割できるか、ギミックを探しちゃいました....)
360°モニタが回転しますので、
- 通常使用。
- PCを膝において、モニタを180°開いた状態での作業
- テント型にしての動画閲覧
- 360°回転してのタブレットモード
と幅広い使い方が可能です。
使い勝手的には、モニタを回転させると液晶表示も回転してくれますし(だいたい315°ぐらいから回転する)、キーボードも押しても受け付けないので意外と使いやすいです。 また、タブレットモードにすると、付属のアクティブStylusペンの活躍の場が増えそうです。
タッチパネルつき液晶のため、映り込みは若干ありますが気にならない程度となっています。
4Kモニタの為、作業スペースは大きく確保できます。さすがに通常使用では3840x2160で基本200%スケーリングにしていますが、リビングなどで使用する場合には外部モニタ等が接続しないで使用しているので スケーリングを変更する事により作業スペースを確保できる柔軟な使用感は流石っと思いました。
インターフェース
キーボードを入力する向きにして画面を開いた状態で向かって左側2ポートが
- 左側から、
USB Type-C
、USB Type-C
、microSDカードリーダー
、バッテリ・ゲージ・インジケータ
。
となっています。
こちらのUSB Type-Cは2つとも、Thunderbolt3 + USB Power Delivery対応。
バッテリ・ゲージ・インジケータは、5段階表示となっており左部のボタンを押すことによりPCがログオン/シャットダウン状態にかかわらず電源容量の確認ができる為、持ち運び時の電源容量確認が簡単にできます。
向かって右側2ポートは、
- 右側から、
Nobleロックスロット
、ヘッドセットジャック
、USB Type-C
、USB Type-C
。
となっています。
こちらのUSB Type-Cは2つとも、逆側と異なり、 Thunderbolt3は未対応で、Alternate ModeでのDisplay Portサポート + USB Power Delivery対応のみです。
左右どちらのポートでもUSB Power Delivery対応なので、デスクのレイアウトに合わせて電源ケーブルを接続できるのはいいですね。 また、USB Type-cの接続のモニタは増えてきていますがThunderbolt3対応なのか、Alternate ModeでのDisplay Portサポートのみなのか、 明確にって書いてあるのが少ないので、USB Type-Cで4kモニタ60Hzに接続できるThunderbolt3が片側でも対応しているのが嬉しいですね。 Display Portであれば、左右どちらのUSB Type-Cでも接続可能です。
付属品で、申し訳ない程度にType-C〜A変換ケーブルが付属してます。
USBリムーバブルストレージもUSB Type-Cのものは出てきていますが、まだまだType-Aがメインとなるので自宅・会社で使うにしてもType-Aのポートを変換ケーブル無しで接続できるポートが1ポートぐらいは付けて欲しいですね。
パームレスト
シリコン?ぽい感触で非常に心地いい感触です。ただ皮脂等の汚れが付きやすい感じがしています。
タッチパッド
パームレストと同じような素材を使用しているため滑りがよくて非常に心地よい使用感です。
キーボード
この機種は、キーボードが購入時に、
- 日本語
- 英語
を選択でき、共にバックライト キーボードとなっています。
今回お借りしたものは、日本語キーボードでした。
キーボードは、パームレスト部分をくり抜かれており、くり抜かれた穴からキーができてる状態となっています。
キーボードは、アイソレーション・キーボードでした。
キー配列は特殊な配列にはなっていませんが、最近のDELLの傾向であるEnterキー周辺にある8つのキーがフルサイズではないキーとなっています。
これはパームレスト部分をくり抜く形状となっているため、英語キーと日本語キーのくり抜き部分の金型サイズを一緒にしている影響だと思われます。
打ちにくいということはありませんが、せっかく14 inchのサイズなので全て同じサイズであれば良かったと思います。
キーボードの間隔は、フルピッチの19mm。コーディング等行うには扱いやすいピッチとなっています。
キーボードの打突感は、あまりよくなく薄っぺらい板を叩いている感じなペコペコ感でキーストロークはおおよそ1mm程度しかありません。
ある程度使ってみたものの一向に慣れず、長時間のキー入力には適さないかもしれないです。キーボードは個人的にはThinkPadの打突感があっているので、ここはちょっと残念ですね。
もう一点、残念なところをあげるとしたら、カーソルキー他のキーと比べてハーフサイズである事と、Ctrlキーと同列に配置されている事です。
Laptopでは、カーソルキーが他のキーと比べてハーフサイズになっているものが多くありますが、このPCではPageUPと←キー / PageDownと→キー が隣接しており間隔が狭いです。
この為、左右キーを押したら、押し間違えで、PageUP・PageDownを押してしまい、何度か画面のページが前後してしまう事がありました。
Lenovoのキーボードのように、間隔をあけてもらうのと、カーソルキー関係は一段下げてもらえると打ち間違いが減っていくと思います。
(Lenovo キーボード)
付属品
ACアダプタ
ACアダプタは、出力のコネクタがUSB Type-C。
本体の大きさが実寸で65mm(幅) x 140mm(高さ)となっています。
130W出力対応ということで、DELL Latitude等のACアダプタと比べて縦長に大きい形状となっています。
130W出力といった事で、ACアダプタが大きくなるのは、仕方がないですが最近クラウドファンディングでは、こんな感じの小さなタイプで65W出力のものが出てきています。 できれば45〜65Wに対応してもらえると、Laptopと一緒に持ち歩きしやすいサードパーティ製の物が選択しやすいと感じています。
(参照先:Makuake - 日本先行発売!窒化ガリウム(GaN)採用!新世代のGaNミニ急速充電アダプタ!)
AC側の電源コードの長さが、約1m。DC電源側コードの長さが約1.8mです。
この長さなら、よっぽどの事が無い限り、Laptopと電源が離れた場所にあっても届きそうですね。
各コードの太さが、DC電源側コードが直径5mm。電源コードは直径8mmです。電源コードについては最近のPCでは標準となった太いコードです。 ただし両方のケーブルは共に、やわらかめで屈曲しにくい事はなく引き回しはしやすいです。
DellアクティブStylusペン
ペンのサイズは実寸で、150cm(長さ) x 10mm(太さ)です。
電源は、充電式ではなく電池式となっています。
単5の電池の入手性はさておき、小型ではあるので手に持っても重くなく、通常のペンと同様な太さであり持ちやすいです。
個人的に、ちょっと便利だなぁっとおもったのは2つ。
- ペン自体に磁力がある。
- 転がりにくい形状。
ですね。
ペン自体に磁力がある。
アクティブStylusペン自体に磁力を持っているので、Laptopのどの場所にでも貼り付ける事ができて持ち運びはGood。
さらにPCの天板あたりにも磁石があるので、こんな感じで気軽に貼り付ける事ができるので移動時に忘れたりする事がないと思います。
転がりにくい形状。
形状は、円筒形ではなくDカット。このDカットによって転がりにくく、また、ペンの頭にはストラップホールがあり首にかけて置くこともできます。
USB Type-CからType-Aへの変換USBアダプタ
前述でも書きましたが、USBのポートはすべてUSB Type-Cとなっており通常のUSBメモリ等を使う場合の事を考慮してか変換アダプタがついています。
個人的には、「持ち運び用途では、若干大きいんじゃねぇ?」っと思ってますが、USB3.0に対応している為、高速なデータ転送が期待できます。
まとめ
3週間ほど活用してみて、XPS15 2 in 1はオフィスや自宅でのちょっとした持ち運べる筐体サイズにもかかわるず、据え置きパソコン並のパフォーマンスで長くしっかりと使える事ができました。
私の使い方としては、 - 左側にXPS 15 2-in-1をテントモードで配置。 - 右側にはThinkPadを配置。 - マウス・キーボード共有アプリのSynergyを双方にインストールして、ホストをThinkPadにする
といったちょっと変わった使い方が一番しっくりして、Linux / Windowsでのそれぞれのマルチプラットフォームのアプリケーション開発をしていましたが非常に快適ででした。
レビュー後には返却となってしまいますが、個人的にはASUS ZenBook14と出会う前に、このレビュー機会があったらきっと買っちゃってますね。 興味が湧いた方、店頭で一度確認してみてください。意外といいですよ!
同人誌イベントへの参加・執筆 未経験者が、技術書典5で頒布に至るまで
何度かアカン的な感じになりながらも、技術書典5で本を出す事ができた経緯をつらつらと語りつつふり返ってみる。
どこに参加してきたの
2018/10/8に開催された技術書典5にサークル参加してきました。
技術書典とは、達人出版会とサークルTechBoosterが主宰する技術書イベントで、技術をテーマにした同人技術書の即売会となっています。
来場者数は春の技術書典4の約6,340人から1.6倍ほどUpの10,000人超と、大盛況なイベントで初参加にもかかわらず、サークル側で参加という。
今思えば、よくサークル側で参加したなぁ感が、これ書いてて思えてきた。
これにて #技術書典 閉会します。ご来場、誠にありがとうございました。総来場者数は のべ10341人、うちサークル・スタッフ等関係者は889人でした。
— 技術書典公式アカウント (@techbookfest) 2018年10月8日
会場内もこんな感じですよ。 #技術書典 pic.twitter.com/N1PcvLMGDo
— kinneko (@kinneko) 2018年10月8日
スペースに集まった皆さん、いろいろ手伝って頂いたコミュニティの皆さん、
会場サイズが前回と比べ3倍の面積にもなったにも関わらず大きなトラブルもなく
最強な運営をしてくれたスタッフの皆さん本当にありがとうございました。
どんな感じだったの執筆活動
はじまり
前々から書きたい事はいろいろあって、どこかでまとめて出したい思いあったけど、背中を押すキッカケになったのはココからでしたねぇ。
今日の勉強会で @sazus さんが次の技術書典に向けて本作りの企画が具体化しているとの言質をしっかりとったので期待を高めている(前もちらっと聞いていたと思うけど) #qtjp
— 理音伊織@技術書典5き05 (@IoriAYANE) 2018年6月16日
何を書いたの
ちょっと前から、QtのPythonバインディングをいろいろ試していた事もあり、Technical PreView版のQt for Pythonを題材に、もっとQtを使ってもらえるような環境構築〜GUI作成までの一連の内容を網羅した、初心者向けの技術書の執筆を選んでみました。
(QtQuick系は@IoriAYANEさんが、Meta-build系は@hermit4さん辺りが書いてきそうだったので、なんとなく被らないネタがコレだった。
あと、Alexa Voice Service + Qtや、QMLやwidget系での動的多言語変換なんかも考えてたけど、いろいろな意味でコアすぎな気がしたのでやめてしまった。)
イベント当日までどうだった?
応募と当選
7/17
自分のスケジュールを確認しつつ、ちょい死亡フラグ立つぐらいだろうと軽い気持ちで
7/19応募終了日の2日前に応募。
ジャンルや頒布物の内容を書くだけかと思いきや、サークルカットの登録あり。
サークルカットとは???とソコで固まる...。
テンプレートのlinkもあったけど、そもそも何か分からない。もはや未知の世界。
とにかく応募後から、同人誌とは?の基本的な事から同人誌を出すまでの内容を学びまくる。
8/1
応募数500超えのサークルの中から、470超の枠に入ってしまったという
当選メールが届いちゃうという奇跡が起こる。
(当選できませんでした=執筆するのやめちゃおう的な、かなり後ろ向きな考えを持っていた事もあり、当選した事に衝撃を受け、後に引けない感じになる)
イラスト依頼
8/2
なんとなく会社の同僚に、イラスト書ける人紹介してもらおうとお願いしてみる。
(できれば知らない間柄の方が、なんとなくいろいろ頼みやすいなぁ的な思いはあった)
「私チョットデキル。いや私しかいない」と2つ返事でサクッと紹介を依頼した同僚に決まりプレッシャー合戦が始まる。
イラスト全体感/テーマ/日程感を伝える。
書籍内のイラストやサークルカットは日程的に厳しい感はありありなので、そこの部分をMarkdownをコメントアウトしてPDFをにしたものを渡す。
「本当にコレだけですか?」
とプレられ、コメントアウトを外し書籍内のイラストやサークルカットもお願いしちゃう事に!
いつもの仕事っぷりの如く、予想を上回るクオリティと、早めの期日で圧倒的に仕上げてきてもらい、はや原稿を落とす事が許されない状況になる。
執筆活動前準備
- 執筆環境は、Re:VIEWでやると決めてたので環境構築を速攻で済ます。(順調
- 執筆リポジトリはなるべくお金をかけず、かつPrivateにしたかったのでGitLabを初めて使い出す。(順調すぎる
- 執筆準備
- 書籍のタイトルと目次 決定。 (結構、早めに決まる
- 執筆内容に沿ったサンプルアプリも、そこそこ早くできてしまう。(順調すぎて怖い
これ、お盆休み中に完成しちゃうんじゃねぇ?って感じで、俺スゲーっと完全に安心しきってしまう。
アカン執筆時間
平日、まとまった時間が取れない事は分かってたので、週末の日数計算でスケジュールを立てる。(パパさんエンジニアは、週末の自分時間が圧倒的に無いことを、もうすっかり忘れてて絶望的なデスマが始まる。)
それでは、入稿までのパパさんエンジニアの週末を見てみましょう
7/ 23 | リポジトリ Initial commit |
7/ 4週目 | GitLabのwikiや issuesのlist/Board/Label 作成に、無駄に時間を費やす。 |
8/ 1週目 | 子供の夏休みの宿題の進捗100%、自分の進捗0 |
お盆休み | 気がつくと、急な海外出張でお盆休みなし - 執筆進捗0で絶望。 ただし、イラストは順調に来てしまう。 |
8/ 4週目 | 執筆以外で勉強会等参加 / 子供がケガ - 予想外の出来事で、Total執筆進捗 数% |
9/ 1週目 | 全力で執筆! - 遅れつつも、Total進捗30-40% |
さすがに焦ってきて、ここから睡眠時間 1/2削っての平日執筆開始 | |
神風の台風 | 予想外の執筆時間が確保できる - Total進捗50% |
9/ 1週目 | 何故か子供のサッカー大会が!奇跡的に勝ち進み土日がサッカーDay (執筆どこ |
9/ 2週目 | 身内が入院で遠征&100%子供に全力投球 (ねぇ、ねぇ執筆は? |
絶望になりながらも、何とか執筆は終え校正フェーズへ | |
9/ 22-23 | 運動会 (えっと、校正は?執筆は? |
9/ 22 | 当初の締め切り期限 (当然1回目の校正作業間に合わず!延長9/25へ) |
9/ 25 | 延長した締め切り期限 (気持ち的にも締め切りたい!が、校正1回目しか進まず諦める) |
9/ 28 | これ以上過ぎたら、後ろ指刺される締め切り期限 (直前にページ数変更で、表紙のチェックをイラスト書いた人に ギリギリに再度チェックしてもらう粗相ありながら なんとか入稿) |
アカン、レビュー・校正
ほんとゴメンナサイ、ゴメンナサイ
<レビュー>
僕: 「Python系のレビューお願いします!」出勤前にメッセ
友人:「Python系重点的にチェックするけど、納期何時?」
僕: 「今日中!」
友人:「逝ってこい」
<校閲>
僕: 「校閲お願いします!」出勤前にメッセ
友人:「100P以上あるけど、今週中(7日間))でOK?」
僕: 「今日中!」
友人:「ちね」
入稿までに諦めたこと
- Re:VIEWでの執筆で、CI環境つくってウハウハ
->実現せず - オリジナルな組版作成
->まったく時間がなく、TechBoosterで利用しているRe:VIEWのテンプレート
techbooster-doujin.styスタイルをそのまま活用
(PDFの出力だけは、hyperrefパッケージのハイパーリンク関係を変更する) - ページ数を80Pぐらいにしてほどよい感じに仕上げる
->章毎に執筆内容を確認していた為、
気づいたら140Pオーバーとなっている事に気づく。
1章削る。Code添付も抜粋や、サンプルコードを参照しとして減らすも120Pが限界。
(印刷費用が1.3倍に!)
技術書典5 直前・当日どうだった?
売り子さん
10/3の段階で被チェック数*1 70ぐらい。全員が来る訳でもないので80%ぐらいの試算で55ぐらいと見積る。イベント時間が11:00-17:00の6時間なので、10人/H。
だいたい6分毎に販売すればいいと考え、当日は売り子なしのつもりで挑む覚悟を10/4にするも、
#技術書典
— yagitch(やぎっち) (@yagitch) 2018年10月4日
完全ワンオペサークルの苦悩
・休憩できない
・ご飯食べられない
・トイレ行けない
・売上バーストしても馬力がない
・売上ないときは完全に暇
・手荷物は肌身から離せない
・寂しい
・寂しい
・寂しい
他にありますか?
で完全にガクブルになる。
そして前日の被チェック数で140超えしてて、死亡フラグが立つ。
@nekomatuさんや@shin1_okadaさんの好意で3日前の10/5に急遽売り子が決まる!しゅごい。
@nekomatuさん -> 急遽売り子がこれなくなった@hermit4さんのサポート
@shin1_okadaさん -> 僕のサポート
と最強な布陣を手に入れる。
ここにきて、技術書典で強力な助っ人を手に入れた!
— sazus@技術書典5_き07 (@sazus) 2018年10月5日
最終的な被チェック数が184だったので、売り子の助けがなかったら、100%死亡してました。
当日の運営は?
サークル
き07 eMbLogサークルとして、Qt関連のサークルが5つも並ぶ中の1角にて頒布!
勝手にクロスプラットフォーム(てかQt)を扱ってるサークル紹介!
— 理音伊織@技術書典5き05 (@IoriAYANE) 2018年9月24日
Code Craft Works
https://t.co/xOpjSef7zw
理ろぐ
https://t.co/ZrzAaRvSvA
エゥーゴ
https://t.co/cTmxkNrFpC
eMbLog
https://t.co/8Ytxf1HKrY
daisy bell
https://t.co/epY6sS2tDZ#技術書典 #qtjp pic.twitter.com/w7Q6zAn0hC
#技術書典 【き07】設置完了! pic.twitter.com/JAUguFInk6
— sazus@技術書典5_き07 (@sazus) 2018年10月8日
頒布物
イラストが良すぎちゃった事もあり、
- 物理本は、予算的・初技術書典でニーズも分からないから 60冊 程度しかない。
->表紙画像をつけたPDFのダウンロードカードを物理本に付けよう。
ただし、ダウンロードカード単体も配るのでおまけ程度に、PDFを書籍と同じ
モノクロPDFにする。 - 個人的には物理本も見るけど、圧倒的にPCやタブレットで見ることが多い。
->表紙を多くの人に見て欲しいからダウンロードカードをポストカードサイズで印刷。
こっちは、見ながらモクモクできるように、見やすいカラーのPDFを配布。
せっかく技術書典5に足を運んで見てくれるので、後日のWebでの販売よりは
ちょっとでも安く提供したい。 - サブキャラQtちゃんもっと認知させたい。
->ステッカーを刷ろう
っと財布が盛大に緩み、頒布は
- 物理本 + ダウンロードカード(モノクロPDF) 60冊
- カラーPDF ダウンロードカード 100部 (50部刷るつもりが、100部でも値段が変わらなかった)
- オマケ用 Qtちゃんシール 100部
という、無謀は数を準備することに
支払い方法
どのくらいキャッシュレスの需要があるかも知りたかったので
現金以外にも、技術書典 かんたん後払い、pixiv PAYを登録。(他のメジャーな決済方式って無いんですかねぇ)
頒布結果
一度、入場制限があったものの、基本的に制限なしでかつ、ある程度参加者が見て回れるぐらいの絶妙な混み具合だったことや、
開場しました!今日一日楽しんでください🙌 #技術書典 pic.twitter.com/aQVbUAoZYA
— 技術書典公式アカウント (@techbookfest) 2018年10月8日
Python人気もあり、
技術書典 虎の穴ブース(ス08)で「好きなプログラミング言語 アンケート」を行っています。
— 開発室/虎の穴ラボ@技術書典5 ス08 (@toranoana_lab) 2018年10月8日
Python人気です!
「俺の推し言語が不人気なわけがない!😤」と思った方は是非アンケートしにブースへお越しください#技術書典 pic.twitter.com/4tJPnrG9wq
- 物理本
- 開始後1:15ぐらいで 60冊 完売。 - カラーPDF ダウンロードカード 71部
- おつりの¥100が無くなって終了。
と予想を上回る販売でした!
支払いの比率は、
現金 | 73% |
技術書典 かんたん後払い | 23% |
pixiv PAY | 4% |
の割合でキャッシュレスの支払いは、ほとんど技術書典 かんたん後払いが多かったです。
公式Toolって事もあるけど、UIも含め使い方がシンプルで、レスポンスもよく頒布のオペレーションもスムーズにやれたのが技術書典 かんたん後払いが多く使われた理由ではないかと思います。
まとめ
良かった点、次も続けたい点
反省点
- 時間をつくって、もっといろいろな人に書いたもののレビューや校閲を頼めば良かった。
- デザイン等は、もう少しイメージをシェアした方が、イラストを書く人の負担が減るみたいな事を言ってたので、自分の嗜好も込みでもっとディスカッションすればよかった。
- 技術本は一つの技術をまとめていくので、wikiやQiitaと違う事を痛感。
事前の調査内容や、サンプルアプリをつくれても執筆する時間は
ちゃんと確保するのは必要。
技術書典の季報の言葉に重みが凄いある。
「残りの日数ではなく、休日(自分が本当に休みになる日)を数えるんだ」
さいごに
自分的には執筆作業とかは70点ぐらいの点数しかつけれないけど、自分の伝えたい技術を多くの人に伝える事ができたことだけは、100点満点という気持ちで終われる技術書典最高です!
個人的には、印刷部数とか機会損失だとか広報だとかいうのは正直二の次三の次であって、イベントが終わった後に"やったったぞー!✊"という気持ちで帰ることができればそれが💯満点のイベント参加だと思います。Enjoy!
— わかめ@毎日猫がいる (@vvakame) 2018年9月12日
イラストを描いてもらった同僚には、いろいろと教えてもらう事が多く
また多分、自分一人なら落としてたかもしれない状態だったのを、最後までいろいろとフォローしてもらったおかげで、今回無事本が出たと思ってて、感謝しきれないです。ありがとう。
*1:参加者が、当日チェックしたいサークルをチェックする機能があり、自分のサークルが加えられた数、だいたいの頒布予測がつく。
Raspberry PiでのQt5日本語表示
やっと、RaspberryPi上で日本語表示を倒せたorz次回の名古屋Qt勉強会ネタに!(長via.me/-by6s2da #qtjp
— sazusさん (@sazus) 2013年5月7日
リツイート等もして頂いたので、blogに書いておく。
はじめに
Raspbianを日本語にがんばってローカライズしたとしても、
Qt5で日本語表示した場合に、日本語の文字列が豆腐にすらならず
非常に残念極まりない表示になります。
Widgetの場合
(対応前)
(対応後)
QMLの場合
(対応前)
(対応後)
動作確認 環境
- Raspberry Pi導入OS
- Raspbian "wheezy(Hard-float)”2013-02-09-wheezy-raspbian
- Qt5 :
- gitのtag v5.0.2
- configureにて、-prefix /usr/local/qt5piと設定してbuild
対応方法
- Qt5のlib以下の/fontディレクトリに日本語のフォントを入れる。
- Code上にて、導入した日本語フォントのfontfamilyをセットする。
ことにより対応可能です。
Qt5のlib以下の/fontディレクトリに日本語のフォントを入れる
私の環境では、"-prefix /usr/local/qt5pi"としているので、
/usr/local/qt5pi/lib/fonts/
に日本語フォントを入れちゃえばOKです。
導入先は、各自で環境設定を読み替えてください。
- 日本語フォントの取得
とりあえず、今回はtakao fontあたりを取得してみました。
$ sudo apt-get install fonts-takao
これで、Raspbianに
fonts-takao-gothic fonts-takao-mincho
が
/usr/share/fonts/truetype/takao-gothic/
/usr/share/fonts/truetype/takao-mincho/
以下に導入されます。
- 日本語フォントをQt5のフォントディレクトリーにコピーする
先ほどのフォント(今回は、takao-gothicの方)をコピーします。
$ sudo cp /usr/share/fonts/truetype/takao-gothic/TakaoGothic.ttf /usr/local/qt5pi/lib/fonts/
Code上にて、導入した日本語フォントのfontfamilyをセットする
- Widgetの場合
QApplicationに対して、QFontクラスにてfontfamilyを指定します。
QApplication a(argc, argv); ・・・ QFont font; // 導入した日本語のフォントファミリーを指定します。 font.setFamily("TakaoGothic"); a.setFont( font ); ・・・
- QMLの場合
Text Elementのfont.familyのPropertiesを指定する。
Text { ・・・ // 導入した日本語のフォントファミリーを指定する。 font.family: "TakaoGothic" //[*] ・・・ }
確認に使ったソース
- main.cpp
#include "mainwindow.h" #include <QApplication> #include <QLabel> #include <QFont> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { QLabel *label = new QLabel("Hello RaspberryPi \n\ こんにちはRaspberryPi"); setCentralWidget(label); } MainWindow::~MainWindow() { } int main(int argc, char *argv[]) { QApplication a(argc, argv); QFont font; // 導入した日本語のフォントファミリーを指定する。 font.setFamily("TakaoGothic"); //[*] font.setPointSize( 48 ); a.setFont( font ); MainWindow w; w.show(); return a.exec(); }
- mainwindow.h
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = 0); ~MainWindow(); }; #endif // MAINWINDOW_H
QML版
- Sample_Raspberrypi_Qt5_qml.qml
Rectangle { width: 800 height: 600 Text { anchors.centerIn: parent font.pointSize: 48 // 導入した日本語のフォントファミリーを指定する。 font.family: "TakaoGothic" //[*] text: "Hello RaspberryPi \n こんにちはRaspberryPi" } }
QML実行方法
$ qmlscene ./Sample_Raspberrypi_Qt5_qml.qml
RaspberryPi@Raspbian(wheezy)用にQt5beta1をCrossCompileする(その2)
RaspberryPiのRaspbian(wheezy)にて、Qt5beta1をCrossCompileする
Qt5beta1をRaspbian(wheezy)にてCrossCompileした時の覚書です。
***環境構築Dir構成***
(諸事情でRaspberryPi_Beginners_guide | Qt Wiki | Qt Developer Networkと構築Dir先やDir名は変えています。)
/ |--/opt | '--/DeveloperTool | | |--/Qt | | | '--/qt5-rpi-min/ - Qt5beta1 checkout先 | | '-- /RaspberryPi | | '--/Raspbian - Raspbian (wheezy)のimage置き場 | '--/toolchain - RaspberryPi用 Hardfloat CrossCompiler /mnt '--/rpi-rootfs - RaspberryPi用rootfsマウント先
***cross-compile-toolsの実行***
fixQualifiedLibraryPathsを使用します。
usage:
./cmd target-rootfs path-to-target-toolchain-compiler
$ cd /opt/DeveloperTool/RaspberryPi/Raspbian/cross-compile-tools $ sudo ./fixQualifiedLibraryPaths /mnt/rpi-rootfs /opt/toolchain/gcc-4.7-linaro-rpi-gnueabihf/bin/arm-linux-gnueabihf-gcc
必ずsudoをつけて実行します。(/mnt/rpi-rootfs/内にてlibraryのシンボリックリンクを生成させる為)
OKな時のlog
Passed valid toolchain Adjusting the symlinks in /mnt/rpi-rootfs/usr/lib to be relative ./libudev.so ../../lib/arm-linux-gnueabihf/libudev.so.0.13.0 Testing for existence of potential debian multi-arch dir: /mnt/rpi-rootfs/usr/lib/arm-linux-gnueabihf Debian multiarch dir exists, adjusting Adjusting the symlinks in /mnt/rpi-rootfs/usr/lib/arm-linux-gnueabihf to be relative ./libglib-2.0.so ../../../lib/arm-linux-gnueabihf/libglib-2.0.so.0 ./libcidn.so ../../../lib/arm-linux-gnueabihf/libcidn.so.1 ./libanl.so ../../../lib/arm-linux-gnueabihf/libanl.so.1 ./libnss_nisplus.so ../../../lib/arm-linux-gnueabihf/libnss_nisplus.so.2 ./libnss_nis.so ../../../lib/arm-linux-gnueabihf/libnss_nis.so.2 ./libnss_compat.so ../../../lib/arm-linux-gnueabihf/libnss_compat.so.2 ./libnss_files.so ../../../lib/arm-linux-gnueabihf/libnss_files.so.2 ./libutil.so ../../../lib/arm-linux-gnueabihf/libutil.so.1 ./libdbus-1.so ../../../lib/arm-linux-gnueabihf/libdbus-1.so.3.7.1 ./libz.so ../../../lib/arm-linux-gnueabihf/libz.so.1.2.7 ./libnss_dns.so ../../../lib/arm-linux-gnueabihf/libnss_dns.so.2 ./libcrypt.so ../../../lib/arm-linux-gnueabihf/libcrypt.so.1 ./libexpat.so ../../../lib/arm-linux-gnueabihf/libexpat.so.1.6.0 ./libdl.so ../../../lib/arm-linux-gnueabihf/libdl.so.2 ./libthread_db.so ../../../lib/arm-linux-gnueabihf/libthread_db.so.1 ./libm.so ../../../lib/arm-linux-gnueabihf/libm.so.6 ./libnsl.so ../../../lib/arm-linux-gnueabihf/libnsl.so.1 ./libnss_hesiod.so ../../../lib/arm-linux-gnueabihf/libnss_hesiod.so.2 ./librt.so ../../../lib/arm-linux-gnueabihf/librt.so.1 ./libresolv.so ../../../lib/arm-linux-gnueabihf/libresolv.so.2 ./libpcre.so ../../../lib/arm-linux-gnueabihf/libpcre.so.3 ./libBrokenLocale.so ../../../lib/arm-linux-gnueabihf/libBrokenLocale.so.1
NGな時のlog
(sudo をつけないで実行した場合)
Passed valid toolchain Adjusting the symlinks in /mnt/rpi-rootfs/usr/lib to be relative Testing for existence of potential debian multi-arch dir: /mnt/rpi-rootfs/usr/lib/arm-linux-gnueabihf Debian multiarch dir exists, adjusting Adjusting the symlinks in /mnt/rpi-rootfs/usr/lib/arm-linux-gnueabihf to be relative
となり、あとのqtbaseのCompileにてerrorになります。(→やってしまった人...)
***Qt5のqtbaseチェックアウト***
今回は、qt5 in Qt - Qt by Nokiaから一気にQt5のリポジトリから
取得するのではなく、1つずつモジュールをmakeする事にし、最近ベータ版がリリースされたので、
v5.0.0-beta1のtagにてbuildを進めて行きます。
まずは、qtbaseをチェックアウトしてmakeしていく事にします。
qtbaseをgitから取得
$ mkdir -p /opt/DeveloperTool/Qt/qt5-rpi-min /* Dir作成 */ $ cd /opt/DeveloperTool/Qt/qt5-rpi-min /* Dir移動 */ $ git clone git://gitorious.org/qt/qtbase.git $ cd ./qtbase/ $ git tag /* tagを調べます */ qt-v5.0.0-alpha1 v5.0.0-beta1 /* v5.0.0-beta1 のタグでbranchを作ります */ $ git checkout -b branch-v5.0.0-beta1 v5.0.0-beta1 Switched to a new branch 'branch-v5.0.0-beta1' $ git branch /* branchの確認 */ * branch-v5.0.0-beta1 master
configureの実行
./configure -no-pch -opengl es2 -device linux-rasp-pi-g++ -device-option CROSS_COMPILE=/opt/toolchain/gcc-4.7-linaro-rpi-gnueabihf/bin/arm-linux-gnueabihf- -sysroot /mnt/rpi-rootfs -opensource -confirm-license -optimized-qmake -reduce-relocations -reduce-exports -release -make libs -prefix /usr/local/qt5rpi 2>&1 | tee ../qtbase_configure.log
configure logです。(詳細log)
Building on: linux-g++-64 Building for: devices/linux-rasp-pi-g++ Architecture: arm, features: Host architecture: x86_64, features: mmx sse sse2 Platform notes: - Also available for Linux: linux-kcc linux-icc linux-cxx Build .................. libs Configuration .......... cross_compile qpa largefile neon pcre minimal-config small-config medium-config large-config full-config fontconfig libudev evdev linuxfb c++11 accessibility egl eglfs opengl opengles2 shared qpa reduce_exports reduce_relocations clock-gettime clock-monotonic mremap getaddrinfo ipv6ifname getifaddrs inotify png system-freetype system-zlib nis iconv glib gstreamer dbus openssl rpath icu concurrent audio-backend v8 release Debug .................. no C++11 support .......... yes pkg-config ............. yes QtDBus module .......... yes (run-time) QtConcurrent code ...... yes QtGui module ........... yes QtWidgets module ....... yes JavaScriptCore JIT ..... To be decided by JavaScriptCore QML debugging .......... yes PCH support ............ no iWMMXt support ......... no NEON support ........... yes IPv6 ifname support .... yes getaddrinfo support .... yes getifaddrs support ..... yes Accessibility .......... yes NIS support ............ yes CUPS support ........... no Iconv support .......... yes Glib support ........... yes GStreamer support ...... yes PulseAudio support ..... no Large File support ..... yes GIF support ............ plugin JPEG support ........... plugin (qt) PNG support ............ yes (qt) zlib support ........... system Session management ..... auto libudev support ........ yes OpenGL support ......... yes (OpenGL ES 2.x) OpenVG support ......... no XShape support ......... auto XVideo support ......... auto XSync support .......... auto Xinerama support ....... runtime Xcursor support ........ runtime Xfixes support ......... runtime Xrandr support ......... runtime Xi support ............. runtime Xi2 support ............ auto MIT-SHM support ........ auto FontConfig support ..... yes XKB Support ............ auto immodule support ....... yes GTK theme support ...... no SQLite support ......... plugin (qt) OpenSSL support ........ yes (run-time) Alsa support ........... no libICU support ......... yes PCRE support ........... qt Xcb support ............ no Xrender support ........ no EGLFS support .......... yes DirectFB support ....... no LinuxFB support ........ yes KMS support ............ no
makeの実行
$ make 2>&1 | tee ../qtbase_make.log
qtbase make logです。(詳細log)
Build Bad How to
僕のハマった内容です。
- ハマりどころ1
qlibrary_unix.cpp:(.text+0xf84): warning: Using `dlopen' in statically linked applications requiresion used for linking /mnt/rpi-rootfs/usr/lib/arm-linux-gnueabihf/libdl.a(dlopen.o): In function `dlopen': /mnt/rpi-rootfs/usr/lib/arm-linux-gnueabihf/libdl.a(dlclose.o): In function `dlclose': (.text+0x0): undefined reference to `__dlclose' /mnt/rpi-rootfs/usr/lib/arm-linux-gnueabihf/libdl.a(dlsym.o): In function `dlsym': (.text+0xc): undefined reference to `__dlsym' /mnt/rpi-rootfs/usr/lib/arm-linux-gnueabihf/libdl.a(dlerror.o): In function `dlerror': (.text+0x0): undefined reference to `__dlerror' /mnt/rpi-rootfs/usr/lib/arm-linux-gnueabihf/libm.a(feholdexcpt.o): In function `feholdexcept': (.text+0x48): undefined reference to `_dl_hwcap' /mnt/rpi-rootfs/usr/lib/arm-linux-gnueabihf/libm.a(fesetenv.o): In function `fesetenv': (.text+0x64): undefined reference to `_dl_hwcap' collect2: error: ld returned 1 exit status make[2]: *** [../../lib/libQtCore.so.5.0.0] エラー 1 make[2]: Leaving directory `/opt/DeveloperTool/Qt/qt5-rpi-min/qtbase/src/corelib' make[1]: *** [sub-corelib-make_first] エラー 2 make[1]: Leaving directory `/opt/DeveloperTool/Qt/qt5-rpi-min/qtbase/src' make: *** [sub-src-make_first] エラー 2
→ ./fixQualifiedLibraryPathsが、sudoをつけずに実行した等により正常に実行されなかった場合にでる。
- ハマりどころ2
cc1: fatal error: .pch/release-shared/QtGui: No such file or directory or cc1: fatal error: .pch/release-shared/QtGui: そのようなファイルやディレクトリがありません。
→ ここのTroubleshootingにあるように、configureにて“-no-pch”をつけなかった場合にでる。
installの実行
わたしの場合には、configureの-prefixにて、”/usr/local/qt5rpi”と設定しているため
/usr/local/qt5rpiにinstallされました。
$ sudo make install 2>&1 | tee ../qtbase_make_install_.log
(詳細log)
つっ疲れた...、次回にてQt5の残りのモジュールについて記載をしていきます。
next (その3)
RaspberryPi@Raspbian(wheezy)用にQt5beta1をCrossCompileする(その1)
RaspberryPiのRaspbian(wheezy)にて、Qt5beta1をCrossCompileする
Qt5beta1をRaspbian(wheezy)にてCrossCompileした時の覚書です。
既に、@IoriAYANEさんが、既にサクっとcross compileされちゃってます。
(Qt5をRaspberry Pi用にビルドする (理ろぐ))
こちらでは、Qt5のモジュールを個別にmakeした時のログと
けっこうトラブったので、トラブった事項の記載等をしておきます。
- The Raspberry Pi Foundation
- Qt5 CrossCompile参考サイト
RaspberryPi | Qt Wiki | Qt Developer Network
RaspberryPi_Beginners_guide | Qt Wiki | Qt Developer Network
***構成***
Host PC : Intel(R) Core(TM) i5-2430M CPU @ 2.40GHz ASUS U24
Host OS : Ubuntu12.04(precise) 64-bit
$ cat /proc/version_signature Ubuntu 3.2.0-30.48-generic 3.2.27 $ cat /proc/version Linux version 3.2.0-30-generic (buildd@batsu) (gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) ) #48-Ubuntu SMP Fri Aug 24 16:52:48 UTC 2012
Target board : RasberryPi model B
Target OS : Raspbian (wheezy) Hardflort (2012-08-16-wheezy-raspbian)
***Compile環境設定***
実は、X11のQt5beta1を先にしちゃっていたので、何が必要かわからなかったりするw とりあえず、X11でのQt5 コンパイル時に入れたのは下記サイトを参考にして
参考:http://qt-project.org/wiki/Building_Qt_5_from_Git
$ sudo apt-get install build-essential perl python git $ sudo apt-get install "^libxcb.*" libx11-xcb-dev libglu1-mesa-dev libxrender-dev
あとは、他ボードのCrossCompileも同じPCで行なっていたりしているので、
個別で必要そうなのは、
- GNU C Library
$ sudo apt-get install libc6-dev
- 32-bit shared libraries
- Embedded GNU C Library: 32-bit development libraries
$ sudo apt-get install ia32-libs libc6-dev-i386
こちらのTroubleshooting
に記載があったので64bitだと
sudo apt-get install lib32z1-dev
ぐらい?(本当に必要かわかりませんが、@IoriAYANEさんが64bitだとエラーになるとの記載をされていたのですが、僕の方でエラーにならなかったのは、この辺りを入れていたからかもしれません。)
***環境構築Dir構成***
(諸事情でRaspberryPi_Beginners_guide | Qt Wiki | Qt Developer Networkと構築Dir先やDir名は変えています。)
/ |--/opt | '--/DeveloperTool | | |--/Qt | | | '--/qt5-rpi-min/ - Qt5beta1 checkout先 | | '-- /RaspberryPi | | '--/Raspbian - Raspbian (wheezy)のimage置き場 | '--/toolchain - RaspberryPi用 Hardfloat CrossCompiler /mnt '--/rpi-rootfs - RaspberryPi用rootfsマウント先
***CrossCompile環境を整える***
RaspberryPIで使用するimageの展開
The Raspberry Pi Foundationのサイトから、Downloadをクリック。
Downloads | Raspberry Piから
2012-08-16-wheezy-raspbian.zipをダウンロードしていきます。
ダウンロード後に、ダウンロードサイトに記載しているSHA-1と一致しているか確認する。
$ sha1sum 2012-08-16-wheezy-raspbian.zip 63d16fd28369b6e05bf97f2d1758d56df6ed0ba9 2012-08-16-wheezy-raspbian.zip
imageを置くディレクトリに移動し、解凍する。
$ sudo mkdir -p /opt/DeveloperTool/RaspberryPi/Raspbian $ cd /opt $ sudo chown <USER>:<GROUP> -R ./DeveloperTool/RaspberryPi/Raspbian $ cd /opt/DeveloperTool/RaspberryPi/Raspbian $ mv ~/Downloads/2012-08-16-wheezy-raspbian.zip /opt/DeveloperTool/RaspberryPi/Raspbian $ unzip ./2012-08-16-wheezy-raspbian.zip
マウント先のディレクトリを作成して、マウントしておく。
$ sudo mkdir /mnt/rpi-rootfs $ sudo mount -o loop,offset=62914560 2012-08-16-wheezy-raspbian.img /mnt/rpi-rootfs
(memo)
パーティションの開始バイトで62,914,560byteとしているのは、
$ fdisk -l ./2012-08-16-wheezy-raspbian.img ディスク ./2012-08-16-wheezy-raspbian.img: 1939 MB, 1939865600 バイト ヘッド 255, セクタ 63, シリンダ 235, 合計 3788800 セクタ Units = セクタ数 of 1 * 512 = 512 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト ディスク識別子: 0x000108cb デバイス ブート 始点 終点 ブロック Id システム ./2012-08-16-wheezy-raspbian.img1 8192 122879 57344 c W95 FAT32 (LBA) ./2012-08-16-wheezy-raspbian.img2 122880 3788799 1832960 83 Linux
となっており、FAT32のパーティションには、booterやkernel image。
ex4にはroot file systemが入っています。
今回はroot file systemを参照したい為、2パーティション目の開始からマウントしています。
マウントのbyteは、
セクタサイズが512byteから
512✕122880=62,914,560
といった計算でoffset開始アドレスを算出しています。
CrossCompileを行うToolChainをダウンロードする。
$ cd /opt $ sudo mkdir ./toolchain $ sudo chown <USER>:<GROUP> ./toolchain $ cd ./toolchain $ wget http://blueocean.qmh-project.org/gcc-4.7-linaro-rpi-gnueabihf.tbz $ tar -xf gcc-4.7-linaro-rpi-gnueabihf.tbz
(memo)
このToolchainは、Hard float用のものなので、The Raspberry Pi Foundationのサイトのdownloadにある
Soft-float Debian “wheezy”には使用できません。Arch Linux ARMやQtonPiについては、どっちを使っているか不明・・・。
いちおコンパイラについて晒しておきます。
$ /opt/toolchain/gcc-4.7-linaro-rpi-gnueabihf/bin/arm-linux-gnueabihf-g++ -v 組み込み spec を使用しています。 COLLECT_GCC=/opt/toolchain/gcc-4.7-linaro-rpi-gnueabihf/bin/arm-linux-gnueabihf-g++ COLLECT_LTO_WRAPPER=/opt/toolchain/gcc-4.7-linaro-rpi-gnueabihf/bin/../libexec/gcc/arm-linux-gnueabihf/4.7.2/lto-wrapper ターゲット: arm-linux-gnueabihf configure 設定: /opt/dev/src/crosstool-ng/crosstool-ng-linaro-1.13.1-2012.07-20120720/builds/arm-linux-gnueabihf-linux/.build/src/gcc-linaro-4.7-2012.07/configure --build=i686-build_pc-linux-gnu --host=i686-build_pc-linux-gnu --target=arm-linux-gnueabihf --prefix=/opt/dev/src/crosstool-ng/crosstool-ng-linaro-1.13.1-2012.07-20120720/builds/arm-linux-gnueabihf-linux/install --with-sysroot=/opt/dev/src/crosstool-ng/crosstool-ng-linaro-1.13.1-2012.07-20120720/builds/arm-linux-gnueabihf-linux/install/arm-linux-gnueabihf/libc --enable-languages=c,c++,fortran --enable-multilib --with-arch=armv6zk --with-tune=arm1176jzf-s --with-fpu=vfp --with-float=hard --with-pkgversion='crosstool-NG linaro-1.13.1-2012.07-20120720 - Linaro GCC 2012.07' --with-bugurl=https://bugs.launchpad.net/gcc-linaro --enable-__cxa_atexit --enable-libmudflap --enable-libgomp --enable-libssp --with-gmp=/opt/dev/src/crosstool-ng/crosstool-ng-linaro-1.13.1-2012.07-20120720/builds/arm-linux-gnueabihf-linux/.build/arm-linux-gnueabihf/build/static --with-mpfr=/opt/dev/src/crosstool-ng/crosstool-ng-linaro-1.13.1-2012.07-20120720/builds/arm-linux-gnueabihf-linux/.build/arm-linux-gnueabihf/build/static --with-mpc=/opt/dev/src/crosstool-ng/crosstool-ng-linaro-1.13.1-2012.07-20120720/builds/arm-linux-gnueabihf-linux/.build/arm-linux-gnueabihf/build/static --with-ppl=/opt/dev/src/crosstool-ng/crosstool-ng-linaro-1.13.1-2012.07-20120720/builds/arm-linux-gnueabihf-linux/.build/arm-linux-gnueabihf/build/static --with-cloog=/opt/dev/src/crosstool-ng/crosstool-ng-linaro-1.13.1-2012.07-20120720/builds/arm-linux-gnueabihf-linux/.build/arm-linux-gnueabihf/build/static --with-libelf=/opt/dev/src/crosstool-ng/crosstool-ng-linaro-1.13.1-2012.07-20120720/builds/arm-linux-gnueabihf-linux/.build/arm-linux-gnueabihf/build/static --with-host-libstdcxx='-L/opt/dev/src/crosstool-ng/crosstool-ng-linaro-1.13.1-2012.07-20120720/builds/arm-linux-gnueabihf-linux/.build/arm-linux-gnueabihf/build/static/lib -lpwl' --enable-threads=posix --disable-libstdcxx-pch --enable-linker-build-id --enable-gold --with-local-prefix=/opt/dev/src/crosstool-ng/crosstool-ng-linaro-1.13.1-2012.07-20120720/builds/arm-linux-gnueabihf-linux/install/arm-linux-gnueabihf/libc --enable-c99 --enable-long-long スレッドモデル: posix gcc バージョン 4.7.2 20120701 (prerelease) (crosstool-NG linaro-1.13.1-2012.07-20120720 - Linaro GCC 2012.07)
cross-compile-toolsのチェックアウト(root file system)
$ cd /opt/DeveloperTool/RaspberryPi/Raspbian $ git clone git://gitorious.org/cross-compile-tools/cross-compile-tools.git $ git log -n 1 /*今回使用したハッシュ値です*/ commit d49f517eaa3bc819f78a01a5eead9e1a697ce6f5 Author: Johannes Zellner <johannes.zellner@nokia.com> Date: Mon Aug 20 20:34:36 2012 -0700 people like me need more specific usage description
とりあえず、次回にて、Qt5のチェックアウトおよびbuildについての
記載をしていきます。
next (その2)
BeagleBoard DE Ubuntu (起動後のupdate作業)
BeagleBoard に Ubuntu11.10 インストール後の起動後にする事HowTo
SDカードへのubuntuのイメージの入れ方等はBeagleBoard DE Ubuntu (SDカードにイメージのインストール) - emblogを参照してください。
基本は、elinux.org(BeagleBoardUbuntu)に書いてある通りだったりする。
***構成***
使用Host PC OS : Ubuntu12.04
使用Beagleboard : BeagleBoard C4 (xMじゃないよw)
USBハブ : USB2.0ハブ4ポート(¥700ぐらい)
USB/LAN変換 : USB2.0 有線LANアダプタ(¥1,000ぐらい)
BeagleBoard用シリアルケーブル : BBC01(¥1,600ぐらい 高!)
SDカード : 8GbyteSDカード(最小で4GBは欲しい)
何はともあれ起動させる。
を接続します。
シリアル通信設定
Tera Term等のシリアル通信できるソフトを用意します。
シリアルポート設定
ボーレート 115,200bps
データ 8bit
パリティ none(なし)
ストップbit 1bit
フロー制御 none(なし)
に設定しておき、シリアルケーブルを事前に接続しておきます。
火入れ
USERボタンを押しながら、USBminiBケーブルをPCに接続して電源供給させてみます。
下記に起動時のkernel起動前までのログを表示しておきます。
USERボタンを何故押しながら起動させるの?
beagleboardのOMAP3530(beagle board Ver.C4の場合)は、I/OのSYS_BOOT0~6のポートのbit設定にて内部ROM(たしか書き換え不可じゃなかったかな?)に書き込んでいるbooterが第一,第二のbooterであるx-loader,u-bootを読み出す先の順番を変更できます。
デフォルトの状態では、
SYS_BOOT0 H
SYS_BOOT1 H
SYS_BOOT2 H
SYS_BOOT3 H
SYS_BOOT4 L
SYS_BOOT5 (USERボタン downで H)
SYS_BOOT6 H
となっていますので、
- USERボタンを押さない時 b100 1111 (NAND USB UART3 MMC1)
- USERボタンを押している時 b110 1111 (USB UART MMC1 NAMD)
となり、USERボタンを押さない時には、
通常はNANDからx-loader/u-bootが読み出されます。
今回は、SDカードからの起動させる為に、USERボタンを押し
NANDより先にMMC1からbooterを読み出すようにしました。
(マニュアルの5.14 User/Boot Button参照)
(起動ログ)
40W <- [40Wと表示されればOKです。これが出たときにUSERボタンを離してください。] U-Boot SPL 2011.12-00005-g0a44c98 (Feb 13 2012 - 18:49:45) Texas Instruments Revision detection unimplemented OMAP SD/MMC: 0 reading u-boot.img reading u-boot.img U-Boot 2011.12-00005-g0a44c98 (Feb 13 2012 - 18:49:45) OMAP3530-GP ES3.1, CPU-OPP2, L3-165MHz, Max CPU Clock 720 mHz OMAP3 Beagle board + LPDDR/NAND I2C: ready DRAM: 256 MiB NAND: 256 MiB MMC: OMAP SD/MMC: 0 In: serial Out: serial Err: serial Beagle Rev C4 timed out in wait_for_pin: I2C_STAT=0 I2C read: I/O error Unrecognized expansion board: 0 timed out in wait_for_pin: I2C_STAT=0 I2C read: I/O error Unrecognized expansion board: 0 Die ID #13f400040000000004036abc07007018 Net: Net Initialization Skipped No ethernet found. Hit any key to stop autoboot: 2,1,0 <- [ここで、何かを押せばu-bootで止まります。] The user button is currently NOT pressed. SD/MMC found on device 0 reading uEnv.txt 796 bytes read Loaded environment from uEnv.txt Importing environment from mmc ... reading uImage 3014528 bytes read reading uInitrd 3087353 bytes read Booting from mmc ... ## Booting kernel from Legacy Image at 80300000 ... Image Name: 3.2.3-x4 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 3014464 Bytes = 2.9 MiB Load Address: 80008000 Entry Point: 80008000 Verifying Checksum ... OK ## Loading init Ramdisk from Legacy Image at 81600000 ... Image Name: initramfs Image Type: ARM Linux RAMDisk Image (uncompressed) Data Size: 3087289 Bytes = 2.9 MiB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK Loading Kernel Image ... OK OK Starting kernel ... Uncompressing Linux... done, booting the kernel.
Kernel起動後
ログインする
初期でのログイン名とパスワードは
login name : ubuntu
password : temppwd
となっていますので、これでログインしてみます。
Ubuntu 11.10 omap ttyO2 omap login: ubuntu <- ログイン名(デフォルト ubuntu)を入力 Password: temppwd <- パスワード(デフォルト temppwd)を入力 Welcome to Ubuntu 11.10 (GNU/Linux 3.2.3-x4 armv7l) * Documentation: https://help.ubuntu.com/ The programs included with the Ubuntu system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. To run a command as administrator (user "root"), use "sudo <command>". See "man sudo_root" for details. ubuntu@omap:~$
ネットワークに接続してみる。
とりあえず、ubuntuのアップデートを行いたいので
ネットワークに接続します。
今回は、DHCPにてさくっと接続させます。
sudoをつけて、rootの特権レベルで実行させます。
$ sudo dhclient eth0 [sudo] password for ubuntu: ****** <- password(デフォルトならtemppwd を入れる。)
接続できたか確認してみる。
$ ifconfig eth0 Link encap:Ethernet HWaddr 00:11:22:33:44:55 inet addr:172.16.0.1 Bcast:172.16.0.255 Mask:255.255.255.0 <- IPアドレスが割振られていればOKかと思います。 inet6 addr: ffff::1111:ffff:1111:20b/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:3 errors:0 dropped:0 overruns:0 frame:0 TX packets:7 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1198 (1.1 KB) TX bytes:1382 (1.3 KB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0
ubuntuのアップグレード
とりあえず、パッケージリストを取得・更新する
$ sudo apt-get update
インストール済みのパッケージをアップグレードする
$ sudo apt-get upgrade
その他いろいろ作業する前に入れておきたいものを入れる。
- 検索するファイルを含むパッケージをよく探すので
$ sudo apt-get install apt-file
パッケージが入ったら
$ sudo apt-file update
- わたし、vim派なので真っ先にいれる(これがないと、きついっす)
$ sudo apt-get install vim
- 後述のkernelupdateに使用するので、 HTTPやFTP経由にてファイル
取得をするためのwgetを入れる。
$ sudo apt-get install wget
- いちいちシリアルで接続するのもめんどくさいのでSSHも入れる
$ sudo apt-get install ssh
- Windowsから接続も行いたいのでsambaも入れる。
$ sudo apt-get install samba
ネットワーク接続の設定を行う。
起動してから、dhclientコマンドにて毎回ネットワーク接続しても
いいのですが、めんどくちゃいので自動でDHCP接続をするようにします。
/etc/network/interfacesを編集する
$ sudo vim /etc/network/interfaces
で開いて
(書き換え前)
auto lo iface lo inet loopback # The primary network interface #auto eth0 #iface eth0 inet dhcp # Example to keep MAC address between reboots #hwaddress ether DE:AD:BE:EF:CA:FE
上記の
#auto eth0
#iface eth0 inet dhcp
の"#"を消して上書きします。
※vimでのファイルの編集・保存について
ファイルの編集 キーボードのiを押して挿入モードにて編集する。
ファイルの保存 ESCを押してから:wqにてファイルを上書き保存します。
(書き換え後)
auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet dhcp # Example to keep MAC address between reboots #hwaddress ether DE:AD:BE:EF:CA:FE
これで一旦再起動します。
kernelのアップデート
ここまでは、主にUbuntuのパッケージ関連をいじってきましたが次はkernelのアップデートを行います。
Ubuntu のイメージをインストール時に作成したkernelは最新版でないので最新版に上げます。
アップデート用の作業ディレクトリの作成
/opt/ディレクトリに./LatestKernelImageを作成してこのディレクトリで作業を行います。
ディレクトリを作成します。
$ sudo mkdir -p /etc/LatestKernelImage
/optディレクトリに移動し、./LatestKernelImageの所有者を変更します。
$ cd /opt/ $ sudo chown ubuntu:ubuntu ./LatestKernelImage
所有者の変更ができたか確認してみる。
$ ls -l drwxr-xr-x 2 ubuntu ubuntu 4096 2012-03-XX XX:XX LatestKernelImage
kernelのupdate(uImageを上書きする)
環境変数として、DIST名をUpdateするUbuntuのバージョンを入れる。
Ubuntu10.04なら、lucid
Ubuntu10.10なら、maverick
Ubuntu11.04なら、natty
Ubuntu11.10なら、oneiric
Ubuntu12.04なら、precise
を入れる。
export DIST=oneiric
環境変数として、ARCH名で、アーキテクチャ名を入れる。
export ARCH=armel
環境変数として、BOARD名で、使用しているボード名を入れる。
Beagleboardや、Pandaboardなら、omap
BeagleBoneなら、omap-psp
export BOARD=omap
インストールで使用するシェルスクリプトのリストを取得します。
$ wget http://rcn-ee.net/deb/${DIST}-${ARCH}/LATEST-${BOARD} --2012-03-XX XX:XX:XX-- http://rcn-ee.net/deb/oneiric-armel/LATEST-omap Resolving rcn-ee.net... 69.163.149.169 Connecting to rcn-ee.net|69.163.149.169|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 229 [text/plain] Saving to: `LATEST-omap' 100%[======================================>] 229 --.-K/s in 0s 2012-03-XX XX:XX:XX (916 KB/s) - `LATEST-omap' saved [229/229]
インストールで使用するシェルスクリプトを取得します。
$ wget $(cat ./LATEST-${BOARD} | grep STABLE | awk '{print $3}') --2012-03-XX XX:XX:XX-- http://rcn-ee.net/deb/oneiric-armel/v3.2.10-x6/install-me.sh Resolving rcn-ee.net... 69.163.149.169 Connecting to rcn-ee.net|69.163.149.169|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 3095 (3.0K) [application/x-sh] Saving to: `install-me.sh' 100%[======================================>] 3,095 --.-K/s in 0.001s 2012-03-XX XX:XX:XX (4.21 MB/s) - `install-me.sh' saved [3095/3095]
インストールします。
$ /bin/bash install-me.sh
以下のインストール時のログを添付します。
Mounting Fat partition Downloading Recommended Kernel --2012-03-XX XX:XX:XX-- http://rcn-ee.net/deb/oneiric-armel/v3.2.10-x6/linux-image-3.2.10-x6_1.0oneiric_armel.deb Resolving rcn-ee.net... 69.163.149.169 Connecting to rcn-ee.net|69.163.149.169|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 16501650 (16M) [application/x-debian-package] Saving to: `/tmp/deb/linux-image-3.2.10-x6_1.0oneiric_armel.deb' 100%[======================================>] 16,501,650 257K/s in 76s 2012-03-XX XX:XX:XX (213 KB/s) - `/tmp/deb/linux-image-3.2.10-x6_1.0oneiric_armel.deb' saved [16501650/16501650] Installing linux-image Selecting previously deselected package linux-image-3.2.10-x6. (Reading database ... 14190 files and directories currently installed.) Unpacking linux-image-3.2.10-x6 (from .../linux-image-3.2.10-x6_1.0oneiric_armel.deb) ... Setting up linux-image-3.2.10-x6 (1.0oneiric) ... update-initramfs: Generating /boot/initrd.img-3.2.10-x6 Backing up Previous uImage and uInitrd `/tmp/boot/uImage' -> `/tmp/boot/uImage_old' `/tmp/boot/uInitrd' -> `/tmp/boot/uInitrd_old' Creating uImage from vmlinuz Image Name: 3.2.10-x6 Created: Tue Mar XX XX:XX:XX 2012 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 3016696 Bytes = 2945.99 kB = 2.88 MB Load Address: 80008000 Entry Point: 80008000 Creating uInitrd Image Name: initramfs Created: Tue Mar XX XX:XX:XX 2012 Image Type: ARM Linux RAMDisk Image (uncompressed) Data Size: 3097714 Bytes = 3025.11 kB = 2.95 MB Load Address: 00000000 Entry Point: 00000000 -rwxr-xr-x 1 root root 2.9M 2012-03-XX XX:XX /tmp/boot/uImage -rwxr-xr-x 1 root root 2.9M 2012-03-XX XX:XX /tmp/boot/uImage_old -rwxr-xr-x 1 root root 3.0M 2012-03-XX XX:XX /tmp/boot/uInitrd -rwxr-xr-x 1 root root 3.0M 2012-03-XX XX:XX /tmp/boot/uInitrd_old Please Reboot $
次は、日本語や時間の設定・x11デスクトップ環境構築までを記載する予定・・・。。
おまけ
毎度、USERボタンを押してだとしんどかったりするので
NANDにはいっているX-loderとU-bootの書き換えを行います。
X-loader/u-bootのアップグレード
※注意
ここで利用するSDカードは、上記で用いているKernel Imsgeの入っている
SDカードを利用しないでください。
上書きされて、起動できなくなり涙目になります。 by涙目になった人よりw
母艦(PC)にてファイルを取得しSDカードにファイルを入れる。
ファイルをgitから取得する
$ cd $ git clone git://github.com/RobertCNelson/flash-omap.git $ cd ./flash-omap
SDカードにインストールする
$ sudo ./mk_mmc.sh --mmc /dev/sdb --uboot beagle_cx
ここで、記載している/dev/sdbがSDカードの場所になります。
人によっては、/dev/sdcだったり/dev/mmcblk0しますので
実行する前に一度かくにんしてみてください。
NANDのデータを消去する。
u-bootの実行でとめます。
・・・ Hit any key to stop autoboot: 0 <- ここでEnterなどを押してautobootを止めます。 OMAP3 beagleboard.org # <- このプロンプトがu-bootのプロンプトになります。
NANDの消去の実行
nand erase 260000 20000
完了したら、ここで電源を落とします。
x-load/u-bootのNANDの書き込み
SDカードをいれてておきます。
USERボタンを押しながら電源投入。
そのままUSERボタンをホールド状態にする。
u-bootのカウントダウンが0になれば、USERボタンを離す。
コマンドプロンプトの点滅が出れば、update完了です。
起動時のログが変わっていることを確認してみましょう。
わたしの場合は、この様にへんこうされました。
(旧)
U-Boot 2009.11-rc1-00601-g3aa4b51 (Jan 05 2010 - 20:56:38)
(新)
U-Boot SPL 2011.12-00005-g0a44c98 (Feb 13 2012 - 18:49:45)
BeagleBoard DE Ubuntu (SDカードにイメージのインストール)
BeagleBoard に Ubuntu のイメージをインストールする。
基本は、elinux.org(BeagleBoardUbuntu)に書いてある通りだったりする。
***構成***
使用Host PC OS : Ubuntu12.04
使用Beagleboard : BeagleBoard C4 (xMじゃないよw)
USBハブ : USB2.0ハブ4ポート(¥700ぐらい)
USB/LAN変換 : USB2.0 有線LANアダプタ(¥1,000ぐらい)
BeagleBoard用シリアルケーブル : BBC01(¥1,600ぐらい 高!)
SDカード : 8GbyteSDカード(最小で4GBは欲しい)
Ubuntu 11.10最小構成のプレインストールイメージをSDカードに作成する。
Host PC(Ubuntu)での作業になります。
- プレビルドイメージの取得
$ wget http://rcn-ee.net/deb/rootfs/oneiric/ubuntu-11.10-r6-minimal-armel.tar.xz
-
- wgetをinstallしていない場合は、
$ sudo apt-get install wget
を実行する。
-
- 上記のURLは、2012/3現在の最新版ですhttp://elinux.org/BeagleBoardUbuntu#Oneiric_11.10:title=http://elinux.org/BeagleBoardUbuntu#Oneiric_11.10にて一度最新版の確認をしてみてください。
- ダウンロードファイルの解凍
bzip2をまず取得したのち、解凍
$ sudo apt-get install bzip2 $ tar xJf ubuntu-11.10-r6-minimal-armel.tar.xz
- 解凍先へ移動
$ cd ./ubuntu-11.10-r5-minimal-armel/
- SDカードにインストールする。
- SDカードがどこにあるかを調査する。(分かってる人は読み飛ばして)
$ sudo ./setup_sdcard.sh --probe-mmc Are you sure? I Don't see [/dev/idontknow], here is what I do see... fdisk -l: Disk /dev/sda: 53.7 GB, 53687091200 bytes Disk /dev/sdb: 7948 MB, 7948206080 bytes mount: /dev/sda1 on / type ext4 (rw,errors=remount-ro) /dev/sdb1 on /media/3239-3836 type vfat (rw,nosuid,nodev,uhelper=udisks,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,flush)
ここでは、
/dev/sda が母艦のファイルシステムがあるHDD
/dev/sdb がSDカード(8GB)になります。
人によっては、/dev/mmcblk0 だったりするので各自の環境で確認してみてください。
- SDカードをアンマウント
$ sudo umount /dev/sdb1 (ここでは、上記の/dev/sdb1になります。) $ df Filesystem 1K-ブロック 使用 使用可 使用% マウント位置 /dev/sda1 49448752 6305620 40631212 14% / none 1026580 280 1026300 1% /dev none 1030820 224 1030596 1% /dev/shm none 1030820 88 1030732 1% /var/run none 1030820 0 1030820 0% /var/lock none 1030820 0 1030820 0% /lib/init/rw shared 1953382396 766780772 1186601624 40% /media/sf_shared ←マウントされていないことを確認。
- インストール前に下記のコマンドを実行
$ sudo apt-get install uboot-mkimage wget pv dosfstools btrfs-tools parted
母艦にインストールされていないとインストールスクリプトを実行しても下記のエラーが出ます。
Your System is Missing some dependencies Ubuntu/Debian: sudo apt-get install uboot-mkimage wget pv dosfstools btrfs-tools parted Fedora: as root: yum install uboot-tools wget pv dosfstools btrfs-progs parted Gentoo: emerge u-boot-tools wget pv dosfstools btrfs-progs parted
- SDカードにイメージをインストール
$ sudo ./setup_sdcard.sh --mmc /dev/sdb --uboot beagle_cx
※/dev/sdb (sdb1ではない。)に BeagleBoard Ver.C4用のイメージをインストール。
(usage) sudo ./setup_sdcard.sh --mmc /dev/sdX --uboot "board" /dev/sdX ・・・SDカードの場所 "board" ・・・BeagleBoard Ax/Bx - beagle_bx BeagleBoard Cx - beagle_cx BeagleBoard xMA/B/C - beagle_xm BeagleBone Ax - bone
-
- 下記にインストールログを晒しておきます。
I see... fdisk -l: Disk /dev/sda: 53.7 GB, 53687091200 bytes Disk /dev/sdb: 7948 MB, 7948206080 bytes mount: /dev/sda1 on / type ext4 (rw,errors=remount-ro) Are you 100% sure, on selecting [/dev/sdb] (y/n)? y ← SDカード全領域つかっちゃうよ?OKならyを入れる。 Downloading Device's Bootloader ----------------------------- 64 bytes from rcn-ee.net (69.163.149.169): icmp_seq=1 ttl=50 time=163 ms 2012-03-13 00:04:27 URL:http://rcn-ee.net/deb/tools/latest/bootloader [4846/4846] -> "/tmp/tmp.d1cJP0cMFi/dl/bootloader" [1] 2012-03-13 00:04:28 URL:http://rcn-ee.net/deb/tools/beagleboard/MLO-beagleboard-v2011.12-r1 [44104/44104] -> "/tmp/tmp.d1cJP0cMFi/dl/MLO-beagleboard-v2011.12-r1" [1] SPL Bootloader: MLO-beagleboard-v2011.12-r1 2012-03-13 00:04:31 URL:http://rcn-ee.net/deb/tools/beagleboard/u-boot-beagleboard-v2011.12-r1.img [330372/330372] -> "/tmp/tmp.d1cJP0cMFi/dl/u-boot-beagleboard-v2011.12-r1.img" [1] UBOOT Bootloader: u-boot-beagleboard-v2011.12-r1.img Unmounting Partitions ----------------------------- Using fdisk to create BOOT Partition ----------------------------- 警告: DOS互換モードは廃止予定です。このモード (コマンド 'c') を止めることを 強く推奨します。 and change display units to sectors (command 'u'). コマンド (m でヘルプ): コマンドアクション e 拡張 p 基本パーティション (1-4) パーティション番号 (1-4): 最初 シリンダ (1-1021, 初期値 1): Last シリンダ, +シリンダ数 or +size{K,M,G} (1-1021, 初期値 1021): コマンド (m でヘルプ): 選択した領域 1 16進数コード (L コマンドでコードリスト表示): 領域のシステムタイプを 1 から e (W95 FAT16 (LBA)) に変更しました コマンド (m でヘルプ): ディスク /dev/sdb: 7948 MB, 7948206080 バイト ヘッド 245, セクタ 62, シリンダ 1021 Units = シリンダ数 of 15190 * 512 = 7777280 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O size (minimum/optimal): 512 bytes / 512 bytes ディスク識別子: 0x0008d997 デバイス ブート 始点 終点 ブロック Id システム /dev/sdb1 1 10 75919 e W95 FAT16 (LBA) コマンド (m でヘルプ): パーティションテーブルは変更されました! ioctl() を呼び出してパーティションテーブルを再読込みします。 警告: DOS 6.x パーティションを作成、または変更してしまった場合は、 fdisk マニュアルの追加情報ページを参照してください。 ディスクを同期しています。 Setting Boot Partition's Boot Flag ----------------------------- Creating rootfs ext4 Partition ----------------------------- Formating Boot Partition ----------------------------- mkfs.vfat 3.0.7 (24 Dec 2009) Formating rootfs Partition as ext4 ----------------------------- mke2fs 1.41.11 (14-Mar-2010) Filesystem label=rootfs OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 480496 inodes, 1921492 blocks 96074 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=1971322880 59 block groups 32768 blocks per group, 32768 fragments per group 8144 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632 Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 34 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. Populating Boot Partition ----------------------------- `/tmp/tmp.d1cJP0cMFi/dl/MLO-beagleboard-v2011.12-r1' -> `/tmp/tmp.d1cJP0cMFi/disk/MLO' `/tmp/tmp.d1cJP0cMFi/dl/u-boot-beagleboard-v2011.12-r1.img' -> `/tmp/tmp.d1cJP0cMFi/disk/u-boot.img' Using mkimage to create uImage ----------------------------- Image Name: 3.2.3-x4 Created: Tue Mar 13 00:06:21 2012 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 3014464 Bytes = 2943.81 kB = 2.87 MB Load Address: 0x80008000 Entry Point: 0x80008000 Using mkimage to create uInitrd ----------------------------- Image Name: initramfs Created: Tue Mar 13 00:06:23 2012 Image Type: ARM Linux RAMDisk Image (uncompressed) Data Size: 3087289 Bytes = 3014.93 kB = 2.94 MB Load Address: 0x00000000 Entry Point: 0x00000000 Copying uEnv.txt based boot scripts to Boot Partition ----------------------------- `/tmp/tmp.d1cJP0cMFi/bootscripts/normal.cmd' -> `/tmp/tmp.d1cJP0cMFi/disk/uEnv.txt' bootfile=uImage bootinitrd=uInitrd address_uimage=0x80300000 address_uinitrd=0x81600000 vram=12MB console=ttyO2,115200n8 defaultdisplay=dvi dvimode=1280x720MR-16@60 mmcroot=/dev/mmcblk0p2 ro mmcrootfstype=ext4 rootwait fixrtc optargs=console=tty0 mmc_load_uimage=fatload mmc 0:1 ${address_uimage} ${bootfile} mmc_load_uinitrd=fatload mmc 0:1 ${address_uinitrd} ${bootinitrd} mmcargs=setenv bootargs console=${console} ${optargs} mpurate=${mpurate} buddy=${buddy} buddy2=${buddy2} camera=${camera} vram=${vram} omapfb.mode=${defaultdisplay}:${dvimode} omapdss.def_disp=${defaultdisplay} root=${mmcroot} rootfstype=${mmcrootfstype} musb_hdrc.fifo_mode=5 loaduimage=run mmc_load_uimage; run mmc_load_uinitrd; echo Booting from mmc ...; run mmcargs; bootm ${address_uimage} ${address_uinitrd} ----------------------------- `/tmp/tmp.d1cJP0cMFi/readme.txt' -> `/tmp/tmp.d1cJP0cMFi/disk/tools/readme.txt' `/tmp/tmp.d1cJP0cMFi/update_boot_files.sh' -> `/tmp/tmp.d1cJP0cMFi/disk/tools/update_boot_files.sh' `/tmp/tmp.d1cJP0cMFi/minimal_xfce.sh' -> `/tmp/tmp.d1cJP0cMFi/disk/tools/minimal_xfce.sh' `/tmp/tmp.d1cJP0cMFi/get_chrome.sh' -> `/tmp/tmp.d1cJP0cMFi/disk/tools/get_chrome.sh' Finished populating Boot Partition ----------------------------- Populating rootfs Partition Please be patient, this may take a few minutes, as its transfering a lot of files.. ----------------------------- 383MB 0:03:00 [2.12MB/s] [=========================================================>] 100% Transfer of Base Rootfs Complete, syncing to disk ----------------------------- Tweak: On selected board, theres no guarantee eth0 is connected or exists, so removing boot assumption... ----------------------------- Finished populating rootfs Partition ----------------------------- setup_sdcard.sh script complete
とりあえず、これでオシマイ。
次は、シリアルから起動して、初期設定を行うまでを記載していきます。