玄箱Pro、直します。

超初心者が、玄箱PROでLinuxを勉強する無謀なブログです。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
別窓 | スポンサー広告
∧top | under∨

HDDブート

そういえば、仕様書にあるHDDブートってやったことないなぁ。

ということで、今頃ですがやってみました、HDDブート。

仕様書によると

動作は保障しない


とのこと(笑)。もうなんだっていいです、はい。

1.未フォーマット状態のHDDを接続し、通常ブートさせる。
2.CD-ROMの「development_kit」内の書き(『下記』の誤植)ファイルを共有ディレクトリ、「mtd device」にコピーする。
3.上記状態で、製品背面のinitswを押す。
4.Infoledが点滅し、フォーマット、開発環境の展開、u-bootの環境変数の書き換えが行われる。


とのこと。
下記ファイルとは

hddrootfs.tar.gz
ChangeMeDevHDD
ChangeMeUbootEnv
uImage.buffalo

の4つ。
ひとまずこの通りにやってみた。

作業終了でreboot。

へぇ、HDDブートの時はサングラス男出ないんだね。
HDDブートの時の環境変数です。

baudrate=115200
loads_echo=0
rootpath=/nfs/arm
cpuName=926
CASset=min
MALLOC_len=4
bootargs_end=:::DB88FXX81:eth0:none
ethact=egiga0
ethaddr=00:16:01:A4:D5:55
buffalo_ver=BOOTVER=1.091
build_time=18:10:02
nand_uImage_offset=20000
def_tftp=tftp $(default_kernel_addr) $(kernel); tftp $(default_initrd_addr) $(initrd); setenv bootargs $(bootargs_base) $(bootargs_root) rw initrd=0x02000040,20M panic=5 $(buffalo_ver); bootm $(default_kernel_addr) $(default_initrd_addr)
kernel=uImage.buffalo
initrd=initrd.buffalo
filesize=1a7fa4
fileaddr=0
ipaddr=192.168.1.9
serverip=192.168.1.25
default_initrd_addr=0x02000000
uImage_block=0
uImage_offset=0x00020000
default_kernel_addr=0x00100000
bootargs_base=console=ttyS0,115200
bootargs_root=root=/dev/sda2 rw panic=5
bootargs=console=ttyS0,115200 root=/dev/sda2 rw panic=5 BOOTVER=1.09
bootcmd=ide reset; ext2load ide 0:1 $(default_kernel_addr) /$(kernel); bootm $(default_kernel_addr)
nand_boot=no
stdin=serial
stdout=serial
stderr=serial
enaMonExt=no
enaFlashBuf=yes
enaCpuStream=no
ethprime=egiga0
bootdelay=3
disaMvPnp=no
overEthAddr=no
usb0Mode=host
usb1Mode=host


フラッシュブートからの変更点は

bootargs_root root=/dev/sda2 rw panic=5
bootcmd ide reset; ext2load ide 0:1
nand_boot no
bootargs $(bootargs_base) $(bootargs_root) $(buffalo_ver)


の4点でしょうか。

有名な「LinkStation/玄箱をハックしよう」ではもっと詳しく、/etc/init.d/rcS内の変化を説明していただいてます。(→「初期化の違い」)。
ホントありがたい話です・・。

ためしに以下のように入力すると、フラッシュからのブートとなりました。

Marvell>> setenv bootargs_root root=/dev/mtdblock2 rw panic=5
Marvell>> setenv bootcmd 'nboot $(default_kernel_addr) 0 $(nand_uImage_offset); bootm $(default_kernel_addr)'
Marvell>> setenv nand_boot yes
Marvell>> setenv bootargs $(bootargs_base) $(bootargs_root) $(buffalo_ver)
Marvell>> boot


やっとこの辺の仕組みが理解できてきたかもしれません(汗)。

長かった・・。
スポンサーサイト
別窓 | memo:ブート方法 | コメント:0 | トラックバック:0
∧top | under∨

ブート時の環境変数特性

フラッシュ・HDD・TFTPのそれぞれのブートの挙動に影響する環境変数は

・bootargs_root
・bootcmd
・nand_boot

かな?
それぞれのブートは以下の設定値

フラッシュブート
・bootargs_root=root=/dev/mtdblock2 rw
・bootcmd=nboot $(default_kernel_addr) 0 $(nand_uImage_offset); bootm $(default_kernel_addr)
・nand_boot=yes


