LS-GL: tftp boot


U-Boot には、tftp boot の機能があるので、試してみる。
tftp サーバにするのは、PC-P1LAN のブートサーバにしている ビデオサーバの HD-HLAN。

LS-GL の /boot にある initrd.buffalo と uImage.buffalo とを ブートサーバにおけば、tftp ブートできるはず。

準備

LS-GL の起動

LS-GL を標準ファーム 1.02 で起動し、 シリアルコンソールからログインする。
UDE login: root
Password:

debian の /boot のマウント

debian をインストールした HDD を USB で接続し、 マウントする
root@UDE:~# df
Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/sda2               493212    169436    323776  34% /
/dev/ram1                15360        72     15288   0% /mnt/ram
/dev/ls_disk1_1         194443     68619    115785  37% /boot
/dev/ls_disk1_6        3363376    254464   3108912   8% /mnt/disk1
root@UDE:~# mkdir /tmp/boot
root@UDE:~# mount /dev/sdb1 /tmp/boot
root@UDE:~# df
Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/sda2               493212    169532    323680  34% /
/dev/ram1                15360        72     15288   0% /mnt/ram
/dev/ls_disk1_1         194443     68619    115785  37% /boot
/dev/ls_disk1_6        3363376    254464   3108912   8% /mnt/disk1
/dev/sdb1               190387     10182    170376   6% /mnt/ram/boot
root@UDE:~# ls /tmp/boot
initrd.buffalo  lost+found      uImage.buffalo

boot サーバへの転送

tftp サーバである HD-HLAN へ initrd.buffalo と uImage.buffalo を転送する。
root@UDE:/tmp/boot# ftp link.yamasita.jp
Connected to link.yamasita.jp.
220 ProFTPD 1.2.10rc1 Server (ProFTPD Default Installation) [link]
500 AUTH not understood
500 AUTH not understood
KERBEROS_V4 rejected as an authentication type
Name (link.yamasita.jp:root): yasunari
331 Password required for yasunari.
Password:
230 User yasunari logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd /usr/local/BootServer/tftpboot
250 CWD command successful
ftp> ls
200 PORT command successful
150 Opening ASCII mode data connection for file list
-rwxr--r--   1 yasunari (?)            40 Sep 28  2005 files
drwxr-sr-x   2 yasunari (?)          4096 Apr  2  2006 firm
-rwxr--r--   1 yasunari (?)             5 Feb 23  2006 version
226 Transfer complete.
ftp> bin
200 Type set to I
ftp> hash
Hash mark printing on (1024 bytes/hash mark).
ftp> prompt
Interactive mode off.
ftp> !ls
initrd.buffalo  lost+found     uImage.buffalo
ftp> mput i* u*
local: initrd.buffalo remote: initrd.buffalo
200 PORT command successful
550 initrd.buffalo: Permission denied
local: uImage.buffalo remote: uImage.buffalo
200 PORT command successful
550 uImage.buffalo: Permission denied
tftp サーバの /usr/local/BootServer/tftpboot へ 直接 put しようとしたが、、、
そりゃ、yasunari では書けんわな。
一旦 /tmp に put する
ftp> cd /tmp
250 CWD command successful
ftp> mput i* u*
local: initrd.buffalo remote: initrd.buffalo
200 PORT command successful
150 Opening BINARY mode data connection for initrd.buffalo
##########################################################
	:
	:
##########################################################
226 Transfer complete.
4381825 bytes sent in 0.95 seconds (4.5e+03 Kbytes/s)
local: uImage.buffalo remote: uImage.buffalo
200 PORT command successful
150 Opening BINARY mode data connection for uImage.buffalo
##########################################################
	:
	:
##########################################################
226 Transfer complete.
1790940 bytes sent in 0.4 seconds (4.4e+03 Kbytes/s)
ftp> bye
221 Goodbye.
root@UDE:/tmp/boot#
tftp サーバの HD-HLAN にログインし、 /tmp へ put したファイルを /usr/local/BootServer/tftpboot へ移動する。
Vine Linux 2.6 (La Fleur de Bouard)
Kernel 2.4.17_mvl21-sandpoint on a ppc
login: yasunari
Password:
bash-2.04$ su - root
Password:
[root@link /root]# cd /usr/local/BootServer/tftpboot
[root@link tftpboot]# ls -l
合計 12
-rwxr--r--    1 yasunari 1000           40 Sep 28  2005 files
drwxr-sr-x    2 yasunari 1000         4096 Apr  2  2006 firm
-rwxr--r--    1 yasunari 1000            5 Feb 23  2006 version
[root@link tftpboot]# mv /tmp/uImage.buffalo /tmp/initrd.buffalo .
[root@link tftpboot]# ls -l
合計 6060
-rwxr--r--    1 yasunari 1000           40 Sep 28  2005 files
drwxr-sr-x    2 yasunari 1000         4096 Apr  2  2006 firm
-rw-r--r--    1 yasunari yamasita  4381825 Jan  7 16:58 initrd.buffalo
-rw-r--r--    1 yasunari yamasita  1790940 Jan  7 16:58 uImage.buffalo
-rwxr--r--    1 yasunari 1000            5 Feb 23  2006 version
[root@link tftpboot]#

