1

Тема: Загрузка с карты памяти

У кого-нибудь получилось загрузить N900 с карты памяти?
Я пробовал править /sbin/preinit но ничего не получилось. Я хотел в нем добавить монтирование карты памяти и подмену корневой системы через pivot_root (в самом скрипте для этого даже почти все необходимое было уже написано).
Похоже устройство просто не хочет загружать необходимые модули для карты памяти и файловых систем в этот момент. Пробовал для отладки вывести список загруженных модулей в файл (lsmod > /file), но файл оказывался пустым. При просмотрел ls /dev/ в этот момент карты памяти среди устройств нет (даже если пытаюсь создать устройства на подобии того как это сделано в bootmenu). Если я пробую загрузить из  preinit только модули mbcache jdb ext3 то в dmesg про них вообще никаких записей не появляется как будто даже и не пробую их загрузить. Если еще добавляю модули связанные с mmc_core то появляются ошибки вида «can't resolve symbol». Какие модули и в какой последовательности необходимы для того чтобы обнаружилась mmc карта?
Я еще сейчас пытаюсь пересобрать ядро включив в него все необходимое для работы карты памяти, но пока телефон с таким ядром грузится отказывается. Какого максимального размера может быть ядро которое можно прошить в телефон?

Сайт SR

Поделиться

2

Re: Загрузка с карты памяти

О_о так.. ну пересборка ядра, это понятно... это то что настоящий пнгвиноед делает по несколько раз на дню, но одно я не пойму:
НА ФИГА тебе здесь загрузка с карты памяти? О_о

Мой файловы сервер (7,7+ Тб):
http://a12.net.ru

Сайт Simbiat

Поделиться

3

Re: Загрузка с карты памяти

Хочется перенести корень на карту памяти хотя бы потому что изначально размер корневой файловой системы ~228Mb. Большинство собранных пакетов конечно и ставятся в /opt который находится на карте памяти, но и корень тоже забивается. После установки всех нужных мне программ там осталось всего 2Mb свободного места. /usr безболезненно на карту памяти перенести не получилось (например перетащив в /opt и создав на нужное место символьную ссылку), так что решил сразу весь корень на карту памяти вынести. Ну и когда свои программы собираешь удобней если корень на карте памяти (можно например в виртуалке сразу рабочую файловую систему подключить а не подготавливать).
Или как например загрузить другой дистрибутив? Во внутреннею память полноценный debian не поместится. Или если хочется чтобы было несколько операционных систем? Носить с собой пару карточек не проблема.
Так что вопрос остается как это сделать, а уж вариантов зачем может быть много.

Сайт SR

Поделиться

4

Re: Загрузка с карты памяти

О боже, маньяк)))
Мож проще дождаться прошивку?

В аватаре внаглую разместил лого своей компании... и да покарают меня админы!

Поделиться

5

Re: Загрузка с карты памяти

Не маньяк а маньяк-разработчик wink
Никто не обещал что в следующей прошивке возможно будет настраивать загрузчик. Пока даже на багрепорт никакого ответа не было на официальном багтреке. Да и в предыдущих моделях так такую возможность в загрузчике и не дали, так и грузились через подмену корневой системы. Да и даже если и будут что менять в загрузчике, то судя по количеству багов и их приоритетам это будет очень не скоро. Так что пока своими силами что могу пробую сделать.

Сайт SR

Поделиться

6

Re: Загрузка с карты памяти

korgezo пишет:

Мож проще дождаться прошивку?

Это позиция более пассивного пользователя.
К счастью, не все такие. Благодаря исследованиям дистрибутивов, мы, вероятно, таки сможем получить Maemo 6 на N900.

На то, о чем можно спросить на форуме, не отвечаю через личные сообщения, аську, почту и т.п. для общения есть jabber-конференция: maemo@conference.jabber.org.
QKit - инструментарий для быстрого кроссплатформенного создания приложений на QML.
FAQ по Nokia N9 - читаем, пополняем.
Прежде, чем задать вопрос, воспользуйтесь поиском!

Сайт KiRiK

Поделиться

7

Re: Загрузка с карты памяти

