2009年10月5日

SmartQ5 FW5.0 マルチブート

※自己責任で実施してください。当方は一切の責任は負いかねます。



SmartQ5のSDマルチブート環境を構築した。FW4.0と基本は同じ。
ただし、前回忘れていた重大な事をここに記載。過去記事は実はマウントポイントが本体側になっていて、起動はSDからだけどrootツリー?等は本体を使用していたという・・・・中途半端なマルチブートだった。


今回は本体側に「Covia版Android」を導入済み。
SDカード側に「SmartQ5 FW5.0」を導入します。

尚、気になるMID --SmartQ-- さんのブログでは
SmartQ5 Linux上での作業の説明が記載されています。

気になるMID --SmartQ-- Ver.5のマルチブート環境構築方法記事:
http://fav-mid.blogspot.com/2009/09/ver5.html

SDブートの仕方は基本的にFW4.0と同じです。
FW4.0の時の記事も併せてご覧ください。
過去記事では、本体SmartQ5 FW4.0でSDから
「Mer」「Android 有志版」の導入です。

過去記事 マルチブートできた:
http://voodooman-smartq5.blogspot.com/2009/08/sd.html

=============================================================
<やり方>

準備する物:
SDカード
(大容量2GB以上推奨 ※SDカードの種類によっては相性により起動しません。)
ここでは、adata 8gb class6を使用。
Windows環境 (ここではXP)
linux環境 (仮想マシンでUbuntu 8.04使用)
SmartQ5 FW5.0のイメージを展開したもの
zimage, initramfs.igz, rootfs.tar.gz, homefs.tar.gzが必要)

■■  Step 1  ■■ (Linux作業)
SDカードに3つのパーティションを作成します。

Ubuntu側にパーティションツール「Gparted」が導入されていることが前提。

1-1 SDカードを繋いだら、デスクトップにマウントされたSDをアンマウントする。

1-2 Gpartedを起動し、接続デバイスを選択。※ Linux本体をフォーマットしないよう注意。
うちの環境では/dev/sdb1

1-3 Gpartedで下記3つに区切る。区切れたら適応。
第一パーティションをFAT32 (3700mb)
第二パーティションをEXT3 (3700mb)
第三パーティションをLinux-Swap (残り全部)

終わったらここで一端SDカードを外す。(マウントされていたらアンマウントしてから。)

■■  Step 2  ■■ (Win作業)
SmartQ5の公式FW5.0イメージをSmartQ Extractorにて展開ファイルを用意する。

SmartQ5 FW5.0:
http://www.smartdevices.com.cn/support/download/FirmWare/SmartQ5/200909/18-796.html
SmartQ Extractor 2.6:
http://www.filefactory.com/file/aha509g/n/SmartQ5Extractor_v2_6_zip

SmartQ Extractorを起動して、FW5.0のイメージから下記ファイルを摘出
SDカードFAT32領域に保存しておく。
zimage, initramfs.igz, rootfs.tar.gz, homefs.tar.gz

■■  Step 3  ■■ (Linux作業)
SDカード第一パーティション(FAT32)に起動用に色々準備・展開していく。

3-1 SDを差したら、展開したFW5.0のデータ類をホームフォルダ(/home/user/)に移動しておく。
SD内のデータ類は削除しても構いません。
移動したら、デスクトップにマウントされたすべてのSDカードパーティションをアンマウントする。

3-2 FAT32領域にブートフォルダーを作成。ブートに必要な書類を配置する。
$ sudo su
# sudo mount /dev/sdb1 /mnt ←SDカードの接続先sdb1(FAT32領域)をマウント
# sudo mkdir /mnt/boot ←sdb1のrootに「boot」フォルダーを作成。
# sudo cp zimage initramfs.igz /mnt/boot
↑sdb1の「boot」フォルダーにzimageとinitramfs.igzをコピー
まだ端末は終了しない。

3-3 Ubuntuのテキストエディット(gedit)でmenu.lstを作成・保存する。
menu.lstには以下内容を表記
title ubuntu
kernel /boot/zimage
initrd /boot/initramfs.igz
param root=/dev/mmcblk1p2 rootwait
logo /boot/ubuntu.bmp4

menu.lstのフォーマットは以下でないと読みません。
テキストのエンコード:Unicode (UTF-8)
改行コード:UNIX (LF)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
追記(2009/10/05):
気になるMID --SmartQ-- さんのブログでSD BootでもBluetooth接続出来るようになったとのこと。上記param.....の表記を以下に変更。

