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

Материал из Toshiba AC100 wiki
Перейти к: навигация, поиск

Бэкап

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

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 тоже подойдет.