HDDブート
・bootargs_root=root=/dev/sda2 rw
・bootcmd=ext2load ide 0:1 $(default_kernel_addr) /$(kernel); bootm $(default_kernel_addr)
・nand_boot=no


TFTPブート
・bootargs_root=root=/dev/mtdblock2 rw
・bootcmd=tftp $(default_kernel_addr) $(kernel); tftp $(default_initrd_addr) $(initrd); bootm $(default_kernel_addr) $(default_initrd_addr)
・and_boot=no


TFTPブートの際は、bootcmdのinitrdの扱いにパターンあり。
initrdをtftpサーバから読み込むなら上記の記述が必要。
bootcmd=tftp $(default_kernel_addr) $(kernel); bootm $(default_kernel_addr)
という設定もあるけど、上記なら確実にブートする。
別窓 | memo:ブート方法 | コメント:0 | トラックバック:0
∧top | under∨

フラッシュブート

ワケあって再びフラッシュブートに戻す。

どうしてだろう。
この作業が一番楽しい(笑)。



・シリアルコンソールで玄箱とPCを接続
・TeraTermProを起動、シリアルポートのレートを115200へ
・玄箱の電源オン
・2度目の「Hit any key..」でキーボードをポン




Marvell>> setenv bootcmd 'nboot $(default_kernel_addr) 0 $(nand_uImage_offset); bootm $(default_kernel_addr)'
Marvell>> setenv bootargs_root root=/dev/mtdblock2 rw panic=5
Marvell>> setenv bootargs $(bootargs_base) $(bootargs_root) $(buffalo_ver)
Marvell>> setenv nand_boot yes
Marvell>> saveenv
Marvell>> boot


これでひとまずOK。

Loading from device 0: at 0xfa000000 (offset 0x20000)
Image Name: Linux-2.6.12.6-arm1
Created: 2007-04-10 13:45:13 UTC
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1736548 Bytes = 1.7 MB
Load Address: 00008000
Entry Point: 00008000
<<stop_sound>>
## Booting image at 00100000 ...
Image Name: Linux-2.6.12.6-arm1
Created: 2007-04-10 13:45:13 UTC
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1736548 Bytes = 1.7 MB
Load Address: 00008000
Entry Point: 00008000
Verifying Checksum ... OK
OK

Starting kernel ...

arg:console=ttyS0,115200 root=/dev/mtdblock2 rw panic=5 BOOTVER=1.091
CONFIG_KUROBOX_PLATFORM CONFIG_KUROBOX_KUROBOX ---
Uncompressing Linux................................................................................................................. done, booting the kernel.
Linux version 2.6.12.6-arm1 (root@dev-hara) (gcc version 3.4.4 (release) (CodeSourcery ARM 2005q3-2)) #27 Tue Apr 10 22:47:16 JST 2007
CPU: ARM926EJ-Sid(wb) [41069260] revision 0 (ARMv5TEJ)
CPU0: D VIVT write-back cache
CPU0: I cache: 32768 bytes, associativity 1, 32 byte lines, 1024 sets
CPU0: D cache: 32768 bytes, associativity 1, 32 byte lines, 1024 sets
Machine: MV-88fxx81
Using UBoot passing parameters structure
Sys Clk = 250000000, Tclk = 166664740
Memory policy: ECC disabled, Data cache writeback
Built 1 zonelists
Kernel command line: console=ttyS0,115200 root=/dev/mtdblock2 rw panic=5 BOOTVER=1.091
PID hash table entries: 1024 (order: 10, 16384 bytes)
Console: colour dummy device 80x30
Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
Memory: 128MB 0MB 0MB 0MB = 128MB total
Memory: 126208KB available (3037K code, 426K data, 112K init)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
NET: Registered protocol family 16
serial_initialize_ttyS1 (Debug): ttyS1 is initialized.
config_device_cs Error : Unknown board