SR
Лично мне не хватает компетенции для обсуждения данного вопроса, но я НАСТОЯТЕЛЬНО рекоммендую люркать http://talk.maemo.org

Для начала:
http://talk.maemo.org/showthread.php?t=34273&page=2 (особенно пост номер 14)
http://talk.maemo.org/showthread.php?t=34620

Желаю успехов!

Поделиться

8

Re: Загрузка с карты памяти

На самом деле на маньяках зиждится техника - без них мы бы и простых домашних телефонов не имели бы никогда... Другое дело, что некоторые из "замуты" редко нужны даже им самим... Но всё равно, пусть маньячат - вдруг толк какой выйдет? :-D

Мой файловы сервер (7,7+ Тб):
http://a12.net.ru

Сайт Simbiat

Поделиться

9

Re: Загрузка с карты памяти

Да ладно Вам)))
Ну что взъелись, я сам люблю понастраивать все.. но вот чета не возникало пока проблем с памятью, видимо потому так пассивен в данном вопросе smile

В аватаре внаглую разместил лого своей компании... и да покарают меня админы!

Поделиться

10

Re: Загрузка с карты памяти

kn1ght пишет:

ну вообщем вот :
необходим установленный bootmenu
для начала надо разбить карту памяти на разделы, делает это с помощью программы sfdisk
запускаем
sfdisk /dev/mmcblk1
далее нам надо создать разделы, указать их начало, конец и тип.
размер указывается в блоках, равен 32768 байтам
типы файловых систем, 83 - линукс, 82 - своп
первый раздел я использовал под всоп размеров 1 гб (32000 блоков)
второй раздел будет с системой (83й тип, начиная с 32001 блока и до конца)
система грузится со второго раздела (наверное можно перенести и на первый, но надо будет ковыряться глубже в стартовых скриптах)
/dev/mmcblk1p1:1,32000,82
/dev/mmcblk1p2:32001,,83
на следующие предложения программы просто по нажимать ентер

теперь отформатируем разделы:
системный раздел ext2 без резервирование места под суперпользователя.
mkfs.ext2 -m0 /dev/mmcblk1p2
и своп раздел
mkswap /dev/mmcblk1p1

теперь переносим rootfs на карту памяти:

mount --bind / /floppy
mount -t ext2 -o noatime /dev/mmcblk1p2 /initrd/
cd /floppy/
tar -cf - . | tar -xvf - -C /initrd
cd
umount /floppy/

и содержимое 2х гигового раздела

mount --bind /home /floppy
cd /floppy/
tar -cf - . | tar -xvf - -C /initrd/home

cd
umount /floppy

теперь надо немного подправить файл загрузки
открываем на редактирование файл
/initrd/etc/event.d/rcS-late
и ищем там
/bin/mount /home || echo "Failed to mount /home partition."

