Как останосить загрузчик в Убунту?

Установка, обновление, настройка Linux

Модераторы: Olej, adminn

j.chernikov

Как останосить загрузчик в Убунту?

Непрочитанное сообщение j.chernikov » 24 окт 2011, 09:37

Доброго времени суток!
Есть беда и суть такова: в наличии имеется IP KVM Rextron, который был убит прошивкой. На сегодня имеем девайс, который стартует, но потом уходит в ребут. Есть мысль, что если ему остановить загрузчик и указать правильный путь (т.е. грузится не с флеша, а откуда господин скажет - то он оживёт).

Вот лог загрузки.


U-Boot 1.1.1 (Jan 11 2007 - 10:36:35)

CPU: IBM PowerPC 405EP Rev. B at 200 MHz (PLB=100, OPB=50, EBC=50 MHz)
IIC Boot EEPROM disabled
PCI async ext clock used, internal PCI arbiter enabled
16 kB I-Cache 16 kB D-Cache
DRAM: 32 MB
FLASH: 8 MB
MAC Address: 00:0e:c5:00:62:9e
Load FPGA: 212392 bytes: Ok
## Booting image at 10000000 ...
Image Name: Linux-2.4.25
Image Type: PowerPC Linux Kernel Image (gzip compressed)
Data Size: 773504 Bytes = 755.4 kB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK
Linux version 2.4.25 (x@x) (gcc version 2.95.3 20010315 (release)) #1038 Fri Apr 18 14:27:17 EDT 2008
IBM Walnut port (C) 2000-2002 MontaVista Software, Inc. (source@mvista.com)
Board customizations (C) 2002-6 Peter D. Gray.
On node 0 totalpages: 8192
zone(0): 8192 pages.
zone(1): 0 pages.
zone(2): 0 pages.
Kernel command line: root=/dev/mtdblock4 mtdparts=phys:1m(kern),128k(fpga),64k(unique),1m(user),5824k(cramfs),128k(boot) TYPE=J console=ttyS0,115200
Calibrating delay loop (skipped)... 199.88 BogoMIPS
Memory: 30400k available (1412k kernel code, 464k data, 84k init, 0k highmem)
Dentry cache hash table entries: 4096 (order: 3, 32768 bytes)
Inode cache hash table entries: 2048 (order: 2, 16384 bytes)
Mount cache hash table entries: 512 (order: 0, 4096 bytes)
Buffer cache hash table entries: 1024 (order: 0, 4096 bytes)
Page-cache hash table entries: 8192 (order: 3, 32768 bytes)
POSIX conformance testing by UNIFIX
PCI: Probing PCI hardware
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
Initializing RT netlink socket
Starting kswapd
devfs: v1.12c (20020818) Richard Gooch (rgooch@atnf.csiro.au)
devfs: boot_options: 0x1
i2c-core.o: i2c core module version 2.6.1 (20010830)
i2c-dev.o: i2c /dev entries driver module version 2.6.1 (20010830)
i2c-proc.o version 2.6.1 (20010830)
pty: 256 Unix98 ptys configured
Serial driver version 5.05c (2001-07-08) with MANY_PORTS SHARE_IRQ SERIAL_PCI enabled
ttyS00 at 0xef600300 (irq = 0) is a 16550A
ttyS01 at 0xef600400 (irq = 1) is a 16550A
IBM gpio driver version 07.25.02
GPIO #0 at 0xc300d700
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
loop: loaded (max 8 devices)
emac: IBM OCP EMAC Ethernet driver, version 2.1
Maintained by Benjamin Herrenschmidt <benh@kernel.crashing.org>
mal0: Initialized, 4 tx channels, 2 rx channels
eth0: IBM emac, MAC 00:0e:c5:00:62:9e
eth0: Found Generic MII PHY (0x01)
emac1: Can't find PHY.
PPP generic driver version 2.4.2
PPP Deflate Compression module registered
physmap flash device: 800000 at 10000000
phys: Found 1 x16 devices at 0x0 in 16-bit bank
Amd/Fujitsu Extended Query Table at 0x0040
phys: CFI does not contain boot bank location. Assuming top.
number of CFI chips: 1
cfi_cmdset_0002: Disabling erase-suspend-program due to code brokenness.
6 cmdlinepart partitions found on MTD device phys
Creating 6 MTD partitions on "phys":
0x00000000-0x00100000 : "kern"
0x00100000-0x00120000 : "fpga"
0x00120000-0x00130000 : "unique"
0x00130000-0x00230000 : "user"
0x00230000-0x007e0000 : "cramfs"
0x007e0000-0x00800000 : "boot"
IBM IIC driver v2.0
ibm-iic0: using standard (100 kHz) mode
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP: Hash tables configured (established 2048 bind 2048)
ip_conntrack version 2.1 (256 buckets, 2048 max) - 292 bytes per conntrack
ip_tables: (C) 2000-2002 Netfilter core team
arp_tables: (C) 2002 David S. Miller
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
NET4: Ethernet Bridge 008 for NET4.0
cramfs: wrong magic
FAT: bogus logical sector size 65535
FAT: bogus logical sector size 65535
Kernel panic: VFS: Unable to mount root fs on 1f:04
<0>Rebooting in 180 seconds..

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Как останосить загрузчик в Убунту?

