Top > SmartQ5 > InstUbuntu
Table of Contents

SDカードにSmartQ5のハードウェア製造元配布のubuntuをインストールしてみます。もうすでに何人もの方がやられていることですが、例によって自分のための覚え書きとして記します。覚え書きなので間を端折ってありますから、このとおり実施すれば誰でもできる、というものではありません。ご留意ください。

環境

  • SmartQ5: Covia版
  • SDカード: Greenhouse GH-SDHCC32C6D (32GB, class6)
  • SDカードリーダ: Princeton PRD-123X (USB接続)
  • Linuxマシン: Vine Linux 3.1

SDカードにパーティションを切る

手順

  1. すでにSmartQ5とともに使っているSDカードを使うので、内容をバックアップ。FAT32なのでWindows上へのバックアップで問題なし。
  2. SDカードリーダをLinuxマシンにつなぎ、SDカードを挿入すると自動的に認識される。
  3. fdisk -l でデバイス名を確認(今回は /dev/sda だった)
  4. 詳細は省くが、fdisk /dev/sda で、次のとおりパーティションを切る。なおC=63, H=255, S=3930
    デバイス名サイズ(シリンダ数)タイプ
    /dev/sda1864FAT32(0x0c)
    /dev/sda21000Linux
    /dev/sda51000Linux
    /dev/sda61000Linux
    /dev/sda7残り全部Linux swap(0x82)
  5. 最初にバックアップしたファイルを第1パーティションにリストア。

嵌った点及びTips

  • Windows上でCygwinのfdiskを使うと、初期パーティションはちゃんと見えるし操作もできるが、パーティションテーブルの書き込み(wコマンド)で Error closing file と表示されて失敗する(もう一度fdiskを起動して見てみると、変更前のパーティションが表示される)。
  • LinuxマシンではなくVirtualBox上のubuntuからやろうとしたが、SDカードが認識されなかった。このケースではSDカードはフロッピーディスクの一種として認識されたが、fdiskやgpartedによるアクセスはできなかった(SDカードにあたるフロッピーディスクを表示できなかった)。
  • LinuxでSDカードリーダの取り外し方がよくわからなかった。結果的には次の方法で。
    1. cat /proc/scsi/scsi で 次の4つの番号を調べる。
      • ホストアダプタ番号 (Host)
      • チャネル番号 (Channel)
      • SCSI ID (Id)
      • Logical Unit Number (Lun)
    2. 取り外す(Host, Channel, Id, Lun には上で調べた番号を入れる)
        echo 'scsi remove-single-device Host Channel Id Lun' > /proc/scsi/scsi
      追加するときはadd-..とやるらしい。scsiaddを使うともっと簡単になるそうだ。
  • カードリーダからSDカードだけを取り外すときは、mountでSDカード関係のマウントがされていないかどうかを確認して、あればすべてumountする。なければいきなりメディアを引きぬいてOK。
  • SmartQ5へのSDカードの出し入れ(狭いスリットの間をクリックがあるまでプッシュしなければいけない)には小さい爪切りの太い方の柄が便利。

SDカードのフォーマット

  1. FAT32パーティション:

    mkfs.vfat /dev/sda1

    またはWindows上でフォーマットしてもよい。
  2. 3つのLinuxパーティションとスワップ領域:

    mkfs.ext3 /dev/sda2
    mkfs.ext3 /dev/sda5
    mkfs.ext3 /dev/sda6
    mkswap /dev/sda7

必要なファイルを得る

  1. 智器(SmartDevices)社の下記サイトからSmartQ5用ファームウェアのアーカイブをダウンロードする。今回はver.5.2の667MHz(ノーマルクロック)版を使った。800MHzはオーバークロック版。

    http://en.smartdevices.com.cn/Support/Downloads/SmartQ5/

    WinCEなんてのもありますね。興味津々。
  2. アーカイブは.rar形式なのでunrar等のツールで展開するとSmartQ5というファイル一つが得られる。これはそのまま本体フラッシュメモリに書きこめる形式である。
  3. ファイルSmartQ5を展開するために、Windows上ではSmartQ5Extractorが使える。これは.Netを使って書かれているので、unix上でもmonoを使えば実行可能らしいが、ここではsq5gogo氏の書かれたsq5ext.pyというスクリプトを使う。すると数個のファイルが得られる。
  4. それらのうち、以下の手順では次のファイルを使用することになる。
    • zimage
    • rootfs.tar.gz
    • homefs.tar.gz

以下手順はSDカードの読み書きできるunix上でスーパーユーザによっておこなうことを前提。

FAT32パーティションへの書き込み

