Как работает 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.