Прошивка ядра в ac100

From Toshiba AC100 wiki
Jump to navigation Jump to search

Бэкап

Перед прошивкой лучше сохранить содержимое партиции, которую будете перешивать, чтобы можно было просто откатиться. Как это провернуть написано на странице Бэкап.

Sosboot

Если используете прошивку с устройства, то позаботьтесь о том, чтобы у вас работал sosboot. Он нужен в случае, если новое ядро не заработает.

Модули

При обновлении ядра нужно обновлять модули.. Иначе модули от старого ядра не загрузятся и часть функционала работать не будет.

Обновление ядра

Если у Вас стоит ubutntu с кастомным ядром, и вы хотите поставить ядро из deb пакета, то придется немного схитрить, т.к. инсталлятор в deb пакете ядра без initrd не считает валидными и ругается. Чтобы обойти эту проблему, нужно не перезагружая систему залить (командой dd) в партицию с ядром (не перепутайте номер) образ инсталлятора ubuntu (тот самый, с помощью которого ставилась убунту). Теперь deb пакет должен поставиться без проблем. Замечание: стоит иметь в виду, что ubuntu использует в cmdline uuid для обозначения root партиции. Поэтому будьте аккуратнее, обновляясь на кастомное ядро.

Прошивка нового ядра

На данный момент существует 4 способа прошивки ядра в 5 или 6 раздел (5 - SOS, 6 - основной):

Для прошивки с другого компьютера необходимо включить AC100 в режиме восстановления - для этого надо зажать CTRL+ESC и нажать кнопку включения. Индикатор питания должен загореться, а экран останется чёрным.

1. Используя утилиту nvflash

(через кабель USB-miniUSB с другого компьютера, Windows, Linux)

Для этого нужно раздобыть nvflash (deb пакет, либо в linux4tegra для линукса, либо Файл:Nvflash-win.zip. Для windows также потребуется установить драйвер устройства. Он есть в скачиваемом архиве). Замечание: под Linux'ом nvflash надо запускать с правами root.

Общая схема работы такова: 1. Загружаем фастбут в оперативную память устройства (чтобы оно смогло выполнять последующие команды) 2. Выполняем все прочие команды пока не надоест, либо пока что-нибудь не упадет с ошибкой 3. В случае какой-нибудь ошибки нужно выключить и опять включить девайс (>8 секунд удержания кнопки питания, затем, когда погаснет индикатор питания, нажать снова) и начинать с пункта 1. (т.е., залить фастбут, и только после этого выполнять команды)

nvflash в линуксовой версии лежит в папке после распаковки linux4tegra/nvflash В версии для windows - в той папке, в которую вы установили.

Заливка бутлоадера: Linux (если используете nvflash 12 версии, то надо использовать harmony/fastboot.bin):

./nvflash --bl ../prebuilt/fastboot.stock.bin --go

Windows:

nvflash --bl fastboot.stock.bin --go

Дальнейшее использование:

nvflash -r <команды> --go

Внимание: ключ -r сообщает nvflash, что fastboot.bin уже в оперативке устройства; ключ --go - что после выполнения основной команды необходимо вернуть управление фастбуту (в противном случае девайс перестанет отзываться на команды и придется его перезагружать и заново заливать фастбут в оперативку). Замечание: имя файла загрузчика может быть не fastboot.stock.bin, а fastboot.bin или каким-то другим.

Запись раздела (рекомендуется использовать эту команду):

nvflash -r --download N path-to-my-img.img --go

где N - номер раздела, в который осуществляется прошивка, и path-to-my-img.img - путь к образу, который в этот раздел будем прошивать.

Посекторная запись (используйте с осторожностью, можно ошибиться с расчетами):

nvflash -r --rawdevicewrite 768 128 path-to-my-img.img --go

Пример прошивки ядра в 6-ю партицию из-под linux:

./nvflash --bl ../prebuilt/fastboot.stock.bin --go
./nvflash -r --download 6 /home/ubuntu/Downloads/2.38.3-hf-savalik-b0ea71b.0p12.img

Пример прошивки ядра в 6-ю партицию из-под windows:

nvflash --bl  fastboot.stock.bin --go
nvflash -r --download 6 ubuntu-11.10-preinstalled-desktop-armel+ac100.bootimg

2. Используя утилиту putusb

(putusb от muromec, через кабель USB-miniUSB с другого компьютера, Linux (Windows? утилита написана на python. Кажется, должно работать и под Windows))

Для этого вам нужно будет установить пакеты python-qt4 и python-usb (если нет такого пакета - посмотрите в настройки источников приложений (в последних версиях Убунту - Центр приложений Ubuntu, в меню ищем пункт Источники приложений) и установите флажки universe и multiverse). Запускается командой

sudo python qt-putusb.py

Интерфейс графический и довольно тривиальный.

3. Используя dd

(с самого устройства)

Для этого нужно иметь ядро, с которого видно разделы на внутреннем SSD и найти среди них нужные (SOS ~ 5MB, LNX ~ 8MB). Если все ок, вы нашли нужный раздел и уверены, что это именно тот раздел, который нужен, то (четырежды подумайте, стоит ли, если вы не уверены в себе) просто пишем ядро командой dd:

dd if=/my/image/path.img of=/dev/mmcblk0pX

где X - номер вашего раздела. Возможно, у вас не mmcblk0, а mmcblk3 - такое тоже бывает. Просто будьте внимательны и осторожны.

Пример (внимание, в примере 2, а не 12):

sudo dd if=zImage.2.6.38.3-c.bmw+.sd.img of=/dev/mmcblk0p2

4. Используя flash-kernel

(с самого устройства)

sudo flash-kernel

По умолчанию ядро берется из /boot/vmlinuz, рамдиск — из /boot/initrd.img и cmdline из /boot/bootimg.cfg

Для работы flash-kernel необходим установленный abootimg. Образ ядра, прошитый в данный момент времени, должен быть с ramdisk, хотя бы минимальным. Пустой cpi.gz тоже подойдет.