Непрочитанное сообщение Olej » 24 окт 2011, 14:29

j.chernikov писал(а): Вот лог загрузки.
Я пока увидел следующее:
- девайс на PPC ... это усложняет ситуацию (более редкая сборка);
- грузится он U-Boot ... здесь много специфики...
- ядро достаточно старое 2.4.25 ...
- а слетает он тогда, когда пытается подмонтировать корневую систему /root ... я так понимаю, что там (flash) просто нет какого-то initramfs или другого формата ramfs - можно предположить, что при заливке он просто потерялся...
Может можно достать оттуда, откуда брали перепрошивку, достать файл initramfs и залить его в флэш?

P.S. Более того, вот он у вас:

Код: Выделить всё

cramfs: wrong magic

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Как останосить загрузчик в Убунту?

Непрочитанное сообщение Olej » 24 окт 2011, 16:00

Я попросил прокомментировать ситуацию человека, который не один раз делал embedded устройства под Linux и на разных проц. архитектурах, именно делал с нуля, а не только восстанавливал существующее.
Цитирую пока здесь его ответ в Skype (надеюсь, это не вызовет его возражений):
[15:39:12 EEST] Igor Medvedev: Олег иванович я попытался зарегестрироваться на этом ресурсе но активации на мыло не пришло :( Может сервер лежит
[15:39:26 EEST] Igor Medvedev: у этого устройства стерли рутфс
[15:40:29 EEST] Igor Medvedev: обычно можно остановить убут на стадии загрузки нажатием любой клавиши в консоли RS-232
[15:41:27 EEST] Igor Medvedev: может есть какие то user_key для того чтобы убут остановился
[15:42:38 EEST] Igor Medvedev: если его остановить то он понимает фат. и можно обновить ядро обычно его кладут на первый раздел. а рутфс лежит на втором разделе
[15:43:17 EEST] Igor Medvedev: но к сожалению 2 раздел обычно не фат и убут его не видит.
[15:44:31 EEST] Igor Medvedev: я конфигурировал убут для старта ядра с USB mass storage device. можно сделать именно так поднять ядро (любое например собрать билдрутом под данный процессор PowerPC), подмонтировать флеш диск и скопировать новую рутфс
[15:53:08 EEST] Igor Medvedev: вот как я конфигурировал свою плату для старта с юсб флешки:setenv bootcmd 'usb start; fatload usb 0:1 0x22000000 uImage; bootm 0x22000000'
setenv bootargs 'console=ttyS0,115200n8 noinitrd rw root=/dev/sda2 rootwait rootfstype=ext2 mem=32M'
[15:53:45 EEST] Igor Medvedev: ключевое место: setenv bootcmd 'usb start; fatload usb 0:1
[15:54:44 EEST] Igor Medvedev: и еще вот это: root=/dev/sda2 rootwait rootfstype=ext2
[15:55:15 EEST] Igor Medvedev: это мы говорим ядру откуда брать рутфс и каков тип ФС
Надеюсь, что это вам что-то подскажет.

tundra37
Писатель
Сообщения: 149
Зарегистрирован: 03 мар 2012, 19:26
Контактная информация:

Re: Как останосить загрузчик в Убунту?

Непрочитанное сообщение tundra37 » 12 мар 2012, 19:38

Ну и что? Я могу только подсказать, что ключ в том числе и здесь: root=/dev/mtdblock4 mtdparts=phys:1m(kern),128k(fpga),64k(unique),1m(user),5824k(cramfs),128k(boot)
Это разбивка флеш: mtd0 - ядро..... mtd4 - cramfs... Один из вариантов : user затер Правда это ничем не помогает починить.
Далее я могу только теоретизировать и искать аналогии. Вам надо нажать клавишу в самом начале, "# <ВОТ ЗДЕСЬ> # Booting image at 10000000 ...
# - это приглашение uboot. он немного ждет и грузит ядро из флеша.
Как это делается ? Я знаю(понимаю) только один реальный вариант: прошивка роутера DIR-300. Там ловят этот момент, пингуя роутер по служебному IP загрузчика.
Делается это, чтобы избежать запаивания UART. Что делать вам зависит от ... Про uboot наверно есть инфа и можно попробовать разобраться.

Ответить

Вернуться в «Администрирование Linux»

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и 4 гостя