/var/log/messages

debugging with sixth sense

U-Boot で微妙な問題が出ているらしく

以下などを確認しつつ。

とりあえずソース入手など。

$ git clone git://github.com/swarren/u-boot.git
$ git checkout rpi_dev

あと、コンパイラの関係を以下で入手。

$ git clone git://github.com/raspberrypi/tools

で、以下でコンパイルなのかな。

$ export CROSS_COMPILE=../tools/arm-bcm2708/arm-bcm2708-linux-gnueabi/bin/arm-bcm2708-linux-gnueabi-
$ make rpi_b_config
$ make

ええと、include/configs/rpi_b.h を修正して

+//#define CONFIG_SYS_TEXT_BASE         0x00008000
+#define CONFIG_SYS_TEXT_BASE           0x00100000

make してみました。どうなるか。以下、make 出力の末端あたり。u-boot.bin ができてる模様。

  OBJCOPY examples/standalone/hello_world.srec
  OBJCOPY examples/standalone/hello_world.bin
  LDS     u-boot.lds
  LD      u-boot
  OBJCOPY u-boot.srec
  OBJCOPY u-boot.bin

とりあえずシリアルコンソールで確認してみよ。

とりあえず

動いた模様。

U-Boot 2014.04-rc1-g0b635b1-dirty (Apr 28 2014 - 21:12:34)

DRAM:  448 MiB
WARNING: Caches not enabled
MMC:   bcm2835_sdhci: 0
Using default environment

In:    serial
Out:   lcd
Err:   lcd
Net:   Net Initialization Skipped
No ethernet found.
** No partition table - mmc 0 **
Hit any key to stop autoboot:  0 
U-Boot> 

これ、-g 付けといて gdb でもごもごできるかな。

この先

tftp 起動で SDCard が認識できない、という問題が出ているのかどうか。

追記

色々用事をこなしてようやく再開。とりあえず tftpd を入れます。

$ sudo apt-get install tftpd-hpa

とりあえず raspbian を起動するようにしてみます。kernel.img を /srv/tftp 配下に置いておいて

U-Boot> usb start
(Re)start USB...
USB0:   Core Release: 2.80a
scanning bus 0 for devices... 3 USB Device(s) found
       scanning usb for storage devices... 0 Storage Device(s) found
       scanning usb for ethernet devices... 1 Ethernet Device(s) found
U-Boot> setenv serverip 192.168.2.109
U-Boot> setenv ipaddr 192.168.2.201
U-Boot> tftpboot 0x8000 kernel.img
Waiting for Ethernet connection... unable to connect.

む、通信ができてるかどうかをまず確認せねば、なのか。SD の中の kernel.img が起動するようにしてサブネットなどを確認。つうか有線な接続が色々な意味で微妙なんスけどどうしたものやら。

そりゃ良いとして色々問題ありつつもリトライしてみるに以下。

U-Boot> tftpboot 0x8000 kernel.img
Waiting for Ethernet connection... done.
Using sms0 device
TFTP from server 192.168.2.109; our IP address is 192.168.3.200
Filename 'kernel.img'.
Load address: 0x8000
Loading: *

大丈夫かな。。一応 RasPI 側のリンクランプはちゃんと点いてるので、てかいきなりカーネルかよ的なツッコミを自分でしていたり (ぇ

おそらくもの凄く時間がかかると見て、ちょい休む。てかこれ本当に通信できてるのかな。

暫く放っておいたけど

状態変わらず。リンクランプは点いてるのでネットワークの問題ではないと信じたい。

リトライ

小さいファイルで試してみます。どうなるか、と思ったら駄目でした。サブネット違うから通信できない、とかな阿呆な理由なのかどうか。

確認してみるに

$ tftp 192.168.2.109
tftp> get rpi-micon.img
Transfer timed out.

タイムアウトしてますね。ping も駄目でした。同じサブネットでないと駄目なんですが、有線接続なソレが、って思ってたら一つ有線接続している RasPI な onion router があることを思いだしました。

シリアルで繋いで電源入れて無線のパスワード確認。とりあえず tftpd-hpa を入れて、ってファイル転送がやりにくいな。確か無線 AP に接続してる側から ssh とかで接続はできない形にした気がしています。

よくよく考えてみるにもう片方の RasPI からだと有線な同じサブネットなのでログインできるはず、と OnionRouter な /etc/ssh/sshd_config を修正して接続確認したら無問題でした。やってることが無茶苦茶で段々ワケワカになりつつありますが頑張ります。

ファイル転送して動作確認してみました。

pi@raspberrypi:~$ tftp 192.168.3.4
tftp> get kernel.img
Transfer timed out.

ぐぬぬ。同じサブネットでも駄目か。もしかして OnionRouter 側の iptables とかがアレなのかな。とすると tftpd な端末に有線接続で、が必要なのか。試験の環境作るのにこんなに苦労するとは思わなんだorz

有線接続

OnionRouter にササッてたソレを TP に挿して試験。

tftp> get kernel.img
Received 3135158 bytes in 7.1 seconds

むむ、つうことは tftpboot な試験ができますね。

U-Boot> tftpboot 0x8000 kernel.img
Waiting for Ethernet connection... done.
Using sms0 device
TFTP from server 192.168.3.5; our IP address is 192.168.3.3
Filename 'kernel.img'.
Load address: 0x8000
Loading: #################################################################
         #################################################################
         #######################################

途中で止まったのかどうか。ちっさいのでリトライ。

U-Boot> tftpboot 0x8000 rpi-micon.img
Waiting for Ethernet connection... done.
Using sms0 device
TFTP from server 192.168.3.5; our IP address is 192.168.3.3
Filename 'rpi-micon.img'.
Load address: 0x8000
Loading: #
         145.5 KiB/s
done
Bytes transferred = 8212 (2014 hex)
U-Boot> go 0x00008000
## Starting application at 0x008000 ...

正常動作は確認しております。たしかにでかいのは微妙かも。今日はここで止めます。

Comments