TFTPブートに挑戦

 これまで順調に動いていたLS−GLのクローンHDDであるが、最近何故か起動しなくなってしまった。
 シリアルを繋いで見た状況は、linuxrcの何行目かがバグっているとのことである。
 原因はよく分らないが、この際、よくネットで見掛けるTFTPブートなるものに挑戦してみた。

 方法は、以下の手順である。
  1. メルコのホームページからファームウェアの最新版lsgl-115.exeをもらってくる。
  2. Windowsでこれを実行すると各種ファイルが解凍される。
  3. 出てきたファイルの内、initrd.img をinitrd.img.zipに名前を変え、Lhasaなどのzip解凍ツールで解凍する。ここでパスワードを聞いてくるが、これはネットで調べる。海 外のサイトによく表示されているようであり4つ程提示されているようであるが、今回は最新バージョンであるためかこの海外のものでは解凍できず、行き着いた日本語のページで得たもので解凍できた。
  4. zipの解凍で得られたinitrd.buffaloとUimage.buffaloを適当なホルダーを作成して入れておく。
  5. TFTPDを貰ってきて、これもzipであるので解凍する。tftpd.exeを実行すると常駐するのでそのアイコンを右クリックし、「設定」を選択してアクセスパスに上で作成したフォルダのパスを入力する。
  6. シリアルケーブルを接続したLS−GLにシステムをインストールするHDD(何も入っていないものの方がTFTPモードになり易い。今回はパーティションを切っていないものを使用)を接続して立ち上げる。
  7. hit any ket to switch tftp boot.なるところで適当なキーを押し、u-bootのコマンドモードに入る。
  8. コ マンドモードではプロンプトが Marvell>> となる。ここでsetenv ipaddr 192.168.0.100 setenv serverip 192.168.0.50 などと環境にあったIPアドレスを指定する。でないとデフォルトではipaddr=192.168.11.150、serverip= 192.168.11.1であるので接続しているLAN環境をこれに合わす必要があり大変である。ケースによってはそのまま使うこともあるのかも知れな い。
  9. 最後にbootと入力すると転送が始まる。
  10. 転 送が終了するとEMモードで立ち上がるので、ここで先ほど解凍したファームのなかにあるLSUpdater.exeを実行して、システムを転送する。な お、EMモード出たち上がる時にIPアドレスは先程指定したものではなく、DHCPで取得するので、DHCPサーバーをネット上にセットしておく必要があ る。また、LSUpdater.exe実行時には、メルコから貰ってきた時のファイルが必要であるので先程リネームしたinitrd.img.zipは元 に戻しておく必要がある。
  11. 何度か再起動を繰り返した後、完了する。
 以上のような手順となる。参考のためシリアルでの表示を以下に示す。


Orion1   CPU =  Low
 
=== BUFFALO LS-GL U-Boot. ===
 ** LOADER **
 ** BUFFALO BOARD: BUFFALO_BOARD_LS_GL LE (CFG_ENV_ADDR=fffff000)
 
 
U-Boot 1.1.1 (Apr 18 2007 - 18:35:44) Marvell version: 1.12.1 - TINY
 
DRAM CS[0] base 0x00000000   size 128MB
DRAM Total size 128MB
[256kB@fffc0000] [0kB@f8000000] ## Unknown FLASH at f8000000: Size = 0x00000000 = 0 MB
Flash: 256 kB
Addresses 20M - 0M are saved for the U-Boot usage.
Mem malloc Initialization (20M - 16M): Done
 
Soc: 88F5182 A2
CPU: ARM926 (Rev 0) running @ 400Mhz
Orion 1 streaming disabled
SysClock = 200Mhz , TClock = 166Mhz
 
 
USB 0: host mode
USB 1: host mode
PCI 0: PCI Express Root Complex Interface
PCI 1: Conventional PCI, speed = 33000000
Net:   egiga0 [PRIME]
Using 88E1111 phy
 
Marvell Serial ATA Adapter
Integrated Sata device found
  Device 1: OK
