NFS boot

SheevaPlug

NFS サーバの準備ができたので、 復旧のため NFS ブートを試す。

カーネルのブートはできているので、root fs だけで良い。
まぁ、カーネルの tftp boot は既にできているのだが。

NFS root を置く

SheevaPlug_DocumentationPackage1.2.zip を 展開してできた SheevaPlug Development Kit - Writing Jaunty Filesystem on the NAND flash-Rev1.2.pdf を見ても、何を置けば良いかわからない。
困ったドキュメントだ。

SheevaPlug_Host_SWsupportPackageLinuxHost1.2.zip を展開する

ude:/etc# cd /tmp
ude:/tmp# ls /mnt/SheevaPlug/1.2/SheevaPlug_Host_SWsupportPackageLinuxHost1.2.zip
/mnt/SheevaPlug/1.2/SheevaPlug_Host_SWsupportPackageLinuxHost1.2.zip
ude:/tmp# unzip !$
unzip /mnt/SheevaPlug/1.2/SheevaPlug_Host_SWsupportPackageLinuxHost1.2.zip
Archive:  /mnt/SheevaPlug/1.2/SheevaPlug_Host_SWsupportPackageLinuxHost1.2.zip
   creating: SheevaPlug_Host_SWsupportPackageLinuxHost/LinuxHost/
  inflating: SheevaPlug_Host_SWsupportPackageLinuxHost/LinuxHost/gcc.tar.bz2
  inflating: SheevaPlug_Host_SWsupportPackageLinuxHost/LinuxHost/Linux Host Filesystem - rootfs.tar.bz2
ude:/tmp#
できあがった Linux Host Filesystem - rootfs.tar.bz2 を見る
ude:/tmp# tar jtvf SheevaPlug_Host_SWsupportPackageLinuxHost/LinuxHost/Linux\ Host\ Filesystem\ -\ rootfs.tar.bz2
drwxr-xr-x root/root         0 2009-02-25 13:57 rootfsv1.0/
drwxr-xr-x root/root         0 2008-02-27 02:19 rootfsv1.0/sbin/
lrwxrwxrwx sandeepg/sandeepg 0 2009-04-11 08:23 rootfsv1.0/sbin/getty -> ../bin/busybox
lrwxrwxrwx sandeepg/sandeepg 0 2009-04-11 08:23 rootfsv1.0/sbin/loadkmap -> ../bin/busybox
lrwxrwxrwx sandeepg/sandeepg 0 2009-04-11 08:23 rootfsv1.0/sbin/logread -> ../bin/busybox
lrwxrwxrwx sandeepg/sandeepg 0 2009-04-11 08:23 rootfsv1.0/sbin/route -> ../bin/busybox
lrwxrwxrwx sandeepg/sandeepg 0 2009-04-11 08:23 rootfsv1.0/sbin/ifconfig -> ../bin/busybox
lrwxrwxrwx sandeepg/sandeepg 0 2009-04-11 08:23 rootfsv1.0/sbin/watchdog -> ../bin/busybox
lrwxrwxrwx sandeepg/sandeepg 0 2009-04-11 08:23 rootfsv1.0/sbin/klogd -> ../bin/busybox
-rwxr-xr-x root/root    778760 2008-02-27 02:19 rootfsv1.0/sbin/ldconfig
ude:/tmp#
	:
	:
それっぽい

展開する。

ude:/tmp# cd /srv/nfs/
ude:/srv/nfs# tar jxvf /tmp/SheevaPlug_Host_SWsupportPackageLinuxHost/LinuxHost/Linux\ Host\ Filesystem\ -\ rootfs.tar.bz2
rootfsv1.0/
rootfsv1.0/sbin/
rootfsv1.0/sbin/getty
rootfsv1.0/sbin/loadkmap
	:
	:
rootfsv1.0/etc/rpc
rootfsv1.0/etc/group
rootfsv1.0/etc/shells
rootfsv1.0/etc/fstab
rootfsv1.0/etc/passwd
ude:/srv/nfs#

U-Boot の環境変数の設定

さあ、どうやって boot する?

まずは、U-Boot のプロンプトに。

512 MB

CPU : Marvell Feroceon (Rev 1)

Streaming disabled
Write allocate disabled


