четверг, 8 марта 2012 г.

Guru Plug Server Plus (GPS+) восстановление (unbrick) и заливка Debian'а

В процессе игр с сабжем были использованы материалы по ссылкам:

http://bzed.de/posts/2010/05/installing_debian_on_the_guruplug_server_plus/
http://www.cyrius.com/debian/kirkwood/sheevaplug/install.html
http://plugcomputer.org/plugforum/index.php?topic=1648
http://www.newit.co.uk/forum/index.php/topic,410.0.html

Для подключения к консоли использовался "родной" JTAG адаптер.
После подключения интерфейсов и включения GPS+ есть 3 секунды для остановки загрузки и попадания в uBoot. То есть перед включением сервака проверяем, на какой интерфейс сел адаптер:
dmesg | grep tty
в моем случае он приземлился на ttyUSB0
screen /dev/ttyUSB0 115200
(не забываем, что выйти из сессии можно по комбинации Ctrl+a нажать k, потом согласиться с выходом - y).
Запускаем screen и включаем сервак, жмем любой баттон для входа в загрузчик (для этого всего 3 секунды!).

При успехе, попадаем в строку приглашения: Marvell>>
сразу просматриваем переменные окружения и версию загрузчика:
>> version
U-Boot 2009.11-rc1-00602-g28a9c08-dirty (Feb 09 2010 - 18:15:21)

>> printenv
bootcmd=setenv ethact egiga0; ${x_bootcmd_ethernet}; setenv ethact egiga1; ${x_bootcmd_ethernet}; ${x_bootcmd_usb}; ${x_bootcmd_kernel}; setenv bootargs ${x_bootargs} ${x_bootargs_root}; bootm 0x6400000;
bootdelay=3
baudrate=115200
x_bootcmd_ethernet=ping 192.168.2.1
x_bootcmd_usb=usb start
x_bootcmd_kernel=nand read.e 0x6400000 0x100000 0x400000
x_bootargs=console=ttyS0,115200
x_bootargs_root=ubi.mtd=2 root=ubi0:rootfs rootfstype=ubifs
ethact=egiga0
ethaddr=***
eth1addr=***
stdin=serial
stdout=serial
stderr=serial
Environment size: 549/131068 bytes

по команде help выводятся доступные команды. В "моей" версии загрузчика не было части нужных команд, например, работы с устройствами с файловыми системами ext2-3-4. Так что загрузчик нужно обновить. Сделать это можно несколькими способами, в частности, с USB носителя (в FAT) или по сети с TFTP сервера.

Бинарник загрузчика использованный мной:
http://people.debian.org/~tbm/u-boot/2011.12-2/guruplug/u-boot.kwb
Выбор пал на сетевую загрузку, для чего были добавлены настройки:
setenv bootdelay 10
setenv ipaddr 172.17.18.248
setenv serverip 172.17.18.247
saveenv
tftpboot 0x0800000 u-boot.kwb
nand erase 0x0 0x60000
nand write 0x0800000 0x0 0x60000
reset
В результате получен девайс в новой версией загрузчика:
U-Boot 2011.12 (Jan 08 2012 - 21:46:50)

Теперь необходимо загрузить uImage и uInitrd, чтобы позднее начать сетевую загрузку и установку самой ОС. Это также можно сделать по сети (через TFTP) или с носителя.
Для разнообразия попробовал разобраться с носителем: в GPS+ есть слот для карт microSD, вот такую карточку на 8Гб и использовал (на нее же позднее ставится ОС).
Карта отформатирована в ext4 (через GParted).

!Помнить! После создания раздела и форматирования владельцем карты становится root, так что для возможности записи данных на карту нужно сменить владельца:
sudo chown mik17 /media/guruplug/

Нужные файлы доступны по ссылкам:
ftp://ftp.debian.org/debian/dists/stable/main/installer-armel/current/images/kirkwood/netboot/marvell/sheevaplug/uImage
и
ftp://ftp.debian.org/debian/dists/stable/main/installer-armel/current/images/kirkwood/netboot/marvell/sheevaplug/uInitrd

Записываем их в корень карточки и саму карту вставляем в GPS+.

На всякий случай повторно включаем поддержку USB устройств (заодно будет выполнен и поиск носителей):
>> usb start
(Re)start USB...
USB: Register 10011 NbrPorts 1
USB EHCI 1.00
scanning bus for devices... 3 USB Device(s) found
scanning bus for storage devices... Device NOT ready
Request Sense returned 02 3A 00
2 Storage Device(s) found

определяем, какой девайс - наша карта:
>> usb storage
Device 0: Vendor: Generic Rev: 9909 Prod: STORAGE DEVICE
Type: Removable Hard Disk
Capacity: not available
Device 1: Vendor: Generic Rev: 9909 Prod: STORAGE DEVICE
Type: Removable Hard Disk
Capacity: 7384.0 MB = 7.2 GB (15122432 x 512)

нас интересует Device 1, точнее его первый раздел.

Загружаем файлы с карточки:
>> ext2load usb 1:1 0x00800000 /uImage
Loading file "/uImage" from usb device 1:1 (usbdb1)
1435184 bytes read
>> ext2load usb 1:1 0x01100000 /uInitrd
Loading file "/uInitrd" from usb device 1:1 (usbdb1)
3172565 bytes read

Теперь добавляем в переменные окружения загрузку с карты памяти:
setenv bootargs_console console=ttyS0,115200
setenv bootcmd_usb 'usb start; ext2load usb 1:1 0x00800000 /uImage; ext2load usb 1:1 0x01100000 /uInitrd'
setenv bootcmd 'setenv bootargs $(bootargs_console); run bootcmd_usb; bootm 0x00800000 0x01100000'
saveenv
setenv bootargs console=ttyS0,115200n8 base-installer/initramfs-tools/driver-policy=most

Начинаем процесс установки !Важно! необходимо точно убедиться, что с сетевыми настройками нет проблем, так как сабж тянет установочные файлы из Инета.
bootm 0x00800000 0x01100000
В процессе установки задаются стандартные вопросы.

После установки "внезапно" выяснится, что имеющийся беспроводной интерфейс не видится, а в логах примерно такие сообщения:
can't load helper firmware
failed to load helper firmware

Для решения этой проблемы нужно загрузить файлы sd8688.bin и sd8688_helper.bin в /lib/firmware
Взять эти файлы можно по ссылкам:
http://git.infradead.org/users/dwmw2/linux-firmware.git/blob/8ad78631586495ca5738c78884c14bfaf29f633e:/libertas/sd8688.bin
и
http://git.infradead.org/users/dwmw2/linux-firmware.git/blob/8ad78631586495ca5738c78884c14bfaf29f633e:/libertas/sd8688_helper.bin
После перезагрузки беспроводной интерфейс появится.

Комментариев нет:

Отправить комментарий