CPU Interface
-------------
SDRAM_CS0 ....base 00000000, size 128MB
SDRAM_CS1 ....disable
SDRAM_CS2 ....disable
SDRAM_CS3 ....disable
PEX0_MEM ....base e0000000, size 128MB
PEX0_IO ....base f2000000, size 1MB
PCI0_MEM ....base e8000000, size 128MB
PCI0_IO ....base f2100000, size 1MB
INTER_REGS ....base f1000000, size 1MB
DEVICE_CS0 ....base fa000000, size 2MB
DEVICE_CS1 ....base f4000000, size 32MB
DEVICE_CS2 ....base fa800000, size 1MB
DEV_BOOCS ....base ff800000, size 8MB
CRYPTO ENG ....no such
Flash bankwidth 1, base ff800000, size 400000
KUROBOX FLASH size 4096[KB]

Marvell Development Board (LSP Version 1.10.3.patch5_DB_NAS)-- KUROBOX_BOARD_KUROBOX Soc: 88F5182 A2

Detected Tclk 166664740 and SysClk 250000000
Marvell USB EHCI Host controller #0: c04e4b00
Marvell USB EHCI Host controller #1: c04e4a40
pexBarOverlapDetect: winNum 2 overlap current 0
mvPexInit:Warning :Bar 2 size is illigal
it will be disabled
please check Pex and CPU windows configuration
PCI: bus0: Fast back to back transfers enabled
PCI: bus1: Fast back to back transfers enabled
SCSI subsystem initialized
usbcore: registered new driver usbfs
usbcore: registered new driver hub
Use the XOR engines (offloading) for enhancing the following functions:
o RAID 5 Xor calculation
o kernel memcpy
o kenrel memzero
o copy user to/from kernel buffers
Number of XOR engines to use: 2
cesadev_init(c00122e4)
Fast Floating Point Emulator V0.9 (c) Peter Teichmann.
inotify device minor=63
JFFS2 version 2.2. (NAND) (C) 2001-2003 Red Hat, Inc.
SGI XFS with no debug enabled
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing disabled
ttyS0 at MMIO 0x0 (irq = 3) is a 16550A
ttyS1 at MMIO 0x0 (irq = 4) is a 16550A
io scheduler noop registered
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered
RAMDISK driver initialized: 3 RAM disks of 32768K size 1024 blocksize
loop: loaded (max 8 devices)
Marvell Gigabit Ethernet Driver 'egiga':
o Ethernet descriptors in DRAM
o DRAM SW cache-coherency
o Checksum offload enabled
o Loading network interface ** egiga_init_module (10)
'eth0'
Intergrated Sata device found
scsi0 : Marvell SCSI to SATA adapter
scsi1 : Marvell SCSI to SATA adapter
Vendor: Seagate Model: ST380815AS Rev: 3.AA
Type: Direct-Access ANSI SCSI revision: 03
SCSI device sda: 156301488 512-byte hdwr sectors (80026 MB)
SCSI device sda: drive cache: write back
SCSI device sda: 156301488 512-byte hdwr sectors (80026 MB)
SCSI device sda: drive cache: write back
sda: sda1 sda2 sda3 sda4
Attached scsi disk sda at scsi0, channel 0, id 0, lun 0
Attached scsi generic sg0 at scsi0, channel 0, id 0, lun 0, type 0
physmap flash device: 400000 at ff800000
Found: SST 39LF020
phys_mapped_flash: Found 1 x8 devices at 0x0 in 8-bit bank
number of JEDEC chips: 1
cfi_cmdset_0002: Disabling erase-suspend-program due to code brokenness.
RedBoot partition parsing not available
Debug nand_scan : nand_flash_ids[i].pagesize is exist
Debug nand_scan : mtd->erasesize=0x00020000
Debug nand_scan : mtd->oobblock=0x00000800
Debug nand_scan : mtd->oobsize=0x00000040
NAND device: Manufacturer ID: 0x20, Chip ID: 0xda (ST Micro NAND 256MiB 3,3V 8-bit)
Scanning device for bad blocks
Using static partition definition
Creating 3 MTD partitions on "nand_mtd":
0x00000000-0x00400000 : "uImage"
0x00400000-0x04400000 : "rootfs"
0x04400000-0x10000000 : "extra"
usbmon: debugs is not available
ehci_platform ehci_platform.4523: EHCI Host Controller
ehci_platform ehci_platform.4523: new USB bus registered, assigned bus number 1
ehci_platform ehci_platform.4523: irq 17, io mem 0x00000000
ehci_platform ehci_platform.4523: park 0
ehci_platform ehci_platform.4523: USB 0.0 initialized, EHCI 1.00, driver 10 Dec 2004
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
ehci_platform ehci_platform.16781: EHCI Host Controller
ehci_platform ehci_platform.16781: new USB bus registered, assigned bus number 2
ehci_platform ehci_platform.16781: irq 12, io mem 0x00000000
ehci_platform ehci_platform.16781: park 0
ehci_platform ehci_platform.16781: USB 0.0 initialized, EHCI 1.00, driver 10 Dec 2004
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 1 port detected
USB Universal Host Controller Interface driver v2.2
Initializing USB Mass Storage driver...
usbcore: registered new driver usb-storage
USB Mass Storage support registered.
usbcore: registered new driver usbhid
drivers/usb/input/hid-core.c: v2.01:USB HID core driver
mice: PS/2 mouse device common for all mice
md: raid0 personality registered as nr 2
md: raid1 personality registered as nr 3
md: raid5 personality registered as nr 4
raid5: measuring checksumming speed
arm4regs : 304.000 MB/sec
8regs : 215.200 MB/sec
32regs : 249.200 MB/sec
raid5: using function: arm4regs (304.000 MB/sec)
md: md driver 0.90.1 MAX_MD_DEVS=256, MD_SB_DISKS=27
Buffalo Platform Linux Driver(Light) 0.01 installed.
MICON ctrl (C) BUFFALO INC. V.1.00 installed.
Kernel event proc (C) BUFFALO INC. V.1.00 installed.
MICON V2 (C) BUFFALO INC. V.1.00 installed.
NET: Registered protocol family 2
IP: routing cache hash table of 1024 buckets, 8Kbytes
TCP established hash table entries: 8192 (order: 4, 65536 bytes)
TCP bind hash table entries: 8192 (order: 3, 32768 bytes)
TCP: Hash tables configured (established 8192 bind 8192)
NET: Registered protocol family 1
NET: Registered protocol family 17
md: Autodetecting RAID arrays.
md: autorun ...
md: ... autorun DONE.
VFS: Mounted root (jffs2 filesystem).
Freeing init memory: 112K
--- rcStart (NANDroot) ---
===== Starting MountSystemFolders =====
mounting procfs ... [Success]
mounting sysfs ... [Success]
mouting usbfs ... [Success]
remouting rootfs ... [Success]
mounting all devices ... [Success]