USB 0: host mode
PEX 0: interface detected no Link.
Net:   egiga0 [PRIME], egiga1
Hit any key to stop autoboot:  0
Marvell>>
環境変数をバックアップ、、、ってここに貼るだけ
Marvell>> printenv
baudrate=115200
loads_echo=0
rootpath=/mnt/ARM_FS/
netmask=255.255.0.0
CASset=min
MALLOC_len=1
ethprime=egiga0
bootargs_root=root=/dev/mtdblock2 ro
ethmtu=1500
usb0Mode=host
nandEcc=1bit
cesvcid=ULULULULULULPPULULULULULDA
bootargs_end=:::DB88FXX81:eth0:none
image_name=uImage
standalone=fsload 0x2000000 $(image_name);setenv bootargs $(console) root=/dev/mtdblock0 rw ip=$(ipaddr):$(serverip)$(bootargs_end) $(mvPhoneConfig); bootm 0x2000000;
mvPhoneConfig=mv_phone_config=dev0:fxs,dev1:fxs
mvNetConfig=mv_net_config=(00:11:88:0f:62:81,0:1:2:3),mtu=1500
yuk_ethaddr=00:00:00:EE:51:81
netretry=no
rcvrip=169.254.100.100
loadaddr=0x02000000
autoload=no
run_diag=no
bootargs=console=ttyS0,115200 mtdparts=nand_mtd:0x400000@0x100000(uImage),0x1fb00000@0x500000(rootfs) rw root=/dev/mtdblock1 rw ip=10.4.50.4:10.4.50.5:10.4.50.5:255.255.255.0:DB88FXX81:eth0:none
bootcmd=nand read.e 0x800000 0x100000 0x400000; bootm 0x800000
ipaddr=192.168.2.85
serverip=192.168.2.38
ethact=egiga0
filesize=72f18
fileaddr=2000000
ethaddr=00:50:43:01:CA:72
stdin=serial
stdout=serial
stderr=serial
console=console=ttyS0,115200 mtdparts=nand_mtd:0x100000@0(uboot)ro,0x0@0x100000(uImage),0x1ff00000@0x100000(rootfs)rw
mainlineLinux=no
enaMonExt=no
enaCpuStream=no
enaWrAllo=no
pexMode=RC
disL2Cache=no
setL2CacheWT=yes
disL2Prefetch=yes
enaICPref=yes
enaDCPref=yes
sata_dma_mode=yes
netbsd_en=no
vxworks_en=no
bootdelay=3
disaMvPnp=no
enaAutoRecovery=yes

Environment size: 1431/131068 bytes
Marvell>>
bootargs を変えてみる
Marvell>> set bootargs $(console) root=/dev/nfs rw nfsroot=$(serverip):/srv/nfs/rootfsv1.0 ip=$(ipaddr):$(serverip)$(bootargs_end)
Marvell>> printenv
baudrate=115200
loads_echo=0
rootpath=/mnt/ARM_FS/
netmask=255.255.0.0
CASset=min
MALLOC_len=1
ethprime=egiga0
bootargs_root=root=/dev/mtdblock2 ro
ethmtu=1500
usb0Mode=host
nandEcc=1bit
cesvcid=ULULULULULULPPULULULULULDA
bootargs_end=:::DB88FXX81:eth0:none
image_name=uImage
standalone=fsload 0x2000000 $(image_name);setenv bootargs $(console) root=/dev/mtdblock0 rw ip=$(ipaddr):$(serverip)$(bootargs_end) $(mvPhoneConfig); bootm 0x2000000;
mvPhoneConfig=mv_phone_config=dev0:fxs,dev1:fxs
mvNetConfig=mv_net_config=(00:11:88:0f:62:81,0:1:2:3),mtu=1500
yuk_ethaddr=00:00:00:EE:51:81
netretry=no
rcvrip=169.254.100.100
loadaddr=0x02000000
autoload=no
run_diag=no
bootcmd=nand read.e 0x800000 0x100000 0x400000; bootm 0x800000
ipaddr=192.168.2.85
serverip=192.168.2.38
ethact=egiga0
filesize=72f18
fileaddr=2000000
ethaddr=00:50:43:01:CA:72
stdin=serial
stdout=serial
stderr=serial
console=console=ttyS0,115200 mtdparts=nand_mtd:0x100000@0(uboot)ro,0x0@0x100000(uImage),0x1ff00000@0x100000(rootfs)rw
mainlineLinux=no
enaMonExt=no
enaCpuStream=no
enaWrAllo=no
pexMode=RC
disL2Cache=no
setL2CacheWT=yes
disL2Prefetch=yes
enaICPref=yes
enaDCPref=yes
sata_dma_mode=yes
netbsd_en=no
vxworks_en=no
bootdelay=3
disaMvPnp=no
enaAutoRecovery=yes
bootargs=console=ttyS0,115200 mtdparts=nand_mtd:0x100000@0(uboot)ro,0x0@0x100000(uImage),0x1ff00000@0x100000(rootfs)rw root=/dev/nfs rw nfsroot=192.168.2.38:/srv/nfs/rootfsv1.0 ip=192.168.2.85:192.168.2.38:::DB88FXX81:eth0:none

