emblog

webのチラ裏、linux、Qt関連はまった&はまってる事etc

BeagleBoard DE Ubuntu (起動後のupdate作業)

BeagleBoard に Ubuntu11.10 インストール後の起動後にする事HowTo

SDカードへのubuntuのイメージの入れ方等はBeagleBoard DE Ubuntu (SDカードにイメージのインストール) - emblogを参照してください。
基本は、elinux.org(BeagleBoardUbuntu)に書いてある通りだったりする。

***構成***

使用Host PC OS : Ubuntu12.04
使用BeagleboardBeagleBoard C4 (xMじゃないよw)
USBハブ : USB2.0ハブ4ポート(¥700ぐらい)
USB/LAN変換 : USB2.0 有線LANアダプタ(¥1,000ぐらい)
BeagleBoard用シリアルケーブル : BBC01(¥1,600ぐらい 高!)
SDカード : 8GbyteSDカード(最小で4GBは欲しい)

何はともあれ起動させる。

beagleboardに、

  1. USBハブ
  2. USB/LAN変換
  3. シリアルケーブル
  4. SDカード(Ubuntuプレインストールイメージを入れたもの)
  5. USBminiBケーブル(PCに接続し、とりあえず基板への電源供給用に使用)

を接続します。

シリアル通信設定

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)