Model: IBM-DTLA-307020                          Firm: TX3OA50C Ser#:          YHDYHT5X436
            Type: Hard Disk
            Capacity: 19623.5 MB = 19.1 GB (40188960 x 512)
 
Using device ide0, partition 1
** Bad partition 1 **
Using device ide1, partition 1
** Bad partition 1 **
Lost all init_rd
hit any key to switch tftp boot.
Hit any key to stop autoboot:  0         ここでスペースなど何かキーを押しコマンドモードへ
Marvell>> setenv ipaddr 192.168.0.100    LS−GLのIPアドレスセット
Marvell>> setenv serverip 192.168.0.50   TFTPサーバーのIPアドレス指定
Marvell>> printenv   設定を確認
bootargs=$(bootargs_base) $(bootargs_root)
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:35:3E:A6
buffalo_ver=BOOTVER=1.10
buffalo_minor_ver=BOOT_MINOR_VER=1.00
build_time=18:35:39
initrd=initrd.buffalo
kernel=uImage.buffalo
bootargs_base=console=ttyS0,115200
bootargs_root=root=/dev/sda2 rw initrd=0x00800040,15M panic=5
def_tftp=tftp 0x00100000 $(kernel);tftp 0x00800000 $(initrd);setenv bootargs $(bootargs_base)
$(bootargs_root) $(buffalo_ver) tftpboot=yes;bootm 0x00100000 0x00800000
stdin=serial
stdout=serial
stderr=serial
enaMonExt=no
enaFlashBuf=yes
enaCpuStream=no
ethprime=egiga0
bootdelay=3
disaMvPnp=no
overEthAddr=no
usb0Mode=host
usb1Mode=host
force_tftp=1
bootcmd=tftp 0x00100000 $(kernel);tftp 0x00800000 $(initrd);setenv bootargs
$(bootargs_base) $(bootargs_root) $(buffalo_ver) tftpboot=yes;bootm 0x00100000 0x00800000
ipaddr=192.168.0.100      指定通りになっていることを確認
serverip=192.168.0.50
 
Environment size: 985/4092 bytes
Marvell>> boot    TFTPモードの起動
Using egiga0 device
TFTP from server 192.168.0.60; our IP address is 192.168.0.150
Filename 'uImage.buffalo'.
Load address: 0x100000
Loading: #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #############################
done
Bytes transferred = 1809460 (1b9c34 hex)
Using egiga0 device
TFTP from server 192.168.0.60; our IP address is 192.168.0.150
Filename 'initrd.buffalo'.
Load address: 0x800000
Loading: #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         ######################################
done
Bytes transferred = 4852968 (4a0ce8 hex)
<<stop_sound>>
## Booting image at 00100000 ...
   Image Name:   Linux-2.6.16.16-arm1
   Created:      2008-05-20   1:02:00 UTC
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    1809396 Bytes =  1.7 MB
   Load Address: 00008000
   Entry Point:  00008000
   Verifying Checksum ... OK
OK
## Loading Ramdisk Image at 00800000 ...
   Image Name:   initrd
   Created:      2008-05-20   1:02:26 UTC
   Image Type:   ARM Linux RAMDisk Image (gzip compressed)
   Data Size:    4852904 Bytes =  4.6 MB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
 
Starting kernel ...
 
arg:console=ttyS0,115200 root=/dev/sda2 rw initrd=0x00800040,15M panic=5 BOOTVER=1.10 tftpboot=yes
CONFIG_BUFFALO_PLATFORM CONFIG_BUFFALO_LINKSTATION_LSGL ---
Uncompressing Linux..............................................................................................
done, booting the kernel.
Linux version 2.6.16.16-arm1 (root@I.You) (gcc version 3.4.4 (release) (CodeSourcery ARM 2005q3-2))
#37 Tue May 20 10:01:57 JST 2008
CPU: ARM926EJ-Sid(wb) [41069260] revision 0 (ARMv5TEJ)
Machine: MV-88fxx81
Using UBoot passing parameters structure
Sys Clk = 200000000, Tclk = 166664740
 
 
- Warning - This LSP release was tested only with U-Boot release 1.7.3
 
