ysku's blog

ウェブ・無線通信・組み込みとか

Pandaboard ES Rev B3へのUbuntuのインストール

こちらのサイトを参考にしました
Debian: Getting Started with the PandaBoard - Linux Guides - Engineering and Component Solution Forum - TechForum │ Digi-Key

Pandaboard ES Rev B3は以前のバージョンとメモリ管理のルーチンが異なるようで、普通にインストールができないようです

【準備するもの】
PC (Ubuntuがインストールされたもの)
Pandaboard ES Rev B3
SDカード(4GB以上)
シリアルポート
HDMIケーブル
HDMI対応ディスプレイ
キーボード

【手順】
UbuntuPC上で、64bit版を使用している場合は次のパッケージをインストール

# apt-get install libc6:i386 libstdc++6:i386 libncurses5:i386 zlib1g:i386

続いてクロスコンパイラのダウンロード

# wget -c https://releases.linaro.org/14.09/components/toolchain/binaries/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux.tar.xz

展開

# tar xf gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux.tar.xz

設定

# export CC=`pwd`/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/arm-linux-gnueabihf-

1)U-Boot
ダウンロード
~/

# git clone git://git.denx.de/u-boot.git
# cd u-boot/
# git checkout v2014.10 -b tmp

パッチの適用
~/u-boot

# wget -c https://raw.githubusercontent.com/eewiki/u-boot-patches/master/v2014.10/0001-omap4_common-uEnv.txt-bootz-n-fixes.patch
# patch -p1 < 0001-omap4_common-uEnv.txt-bootz-n-fixes.patch

コンフィギュレーションとビルド
~/u-boot

# make ARCH=arm CROSS_COMPILE=${CC} distclean
# make ARCH=arm CROSS_COMPILE=${CC} omap4_panda_defconfig
# make ARCH=arm CROSS_COMPILE=${CC}

2)Linux Kernel
参考サイトにはOld Board File TreeとDevice Treeがあるが、現在ではDevice Treeが推奨されている

# sudo apt-get install git git-core git-doc
# git config --grobal user.name “<username>”
# git config --grobal user.email “<user@user.com>”

ダウンロード
~/

# git clone https://github.com/RobertCNelson/armv7-multiplatform.git
# cd armv7-multiplatform

v3.17.xのブランチからチェックアウトする
~/armv7-multiplatform

# git checkout origin/v3.17.x -b tmp

ビルド
~/armv7-multiplatform

# ./build_kernel.sh

3)Root File System
ダウンロード
~/

# wget -c https://rcn-ee.net/deb/minfs/trusty/ubuntu-14.04-minimal-armhf-2014-07-07.tar.xz

検証
~/

# md5sum ubuntu-14.04-minimal-armhf-2014-07-07.tar.xz
c30fb91012701cdbfa00bb6c86868d0a ubuntu-14.04-minimal-armhf-2014-07-07.tar.xz

ファイルの展開

# tar xf ubuntu-14.04-minimal-armhf-2014-07-07.tar.xz

4)Setup microSD/SD card
SDカードをUbuntu PCに差し込み、dmesgなどで割り当てられたデバイスを確認
今回は/dev/sdbだったので以下、/dev/sdbとする
自動でマウントされていたらアンマウントしておく
microSD/SD cardを削除する

# sudo dd if=/dev/zero of=/dev/sdb bs=1M count=10

ブートローダーをインストールする
~/

# sudo dd if=./u-boot/MLO of=/dev/sdb count=1 seek=1 conv=notrunc bs=128k
# sudo dd if=./u-boot/u-boot.img of=/dev/sdb count=2 seek=1 conv=notrunc bs=384k

パーティションを作成する

# sudo sfdisk --in-order --Linux --unit M /dev/sdb <<-__EOF__
(上のコマンドを実行した後に以下を順次入力)
>1,,0x83,*
>__EOF__

パーティションをフォーマットする

# sudo mkfs.ext4 /dev/sdb1 -L rootfs

パーティションをマウントする

# sudo mount /dev/sdb1 /media/rootfs/

5)Install Kernel and Root File System

# ls ~/armv7-multiplatform/deploy

上記のコマンドを実行すると.tar.gzファイルが3つあるはずなのでそのファイル名を見てカーネルのバージョンを確認
今回は3.17.1-armv7-x3だったのでこれを環境変数に設定

# export kernel_version=3.17.1-armv7-x3

ルートファイルシステムをコピーする
~/

# sudo tar xfvp ./*-*-*-armhf-*/armhf-rootfs-*.tar -C /media/rootfs/

/boot/uEnv.txtの作成
~/

# sudo mkdir -p /media/rootfs/boot/
# sudo sh -c "echo 'uname_r=${kernel_version}' > /media/rootfs/boot/uEnv.txt"

Device Tree Binary

# sudo sh -c "echo 'dtb=omap4-panda-es-b3.dtb' >> /media/rootfs/boot/uEnv.txt"

Kernelファイルのコピー
kernelイメージ:

# sudo cp -v ./armv7-multiplatform/deploy/${kernel_version}.zImage /media/rootfs/boot/vmlinuz-${kernel_version}

Kernel Device Tree Binaries:
~/

# sudo mkdir -p /media/rootfs/boot/dtbs/${kernel_version}/
# sudo tar xfv ./armv7-multiplatform/deploy/${kernel_version}-dtbs.tar.gz -C /media/rootfs/boot/dtbs/${kernel_version}/

Kernel Modules:
~/

# sudo tar xfv ./armv7-multiplatform/deploy/${kernel_version}-modules.tar.gz -C /media/rootfs/

File System Table(/etc/fstab)
/etc/fstab

# sudo sh -c "echo '/dev/mmcblk0p1  /  auto  errors=remount-ro  0  1' >> /media/rootfs/etc/fstab"

(ここでは/dev/mmcblk0p1でなく、/dev/sdbなどを設定しないようにしてください)

6)Networking
/etc/network/interfacesを編集する

# sudo vi /media/rootfs/etc/network/interfaces

以下を書き加える

auto lo
iface lo inet loopback
 
auto eth0
iface eth0 inet dhcp

シリアルログイン
新しく/etc/init/serial.confを作成する

# sudo vi /media/rootfs/etc/init/serial.conf

以下を書き加える

start on stopped rc RUNLEVEL=[2345]
stop on runlevel [!2345]
 
respawn
exec /sbin/getty 115200 ttyO2

WiFiの設定
ファームウェアをインストールする
~/

# git clone git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
# sudo mkdir -p /media/rootfs/lib/firmware/ti-connectivity
# sudo cp -v ./linux-firmware/ti-connectivity/* /media/rootfs/lib/firmware/ti-connectivity

設定

# sudo vi /media/rootfs/etc/network/interfaces

以下を書き加える

auto wlan0
iface wlan0 inet dhcp
    wpa-ssid "essid"
    wpa-psk  "password"

microSD/SDカードを取り外す

# sync
# sudo umount /media/rootfs

パンダボードにSDカードを差し込み起動
ユーザ名:ubuntu
パスワード:temppwd
でログインする

今回はこれまでです
これで、PandaboardにてCUI上でUbuntuを使用出来るようになります