initrd, uImage のリネーム

HDD から起動しないよう debian HDD の /boot にある initrd, uImage は、リネームしておく
root@UDE:/tmp/boot# mv initrd.buffalo initrd.buffalo.save
root@UDE:/tmp/boot# mv uImage.buffalo uImage.buffalo.save
root@UDE:/tmp/boot# ls
initrd.buffalo.save  lost+found           uImage.buffalo.save
root@UDE:/tmp/boot#

起動不能

これで HDD からはブートしないようになった。
USB で接続していた debian の HDD を S-ATA で接続し、 LS-GL を再起動する


=== BUFFALO LS-GL U-Boot. ===
 ** LOADER **
 ** BUFFALO BOARD: BUFFALO_BOARD_LS_GL LE

U-Boot 1.1.1 (Jun 12 2006 - 10:32:00) Marvell version: 1.10.8

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]

Marvell Serial ATA Adapter
Intergrated Sata device found
  Device 1: OK
Model: ST310212A                                Firm: 3.02     Ser#: 7EG2A85F
            Type: Hard Disk
            Capacity: 9768.3 MB = 9.5 GB (20005650 x 512)

hit any key to switch tftp boot.
Hit any key to stop autoboot:  0
Hit any key to stop autoboot:  0

Reset IDE:
Marvell Serial ATA Adapter
Intergrated Sata device found
  Device 1: OK
Model: ST310212A                                Firm: 3.02     Ser#: 7EG2A85F
            Type: Hard Disk
            Capacity: 9768.3 MB = 9.5 GB (20005650 x 512)

Using device ide1, partition 1

Loading from block device ide device 1, partition 1: Name: hdb1
  Type: U-Boot  File:/uImage.buffalo

0 bytes read
Using device ide1, partition 1

Loading from block device ide device 1, partition 1: Name: hdb1
  Type: U-Boot  File:/initrd.buffalo

0 bytes read
<<stop_sound>>
## Booting image at 00100000 ...
Bad Magic Number
bootm fail.
<<system_not_found>>
Using egiga0 device
TFTP from server 192.168.11.1; our IP address is 192.168.11.150
Filename 'uImage.buffalo'.
Load address: 0x100000
Loading: T T T
想定通り、ピィピィ鳴って、起動しなかった。

tftp BOOT

いよいよ tftp でブートする。

コマンドモード?へ

tftp ブートさせるために、U-Boot のコマンドモード(?)へ入る。

=== BUFFALO LS-GL U-Boot. ===
 ** LOADER **
 ** BUFFALO BOARD: BUFFALO_BOARD_LS_GL LE

U-Boot 1.1.1 (Jun 12 2006 - 10:32:00) Marvell version: 1.10.8
	:
	:
Marvell Serial ATA Adapter
Intergrated Sata device found
  Device 1: OK
Model: ST310212A                                Firm: 3.02     Ser#: 7EG2A85F
            Type: Hard Disk
            Capacity: 9768.3 MB = 9.5 GB (20005650 x 512)

hit any key to switch tftp boot.
Hit any key to stop autoboot:  0
カウントダウンが終わる前にスペースキーを押す
switched to TFTP boot.
Hit any key to stop autoboot:  0
さらに、カウントダウンが終わる前にスペースキーを押す
Marvell>>
これで U-Boot のコマンドモード(?)へ入れた。

help

