Embedded Tips
QEMUブリッジ型ネットワークの設定
ディレクトリツリー全体をコピーする
組み込みファームウェア開発用環境
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'
ディレクトリツリー全体をコピーする
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にコピーします。
組み込みファームウェア開発用環境
組み込み用ファームウェアの構築には次のようなユーティリティツールやライブラリが必要になります。
gcc
g++
gawk
binutils
patch
bzip2
flex
bison
make
gettext
pkg-config
unzip
zlib
libc
wget
subversion
ncurses
2010.11.07