Embedded Tips

LinkIconQEMUブリッジ型ネットワークの設定
LinkIconディレクトリツリー全体をコピーする
LinkIcon組み込みファームウェア開発用環境

milk_btn_pagetop.png

 

QEMUブリッジ型ネットワークの設定

QEMUのホスト環境とバーチャル環境の間にブリッジ型ネットワークの設定を行います。QEMUはデフォルトでNAT型の仮想ネットワークになっています。

必要ツールのインストール

tunctlのインストール

uml-utilities をインストールします。
$ sudo apt-get install uml-utilities

bridge-utilsのインストール

bridge-utilsをインストールします。
$ sudo apt-get install bridge-utils

/etc/network/interfacesの編集

/etc/network/interfacesを編集します。
$ sudo vi /etc/network/interfaces

DHCPでIPアドレス設定する場合

auto lo
iface lo inet loopback

auto br0
iface br0 inet dhcp

bridge_ports eth0
bridge_stp off
bridge_maxwait 1

固定IPアドレスを設定する場合

auto lo
iface lo inet loopback

auto br0
iface br0 inet static
address 192.168.1.2
network 192.168.1.0
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1

bridge_ports eth0
bridge_stp off
bridge_maxwait 1

/etc/qemu-ifupの編集

/etc/qemu-ifup を編集します。
$ sudo vi /etc/qemu-ifup

#!/bin/sh
echo "Executing /etc/qemu-ifup"
echo "Bringing up $1 for bridged mode..."
sudo /sbin/ifconfig $1 0.0.0.0 promisc up
echo "Adding $1 to br0..."
sudo /usr/sbin/brctl addif br0 $1
sleep 3

ネットワークの再起動

ネットワークを再起動します。

$ sudo /etc/init.d/networking restart
 * Reconfiguring network interfaces...                                                
Waiting for br0 to get ready (MAXWAIT is 1 seconds).
                                                    [ OK ]

動作確認

ifconfigで動作確認をします。

$ ifconfig
br0       Link encap:イーサネット  ハードウェアアドレス 00:0c:29:06:f3:dc  
          inetアドレス:192.168.1.2  ブロードキャスト:192.168.1.255  マスク:255.255.255.0
          inet6アドレス: fe80::20c:29ff:fe06:f3dc/64 範囲:リンク
          UP BROADCAST RUNNING MULTICAST  MTU:1500  メトリック:1
          RXパケット:14 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:32 エラー:0 損失:0 オーバラン:0 キャリア:0
          衝突(Collisions):0 TXキュー長:0 
          RXバイト:1384 (1.3 KB)  TXバイト:4117 (4.1 KB)

eth0      Link encap:イーサネット  ハードウェアアドレス 00:0c:29:06:f3:dc  
          inet6アドレス: fe80::20c:29ff:fe06:f3dc/64 範囲:リンク
          UP BROADCAST RUNNING MULTICAST  MTU:1500  メトリック:1
          RXパケット:4169 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:408 エラー:0 損失:0 オーバラン:0 キャリア:0
          衝突(Collisions):0 TXキュー長:1000 
          RXバイト:609430 (609.4 KB)  TXバイト:42916 (42.9 KB)
          割り込み:19 ベースアドレス:0x2024 

lo        Link encap:ローカルループバック  
          inetアドレス:127.0.0.1  マスク:255.0.0.0
          inet6アドレス: ::1/128 範囲:ホスト
          UP LOOPBACK RUNNING  MTU:16436  メトリック:1
          RXパケット:3 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:3 エラー:0 損失:0 オーバラン:0 キャリア:0
          衝突(Collisions):0 TXキュー長:0 
          RXバイト:246 (246.0 B)  TXバイト:246 (246.0 B)

ブリッジ接続時のQEMU起動方法

ブリッジ接続を行う場合、QEMU起動時にオプション -net nic -net tap を付ける必要があります。

また、QEMUの起動は sudo で起動する必要があります。

sudo で起動しないと下記のようなメッセージが表示されます。
warning: could not open /dev/net/tun: no virtual network emulation
Could not initialize device 'tap'

2010.11.30
milk_btn_pagetop.png

 

ディレクトリツリー全体をコピーする

cpコマンドを使用する

cp -a コマンドを使用してディレクトリ全体をコピーします。

cp -a <コピー元> <コピー先>

tarコマンドを使用する

tarコマンドを使用すると、ファイル、ディレクトリ、シンボリックリンクをそのままの状態で、所有者情報も保存したままコピーすることができます。(cp -a が使用できない場合に使用すると便利です。)

$ tar cf - . | (cd /tmp; tar vxf -)
カレントディレクトリ以下の全てのファイルを/tmpにコピーします。

$ tar cf - ./work | (cd /tmp; tar vxf -)
カレントディレクトリ下のworkディレクトリ以下の全てのファイルを/tmpにコピーします。

2010.11.29
milk_btn_pagetop.png

 

組み込みファームウェア開発用環境

組み込み用ファームウェアの構築には次のようなユーティリティツールやライブラリが必要になります。

gcc
g++
gawk
binutils
patch
bzip2
flex
bison
make
gettext
pkg-config
unzip
zlib
libc
wget
subversion
ncurses

2010.11.07
milk_btn_pagetop.png

2010.11.07