Memory policy: ECC disabled, Data cache writeback
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
Built 1 zonelists
Kernel command line: console=ttyS0,115200 root=/dev/sda2 rw initrd=0x00800040,15M
panic=5 BOOTVER=1.10 tftpboot=yes
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: 110548KB available (3169K code, 460K data, 108K init)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
checking if image is initramfs...it isn't (no cpio magic); looks like an initrd
Freeing initrd memory: 15360K
NET: Registered protocol family 16
FLASH boardId = 12
Flash bankwidth 1, base ff800000, size 400000
BUFFALO LS_GL FLASH size 4096[KB]
 
  Marvell Development Board (LSP Version 1.7.8_NAS)-- BUFFALO_BOARD_LS_GL
 
 Detected Tclk 166664740 and SysClk 200000000
Marvell USB EHCI Host controller #0: c16f5e00
Marvell USB EHCI Host controller #1: c16f5c00
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 IDMA acceleration in copy to/from user buffers. used channels 2 and 3
Done.
cesadev_init(c0011314)
mvCesaInit: sessions=640, queue=32, pSram=f0000000
Fast Floating Point Emulator V0.9 (c) Peter Teichmann.
SGI XFS with large block numbers, no debug enabled
Initializing Cryptographic API
io scheduler noop registered (default)
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing disabled
serial8250: ttyS0 at MMIO 0x0 (irq = 3) is a 16550A
serial8250: ttyS1 at MMIO 0x0 (irq = 4) is a 16550A
RAMDISK driver initialized: 3 RAM disks of 16384K 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 (0)
'eth0'
Intergrated Sata device found
scsi0 : Marvell SCSI to SATA adapter
scsi1 : Marvell SCSI to SATA adapter
** BUFFALO Disable Command Queuing Function [0 1] **
  Vendor: ATA       Model: IBM-DTLA-307020   Rev: TX3O
  Type:   Direct-Access                      ANSI SCSI revision: 03
Linux IAL (ERROR) : retry command host=1, bus=1 SCpnt = c1427ba0
SCSI device sda: 40188960 512-byte hdwr sectors (20577 MB)
sda: Write Protect is off
SCSI device sda: drive cache: write back
SCSI device sda: 40188960 512-byte hdwr sectors (20577 MB)
sda: Write Protect is off
SCSI device sda: drive cache: write back
 sda:
sd 1:0:0:0: Attached scsi disk sda
sd 1:0:0:0: Attached scsi generic sg0 type 0
physmap flash device: 400000 at ff800000
>jedec_probe
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.
cmdlinepart partition parsing not available
RedBoot partition parsing not available
ehci_platform ehci_platform.4523: EHCI Platform 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: USB 0.0 started, EHCI 1.00, driver 10 Dec 2004
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
ehci_platform ehci_platform.16781: EHCI Platform 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: USB 0.0 started, EHCI 1.00, driver 10 Dec 2004
usb usb2: configuration #1 chosen from 1 choice
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 1 port detected
USB Universal Host Controller Interface driver v2.3
Initializing USB Mass Storage driver...
usbcore: registered new driver usb-storage
USB Mass Storage support registered.
mice: PS/2 mouse device common for all mice
Kernel event proc (C) BUFFALO INC. V.1.00 installed.
MICON ctrl (C) BUFFALO INC. V.1.00 installed.
MICON V2 (C) BUFFALO INC. V.1.00 installed.
NET: Registered protocol family 2
IP route cache hash table entries: 2048 (order: 1, 8192 bytes)
TCP established hash table entries: 8192 (order: 3, 32768 bytes)
TCP bind hash table entries: 8192 (order: 3, 32768 bytes)
TCP: Hash tables configured (established 8192 bind 8192)
TCP reno registered
TCP bic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
RAMDISK: Compressed image found at block 0
VFS: Mounted root (ext2 filesystem).
---- in linuxrc ---
Sat May 31 14:58:51 JST 2008
err: >AnalyzeRecvPacket:This is invalid RespCode.(code=244)
CheckDevices
linuxrc:choose operation (timeout 4[s])
 1:RamRoot other:HddRoot  ? -HddRoot-