===== Starting checkroot.sh =====
rm: /var/lock/perfmon: is a directory
rm: /var/lock/printing: is a directory
rm: /var/lock/subsys: is a directory
[Success]


===== Starting Kevent.sh =====
[Success]


===== Starting mount_share.sh =====
Mounting /dev/sda4 on /mnt/disk1 as a xfs file system.
XFS: bad magic number
XFS: SB validate failed
mount: Mounting /dev/sda4 on /mnt/disk1 failed: Invalid argument
Failed.
Mounting /dev/sda4 on /mnt/disk1 as a ext3 file system.
kjournald starting. Commit interval 5 seconds
EXT3 FS on sda4, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
Success.

Mounting /dev/mtd3 on /mnt/mtd as a jffs2 file system.
Success.

[Success]


===== Starting sethostname.sh =====
hostname is setted to KUROBOX-PRO
[Success]


===== Starting networking.sh =====
create network files..
IP=[dhcp], netmask=[], dgw=[], dns1=[], dns2=[]
killall: dhcpcd: no process killed
route: SIOC[ADD|DEL]RT: No such process
Configuration network interface: lo eth0
requesting DHCP tout=30[s]
eth0: link down
eth0: link up<5>, full duplex<5>, speed 100 Mbps<5>
/etc/dhcpc/dhcpcd.exe ::: /etc/dhcpc/dhcpcd-eth0.info new
dhcpcd.exe: interface eth0 has been configured with new IP=192.168.1.9
hostname is setted to KUROBOX-PRO
[Success]


===== Starting httpd.sh =====
[Success]


===== Starting telnet.sh =====
[Success]


===== Starting inetd.sh =====
[Success]


===== Starting smb.sh =====
$Starting SMB services:
$Starting NMB services:
[Success]


===== Starting clientUtil_servd.sh =====
Starting clientUtil_server:starting on eth0
[Success]


===== Starting bootcomplete.sh =====
[Success]


===== Starting FanController.sh =====
[Success]


===== Starting boss.sh =====

[Success]