коментируем это (ставим в начало строки символ #), и ниже дописываем
/bin/umount /mnt/initfs

в этом же файле находим
/sbin/swapon -a
коментируем это и дописываем с низу
/sbin/swapon /dev/mmcblk1p1
сохраняем... и отключаем раздел
cd
umount /initrd

теперь переименовываем
/bootmenu.conf
во что нибудь (конфиг загрузочного меню не нужен, так как система сама его генерит)

теперь если при перезагрузке таблетки выдвинуть клавиатуру то появится меню выбора откуда грузиться
необходимо выбрать
"External MMC card, partition 2, ext2"
все, теперь у вас система грузится с карты памяти

p.s. --bind при копировании нужен что бы на карту памяти не попало содержимое /dev, /proc, MyDocs и /sys (оно все равно создается на лету)

зачем в этой инструкции предлагается своп тоже юзать с sd?
лично у меня sd медленнее внутренней mmc, я это опытным путем выяснил (8 гиговую флешку 6 класса пока не могу с другого телефона высвободить)
да и раздел vfat при этом действе же никуда не девается и используется точно так же как и раньше

хочу попробовать не отключать родной своп, благо там он у меня уже до гига увеличен, а sd-шку разбить на две части, на одной - старая моя глючная система, которую жалко, а на вторую еще раз копирну теперь уже свежую систему

и буду потом между ними место  перераспределять gpartedom по мере необходимости


и еще один нюанс
разбирался разбирался, как это все так хитро монтируется, вроде все понял, кроме одного
команда mount показывает, что корень теперь на 3 гиговом (sd4гб-1гбswap) разделе, как и задумано, НО! устройство у него называется mmcblk0p2, точно так же, как и родной раздел под программы, но реально это внешняя карточка, я несколько раз перепроверил
данные на нем именно те, что я переносил, да и внутренний раздел у меня на 4 гига...

в каком месте происходит ченч?

Добавлено: 16.02.2010 01:57:01

забавно, иной раз гуглишь в поисках нового решения и натыкаешься на свой же метод.
http://www.chilitechno.com/blog/default … Maemo.aspx

2gb_usr_bin_owner   18 Dec, 01:46 AM
Hey guys!

Don't f*ck your brain, just move /usr to /home to get 2GB space for installed apps BEFORE installing python etc. and getting rootfs overflow. Here's how to do it ((c) littre 2009):

0. Uninstall everything you can (will reinstall later on, after the usr dir is moved). Leave MC installed (you will need mcedit editor in case you dont't like vi)

1. gain root shell: in XTerm type: sudo gainroot. this may require rootsh package to be installed.

2. in root  XTerm type: cp /usr /home -R -p
  (this will copy all your USR dir to 2GB partition)

3. type: mount --bind /home/usr /usr
(this will mount the copied usr over the old usr dir)

4. With mcedit or another editor of your choice, add "mount --bin /home/usr /usr" to /etc/event.d/rcS-late in the following place:

/sbin/swapon -a || echo "Failed to enable paging partition."

mount --bind /home/usr /usr
# Setup lowmem module

(this will assure the changes are kept across reboots).

This method is 100% tested by many people during months, and is proven to be the most reliable and simple way of giving you 2GB for USR. Now your rootfs won't overflow anymore! But in case you want your problems back, you can always easily revert to the default state just by removing mount directive from startup script and rebooting.

See ya!
Happy 2GB USR owner

mount --bind шагает по планете. но мы не стоим на месте))))

Поделиться

11

Re: Загрузка с карты памяти

littre пишет:
kn1ght пишет:

теперь переносим rootfs на карту памяти:

mount --bind / /floppy
mount -t ext2 -o noatime /dev/mmcblk1p2 /initrd/
cd /floppy/
tar -cf - . | tar -xvf - -C /initrd
cd
umount /floppy/

и содержимое 2х гигового раздела

mount --bind /home /floppy
cd /floppy/
tar -cf - . | tar -xvf - -C /initrd/home

cd
umount /floppy

Так, может, подготовить какой-то нулевой образ для карты памяти, чтобы не переносить, а просто его залить? Все-равно ведь у всех примерно одно и то же получится.

На то, о чем можно спросить на форуме, не отвечаю через личные сообщения, аську, почту и т.п. для общения есть jabber-конференция: maemo@conference.jabber.org.
QKit - инструментарий для быстрого кроссплатформенного создания приложений на QML.
FAQ по Nokia N9 - читаем, пополняем.
Прежде, чем задать вопрос, воспользуйтесь поиском!

Сайт KiRiK

Поделиться

12

Re: Загрузка с карты памяти

Kirik как то меня просил сделать образ флешки для загрузки с sd карты
таки вот этот текст мне помог это сделать

SR пишет:

Работа rootfs прекрасно эмулируется стандартными средствами на линуксе. Просто создается виртуальное mtd устройство через nandsim. А в образ прошивки потом просто идет его дамп.
Вот пример создания такого устройства:

modprobe ubi
modprobe mtdblock
modprobe nandsim first_id_byte=0x20 second_id_byte=0xaa third_id_byte=0x00 fourth_id_byte=0x15
Далее распаковываем стандартную прошивку и помещаем ее на в полученное устройство:
./flasher-3.5 -F RX-51_2009SE_1.2009.42-11_PR_COMBINED_MR0_ARM.bin -u
dd if=rootfs.jffs2 of=/dev/mtdblock0 bs=2048
ubiattach /dev/ubi_ctrl -m 0
mount -t ubifs ubi0_0 /mnt