param root=/dev/mmcblk1p2 init=/etc/init rootwait splash s3cfb.backlight=80 console=ttySAC0,115200 loglevel=6 (注意:ここまでが1行)

Ubuntu Ver.5 SDブートでのBTキーボード接続成功!:
http://fav-mid.blogspot.com/2009/10/ubuntu-ver5-sdbt.html


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
追記(2009/12/18):
匿名さんからの情報にて
logo, kernel, initrdのファイル名を8.3文字(名前8文字、拡張子3文字)以内での表記で問題ないそうです。

kernel /boot/ubzimage
initrd /boot/ubramfs.igz
logo /boot/ubuntu.bm4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


menu.lstをホームホルダ(/home/user/)に保存。端末で第一パーティション(FAT32)のbootフォルダーに保存。
# sudo cp menu.list /mnt/boot

3-4 ここで一端、第一パーティション(FAT32)をアンマウントする。
# sudo umount /mnt
まだ端末は終了しない。

■■  Step 4  ■■ (Linux作業)
SDカード第2パーティション(EXT3)にUbuntuのルートツリー等色々準備・展開していく。

4-1 端末で下記内容を行う。
# sudo mount /dev/sdb2 /mnt ←SDカードの接続先sdb2(EXT3領域)をマウント
# sudo tar xvzpf rootfs.tar.gz -C /mnt/ ←sdb2(EXT3領域)にrootfs.tar.gzを展開。
# sudo tar xvzpf homefs.tar.gz -C /mnt/home
↑sdb2(EXT3領域)のhomeフォルダーにhomefs.tar.gzを展開。

4-2 rootfs.tar.gzとhomefs.tar.gzを展開後、/mnt/etc/fstabのマウントポイントを変更する。
# sudo gedit /mnt/etc/fstab
fstab書類を以下内容に変更。
proc /proc proc defaults 0 0
/dev/mmcblk1p2 / ext3 relatime 0 1
/dev/mmcblk1p3 none swap sw 0 0

<mmcblk 数字 p 数字 の意味>
mmcblk0p1 ←本体flash「0」第一パーティション「p1
mmcblk1p2←SDカード「1」第二パーティション「p2

4-3 SDカード第2パーティション(EXT3)をアンマウントする。
# sudo umount /mnt
端末も終了。

以上でLinuxでの作業は終了。

  Step 5  ■■ (Win作業)
Windows上でSDブートの初期画面で表示される、背景とアイコンを作成するか
または準備されたモノをbootフォルダ内に保存する。

5-1 SDカードをマウントさせて、bootフォルダ内に
背景画像「bgbmp.bmp4」アイコン画像「ubunt.bmp4」を保存。

独自で作成するなら、Multiboot Icon Makerを使って作成する。
独自背景+アイコンの作り方は過去記事を参照。

過去記事 SD boot用アイコン+背景:
http://voodooman-smartq5.blogspot.com/2009/08/sd-boot.html

=============================================================
以上、ざっと書いてみました。間違っているかもしれませんが、これでSDカードをSmartQ5に挿入して電源入れると、SDマルチブートができるはずです。
起動時、アイコン2つが表示されます。
左のSmartQ5アイコンが本体側の起動(今回はCovia版Android)
右がSDカードのUbuntu SmartQ5 FW5.0の起動になります。