Environment size: 1464/131068 bytes
Marvell>>
保存する。
Marvell>> saveenv
Saving Environment to NAND...
Erasing Nand...Writing to Nand... done
Marvell>>

boot

リセットする
Marvell>> reset

         設_  __                      _ _
        |  \/  | __ _ _ ____   _____| | |
        | |\/| |/ _` | '__\ \ / / _ \ | |
        | |  | | (_| | |   \ V /  __/ | |
        |_|  |_|\__,_|_|    \_/ \___|_|_|
 _   _     ____              _
| | | |   | __ )  ___   ___ | |_
| | | |___|  _ \ / _ \ / _ \| __|
| |_| |___| |_) | (_) | (_) | |_
 \___/    |____/ \___/ \___/ \__|
 ** MARVELL BOARD: SHEEVA PLUG LE

U-Boot 1.1.4 (Apr  9 2009 - 12:23:12) Marvell version: 3.4.16

U-Boot code: 00600000 -> 0067FFF0  BSS: -> 006CEE60

Soc: 88F6281 A0 (DDR2)
CPU running @ 1200Mhz L2 running @ 400Mhz
SysClock = 400Mhz , TClock = 200Mhz

DRAM CAS Latency = 5 tRP = 5 tRAS = 18 tRCD=6
DRAM CS[0] base 0x00000000   size 256MB
DRAM CS[1] base 0x10000000   size 256MB
DRAM Total size 512MB  16bit width
Flash:  0 kB
Addresses 8M - 0M are saved for the U-Boot usage.
Mem malloc Initialization (8M - 7M): Done
NAND:512 MB

CPU : Marvell Feroceon (Rev 1)

Streaming disabled
Write allocate disabled


USB 0: host mode
PEX 0: interface detected no Link.
Net:   egiga0 [PRIME], egiga1
Hit any key to stop autoboot:  0

NAND read: device 0 offset 0x100000, size 0x400000

Reading data from 0x4ff800 -- 100% complete.
 4194304 bytes read: OK
## Booting image at 00800000 ...
   Image Name:   Linux-2.6.22.18
   Created:      2009-04-04   1:49:44 UTC
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2070252 Bytes =  2 MB
   Load Address: 00008000
   Entry Point:  00008000
   Verifying Checksum ... OK
OK

Starting kernel ...

Uncompressing Linux.................................................................................................................................. done, booting the kernel.
Linux version 2.6.22.18 (root@localhost.localdomain) (gcc version 4.2.0 20070413 (prerelease)) #1 Fri Apr 3 18:49:38 PDT 2009
CPU: ARM926EJ-S [56251311] revision 1 (ARMv5TE), cr=00053177
Machine: Feroceon-KW
Using UBoot passing parameters structure
Memory policy: ECC disabled, Data cache writeback
CPU0: D VIVT write-back cache
CPU0: I cache: 16384 bytes, associativity 4, 32 byte lines, 128 sets
CPU0: D cache: 16384 bytes, associativity 4, 32 byte lines, 128 sets
Built 1 zonelists.  Total pages: 130048
Kernel command line: console=ttyS0,115200 mtdparts=nand_mtd:0x100000@0(uboot)ro,0x0@0x100000(uImage),0x1ff00000@0x100000(rootfs)rw root=/dev/nfs rw nfsroot=192.168.2.38:/srv/nfs/rootfsv1.0 ip=192.168.2.85:192.168.2.38:::DB88FXX81:eth0:none
PID hash table entries: 2048 (order: 11, 8192 bytes)
Console: colour dummy device 80x30
Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
Memory: 256MB 256MB 0MB 0MB = 512MB total
Memory: 515584KB available (3772K code, 258K data, 124K init)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
NET: Registered protocol family 16

CPU Interface
-------------
SDRAM_CS0 ....base 00000000, size 256MB
SDRAM_CS1 ....base 10000000, size 256MB
SDRAM_CS2 ....disable
SDRAM_CS3 ....disable
PEX0_MEM ....base e8000000, size 128MB
PEX0_IO ....base f2000000, size   1MB
INTER_REGS ....base f1000000, size   1MB
NFLASH_CS ....base fa000000, size   2MB
SPI_CS ....base f4000000, size  16MB
BOOT_ROM_CS ....no such
DEV_BOOTCS ....no such
CRYPT_ENG ....base f0000000, size   2MB

  Marvell Development Board (LSP Version KW_LSP_4.2.7_patch2)-- SHEEVA PLUG  Soc: 88F6281 A0 LE

 Detected Tclk 200000000 and SysClk 400000000
MV Buttons Device Load
Marvell USB EHCI Host controller #0: c08b0600
PEX0 interface detected no Link.
PCI: bus0: Fast back to back transfers enabled
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
NET: Registered protocol family 2
Time: kw_clocksource clocksource has been installed.
IP route cache hash table entries: 16384 (order: 4, 65536 bytes)
TCP established hash table entries: 65536 (order: 7, 524288 bytes)
TCP bind hash table entries: 65536 (order: 6, 262144 bytes)
TCP: Hash tables configured (established 65536 bind 65536)
TCP reno registered
RTC registered
Use the XOR engines (acceleration) for enhancing the following functions:
  o RAID 5 Xor calculation
  o kernel memcpy
  o kenrel memzero
Number of XOR engines to use: 4
cesadev_init(c00117e4)
mvCesaInit: sessions=640, queue=64, pSram=f0000000
Warning: TS unit is powered off.
MV Buttons Driver Load
JFFS2 version 2.2. (NAND) 誕 ・001-2006 Red Hat, Inc.
io scheduler noop registered
io scheduler anticipatory registered (default)
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing disabled
serial8250.0: ttyS0 at MMIO 0xf1012000 (irq = 33) is a 16550A
serial8250.0: ttyS1 at MMIO 0xf1012100 (irq = 34) is a 16550A
RAMDISK driver initialized: 20 RAM disks of 4096K size 4096 blocksize
Loading Marvell Ethernet Driver:
  o Cached descriptors in DRAM
  o DRAM SW cache-coherency
  o Single RX Queue support - ETH_DEF_RXQ=0
  o Single TX Queue support - ETH_DEF_TXQ=0
  o TCP segmentation offload enabled
  o Receive checksum offload enabled
  o Transmit checksum offload enabled
  o Network Fast Processing (Routing) supported
  o Driver ERROR statistics enabled
  o Driver INFO statistics enabled
  o Proc tool API enabled
  o Rx descripors: q0=128
  o Tx descripors: q0=532
  o Loading network interface(s):
    o eth0, ifindex = 1, GbE port = 0
    o eth1, ifindex = 2, GbE port = 1

mvFpRuleDb (dfcc0000): 16384 entries, 65536 bytes
Intel(R) PRO/1000 Network Driver - version 7.3.20-k2-NAPI
Copyright (c) 1999-2006 Intel Corporation.
e100: Intel(R) PRO/100 Network Driver, 3.5.17-k4-NAPI
e100: Copyright(c) 1999-2006 Intel Corporation

Warning Sata is Powered Off
NFTL driver: nftlcore.c $Revision: 1.98 $, nftlmount.c $Revision: 1.41 $
NAND device: Manufacturer ID: 0xad, Chip ID: 0xdc (Hynix NAND 512MiB 3,3V 8-bit)
Scanning device for bad blocks
Bad eraseblock 274 at 0x02240000
Bad eraseblock 627 at 0x04e60000
Bad eraseblock 663 at 0x052e0000
Bad eraseblock 976 at 0x07a00000
Bad eraseblock 1552 at 0x0c200000
Bad eraseblock 1657 at 0x0cf20000
Bad eraseblock 1658 at 0x0cf40000
Bad eraseblock 2404 at 0x12c80000
Bad eraseblock 2470 at 0x134c0000
Bad eraseblock 2514 at 0x13a40000
Bad eraseblock 2688 at 0x15000000
Bad eraseblock 2690 at 0x15040000
Bad eraseblock 2707 at 0x15260000
Bad eraseblock 2728 at 0x15500000
Bad eraseblock 2771 at 0x15a60000
Bad eraseblock 2781 at 0x15ba0000
Bad eraseblock 3039 at 0x17be0000
Bad eraseblock 3469 at 0x1b1a0000
mtd: partition size too small (0)
Using static partition definition
Creating 3 MTD partitions on "nand_mtd":
0x00000000-0x00100000 : "u-boot"
0x00100000-0x00300000 : "uImage"
0x00300000-0x20000000 : "root"
ehci_marvell ehci_marvell.70059: Marvell Orion EHCI
ehci_marvell ehci_marvell.70059: new USB bus registered, assigned bus number 1
ehci_marvell ehci_marvell.70059: irq 19, io base 0xf1050100
ehci_marvell ehci_marvell.70059: USB 2.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
USB Universal Host Controller Interface driver v3.0
usbcore: registered new interface driver usblp
drivers/usb/class/usblp.c: v0.13: USB Printer Device Class driver
Initializing USB Mass Storage driver...
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
mice: PS/2 mouse device common for all mice
i2c /dev entries driver
Linux telephony interface: v1.00
Marvell Telephony Driver:
mvBoardVoiceAssembleModeGet: TDM not supported(boardId=0x9)
assembly=-1,irq=-1
mp_check_config: Error, invalid voice assembley mode
md: linear personality registered for level -1
md: raid0 personality registered for level 0
md: raid1 personality registered for level 1
raid6: int32x1     97 MB/s
raid6: int32x2    123 MB/s
raid6: int32x4    125 MB/s
raid6: int32x8    111 MB/s
raid6: using algorithm int32x4 (125 MB/s)
md: raid6 personality registered for level 6
md: raid5 personality registered for level 5
md: raid4 personality registered for level 4
raid5: measuring checksumming speed
   arm4regs  :  1084.000 MB/sec
   8regs     :   754.800 MB/sec
   32regs    :   899.600 MB/sec
raid5: using function: arm4regs (1084.000 MB/sec)
device-mapper: ioctl: 4.11.0-ioctl (2006-10-12) initialised: dm-devel@redhat.com
dm_crypt using the OCF package.
sdhci: Secure Digital Host Controller Interface driver
sdhci: Copyright(c) Pierre Ossman
mvsdmmc: irq =28 start f1090000
mvsdmmc: no IRQ detect
usbcore: registered new interface driver usbhid
drivers/hid/usbhid/hid-core.c: v2.6:USB HID core driver
Advanced Linux Sound Architecture Driver Version 1.0.14 (Thu May 31 09:03:25 2007 UTC).
mvCLAudioCodecRegGet: Error while reading register!
mvCLAudioCodecInit: Error - Invalid Cirrus Logic chip/rev ID!
Error - Cannot initialize audio decoder.at address =0xff<6>ALSA device list:
  #0: Marvell mv88fx_snd ALSA driver
TCP cubic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
eth0: link down
eth0: started
IP-Config: Guessing netmask 255.255.255.0
IP-Config: Complete:
      device=eth0, addr=192.168.2.85, mask=255.255.255.0, gw=255.255.255.255,
     host=DB88FXX81, domain=, nis-domain=(none),
     bootserver=192.168.2.38, rootserver=192.168.2.38, rootpath=
md: Autodetecting RAID arrays.
md: autorun ...
md: ... autorun DONE.
Looking up port of RPC 100003/2 on 192.168.2.38
eth0: link up, full duplex, speed 1 Gbps
Root-NFS: Unable to get nfsd port number from server, using default
Looking up port of RPC 100005/1 on 192.168.2.38
Root-NFS: Unable to get mountd port number from server, using default
mount: server 192.168.2.38 not responding, timed out
Root-NFS: Server returned error -5 while mounting /srv/nfs/rootfsv1.0
VFS: Unable to mount root fs via NFS, trying floppy.
VFS: Cannot open root device "nfs" or unknown-block(2,0)
Please append a correct "root=" boot option; here are the available partitions:
1f00       1024 mtdblock0 (driver?)
1f01       2048 mtdblock1 (driver?)
1f02     521216 mtdblock2 (driver?)
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)

こうなると、NFS サーバが悪いのか、SheevaPlug が悪いのかわからない。

困った




←(前のページ)
USB メモリの認識
当月のハックの記録
SheevaPlug/玄柴(KURO-SHEEVA)をハックしよう トップ
(次のページ)→
NFS boot(2)

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