Как работает fastboot boot <kernel>?

Fastboot имеет следующую удобную функцию (если загрузка пользовательского образа не удалась, устройство просто волшебным образом загрузит изображение по умолчанию в следующий раз, и все будет в порядке):

Для загрузки с образом ядра на стороне хоста

Эта команда позволяет вам загружать образ ядра (и необязательный образ корневой файловой системы) и загружать телефон вместе с ними, вместо использования ядра и rootfs в разделе загрузочной флэш-памяти. Это очень полезно при разработке ядра или модификации rootfs.

fastboot boot []

Кто-нибудь знает, как это внутренне работает? Копируется ли ядро ​​в специальный загрузочный раздел перед перезагрузкой устройства? (ОБНОВЛЕНИЕ: Как указывается в ответе, перезагрузки не происходит, так как fastboot является шагом в процессе загрузки, что в основном делает мой вопрос бессмысленным.) Я искал исходный код fastboot, но, похоже, он содержит только то, что происходит на стороне хоста, а не на устройстве.

Я имею в виду, что функция прошивки работает довольно легко, я могу имитировать ее, просто скопировав загрузочный образ с пользовательским ядром в boot раздел, например, через:

dd if='<my_boot.img>' of='/dev/block/platform/msm_sdcc.1/by-name/boot'

Кстати: я задаю вопрос из-за приложения, которое я разрабатываю; Я бы хотел "без риска" загрузить собственное ядро ​​прямо с устройства, где оно хранится, например, на SD-карте.

1 ответ

Решение

Копируется ли ядро ​​в специальный загрузочный раздел перед перезагрузкой устройства?

Нет, не будет никаких изменений для любого раздела.
Загрузка ядра означает загрузку (то есть чтение в память) образа ядра с устройства хранения. Эта быстрая загрузка аналогична сетевой загрузке, например, образ ядра загружается с сервера / хоста по каналу Ethernet с использованием TFTP. Если единственное намерение состоит в том, чтобы загрузить систему с использованием образа ядра, то просто нет причины также записывать образ ядра в раздел, особенно если он не был явно указан.

Необязательная корневая файловая система этой операции четко указана как образ виртуального диска, который также не требует записи или сохранения в разделе.

Кто-нибудь знает, как это внутренне работает?

Программа fastboot - это альтернативный загрузчик, который запускается после перезагрузки устройства.
Ядро загружается с хоста через USB в память. Дополнительные rootfs (RAM-диск или, возможно, образ initramfs) также могут быть загружены с хоста через USB в память. После загрузки может начаться обычная загрузка ядра.

Кстати: я задаю вопрос из-за приложения, которое я разрабатываю; Я бы хотел "без риска" загрузить собственное ядро ​​прямо с устройства, где оно хранится, например, на SD-карте

Вам, вероятно, придется использовать какой-то другой загрузчик / метод, отличный от этого fastboot.

Другие вопросы по тегам