mount: you must specify the filesystem type
mount: you must specify the filesystem type
mount: you must specify the filesystem type
mount: you must specify the filesystem type
== fsck_disks ==
e2fsck 1.27 (8-Mar-2002)
fsck.ext3: No such device or address while trying to open /dev/ls_disk1_1
Possibly non-existent or swap device?
dd: /dev/ls_disk1_2: No such device or address
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
Freeing init memory: 108K
init started:  BusyBox v1.1.1 (2008.03.07-05:17+0000) multi-call binary
Starting pid 249, console /dev/ttyS0: '/etc/init.d/rcS'
--- rcStart (initrd) ---
mkdir: Cannot create directory `/sys': File exists
=====  exec:checkroot.sh  =====
chmod: /home: No such file or directory
mkdir: Cannot create directory `/var/lock': File exists
rm: /var/lock/perfmon: is a directory
rm: /var/lock/printing: is a directory
rm: /var/lock/subsys: is a directory
swapon: /dev/ls_disk1_5: No such device or address
create dir : /home
create dir : /var/www
=====  exec:create_devlink.sh  =====
=====  exec:fwupdate.sh  =====
umount: /boot: not mounted
mkdir: Cannot create directory `/boot': File exists
mount: you must specify the filesystem type
=====  exec:sethostname.sh  =====
configure files from Buffalo parameters.
=====  exec:restore_config.sh  =====
mount: you must specify the filesystem type
Restore previous configuration files
/bin/tar: /boot/conf_save.tgz: Cannot open: No such file or directory
/bin/tar: Error is not recoverable: exiting now
/bin/tar: Child returned status 2
/bin/tar: Error exit delayed from previous errors
unzip  fail.
umount: /boot: not mounted
=====  exec: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]
networking.sh: dhcp requesting...
DontDownIface
alwaysFork
eth0: link down
eth0: link up<5>, full duplex<5>, speed 100 Mbps<5>
sendto:  count 6   sync 1
sendto:  count 5   sync 0
sendto:  count 6   sync 0
dhcpcd.exe: interface eth0 has been configured with new IP=192.168.0.64 GATEWAY=192.168.0.254
** networking.sh dhcp fin.                DHCPからIPアドレス再取得
configure files from Buffalo parameters.
=====  exec:create_usblink.sh  =====
=====  exec:kernelmon.sh  =====
Starting kernelmon:=====  exec:miconmon.sh  =====
err: argCmd: invalid command. (usb_set_power)
 
miconmon 1.00b3 started (Builddate Mar  7 2008 14:23:24)
=====  exec:diskmon.sh  =====
=====  exec:micon_setup.sh  =====
=====  exec:clientUtil_servd.sh  =====
updating DHCP lease info: eth0
DHCPCSTATE=new
Starting clientUtil_server:starting on eth0
=====  exec:daemonwatch.sh  =====
Starting daemonwatch:daemonwatch Ver.1.01
watch list file : /etc/daemonwatch.list
=====  exec:bootcomplete.sh  =====
No need to run drivecheck.sh
/etc/init.d/bootcomplete.sh: line 44: flushqueue: command not found
Starting pid 691, console /dev/ttyS0: '/sbin/getty'
 
BUFFALO INC. LinkStation series LS-GL(IESADA)
LS-GL-EMEA6 login:    EMモードで起動した。ここでWindows側のLSUpdater.exeを起動して
             ファームを転送する。
SCSI device sda: 40188960 512-byte hdwr sectors (20577 MB)
sda: Write Protect is off
SCSI device sda: drive cache: write back
 sda:
SCSI device sda: 40188960 512-byte hdwr sectors (20577 MB)
sda: Write Protect is off
SCSI device sda: drive cache: write back
 sda:
SCSI device sda: 40188960 512-byte hdwr sectors (20577 MB)
sda: Write Protect is off
SCSI device sda: drive cache: write back
 sda: sda1 sda2 sda4 < sda5 sda6 >
SCSI device sda: 40188960 512-byte hdwr sectors (20577 MB)
sda: Write Protect is off
SCSI device sda: drive cache: write back
 sda: sda1 sda2 sda4 < sda5 sda6 >
kjournald starting.  Commit interval 5 seconds
EXT3 FS on sda1, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
Starting pid 801, console /dev/ttyS0: '/etc/init.d/rcDown'
--- rcDown ---
=====  exec:shutdown_start.sh  =====
called shutdown_start /etc/init.d/shutdown_start.sh
=====  exec:shutdown_proc.sh  =====
Stop daemonwatch:killall: daemonwatch: no process killed
done.
Stop clientUtil_server:rm: cannot remove `/var/run/clientUtil_server-eth0.pid': No such file or directory
Shutting down FTPD services: killall: proftpd: no process killed
 
 
killall: diskmon: no process killed
Stop kernelmon:done.
killall: miconmon: no process killed
=====  exec:umount_disk.sh  =====
killing all servers..
/etc/init.d/umount_disk.sh: line 336: /etc/init.d/smb.sh: No such file or directory
Shutting down FTPD services: killall: proftpd: no process killed
 
 
/etc/init.d/umount_disk.sh: line 338: /etc/init.d/atalk.sh: No such file or directory
killing all daemons
Stop daemonwatch:killall: daemonwatch: no process killed
done.
killall: diskmon: no process killed
killall: miconmon: no process killed
killall: rsync: no process killed
Stop a service: httpd
killall: httpd: no process killed
killall: sshd: no process killed
\n==== unmounting all disks ====
umount2: Invalid argument
umount: /mnt/disk1/: Illegal seek
umount2: Invalid argument
umount: /mnt/usbdisk1: Illegal seek
umount2: Invalid argument
umount: /mnt/usbdisk2: not mounted
umount: /dev/usbdisk1_1: not found
umount: /dev/usbdisk2_1: not found
swapoff: /dev/ls_disk1_5: Invalid argument
umount: /proc/bus/usb: not mounted
/etc/init.d/umount_disk.sh: line 11: rmmod: command not found
/etc/init.d/umount_disk.sh: line 12: rmmod: command not found
/etc/init.d/umount_disk.sh: line 13: rmmod: command not found
/etc/init.d/umount_disk.sh: line 14: rmmod: command not found
=====  exec:sendsigs.sh  =====
swapoff: /dev/ls_disk1_5: Invalid argument
Shutting down kernel logger: killall: klogd: no process killed
 
Shutting down system logger: killall: syslogd: no process killed
 
umount: /mnt/ram: not mounted
warning: can't open /etc/mtab: No such file or directory
Starting pid 908, console /dev/ttyS0: '/bin/umount'
warning: can't open /etc/mtab: No such file or directory
The system is going down NOeth0: link down
Sending SIGKILL to all processes.
eth0: link up<5>, full duplex<5>, speed 100 Mbps<5>
Please stand by while rebooting the system.
Synchronizing SCSI cache for disk sda:
Restarting system.
.
>miconCntl_Reboot
>miconCntl_ShutdownWait
Orion1   CPU =  Low      再起動
 
=== BUFFALO LS-GL U-Boot. ===
 ** LOADER **
 ** BUFFALO BOARD: BUFFALO_BOARD_LS_GL LE (CFG_ENV_ADDR=fffff000)
 
 何度か再起動を繰り返し、通常のプロンプトとなる。
 
BUFFALO INC. LinkStation series LS-GL(IESADA)
LS-GLEA6 login:


ホームページトップ  LinkStationトップ