どうすれば tftp ブートできるのかわからない。
こういうときはヘルプ。
Marvell>> help
?       - alias for 'help'
base    - print or set address offset
boot    - boot default, i.e., run 'bootcmd'
bootd   - boot default, i.e., run 'bootcmd'
bootext2    dev:boot_part1,boot_part2 addr boot_image linux_dev_name 
bootm   - boot application image from memory
bootp   - boot image via network using BootP/TFTP protocol
bubt	- Burn an image on the Boot Flash.
cmp     - memory compare
cp      - memory copy
cpumap - Display CPU memory mapping settings.
crc32   - checksum calculation
date    - get/set/reset date & time
diskboot- boot from IDE device
echo    - echo args to console
erase   - erase FLASH memory
ext2load- load binary file from a Ext2 filesystem
ext2ls- list files in a directory (default /)
flinfo  - print FLASH memory information
go      - start application at address 'addr'
help    - print online help
ide     - IDE sub-system
loop    - infinite loop on address range
md      - memory display
mm      - memory modify (auto-incrementing)
mtest   - simple RAM test
mw      - memory write (fill)
nm      - memory modify (constant address)
pci     - list and access PCI Configuraton Space
printenv- print environment variables
protect - enable or disable FLASH write protection
rarpboot- boot image via network using RARP/TFTP protocol
reset   - Perform RESET of the CPU
saveenv - save environment variables to persistent storage
setenv  - set environment variables
tftpboot- boot image via network using TFTP protocol
version - print monitor version
Marvell>> 
環境を表示するのは、printenv のよう。
Marvell>> printenv
bootargs=$(bootargs_base) $(bootargs_root)
baudrate=115200
loads_echo=0
ipaddr=192.168.11.150
serverip=192.168.11.1
rootpath=/nfs/arm
cpuName=926
CASset=min
MALLOC_len=4
ethprime=egiga0
bootargs_end=:::DB88FXX81:eth0:none
usb0Mode=host
usb1Mode=host
ethact=egiga0
ethaddr=00:16:01:35:06:7A
buffalo_ver=BOOTVER=1.01
build_time=10:35:38
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);bootm 0x00100000 0x00800000
stdin=serial
stdout=serial
stderr=serial
enaMonExt=no
enaFlashBuf=yes
enaCpuStream=no
bootdelay=3
disaMvPnp=no
overEthAddr=no
force_tftp=1
bootcmd=tftp 0x00100000 $(kernel);tftp 0x00800000 $(initrd);setenv bootargs $(bootargs_base) $(bootargs_root) $(buffalo_ver);bootm 0x00100000 0x00800000

Environment size: 922/4092 bytes
Marvell>> 

設定変更

自分の IP アドレスは ipaddr=192.168.11.150
tftp サーバの IP アドレスは serverip=192.168.11.1
これらを変更する必要がある。

変更は、setenv らしいが、 パラメータの与え方が良くわからない。
またまた help

Marvell>> help setenv
setenv name value ...
    - set environment variable 'name' to 'value ...'
setenv name
    - delete environment variable 'name'

Marvell>> 
なるほど。
Marvell>> setenv ipaddr 192.168.1.38
Marvell>> setenv serverip 192.168.1.30
Marvell>> 
確認する。
Marvell>> printenv
bootargs=$(bootargs_base) $(bootargs_root)
baudrate=115200
loads_echo=0
rootpath=/nfs/arm
cpuName=926
CASset=min
MALLOC_len=4
ethprime=egiga0
bootargs_end=:::DB88FXX81:eth0:none
usb0Mode=host
usb1Mode=host
ethact=egiga0
ethaddr=00:16:01:35:06:7A
buffalo_ver=BOOTVER=1.01
build_time=10:35:38
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);bootm 0x00100000 0x00800000
stdin=serial
stdout=serial
stderr=serial
enaMonExt=no
enaFlashBuf=yes
enaCpuStream=no
bootdelay=3
disaMvPnp=no
overEthAddr=no
force_tftp=1
bootcmd=tftp 0x00100000 $(kernel);tftp 0x00800000 $(initrd);setenv bootargs $(bootargs_base) $(bootargs_root) $(buffalo_ver);bootm 0x00100000 0x00800000
ipaddr=192.168.1.38
serverip=192.168.1.30

Environment size: 920/4092 bytes
Marvell>> 
いいみたい。

tftp boot はどうするの?
またまた help

Marvell>> help
?       - alias for 'help'
base    - print or set address offset
boot    - boot default, i.e., run 'bootcmd'
bootd   - boot default, i.e., run 'bootcmd'
bootext2    dev:boot_part1,boot_part2 addr boot_image linux_dev_name 
bootm   - boot application image from memory
bootp   - boot image via network using BootP/TFTP protocol
bubt	- Burn an image on the Boot Flash.
cmp     - memory compare
cp      - memory copy
cpumap - Display CPU memory mapping settings.
crc32   - checksum calculation
date    - get/set/reset date & time
diskboot- boot from IDE device
echo    - echo args to console
erase   - erase FLASH memory
ext2load- load binary file from a Ext2 filesystem
ext2ls- list files in a directory (default /)
flinfo  - print FLASH memory information
go      - start application at address 'addr'
help    - print online help
ide     - IDE sub-system
loop    - infinite loop on address range
md      - memory display
mm      - memory modify (auto-incrementing)
mtest   - simple RAM test
mw      - memory write (fill)
nm      - memory modify (constant address)
pci     - list and access PCI Configuraton Space
printenv- print environment variables
protect - enable or disable FLASH write protection
rarpboot- boot image via network using RARP/TFTP protocol
reset   - Perform RESET of the CPU
saveenv - save environment variables to persistent storage
setenv  - set environment variables
tftpboot- boot image via network using TFTP protocol
version - print monitor version
Marvell>> 
boot でいいのかな???