手順

  1. FAT32パーティションに/bootディレクトリを作ってzimageをそこへコピー

    mount /dev/sda1 /mnt
    mkdir /mnt/boot
    cp -p zimage /mnt/boot/zimage-ubuntu

    マルチブートにしたいのでzimageはファイル名を変えておく。 最後にエラーメッセージが出るが気にしない(タイムスタンプを変えたくないので-p)。
  2. テキストファイルmenu.lstを次の内容で作成する(ブートローダはgrubかな?)。

    title ubuntu
    kernel /boot/zimage-ubuntu
    param root=/dev/mmcblk1p2 init=/sbin/init rootwait splash
    logo /boot/ubuntu.bmp4

    ルートデバイスのファイル名については下記注釈を参照。logo~はbmp4形式のアイコンファイル名。アイコンファイルを作るツールもあるようだが、私はこのサイトで紹介されているできあいのアイコンファイルを頂いてきて使用している。アイコン不要ならこの行は削除。
  3. アンマウント

    umount /mnt

注釈

ルートデバイスのファイル名について
flashとパーティションの関係は以下のとおり

本体flash:mmcblk0
SDカード:mmcblk1

末尾のpNは第Nパーティションを示す。
menu.lstに記載するファイル名は8.3形式
menu.lstに記載するファイル名(カーネルイメージやアイコンファイルのファイル名など)は、語幹8文字+拡張子3文字までの長さでないと、(組み込みの)ブートローダが認識してくれない(起動時のメニューが出ないでAndroidが起動する)ようです。注意。 と思っていたのだが、私の勘違いで、長いファイル名でもきちんと起動する。

