Дано: андроид приставка М8 с s812 на борту, плата M8 V8_8 20150923, прошивка k200.bcm4335.2015.201510211111 (U-boot-00000-g92ff5df-dirty(m8_n200C_v1@) (Oct 21 2015 - 10:20:19)).
Задача: сделать двойную загрузку линукс/андроид с минимальными затратами.
Проект в стадии реализации прерван...
Что нужно...
кусок Uboot лога:
простая консоль на последовательный порт для отладки (в initramfs):
/bin/sh -i </dev/ttyS0 >/dev/ttyS0 2>&1
Задача: сделать двойную загрузку линукс/андроид с минимальными затратами.
Проект
Что нужно...
- Берем исходники ядра и компонентов с http://openlinux.amlogic.com:8000/download/ARM/, (хотя можно попробовать с родным ядром просто изменив строку параметров ядра.). Родной конфиг и дерево устройств DTS можно легко добыть из родной прошивки или из дампа раздела boot.
- Собираем ядро в формате uImage. Примерный порядок действий http://www.cnx-software.com/2014/03/10/amlogic-gpl-source-code-release-kernel-3-10-u-boot-and-drivers-wi-fi-nand-tvin-mali-gpu/
- Создаем recovery.img. (например так mkbootimg --kernel uImage --ramdisk ramdisk.gz --second myboard.dtb --base 10000000 --pagesize 2048 -o recovery.img)
- SD карту разбиваем на два раздела, первый (20-30мб) форматируем fat32 и кидаем туда recovery.img, второй делаем ext4 и развертываем туда любимый linuxroot.
- Грузимся с зажатой кнопкой для восстановления - должно загрузится новое ядро.
кусок Uboot лога:
update by key...
Enter USB burn
Try connect time out 1001, 1000, 1318
sdio_detect return 1
[mmc_init] SDIO Port B:0, if_type=7, initialized OK!
Device: SDIO Port B
Manufacturer ID: 0
OEM: 0
Name: ran Speed: 20000000
Rd Block Len: 512
SD version 2.0
High Capacity: No
Capacity: 2028994560
Boot Part Size: 0
Bus Width: 4-bit
** Unable to open "aml_sdc_burn.ini" from mmc 0:1 --- file not exist**
reading aml_autoscript
** Unable to read "aml_autoscript" from mmc 0:1 **
enter recovery
Device: SDIO Port B
Manufacturer ID: 0
OEM: 0
Name: ran Speed: 20000000
Rd Block Len: 512
SD version 2.0
High Capacity: No
Capacity: 2028994560
Boot Part Size: 0
Bus Width: 4-bit
reading recovery.img
6811731 bytes read
## ANDROID Format IMAGE
## Booting kernel from Legacy Image at 12000000 ...
Image Name: Linux-3.10.33
Image Type: ARM Linux Kernel Image (lzo compressed)
Data Size: 6784865 Bytes = 6.5 MiB
Load Address: 00208000
Entry Point: 00208000
Verifying Checksum ... OK
Ramdisk start addr = 0x12679000, len = 0x427
Flat device tree start addr = 0x12679800, len = 0x547a magic=0xedfe0dd0
Uncompressing Kernel Image ... OK
простая консоль на последовательный порт для отладки (в initramfs):
/bin/sh -i </dev/ttyS0 >/dev/ttyS0 2>&1
Очень интересно, проект продолжается или уже нет?
ОтветитьУдалитьНет, выяснилось что плата с браком (похоже адресная линия А15 на память не разведена), поэтому памяти доступно всего 1 г( несмотря на физические 2 г).
ОтветитьУдалитьВообщем интерес я потерял...
Однако успел попробовать грузить Дебиан с СД карты - работает (естественно без всяких 3д и видео ускорений)
Напиши как завел Дебиан!!!! Очень интересует!!!
УдалитьСД карту разбил на 2 раздела: 1 фат для размещения там ядра, 2 extfs и скопировать туда корень arm версии линукса. Не забыть добавить в cmdline ядра в конце console=tty0. Ну и правильный initramfs - указать откуда грузить систему.
УдалитьКакто так...
Буду разбираться. Ссылочки кинешь где почитать. Буду благодарен!!!
УдалитьНасчет ссылок не помогу, но отвечу на конкретные вопросы.
Удалитьcmdline ядра в конце console=tty0
ОтветитьУдалитьЭто при компиляции добавлять или можно потом?
У меня помню было при загрузки ругался на tty1 power off чтото такое.
Да, при компиляции, и еще вставить root=/dev/(второй раздел сд карты), ну или править initram
УдалитьСкажите, есть исходники ядра на Amlogic и есть приставка на нем. Можно скомпилить ядро и бутлоадер или проблематично? И можно вытянуть конфигурацию ядра с этого устройства? Надеюсь не ступил я в вопросе)))
ОтветитьУдалитьЕсли железка сделана на основе распространенных референсов, то исходники ядра (и uboot) с сайта амложик скорее всего подойдут. Для компиляции ядра нужен DTS(конфиг оборудования) и собственно конфиг ядра, их можно вытащить из прошивки или подобрать. Для компиляции uboot (зачем,если можно использовать родной?) нужен конфиг, но его придется подбирать.
УдалитьВытащил DTS из прошивки.
ОтветитьУдалитьНо пытался скомпилить с openlinux.amlogic.com на конфиг meson8n2_n200 и не получилось. Уже несколько файлов удалили и на готхабе закрыли проект.
Скажите как Вы кимпилили на свою приставку?
Что откуда удалили?
Удалитьвот исходники ядра http://openlinux.amlogic.com:8000/download/ARM/kernel/, я использовал старую версию arm-src-kernel-2015-01-15-321cfb5a46.tar.gz
Когда компилишь по этому мануалу http://openlinux.amlogic.com:8000/download/doc/linux-3.14-buildroot-pkg-201512-release-v1.0.pdf по конфигу meson8n2_n200 то вылазиют ошибки что нет некоторых файлов на этом сервере и на гитхаб которого тоже уже нет.
ОтветитьУдалитья собирал просто ядро, примерные шаги по ссылке в п.2
УдалитьСобрал я по мануалу, написал этим составителям, кое как помогли)
ОтветитьУдалитьТеперь не понятно как сделать п.4
4.
Insert SD card into your platform and reboot it into uboot. Replace original uboot
with the new one under uboot prompt:
# mmcinfo
# ext2load mmc 0 ${loadaddr} u-boot.bin
# store rom_write ${loadaddr} 0 60000
# reset
5.
Enter uboot again, and execute “run bootsdcard” under the prompt:
# defenv
# saveenv
# run bootsdcard
Я имел ввиду что сборку ядра по тому мануалу делать, uboot можно родной оставить. Чтобы достоверно выяснить что там происходит нужно подключатся к дебаг консоли на последовательный порт (искать на плате). Как вариант - не понравился DTS.
УдалитьВставляю в приставку сд карту, перегружаюсь(хоть со спичкой хоть нет) и ничего не происходит. Грузит Андроид.
ОтветитьУдалитьМожет подскажите?
Скажите, а с ядра как нибудь можно вытащить(изменить) строку инициализации?
ОтветитьУдалитьЧестно - незнаю, и может не имеет смысла, если в ядре стоит использовать только параметры бутлоадера.
УдалитьНо можно поменять строку параметров бутлоадера (uboot). Доступ через консоль дебаг.
Купил Uart попал в консоль, а вот как ее глянуть и изменить? На память не помните?
ОтветитьУдалитьчтобы войти в режим командной строки у меня ентер жать при загрузке. там будет подсказка - список команд. Команда на изменения параметров кажется setenv bootargs.
Удалить