[[bc10-router]]~ [[bc10-router/u-boot update]] #contents *tftpboot [#s8fb0ca2] ボード上に直付けされた Ethernet コネクタのない bc10 のような機器でも~ OMAP3 EHCI に対応した u-boot-arm と USB-Ethernet アダプターを使用することで~ tftpboot を行うことができます。~ ~ ドライバー追加、kernel 設定変更、kernel 更新、など開発途中で頻繁に kernel を入れ替えたい場合には~ tftpboot が出来るといちいち SDカードに uImage をコピーせずに済むので効率的です。~ ~ uImage の更新の容易さを生かすため、tftpサーバは~ kernel をビルドするマシンに設定するのが一般的です。~ ~ bc10-router は arago-project の Toolchain を使って kernel をビルドしているので、~ Ubuntu 10.04 環境を前提に手順を紹介します。~ **USB-Ethernet アダプター [#rbfb1176] #include(bc10-router/tftpbootable USB-Ether) #include(bc10-router/tftpbootable USB-Ether,notitle) **tftpサーバ設定 [#pdaf3ac3] Ubuntu 10.04 では tftp サーバとしていくつかのパッケージを利用できますが、~ ここでは atftpd を使用します。 $ sudo apt-get install atftpd 起動管理のため openbsd-inetd がいっしょにインストールされますが、~ 続いて xinetd をインストールすると openbsd-inetd は削除されます。~ $ sudo apt-get install xinetd xinetd の tftp 設定ファイルを作成・編集します。 $ sudo vim /etc/xinetd/tftpd 内容は以下です。 service tftp { protocol = udp port = 69 socket_type = dgram wait = yes user = nobody group = nobody server = /usr/sbin/in.tftpd server_args = --logfile /var/log/atftpd.log /var/lib/tftpboot only_from = 192.168.0.0/24 disable = no } only_from は使用しているネットワークによって適切なネットワークアドレスに変更してください。~ server_args で設定した kernel uImage の格納場所を作成します。 $ cd /var/lib $ sudo mkdir tftpboot tftpd への接続状況がわかる log を /var/log/atftpd.log に出力するよう設定したので、~ log ファイルを作成しておきます。 $ sudo touch /var/log/atftpd.log $ sudo chown nobody:nobody /var/log/atftpd.log xinetd を再起動します。 $ sudo /etc/init.d/xinetd restart これで tftp サーバの設定はできました。~ ~ tftp で load する kernel uImage は uImage.beagle という名前で /var/lib/tftpboot に置く必要があります。~ [[bc10-router/kernel update]] の手順でビルドした uImage を以下のように kernel ディレクトリからコピーしてください。 $ sudo cp ~/linux-stable/arch/arm/boot/uImage /var/lib/tftpboot/uImage.beagle **bc10 tftpboot 設定 [#yb5d535a] USB-Ethernet アダプターを直接あるいは USB ハブ経由で bc10 の USB コネクターに接続し、~ シリアルコンソールから入力できる状態で bc10 を起動します。~ ~ u-boot が起動し kernel を load するまでの入力待ちの間にキー入力をし、~ u-boot のコマンドラインインタフェースへ入ります。 U-Boot 2012.10-12320-g39826f0 (Oct 22 2012 - 17:03:16) OMAP3530-GP ES3.1, CPU-OPP2, L3-165MHz, Max CPU Clock 600 mHz OMAP3 Beagle board + LPDDR/NAND I2C: ready DRAM: 256 MiB NAND: 512 MiB MMC: OMAP SD/MMC: 0 *** Warning - bad CRC, using default environment In: serial Out: serial Err: serial Beagle Rev C1/C2/C3 No EEPROM on expansion board Die ID #4ada00040000000004037b700d01401a Net: Net Initialization Skipped No ethernet found. Hit any key to stop autoboot: 3 OMAP3 beagleboard.org # USB-Ethernet アダプターを認識させ、tftp 用のネットワークの設定を行い~ uImage をロードします。~ ipaddr は bc10 に設定するIPアドレス、~ serverip は tftp サーバのIPアドレスです。 OMAP3 beagleboard.org # usb start (Re)start USB... USB0: USB EHCI 1.00 scanning bus 0 for devices... 4 USB Device(s) found scanning usb for storage devices... 0 Storage Device(s) found scanning usb for ethernet devices... Warning: asx0 using MAC address from net device 1 Ethernet Device(s) found OMAP3 beagleboard.org # setenv ipaddr 192.168.0.128 OMAP3 beagleboard.org # setenv netmask 255.255.255.0 OMAP3 beagleboard.org # setenv serverip 192.168.0.203 OMAP3 beagleboard.org # tftpboot tftpboot 実行後、uImage.beagle が正しく読み込まれている場合以下のようなログが表示されます。 Waiting for Ethernet connection... done. Using asx0 device TFTP from server 192.168.0.203; our IP address is 192.168.0.128 Filename 'uImage.beagle'. Load address: 0x80200000 Loading: T ################################################################# ################################################################# ################################################################# ################### done Bytes transferred = 3137352 (2fdf48 hex) uImage がメモリに正しく読み込まれたら、bootargs を設定します。~ OMAP3 beagleboard.org # setenv bootargs console=ttyO2,115200n8 mpurate=auto buddy=none camera=none vram=12M omapfb.mode=dvi:640x480MR-16@60 omapdss.def disp=dvi root=/dev/mmcblk0p2 rw rootfstype=ext3 rootwait bootm コマンドを実行し正常に起動したら OK です。 OMAP3 beagleboard.org # bootm ## Booting kernel from Legacy Image at 80200000 ... Image Name: Arago/3.7.2/beagleboard Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 3425904 Bytes = 3.3 MiB Load Address: 80008000 Entry Point: 80008000 Verifying Checksum ... OK Loading Kernel Image ... OK OK Starting kernel ... Uncompressing Linux... done, booting the kernel. [ 0.000000] Booting Linux on physical CPU 0 [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 3.7.2 (otsuka@bc10-dev) (gcc version 4.5.3 20110311 (prerelease) (GCC) ) #1 Fri Jan 25 22:45:08 JST 2012 [ 0.000000] CPU: ARMv7 Processor [411fc083] revision 3 (ARMv7), cr=10c53c7d [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT nonaliasing instruction cache [ 0.000000] Machine: OMAP3 Beagle Board 以下略 u-boot で起動時に設定したい項目がある場合は bootargs に no_suspend_console を加えるなど~ 必要な設定を適宜追加・削除してください。