(для правильной работы этого метода в ядре должна быть поддержка mtd, mtdblock и ubifs и в системе установлены утилиты для работы с ubifs).

извлек rootfs.jffs из прошивки
примонтировал его в виртуальнывй мтд
перетарил на закранее разбитую и отформаченную при помощи gparted карточку

cd /mnt
tar -cf - . | tar -xvf - -C /media/2

где /media/2 - точка монтирования нашей целевой флешки
желательно, чтобы это был второй раздел флешки
тогда bootmenu будет его грузить без дополнительной настройки конфига меню

все
если на основной системе установлен bootmenu, при загрузке выбираем наш раздел
получаем нулевую загрузку, где нас просят выбрать язык интерфейса
rootfs при этом уже совмещен с /home
и места на нем столько, сколько вы разбивали при форматировании

поклон SR за инструкцию про MTD

Поделиться

13

Re: Загрузка с карты памяти

littre пишет:

таки вот этот текст мне помог это сделать

Результат-то выложишь? smile Думаю, стоит и в блоге написать.

На то, о чем можно спросить на форуме, не отвечаю через личные сообщения, аську, почту и т.п. для общения есть jabber-конференция: maemo@conference.jabber.org.
QKit - инструментарий для быстрого кроссплатформенного создания приложений на QML.
FAQ по Nokia N9 - читаем, пополняем.
Прежде, чем задать вопрос, воспользуйтесь поиском!

Сайт KiRiK

Поделиться

14

Re: Загрузка с карты памяти

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

я вижу ты отделил отдельную ветку для этого сабжа, а можешь тогда туда этот пост перенести?

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

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

Добавлено: 27.02.2010 23:25:45

вот
как и обещал - залил образ rootfs, извлеченный  из прошивки, надо только залить его на карточку по инструкции от SR
http://narod.ru/disk/18315887000/rootfs … ar.gz.html


Добавлено: 09.03.2010 17:30:37

второй раз происходит какая то серьезная необратимая проблема с файловой системой, загруженной с SD
fsck  не помогает

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

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

что то по моему, система, предназначенная для работе в ubifs, тупо перегнанная на ext2, работает до поры до времени, то ест до сбоев fs, и когда таковой случится. ext2 служит плохую службу..

вопрос к SR
может попробовать создать  на карте раздел не ext2, а ubifs или jffs2?
и грузиться с него?

или где то в конфигах надо исправить что мы теперь не в ubifs живем, а в ext2

15

Re: Загрузка с карты памяти

littre
Такую проблему я еще заметил когда тестировал с объединением файловых систем. Собственно говоря это была основная проблема с aufs то что все файлы при выключении бились.
Я специально в последней сборке прошивки где простой перенос карточки переписывал скрипты выключения и перезагрузки чтобы файловая система не билась. С того момента как опубликовал прошивку телефон работает с карточки у меня и пока проблем с битыми файлами и невозможностью загрузки не было. До этого такие проблемы были довольно часто.
Проблема тут в том как файловая система работает с кешем и как записывает данные. Можно для ext файловых систем задать настройки чтобы для записи кеш вообще не использовался и все данные сразу записывались (на подобии как работает fat в windows) но это очень сильно сказывается на производительности. Но при этом гораздо меньше шансов что будут битые файлы. Правильный скрипт выключения мне показалось лучшим решением. Сама операционная система тут ни причем. Просто скрипт выключения по умолчанию пытается отключить только ubifs раздел и все. Проблема именно в этом.
Ubifs может быть использован только на mtd устройстве памяти а карта памяти это блочное устройство. Так что ничего хорошего тут не получится. Использование данной файловой системы возможно при использовании mtdblock но желаемых результатов это скорее всего не даст.
У меня была идея попробовать NILFS2 на карте памяти. Скорее всего его использование даст более лучшие результаты. Но хотелось бы чтобы ядро было посвежее так как эта файловая система еще в разработке.

Сайт SR

Поделиться