Ставим ядро

Как я ставил ядро на таблетку

Ну начал я с того, что запорол рабочую систему на таблетке, пытаясь сделать то, что описано тут . Как оказалось, того, что там написано, было не достаточно. Ну так вот теперь возвращаю таблетку в рабочее состояние. Для этого я скачал здесь The latest OS 2008 DIABLO release for Nokia N810. Теперь надо поставит ось на таблетку для этого выключаем девайс, подключаем его к компу и делаем следующую вещь:

flasher-3.5 -F RX-44_DIABLO_5.2008.43-7_PR_COMBINED_MR0_ARM.bin -f -R

ну а дальше нужно просто включить устройство (а можно включить его на зарядку). Все к моей радости заработало, дальше буду опять его портить.

root file sistem

Теперь занимаемся изменением rootfs (чистенькая rootfs может быть получена здесь, но раз уж я скачал The latest OS 2008 DIABLO release for Nokia N810, то оттуда и возьму)

# flasher-3.5 --unpack -F RX-44_DIABLO_5.2008.43-7_PR_COMBINED_MR0_ARM.bin

на что мне отвечают примерно следующее:

flasher v2.4.5 (Jun 25 2009)
SW version in image: RX-44_DIABLO_5.2008.43-7_PR_MR0
Image 'kernel', size 1536640 bytes
Version 2.6.21-200842maemo1
Image 'initfs', size 2327808 bytes
Version 0.95.22-200842maemo1w38b3
Image 'rootfs', size 125435904 bytes
Version RX-34+RX-44+RX-48_DIABLO_5.2008.43-7_PR_MR0
Image '2nd', size 8192 bytes
Valid for RX-44: 0808
Version 1.1.16-200844maemo2
Image 'xloader', size 9216 bytes
Valid for RX-44: 0808
Version 1.1.16-200844maemo2
Image 'secondary', size 100736 bytes
Valid for RX-44: 0808
Version 1.1.16-200844maemo2
Image '2nd', size 8192 bytes
Valid for RX-44: 0801, 0802, 0803, 0804, 0805, 0806, 0901, 0902
Version 1.1.16-200844maemo2
Image 'xloader', size 9216 bytes
Valid for RX-44: 0801, 0802, 0803, 0804, 0805, 0806, 0901, 0902
Version 1.1.16-200844maemo2
Image 'secondary', size 100736 bytes
Valid for RX-44: 0801, 0802, 0803, 0804, 0805, 0806, 0901, 0902
Version 1.1.16-200844maemo2
Unpacking kernel image to file 'zImage'...
Unpacking initfs image to file 'initfs.jffs2'...
Unpacking rootfs image to file 'rootfs.jffs2'...
Unpacking 2nd image to file '2nd.bin-RX-44:0808'...
Unpacking xloader image to file 'xloader.bin-RX-44:0808'...
Unpacking secondary image to file 'secondary.bin-RX-44:0808'...
Unpacking 2nd image to file '2nd.bin-RX-44:0801,0802,0803,0804,0805,0806,0901,0902'...
Unpacking xloader image to file 'xloader.bin-RX-44:0801,0802,0803,0804,0805,0806,0901,0902'...
Unpacking secondary image to file 'secondary.bin-RX-44:0801,0802,0803,0804,0805,0806,0901,0902'...

появилось много всяких разных файлов…

теперь попробуем смонтировать rootfs.jffs2 у себя на компьютере, для этого делаем следующее

mknod /tmp/mtdblock0 b 31 0
modprobe mtdblock
modprobe mtdram total_size=65536 erase_size=256
modprobe jffs2
dd if=/pathtoimage/rootfs.jffs2 of=/tmp/mtdblock0
mkdir /media/jffs2
mount -t jffs2 /tmp/mtdblock0 /media/jffs2

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

Чтобы разобрать смонтированный раздел нужно сделать следующее (подсмотрено там же)

umount /media/jffs2
modprobe -r jffs2
modprobe -r mtdram
modprobe -r mtdblock

Теперь, зачем все это нужно… Как я понял, таким образом мы можем понаставить всяких разных пакетов в эту систему, а потом просто скопировать ее на устройство. Пакеты устанавливать можно так (ну естественно пакеты для соответствующего устройства)

dpkg -x $HOME/arm_debs/mypackage_arm.deb

Пока не пробовал, если честно.

Как заставить работать таблетку со своим ядром

Для начала берем работающее ядро здесь и разбираем его.

# flasher-3.5 --unpack -F RX-44_DIABLO_5.2008.43-7_PR_COMBINED_MR0_ARM.bin

Появляется несколько файлов, нас интересуют два из них: initfs.jffs2 и rootfs.jffs2. Далее нам нужно собрать свое ядро (я пока воспользовался стандартной конфигурацией, которую можно получить так: make nokia_2420_defconfig) Если все прошло удачно появится образ ядра (подробнее про сборку можно посмотреть тут ). Теперь сбрасываем наш образ ядра и rootfs.jffs2, initfs.jffs2 на таблетку:

# flasher-3.5 -f -k /your_path_to_kernel_image/zImage -n /your_path/initfs.jffs2 -r /your_path/rootfs.jffs2 -R

Честно говоря, пока не понял зачем нужен флаг -f, написано, что он означает установку только определенных компонентов, но когда я пробовал сбросить только ядро, таблетка работать отказалась (хотя возможно я просто забыл его написать). Ну и пока не успел узнать влияют ли параметры конфигурации ядра на initfs и rootfs.