Linuxパーティションへの書き込み

  1. rootfsとhomefsをLinuxパーティションへ展開。

    mount /dev/sda2 /mnt
    tar xzpf rootfs.tar.gz -C /mnt/
    tar xzpf homefs.tar.gz -C /mnt/home/

  2. (/mnt)/etc/fstabを次のとおり変更

    proc /proc proc defaults 0 0
    /dev/mmcblk1p2 / ext3 relatime 0 1
    /dev/mmcblk1p7 none swap sw 0 0

    そして

    /dev/mmcblk0p2 /home ext3 noatime 0 2

    の行は削除
  3. (/mnt)/etc/init.d/smartqの中の4つの行をコメントアウト

    #rm -rf /var/log/*

    #rm -rf /var/log/*

    #rm -f /var/reserve/*

    #rm -f /var/cache/apt/archives/*.deb

    ~/var/log/*の行は二つある。
  4. (/mnt)/usr/local/bin/homelinkを次のとおり変更

    #!/bin/bash
    exit

    これ以降の行は残しておいても可。
  5. ディレクトリを作成

    mkdir /mnt/var/log/apt
    mkdir /mnt/usr/share/info

  6. アンマウント

    umount /mnt

起動

  1. Androidが起動していたらシャットダウンする。その後普通に電源ボタンを長押しして起動。うまくいけば、ブートセレクタの画面となり、アイコンが2つ(智器のアイコンと?のアイコン)表示される。?アイコンの方が今回インストールしたubuntu。
  2. アイコンの選択は + ボタン、起動はzoomボタン(Androidではmenuボタン)で。
  3. Select language でENGLISHを選択
  4. タッチパネルのキャリブレーションを行う。 これでubuntuのデスクトップ画面になります。

嵌った点及びTips

  • カーネルイメージファイル(kernelステートメントで指定)及びアイコンファイル(logoステートメントで指定)のファイル名の長さが15文字以上だと(ファイルが存在してもしなくても)ブートセレクタは出ず、flashから起動するようだ。
  • 我家のSmartQ5は、個体差なのかどうか分からないが、電源ボタン長押しだけではブートセレクタの画面が出ず、flashから起動してしまうことが多い。電源ボタン長押しの後、画面を横位置でみて左上のところにカーソルが点滅したぐらいのタイミングでリセットボタンを押すとブートセレクタの画面が出る。また、ACケーブルを繋いだ状態で起動するのも効果がある。
  • カーネルイメージファイルが見つからないとselectボタンを押したあとに電源が落ちる(ACに接続している場合は代わりにリブートして再度ブートセレクタが出る。これはたぶん個体差)。
  • アイコンファイルが見つからないと代わりに?を白地の丸で囲んだようなアイコンが表示される。
  • アイコンファイルのファイル名が14文字ちょうどでも?アイコンが表示されることが あったので13文字以下推奨。
  • アイコンファイルはbmp4形式で、サフィックスは .bmp4 でないといけない(ようだ)。
  • 背景画像はbmp4形式で、ファイル名は bgbmp.bmp4 固定である(といわれている)。
  • アイコンファイルの作り方や作成ツールに関しては http://voodooman-smartq5.blogspot.com/2009/08/sd-boot.html を参照。

SmartQ5上での設定

以下ほとんどは、参考ページに挙げたsq5gogoさんの記事のコピーです。

上記文書にはGDebi(智器アイコン > System Tools > GDebi Package Installer)は起動しないように注意、削除せよとあるが、削除のしかたが分からないのでとりあえず注意する。

  1. WiFiアイコンをクリックしてWifiの設定。ネットワークを選択してパスワードを入力して接続できたら×でウィンドウを閉じる。
  2. 太陽アイコン > setup > Use AC で、AC電源接続時はサスペンドもパワーオフもしないようにする。
  3. Accesories > evilvte を起動してスーパーユーザになり、パスワードを変更。

    su -s
    passwd
    rootのパスワードを設定
    passwd user
    userのパスワードを設定

    表示されないパスワードの変更にはてこずる。アイロンのようなマーク長押しがキーボードの設定なので、打ちやすいキーボードに変えるとよい(transがおすすめ)。
  4. 暫定的なロケール設定

    export LC_ALL="C"

  5. スワップを有効にする

    swapon -s
    で/dev/mmcblk1p7が表示されなかったので以下を実施
    mkswap /dev/mmcblk1p7
    swapon -a
    swapon -s
    で再確認

  6. sshdをインストール

    apt-get update
    apt-get install openssh-server

  7. 智器アイコン > Preferences > Wicd Network Manager でSmartQ5のIPアドレスを調べる。画面最下部のステータスバーにアドレスが表示される。

PCからSmartQ5にログインして設定

  1. PCからsshでSmartQ5にログイン(アドレスは192.168.2.33だったとする)

    ssh user@192.168.2.33 パスワードは先ほど設定したuserのパスワード

  2. スーパーユーザになる

    sudo -s

  3. ロケールの設定。/etc/default/localeの内容すべてを次のとおり置き換える。

    LANG="ja_JP.UTF-8"
    LC_ALL="ja_JP.UTF-8"
    LANGUAGE="ja_JP:ja:en_US:en"

  4. 一度ログアウトしてログインしなおす。

    exit
    exit
    ssh user@192.168.2.33
    sudo -s

    このとき

    -bash: warning: setlocale: LC_ALL: cannot change locale (ja_JP.UTF-8)

    というメッセージが出るが、日本語環境の設定作業が終われば出なくなるそうなので、無視して次へ進む。
  5. 不要なパッケージを消去

    apt-get purge gdebi fcitx language-pack-zh-hans language-pack-zh-hans-base
    ロケールに関するwarningが何回か出るが無視
    rm -rf /usr/share/locale-langpack/zh_CN (purgeで削除できなかったディレクトリを手動で削除)
    apt-get autoremove (依存関係をたどって使われていないパッケージを削除)
    apt-get clean (お掃除)

  6. タイムゾーンの設定

    dpkg-reconfigure tzdata
    ロケールに関するwarningは無視
    Asia/Tokyoを選択

    /etc/default/rcSの以下の行を変更

    UTC=yes

  7. リブート

    reboot

  8. ログイン

    ssh user@192.168.2.33
    sudo -s

  9. /etc/apt/sources.list のkarmicの行の上に次のとおりjauntyのリポジトリを追加

    deb http://ports.ubuntu.com jaunty main universe restricted multiverse

  10. /etc/apt/preferences の最終行の後に次の行を追加

    Package: libanthy0 anthy
    Pin: version 9100h*
    Pin-Priority: 1001

    Package: im-switch
    Pin: version 1.16*
    Pin-Priority: 1001

    Package: libscim8c2a scim-modules-socket scim-gtk2-immodule scim
    Pin: version 1.4.7*
    Pin-Priority: 1001

    Package: scim-anthy
    Pin: version 1.2.7*
    Pin-Priority: 1001

    Package: scim-bridge-agent scim-bridge-client-gtk scim-bridge-client-qt4
    Pin: version 0.4.14*
    Pin-Priority: 1001

  11. anthy(日本語IM)と日本語パックをインストール

    apt-get update
    apt-get install scim-anthy language-pack-ja
    localeがらみのメッセージが沢山出るが無視

  12. スーパーユーザから抜けてIMを切り替え

    exit
    im-switch -c
    6(scim-immodule)を選択

  13. リブート

    sudo reboot

以下はお好みで設定

  1. ログイン

    ssh user@192.168.2.33
    sudo -s

  2. デフォルトのユーザ環境設定をコピー

    cp /etc/skel/.bashrc ~/
    cp /etc/skel/.profile ~/
    cp /etc/skel/.bash_logout ~/

  3. jp106キーボード(外付け)を使う予定なので /etc/default/console-setup の次の行を次のとおり変更

    XKBMODEL="jp106"
    XKBLAYOUT="jp"

  4. マウスカーソルを表示してみる。~/.icons/default/index.theme の次の行をコメントアウト

    #Inherits=xcursor-transparent

参考になったページ

手順全体としては、

個々の操作については、

が大変参考になりました。ページ製作者の方々に感謝。

Tag: SmartQ5 智器 Smart Devices Covia Ubuntu Linux install