LINUX.ORG.RU

Восстановить конфигурацию u-boot на Netgear ReadyNAS RND-4000

 ,


0

1

Люди что-то нажали, в результате чего коробка пытается грузиться через USB:

(подключились к UART в U-Boot)

 
print
...
bootcmd=usb start;fatload usb 0:1 0x1200000 /uImage-recovery;fatload usb 0:1 0x2000000 /initrd-recovery.gz;bootm 1200000 2000000
bootargs=console=ttyS0,115200 mtdparts=nand_mtd:0x180000@0(u-boot),0x20000@0x180000(u-boot-env),0x600000@0x200000(uImage),0x1000000@0x800000(minirootfs),0x6800000@0x1800000(jffs2);
...

В разделах uImagе и minirootfs лежит, похоже, верная дата, я смог запустить ядро через

nand read.e 0x800000 0x200000 0x600000
bootm 0x800000

Но я не понимаю, как ему указать rootfs. Без дополнительных аргументов (и с root=/dev/mtdblk3) ядро ругается на неуказанный параметр root= На этот самый minirootfs натравлен binwalk, который сказал, что это

uImage header, header size: 64 bytes, header CRC: 0xFF2283CE, created: 2011-10-09 05:50:10, image size: 4000169 bytes, Data Address: 0x0, Entry Point: 0x0, data CRC: 0xE8FDCB36, OS: Linux, CPU: ARM, image type: RAMDisk Image, compression type: gzip, image name: "initrd"

Что прописать в bootargs, чтоб оно запустилось?

Ответ на: комментарий от ktk
Marvell>> printenv
baudrate=115200
loads_echo=0
ipaddr=192.168.58.21
serverip=192.168.58.135
rootpath=/mnt/ARM_FS/
netmask=255.255.255.0
run_diag=no
console=console=ttyS0,115200
CASset=min
ethprime=egiga0
bootargs_root=root=/dev/nfs rw
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;
ethmtu=1500
mvPhoneConfig=mv_phone_config=dev0:fxs,dev1:fxs
mvNetConfig=mv_net_config=(00:11:88:0f:62:81,0:1:2:3),mtu=1500
usb0Mode=host
yuk_ethaddr=00:00:00:EE:51:81
nandEcc=1bit
netretry=no
rcvrip=169.254.100.100
loadaddr=0x02000000
autoload=no
ethaddr=e0:46:9a:a0:b5:13
stdin=serial
stdout=serial
stderr=serial
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
pcieTune=no
bootcmd=usb start;fatload usb 0:1 0x1200000 /uImage-recovery;fatload usb 0:1 0x2000000 /initrd-recovery.gz;bootm 1200000 2000000
ethact=egiga0
bootargs=console=ttyS0,115200 mtdparts=nand_mtd:0x180000@0(u-boot),0x20000@0x180000(u-boot-env),0x600000@0x200000(uImage),0x1000000@0x800000(minirootfs),0x6800000@0x1800000(jffs2);

Environment size: 1325/131068 bytes
olegkrutov ()
Последнее исправление: olegkrutov (всего исправлений: 1)
Ответ на: комментарий от olegkrutov

Но я не понимаю, как ему указать rootfs.

Видимо так

root=/dev/mtdblock4 rw rootwait rootfstype=jffs2

minirootfs uImage header

похоже это вариант ядра с initramfs для апгрейдов или аварийной загрузки

anonymous ()
Ответ на: комментарий от anonymous

Как вариант можно попробовать сбросить переменные окружения к дефолтным значениям

https://www.denx.de/wiki/U-Boot/TaskSetEnvironmentDefaults

но результат может быть и отрицательным :) лучше использовать это в крайнем случае. Можно сделать дамп убута и посмотреть простым текстовым редактором например поискать там «console» - в бинарнике убута это и будут дефолтные переменные окружения

anonymous ()
Ответ на: комментарий от anonymous

Чудеса

Внезапно всё начало грузиться само.

Оказалось, что jffs2 весь стёрт, а env выглядит теперь так:

baudrate=115200
loads_echo=0
ipaddr=192.168.58.21
serverip=192.168.58.135
rootpath=/mnt/ARM_FS/
netmask=255.255.255.0
run_diag=no
console=console=ttyS0,115200
CASset=min
ethprime=egiga0
bootargs_root=root=/dev/nfs rw
bootargs_end=:::DB88FXX81:eth0:none
image_name=uImage
bootcmd=nand read.e 0x1200000 0x200000 0x600000;nand read.e 0x2000000 0x800000 0x1000000;bootm 0x1200000 0x2000000
standalone=fsload 0x2000000 $(image_name);setenv bootargs $(console) root=/dev/mtdblock0 rw ip=$(ipaddr):$(serverip)$(bootargs_end) $(mvPhoneConfig); bootm 0x2000000;
ethaddr=00:50:43:00:02:02
ethmtu=1500
mvPhoneConfig=mv_phone_config=dev0:fxs,dev1:fxs
mvNetConfig=mv_net_config=(00:11:88:0f:62:81,0:1:2:3),mtu=1500
usb0Mode=host
yuk_ethaddr=00:00:00:EE:51:81
nandEcc=1bit
netretry=no
rcvrip=169.254.100.100
loadaddr=0x02000000
autoload=no
stdin=serial
stdout=serial
stderr=serial
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
pcieTune=no
ethact=egiga0
bootargs=console=ttyS0,115200 reason=normal mtdparts=nand_mtd:0x180000@0(u-boot),0x20000@0x180000(u-boot-env),0x600000@0x200000(uImage),0x1000000@0x800000(minirootfs),0x6800000@0x1800000(jffs2);

Environment size: 1325/131068 bytes

Неясно, на основе чего такое происходит и не случится ли оно снова :(

olegkrutov ()