KUROUTOSHIKOU KUROBOX Series KUROBOX/PRO(KOSHO)
KUROBOX-PRO login: root
Password:
login[790]: root login on `ttyS0'



BusyBox v1.1.1 (2007.04.06-12:02+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

~ #


Debian化の際にパーティションを切ったHDDを初期化。

まずはマウントをはずして

~ # df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/mtd2 65536 15980 49556 24% /
/dev/ram1 8192 156 8036 2% /mnt/ram
/dev/sda4 73837116 72300 70014044 0% /mnt/disk1
/dev/mtd3 192512 4356 188156 2% /mnt/mtd
~ # umount /mnt/disk1


fdisk、と。

~ # fdisk /dev/sda


「p」を入力して念のため確認。

Command (m for help): p

Disk /dev/sda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sda1 1 7 56196 83 Linux
/dev/sda2 8 373 2939895 83 Linux
/dev/sda3 374 390 136552+ 82 Linux swap
/dev/sda4 391 9729 75015517+ 83 Linux

Command (m for help):


「d」で次々にパーティション削除。

Command (m for help): d
Partition number (1-4): 1

Command (m for help): d
Partition number (1-4): 2

Command (m for help): d
Partition number (1-4): 3

Command (m for help): d
Selected partition 4

Command (m for help):


「w」で作業の確定を。

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
SCSI device sda: 156301488 512-byte hdwr sectors (80026 MB)
SCSI device sda: drive cache: write back
sda:
SCSI device sda: 156301488 512-byte hdwr sectors (80026 MB)
SCSI device sda: drive cache: write back
sda:
Syncing disks.
~ #


これで完全に初期状態。

さて・・次は何を試そうか・・。
仕様書の環境変数設定例を全部試してみようかな。
別窓 | memo:ブート方法 | コメント:0 | トラックバック:0
∧top | under∨

U-boot研究記(2)

そもそもU-bootとは何なのか。

またもやWikipediaで調べると

Das U-Bootは、複数のアーキテクチャに対応したブートローダである。GPLのライセンスの元でリリースされている。


とのこと。「Das」をつけるのが正式なんだろうか。

さて今度は「ブートローダ」。

ブート(またはブートストラップ、boot、bootstrap)は、コンピュータシステムの電源を入れたときにオペレーティングシステムを起動するまでの処理の流れをいう。また、ブートローダ(boot loader)とは、ブート処理を行うソフトウェアを意味する。


ふむふむ。さすがにこれは何となくわかっていたが・・。

そこで、いろいろ「Linuxの起動までの流れ」てなサイトを探したんですが見つかりません。
ただ、日経Linuxの「自分で作るLinux OS」という書籍に「GNU GRUBによるLinuxの起動」というページを見つけたのでメモ。
U-bootにも当てはまるかどうかは不明です(笑)。

1.カーネルの読み込み
Linuxを起動するためにカーネル・イメージをメモリー上に読み込む。カーネル・イメージはbzipやgzipで圧縮されたファイルである。

2.initrdを読み込み
カーネル・イメージを読み込んだら、次にinitrdファイルを読み込む。initrdファイルは、Linuxが起動するときに必要なモジュール(ドライバ)や起動スクリプトを含んだファイルである。通常gzipで圧縮されており、カーネル・イメージをメモリー上に読み込んだ後、カーネル起動時にメモリー上にファイル・システムとして展開される。

3.カーネルの起動
読み込みが完了したら、GRUBによってカーネルが起動される。カーネルは自分自身とinitrdファイルを展開して、初期化処理を実施する。その際、展開されたinitrdファイルを起動時に用いるルート・ファイル・システムをしてマウントする。

4.linuxrcスクリプトの実行
initrdファイルには「linuxrc」というスクリプトが含まれている。このlinuxrcスクリプトにはルート・ファイル・システムをマウントする際に必要なドライバをカーネルに読み込んでから、実際のルート・ファイル・システムをマウントするための処理が記述されている。(後略)

5.初期化プロセスの実行
実際のルート・ファイル・システムをマウントしたら、今度はルート・ファイル・システム内にあるファイルを用いて初期化プロセスが実行される。この初期化プロセスが完了すれば、Linuxが使えるようになる。


とのこと。initrdは「イニシャル・ラム・ディスク」と読むらしい。
まずはメモリ上にカーネルを読み込んで、次にinitrdファイルを読み込む。そしてその2つを起動する。
玄箱で言うと

1.uImage.buffaloをメモリ上に読み込む
2.initrd.buffaloをメモリ上に読み込む
3.uImage.buffaloを起動させ、uImage.buffaloがinitrd.buffaloを展開する


ということか。

ちなみにここでU-bootの環境変数の初期値例が入手できる。
これと、先日入手した「U-bootコマンド集」(→参照から知った「printenv」を使って、現在の私の玄箱U-bootがどのような状態なのか知ることができた。

問題となっているのは

default_kernel_addr
default_initrd_addr
kernel
initrd


の4つでしょうか。
しかしprintenvで見るかぎり、初期値例としての
default_kernel_addr=0x00100000
default_initrd_addr=0x02000000
kernel=uImage.buffalo
initrd=initrd.buffalo
と何ら変わりはありません。
しかし、tftpでブートした時には「File not found」と言われ、<自分のIPアドレス>.imgをカーネルとして読み込もうとし、勝手に失敗してくれています。

なるほど。

フラッシュブートの場合、ちゃんとこの環境変数を認識している、と。
しかしどこかに「tftpブートの時はこれを読み込め」というコマンドがあるはず。
そしてその設定がuImage.buffaloになっていないのか。
だからフラッシュブートには成功してtftpブートには失敗するんだな・・。

あ、ちなみにsetenvでserveripとipaddrを変更してsaveenvしておくと、玄人志向のように直接PCと玄箱をLANケーブルでつなぐ必要もなく便利です。
ルーター側でIPを問題なくスタティックに192.168.11.1と192.168.11.150を払いだせば結局一緒ですが、後々のことを考えてもこちらの方がはるかに楽な作業でしょう(笑)。

(例)PCを192.168.1.5、玄箱を192.168.1.10とした場合
setenv serverip 192.168.1.5
setenv ipaddr 192.168.1.10
saveenv


別窓 | memo:ブート方法 | コメント:1 | トラックバック:0
∧top | under∨

U-boot研究記(1)

というわけで、ひとまず玄箱はほっといて(笑)。

U-bootのコマンドの詳細が知りたいと思いググる。

お、いいとこある。

U-boot-jpというサイトがあった。
このサイトに「U-bootコマンド解説」のPDFが置いてあった。直リンはここ

むむ・・。これはすごく有益かも!
何を書いているのかまだよくわからないが(当たり前だ(笑))、これは相当使えそうな気がする。
なのでプリントアウトしたものをきれいに製本してみました(笑)。

パラパラめくっていると「tftpboot-TFTPプロトコルでファイルをダウンロード」という項目を発見。
今の私にものすごく有益な情報か?!と思い読んでみる。

・・・。

・・。

わかんね(笑)。


ただ、ひとつ「ん?」ということが。

filename:ロードするファイルです。
省略された場合は、環境変数bootfileの値、環境変数bootfileが設定されていない場合、<自分のIPアドレス>.imgを使います。
<自分のIPアドレス>の部分は、IPアドレスを16進で表記して、並べたものです。例えば、192.168.3.202を16進で表記すると、C0.A8.03.CAとなりますので、"CA03A8C0.img"を探しに行きます。


ここです。
この"CA03A8C0.img"ってなんとなく見覚えが・・。


そう、ウチの玄箱くん、960BA8C0.imgってファイルが見つからないって騒いでいました。(→参照

そっか、960BA8C0.imgって16進数で表現されたものだったんだ。
これを10進数に戻すと「192.168.11.150」。
なるほど。仕様書26ページにもあった「DHCPサーバより取得できない場合」のIPアドレスそのものですね。てかこりゃ当然ですよね(笑)。

問題は、960BA8C0.imgってファイルがなぜ呼び出されるハメになったのか、ってこと。
つまり、tftpbootの定義によると、「なにもブートするファイルを指定してない場合」にこの<自分のIPアドレス>.imgファイルは呼びつけられる。

しかし今呼び出されなければいけないのはuImage.buffaloのはず。どこかでuImage.buffaloという設定がU-bootに伝わっていない、ということなんでしょうねかね…。

んー。

ちょっとづつ絞れてきた気もするが、もっと根本的な難問があったことをすっかり忘れてた・・。


TFTPってそもそも何さ?
別窓 | memo:ブート方法 | コメント:4 | トラックバック:0
∧top | under∨
| 玄箱Pro、直します。 |
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。