14 件のコメント:

  1. covia購入組2009年10月7日 1:06

    初めまして。
    Linux触った事なかった者ですが、
    参考にさせて頂き、記事どおりの手順で進めました。
    が、Q5にSDを挿して起動させても、本体androidしか起動しませんでした。
    どんな理由が考えられると思いますか?
    VODさんは記事どおりの方法で手を加えず起動していますか?

    返信削除
  2. マルチブートでSDを読まない問題の主として、

    1. SDカードの相性が合わない。

    僕は以下2つ試しましたが駄目でした。
    SanDisk ExtremeIII 4GB SDHC Class6
    HAGIWARA SYS-COM 8GB SDHC Class4
    で結局出来たのがadata 8GB SDHC Class6

    2. bootフォルダにあるmenu.listのエンコードと改行コードの問題。

    テキストのエンコード:Unicode (UTF-8)
    改行コード:UNIX (LF)

    上記のテキストフォーマットでないと読まないみたいです。

    3. menu.listの記述の問題

    記事の通りにで問題ないとは思いますが・・・
    もう一度、スペースやら改行やらを確認してみてください。

    (4)オプション
    Androidでは必要ないのですが、本家SmartQ5のFWを導入する際、SDカード(FAT32)の頭にマスターブートコード?なるFWイメージを読み込ませる為のモノを書込むツールがあります。
    SD UpdateTool 1.2 英語版
    http://www.jiongtang.com/blog/html/smartq5/sdupdatetool-english-version-v1-2.html

    SD差したら、SD UpdateTool起動して
    プルダウンメニュー一番上から
    SmartQ5
    SDのマウント場所(E,F,G...とか)
    SDのカードタイプ(SD, SDHC)
    を選択してStartボタンを押します。

    これをすることによりSDを読み込んだ初回読み込んだような記憶があります。
    通常はいらないのですが・・・・

    あとは起動時に-,+の間にあるmoveボタンを押しながら起動とか・・・・

    SDbootは慣れるまで何回か僕も試しました。
    これで解決できでしょうか。

    頑張ってください。僕もLinux初心者です。
    勉強中ですので、適切な解決方法お知らせ出来ない場合もありますので、その辺はご了承ください。

    返信削除
  3. すいません。あくまでも自己責任で実施してくださいね。色々やって壊れたなんて事になったら責任取れません。
    僕はSmartQ5は別に壊れても良いと思い(Linux勉強の為)色々弄ってますから・・・・

    返信削除
  4. 追記:
    SDの初回フォーマット時、Windows側でPanasonicの純正フォーマッタでフォーマットするのも良いかもしれません。その後、Linux上でパーティション分けしてください。それで駄目なら、Linuxでパーティション分けしたら、再度FAT32領域だけ、Windows上で右クリックのフォーマットでFAT32にフォーマットしてから作業するのが良いかもしれません。

    Panasonicのフォーマッターはすべての領域を初期化するので、パーティション分けした後に実行すると、EXT3領域もSwap領域も削除されますのでご注意ください。

    Panasonic SD Formatter:
    http://panasonic.jp/support/sd_w/download/sd_formatter.html

    返信削除
  5. うぉぉぉ。分かりました。
    根本的な間違いが・・・・
    ファイル名menu.listでは無くて「menu.lst」でした。
    すいません。
    記事修正しておきます。

    返信削除
  6. しかも、Step3のLinux上での準備したデータの移動保存先も間違ってました。Ubuntuのホームホルダーが基本なんで「/home/user/」ですね。

    返信削除
  7. coviaさんから直リン
    おめでとう、でいいのかな?

    返信削除
  8. Coviaのどこからですかね?

    返信削除
  9. 私もそっちからきました
    http://www.covia.jp/net/bbs/viewtopic.php?f=7&t=107
    ですね。

    返信削除
  10. 消えましたね。トピック....

    返信削除
  11. あれ・・本当に消えてますね(^^;
    本家版のFWのことなどすべてですか・・・
    まぁ現在のフォーラムの状況からするとデュアルブート
    のことまでさばききれないのかもしれませんね。

    おかげさまで無事デュアルブート成功しました。
    最初Ubuntuの方が起動時に固まってあせりましたが、
    二度目の起動で成功しました。

    パーティションの分け方ですが、
    Ubuntuからだとマウントできるので、
    Ubuntu向けのパーティションは小さくてもいいんですね(^^;
    多めにとってしまいました

    返信削除
  12. 正直,Coviaさんからのリンクは嬉しいですが、ここはフォーラムじゃないので、ここがマルチブートの受付にされたりなんかしたら大変です。べつにここではサポート受け付けて無いですからね。あくまでも個人的なブログで、SmartQ5利用者の為に少しでも情報が提供できればってことなので・・・・。

    何度も言いますが、僕はLinux初心者です。
    今年から勉強してます。

    返信削除
  13. logo, kernel, initrdのファイル名を8.3文字(名前8文字、拡張子3文字)以内に変更してマルチブートできるようになりました。

    kernel /boot/ubzimage
    initrd /boot/ubramfs.igz
    logo /boot/ubuntu.bm4

    返信削除
  14. ↑ご連絡ありがとうございます。
    最近SmartQ5をめっきり触らなくなりました・・・・
    なので、せっかく憶えたLinuxも徐々に記憶から薄れてきてます。
    貴重な情報ありがとうございました。
    記事に追加しておきます。

    返信削除