と思っていたら、、、、 ピィピィなって電源が落ちた。
ウォッチドッグタイマが働いたみたい。

もう一回やり直し。今度はちゃっちゃと。



=== BUFFALO LS-GL U-Boot. ===
 ** LOADER **
 ** BUFFALO BOARD: BUFFALO_BOARD_LS_GL LE 

U-Boot 1.1.1 (Jun 12 2006 - 10:32:00) Marvell version: 1.10.8
	:
	:
hit any key to switch tftp boot.
Hit any key to stop autoboot:  0 
switched to TFTP boot.
Hit any key to stop autoboot:  0 
Marvell>> setenv ipaddr 192.168.1.38
Marvell>> setenv serverip 192.168.1.30
Marvell>> printenv
bootargs=$(bootargs_base) $(bootargs_root)
baudrate=115200
loads_echo=0
rootpath=/nfs/arm
cpuName=926
CASset=min
MALLOC_len=4
ethprime=egiga0
bootargs_end=:::DB88FXX81:eth0:none
usb0Mode=host
usb1Mode=host
ethact=egiga0
ethaddr=00:16:01:35:06:7A
buffalo_ver=BOOTVER=1.01
build_time=10:35:38
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);bootm 0x00100000 0x00800000
stdin=serial
stdout=serial
stderr=serial
enaMonExt=no
enaFlashBuf=yes
enaCpuStream=no
bootdelay=3
disaMvPnp=no
overEthAddr=no
force_tftp=1
bootcmd=tftp 0x00100000 $(kernel);tftp 0x00800000 $(initrd);setenv bootargs $(bootargs_base) $(bootargs_root) $(buffalo_ver);bootm 0x00100000 0x00800000
ipaddr=192.168.1.38
serverip=192.168.1.30

Environment size: 920/4092 bytes
Marvell>> 

tftp ブート

いけぇ〜っ
Marvell>> boot
Using egiga0 device
TFTP from server 192.168.1.30; our IP address is 192.168.1.38
Filename 'uImage.buffalo'.
Load address: 0x100000
Loading: #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #########################
done
Bytes transferred = 1790940 (1b53dc hex)
Using egiga0 device
TFTP from server 192.168.1.30; our IP address is 192.168.1.38
Filename 'initrd.buffalo'.
Load address: 0x800000
Loading: #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 ###########
done
Bytes transferred = 4381825 (42dc81 hex)
<<stop_sound>>
## Booting image at 00100000 ...
   Image Name:   Linux-2.6.12.6-arm1
   Created:      2006-10-04   4:37:49 UTC
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    1790876 Bytes =  1.7 MB
   Load Address: 00008000
   Entry Point:  00008000
   Verifying Checksum ... OK
OK
## Loading Ramdisk Image at 00800000 ...
   Image Name:   initrd
   Created:      2006-12-30   7:09:41 UTC
   Image Type:   ARM Linux RAMDisk Image (gzip compressed)
   Data Size:    4381761 Bytes =  4.2 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.01
CONFIG_BUFFALO_PLATFORM CONFIG_BUFFALO_LINKSTATION_LSGL ---
Uncompressing Linux.................................................................................................................... done, booting the kernel.
Linux version 2.6.12.6-arm1 (root@localhost.localdomain) (gcc version 3.4.4 (release) (CodeSourcery ARM 2005q3-2)) #79 Wed Oct 4 13:37:40 JST 2006
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 = 200000000, Tclk = 166664740
	:
	:
Starting kernelmon:INIT: Entering runlevel: 2
Starting system log daemon: syslogd.
Starting kernel log daemon: klogd.
Starting MTA: exim4.
Starting internet superserver: inetd.
Starting deferred execution scheduler: atd.
Starting periodic command scheduler: cron.

Debian GNU/Linux 3.1 hackkit ttyS0

hackkit login: 
Good Job!


HD-HGLAN: ファームウェア 1.63 へアップデート(3)
ハックの記録
LinkStation/玄箱 をハックしよう

LS-GL: オリジナル HDD へ debian をインストール

Copyright (C) 2007 Yasunari Yamashita. All Rights Reserved.
yasunari @ yamasita.jp 山下康成@京都府向日市