Jp:Running Linux from an SD card
Contents
はじめに
ファームウェアの紹介ページで説明されているように、PandoraはSD card からのシステム起動も可能です。このチュートリアルでは、ブートできるAngstromのオペレーティングシステムのコピーを使用して、SDカードを作成するために必要な手順を説明します。
注記: このチュートリアルでは、Linuxを使用していることを想定し、パンドラ上で実行する必要がある例を示します。 |
ファームウェアのコピーを取得する
このトピック で説明された、PandoraのNAMDからデータを取得するために使用できる方法があります。それは、単にtarファイルを抽出するだけで簡単です。
- ここ (pandora-rootfs.tar.bz2 が何をするのか) を見て下さい、そして公式のOpenPandoraのサイトから最新バージョンを入手して下さい。このファームウェアのバージョンが、不安定でテストされていないかもしれないことに注意してください!
- 先のリンクに障害がある場合は、この古いリファレンスのイメージ をダウンロードして下さい。
- 上記の二つが動作しない場合は、さらに古いイメージ をダウンロード出来ます。
- また、SDカードのパーティションに、NAND上で動作するファームウェアをコピーすることができます。これは、以下の独自のセクションに示す通りです。
SDカードのパーティション
このステップはオプションです。
SDカードをいくつかのパーティションに分割したい場合(見て、ブート用マルチパーティションSDカードの作成方法)は、パーティションテーブルを作成するために、Pandoraのcfdiskコマンドラインツールを使用することができます。Pandoraのファームウェア(Zaxxon HF5のような)は、FATパーティションをフォーマットするコマンドを持っていないことに注意してください、FAT/ext2/swapを使用する場合、後で別のシステム(Windows環境下で、ディスク管理ツールを使用)で、最初のパーティションをフォーマットする必要があります。
カードが左側のスロットにある場合:
sudo cfdisk -z /dev/mmcblk0
cfdisk -z は、クリーンなパーティションテーブルから始めます - 現在設定されているかを確認したい場合は、cfdisk /dev/mmcblk0を使用してください。
プライマリパーティションのみを使用してください(よって4分割までに限定です)。
ext2にSDカードをフォーマット
あなたは単一のext2パーティションを持つように、SDカードをフォーマットする必要があります; ext3 も同様[1] で、より信頼性が高い[2]です。あなたが好むなら、2番目にswapパーティションを持つことができます。GUIツールと同様に使用できるコマンドラインツールがあります。
コマンドラインを使用
正しいデバイスにアクセスしているのを確認してから、これらのコマンドラインツールを使用するように注意してください。あなたに尋ねることはありませんが、デバイス上のデータが破壊されます。このコマンドは、空のext2フォーマットされたファイルシステムを持つ、既存のパーティションに置き換えます(ほとんどのSDカードは、出荷時に単一のFATパーティションで設定されています)。/dev/mmcblk0p1 をあなたのSDカード(左のスロットで、firstパーティション)と仮定し、LABELNAME をパーティション名とします:
mkfs.ext2 -L LABELNAME /dev/mmcblk0p1
もしSDカードをフォーマットして問題が発生した場合、最初にそれをunmountしてみてください:
sudo umount /media/[LABELNAME of SD card]
GUIツールを使用
GUIツールを使用すると、誰かが使用する方法を指示する必要がないほど簡単です。今のところこれは読者のために、宿題として残しておきます(誰かが使用方法を書き込むまで)。
コピーとブート
SDカードにファイルをコピー
ダウンロードした(もしくは作成した)tar.bz2ファイルを持つディレクトリに移動(cd 実行)して次を実行:
sudo tar -xvjf <tarfile>.tar.bz2 -C <SD card>
Pandora上でこれを行う場合、<SD card> は /media/mmcblk0p1 のようになります(Pandoraの第一(左側)SDカードスロットの場合)。ラベルがない場合、Ubuntu上では /media/disk のようになります。また、このためのGUIツールを使用して試すことができますが、私は強運を持っていませんでした。
もしくはNANDからSDカードにファームウェアをコピー
以下は、パスワードを聞いてきます。すべてにsudoを使うのは無駄だろうと思ったので、すべての操作はroot権限が必要です。 root下にmountされた他のファイルシステム(カーネルの仮想ファイルシステム /proc および /sys 、そしてSDカードのような)と共に、root fsを別の場所("/mp")にmountします。これにより、SDのファイルシステムにNANDの内容のライブコピーを取ることができます。
sudo su
mkdir /mp
mount --bind / /mp
cp -va /mp/* /media/<SD card>
umount /mp
rmdir /mp
exit
boot.txtの設定
boot.txt(または、自動的にbootしたい場合はautoboot.txt)と呼ばれる新しいファイルを作成し、コピーして以下のテキストを貼り付けます。SDカードのrootのrootにそのファイルをコピーします。
あなたがWindows上でファイルを編集する場合、Notepad++ のような高度なテキストエディタを使用し、UNIX形式に変換してください(NP++では: Edit -> EOL Conversion -> UNIX format)。DOS形式の改行がある場合は、uImageのファイル名に隠された文字を付加するので、ext2load は "file not found" のようなエラーで失敗するでしょう。 |
boot.txt (公式ファームウェアサイトより )
setenv bootargs debug root=/dev/mmcblk0p1 rw rootdelay=2 console=ttyS0,115200n8 vram=6272K omapfb.vram=0:3000K
ext2load mmc 0 0x80300000 /boot/uImage-2.6.27.46-omap1
bootm 0x80300000
注記: Hotfix 5 だと、boot.txt はこのようになる (uImageの名前は変更される):
setenv bootargs debug root=/dev/mmcblk0p1 rw rootdelay=2 console=ttyS0,115200n8 vram=6272K omapfb.vram=0:3000K
ext2load mmc 0 0x80300000 /boot/uImage
bootm 0x80300000
この boot.txt では、カードがext2でフォーマットされ、SDカードからカーネルをロードすると仮定していることも注意してください。ext2フォーマットされたSDカードから起動したくない場合は、 次を使って下さい boot.txt
setenv bootargs root=/dev/mmcblk0p1 rw rootdelay=2 vram=6272K omapfs.vram=0:3000K
ubi part boot && ubifsmount boot && ubifsload ${loadaddr} uImage && bootm ${loadaddr} && boot
この場合、ブートローダーが内部NANDメモリー上のカーネルを探して教えてくれます(テストが行われないことに注意)。
両方の boot.txt は、左側のSDカードスロット、最初のパーティションからブートしていると仮定しています。右のスロットから起動する場合には、"mmcblk0p1" から "mmcblk1p1" に変更しましょう。
ブート用マルチパーティションSDカードの作成方法
SDカードは、複数のパーティションを持つことが可能で、それらのいずれかからブート可能です。 例えば、以下のようにカード上に3つのパーティションがある場合:
- パーティション1: FAT
- パーティション2: ext2 (rootfsを配置する場所)
- パーティション3: swap
1番目のパーティションのrootに(auto)boot.txtファイルを置き、U-Bootを2番目のパーティションからシステムをブートする正しい場所へ指示します。 これは、rootfsの場所を示すsetenvの "root" パラメータと、ext2loadの "mmc x:x" パラメータによって指示されます。 上記の例の場合は、以下のようなFATパーティションのrootにある (auto)boot.txt(Windows/ Macのコンピュータを使用して簡単に編集可能)が必要:
setenv bootargs debug root=/dev/mmcblk0p2 rw rootdelay=2 console=ttyS0,115200n8 vram=6272K omapfb.vram=0:3000K
ext2load mmc 0:2 0x80300000 /boot/uImage
bootm 0x80300000
注記: スロット番号は0(0は左のSDスロット、1は右のSDスロット)から始まり、パーティション番号は1から始まります!
おそらく同様に、FATパーティションのrootにカーネル (uImage) を置き、上記のようにブートするのに "ext2load" の代わりに "fatload" が使えます(これは、テストされていません!):
fatload mmc 0:1 0x80300000 uimage
システムのBoot
右肩ボタンを押しながらPandoraの電源を投入すると、SDカードから起動できます。(boot.txtの代わりにautoboot.txtを作成することを選択した場合、この手順は必要ありません) 。この場合未設定の画像になり、起動に少し時間がかかり、そして初回起動のダイアログが表示されることに注意してください。
NANDへのアクセス
一度SDからシステムを起動したあと、NANDのrootfsから起動したい場合があります。その時は以下のように行って下さい。
sudo mkdir /mnt/nand
sudo ubiattach /dev/ubi_ctrl -m 4
sudo mount -t ubifs ubi0:rootfs /mnt/nand
他の情報
システムにアクセス可能な領域を増やすために、SDカードを使用する代わりの方法は、 OS Extend です。これは、rootファイルシステムが複数の物理デバイス上に存在することができます。