31

Re: Нехватка памяти для программ

Я имел в виду быстрее чем мною предложенным способом.
Медиаплеер кстати и в моем варианте не тормозит. Самые большие тормоза заметны в браузере и картах. Так что интересно услышать как работают они при твоем варианте переноса (например видео с ютюба в браузере).

Вообще для конечных пользователей можно просто сделать всю процедуру переноса в виде deb файла. С перезаписью пары файлов и исполнением скрипта после установки он прекрасно справляется. А для пользователя это будет равносильно установки программы по сложности.

Про проблемы с форматированием MyDocs это известный баг. На форуме уже это обсуждали. Даже в багзиле частично этот вопрос уже затронут.
В меня на данный момент такое разбиение:
mmcblk0p2 - /opt
mmcblk1p1 - /home
mmcblk1p2 - MyDocs
mmcblk1p3 - swap
У меня наблюдалось очень странное повеление файлового менеджера если MyDocs был первым разделом. В таком варианте единственный неприятный баг в том что при подключении к компьютеру приходится в ручную демонтировать и монтировать раздел. Пока просто не успел найти отвечающий за это скрипт.

Работа 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)

А идея использовать mini_fo мне как раз и пришла вспомнив как в openwrt (прошивке для wl500gp и подобных маршрутизаторов) организованна работа с файловой системой. Странно что разработчики сами не организовали именно так работу с файловой системой. Тогда например пользователь мог бы в случае чего сбросить все свои изменения (потереть файловую систему с правами на запись наложенную поверх rootfs) и вернуть телефон в изначальное состояние без перепрошивки. На wl500gp линукс как линукс. Просто там бизибокс собран с самым минимальным функционалом для экономии места. А так на n900 тодж не корутилз а бизибокс, но собранный с большим функционалом.
Для моего способа если не переносить swap то fstab можно и не трогать. На момент запуска rcS-late просто /home уже будет смонтирован и его монтирование просто будет пропущено. А так конечно правильней при таком подходе будет отредактировать /etc/default/mount-opts. Правда никакого смысла в фактическом отказе от fstab и его генерацией при запуске я не вижу.

Сайт SR

Поделиться

32

Re: Нехватка памяти для программ

SR пишет:

Самые большие тормоза заметны в браузере и картах. Так что интересно услышать как работают они при твоем варианте переноса (например видео с ютюба в браузере).

эммм... видимо я слмишком пока непредвзято отношусь к н900, особенно после wm и s60 машинок.. по мне так и браузер нормально работает. надо бы конечно для сравнения все привести к заводскому состоянию, посерфить вечерок, а потом прицепить mount. так будет правдоподобнее. я как на руки девайс получил, первым делом это сделал, так что по сути мне сравнивать то не с чем.. это мысль, так и сделаю
а насчет ютубы в браузере, ну не знаю, веришь, нет, тоже еще мысли не возникало ни разу запустить, так как обычно и на wm и на s60  для этой цели есть своя гугловая ютуба в виде отдельной проги. там перформанс заточен максимально. а на маэто чет ни zoutube, ни mytube как то не айсно, по сравнению с родным гугловым плеером.... Ну конечно в целях эксперимента в н900 в браузере тоже попробую

SR пишет:

Вообще для конечных пользователей можно просто сделать всю процедуру переноса в виде deb файла. С перезаписью пары файлов и исполнением скрипта после установки он прекрасно справляется. А для пользователя это будет равносильно установки программы по сложности.

да, я тоже читал на n8xx еще на старые 700/800 машинки то же самое в разных позах давным давно проделывали.... и вот там я такие deb-ы "под ключ" тоже видел. это было бы в идеале. не надо инструкций и объяснений. сколько я ни писал, что да как делать, все равно никто ничего не понимает, все равно надо еще более по шагам и еще более подробно...

SR пишет:

Про проблемы с форматированием MyDocs это известный баг. На форуме уже это обсуждали

на этом форуме? тоже хочу почитать. проблема в непонимании ext2 системой как родной? странно, я думал это решаемо. /home же нормально монтируется и видится. я думаю надо подрихтовать маунт скриптик, там через awk генерится fstab, парсится вывод sfdisk -l и в нем vfat раздел монтируется в mydocs, а ext2 - в home. нам надо просто подкорректировать этот парсер под себя
или бага еще в чем то?

SR пишет:

В меня на данный момент такое разбиение:
mmcblk0p2 - /opt
mmcblk1p1 - /home
mmcblk1p2 - MyDocs
mmcblk1p3 - swap

вопрос, а почему mmcblk0p2, а где mmcblk0p1?
и для чего в /opt 32 гига? мне интересно, может я тоже так сделаю..
а я себе так пробовал (ну не себе, а на РДА, за месяц до выхода, народ потом друг друга скринами свойств памяти пугал))))
1.5 гига своп
гигов 5 - /home
все что осталось под vfat

только теперь относительно vfat концепция поменялась, не видит он файлы больше 4гб
вот теперь над багой mydocs под ext2  пойду думать...

SR пишет:

Вот пример создания такого устройства:

ну вот
даже не надо ничего гуглить)))
все взял и разрисовал
получается мы тем же флешером шьем mtd машинку... логично
а потом монтируем ubifs и ковыряемся

SR пишет:

А идея использовать mini_fo мне как раз и пришла вспомнив как в openwrt (прошивке для wl500gp и подобных маршрутизаторов) организованна работа с файловой системой. Странно что разработчики сами не организовали именно так работу с файловой системой.

небольшой офтоп
я пробовал openwrt закатать в dlink dir300, при этом завалил его окончательно, он глючил очень сильно, думал openwrt ему поможет... оказалось, глючил из за того, что от скачка напряжения у него что то подгорело. при шитье флеш стерся, а записаться ему напруги не хватило. так он у меня на руках и умер... по гарантии его конечно починили, но невзлюбил я его после этого, взял wl500gp v1, прошил олегом. так вот, у олега тоже есть RO  система, есть полу-RO, так сказать, то есть, чтобы туда сохранить текущие файлы, нужно flash fs сделать. ну и opt, монтируемы где нибудть на usb флешке или харде.. так вот, насколько понимаю, в openwrt по другому файловая система оформлена
а по поводу read only системы на телефоне.. ну не знаю, опять ограничения, наконец то глоток свободы, и опять RO скоро сделают maemo 6, там снова все законопатят, там будут и сертификаты и RO системные директории итд  итп. давай будем радоваться свободе, пока есть возможность...
а хард ресет без перепрошивки конечно могли сделать, но только как на WM6 машинках - там просто два экземпляра прошивки делается. резервная и рабочая. когда надо, делается акробатический этюд, хард ресет, с минуту копирования резервного образа в рабочий, и хоппа - машинка как с завода. так было бы лучше
но нужно больше флеша

Поделиться

33

Re: Нехватка памяти для программ

Про MyDocs и ext2/ext3 были обсуждения не на этом а на официальном форуме. Только вот так так быстро появляются новые темы и сообщения что трудно найти нужную тему. Сейчас ссылку на нее уже и не вспомню. Суть в том что в бизибоксе на сколько я понял не включена автоматического распознавания файловой системы (то есть при люьом монтировании mount обязательно ожидает увидеть явное указание вида -t ext2). Все параметры для работы скрипта просто в явном виде заранее были сохранены (/etc/default/mount-opts). Вторая проблема в том то файловый менеджер непонятно почему себя странно ведут если на карточке файловая система не vfat. Вот ссылка на один из багов косвенно относящихся к этой проблеме:
https://bugs.maemo.org/show_bug.cgi?id=3441

mmcblk0p2 оставил именно так чтобы при перепрошивке телефон его автоматом монтировал хотя бы как /home. Это не критично, но может быть довольно полезным. Собственно поэтому именно как p2 чтобы соответствовал первоначальному варианту разбиения. Раздела mmcblk0p1 нету (правда плата за это пустые 8Mb в начале диска).
32 гига под /opt оставил потому что не вижу для чего еще мне понадобится внутренная память. Ну и некоторые игры по типу Ur-Quan Masters (с оригинальными ресурсами от 3do) или OpenArena занимают не мало места. А тут еще и тему про запуск Jagged Alliance 2 заметил на официальном форуме.. (а то что линуксойды не играют в игры это неправда). Оставлять swap во внутренней памяти я посчитал лишним ненужным износом. Да и вынося его на внешнюю карточку нагрузка получается более-менее равномерной по всем доступным устройствам памяти.
Под /home ну никак больше 200Mb не уйдет (с учетом того что /opt теперь вынесен отдельно а все документы лежат в MyDocs а /home остается только для конфигов програм).
Ну и под MyDocs мне 8Gb карточки (ну за исключением 1Gb под swap и /home) мне более чем достаточно. А то что все документы в одном месте а не в виде внешней карточки и внутреннего раздела мне показалось удобней. Ну и у внешней карточки еще плюс в том что она внешняя и ее всегда можно быстро вытащить, подключить к компьютеру и скинуть нужные файлы.

В гугле пока не особо много такой информации по n900. Так что подумал раз уж я разобрался в этом то не лишним будет сразу написать решение а не в отправлять гуглить wink.

В openwrt никаких ограничений нет. Там очень грамотный подход к файловой системе. Файловая система состоит из двух разделов. Один с файловой системой squashfs. По свойе архитекруте squashfs моеть быть ro разделом. Но его огромным плюсом является то что все данные на нем записаны в сжатом виде (очень полезно когда памяти всего 4Mb). Второй раздел это перезаписываемый jffs2. Он изначально пустой и смонтирован поверх с использованием mini_fo. Для пользователя все файловая система представляется как единый rw раздел. Все изменения относительно оригинальных данных хранятся в squashfs разделе. Если файл есть на jffs2 разделе (или его более новая версия) то он берется с этого раздела, если нету то с squashfs. Пользователь не задумываясь ни о чем может менять любые данные и добавлять любые файлы без всяких ограничений. О правильном представлении данных для системы заботится как раз mini_fo. А весь сброс настроек к оригинальному виду сводится к форматированию jffs2 раздела.
Тут дело не в том чтобы ограничить в чем-то пользователя а в том чтобы сохранить исходную файловую систему с возможностью отката до первоначального состояния в случае если пользователь сделал что-то не так. Есть и версии openwrt состоящие полностью из jffs2 раздела, но их гораздо легче уронить (даже не специально а например при сбое записи если что-то случилось с питанием).
Именно кривоватой организацией работы файловой системы прошивка Олега мне и не нравится.

В maemo 6 не будет ro блоков памяти. При желании можно перезаписать любой доступный на устройстве mtd раздел. Там просто действительно будет версия где доступ к некоторым настройкам будет ограничен, но пользователю так же будет доступна и версия прошивки без таких ограничений но без возможности использования ovi store на сколько я понял.
В wm5/6 абсолютно такой же подход к организации памяти как описанный выше в openwrt (ну только файловые системы там другие). Второго экземпляра прошивки там не хранится. Да и зачем эта лишняя трата памяти если оригинальная копия реально не может измениться?

Маршрутизаторы dlink никогда не любил. Уж очень они нестабильные. Нельзя сказать что они все нестабильные. Это скорее смотря как повезет. Ставил знакомым на dir300 openwrt и уже пол года работает и пока не жалуются. А со стандартной прошивкой постоянно уходил в ребуты.

Сайт SR

Поделиться

34

Re: Нехватка памяти для программ

А как очистить корень помимо перезагрузки? И как вообще узнать, какие приложения там место занимают?

Поделиться

35

Re: Нехватка памяти для программ

Вот один из способов того как узнать что установлено в корень а не в /opt
http://talk.maemo.org/showpost.php?p=43 … stcount=20

Сайт SR

Поделиться

36

Re: Нехватка памяти для программ

Спасибо. Правда, много вычистить не удалось. Сделал список пакетов командой:

find_non_opt_files.pl /var/lib/dpkg/info/*.md5sums | grep "total.*M$"

То есть, все пакеты, использующие в корне больше 1 мегабайта. Не считая системных, их оказалось не много. Удалил штук 5, освободил метров 20 всего. У меня там занято 180 метров. А скоко там на девайсе из коробки занято?

Поделиться

37

Re: Нехватка памяти для программ

я просто смотрю, что сколько места занимает командой DU
в качестве параметра ей указываем директорию, с которой начинать, а чтобы вывод был не слишком большим и подробным, ограничиваем глубину сканирования ключем  -d
например
du -h -d 1 /
выведет размеры папок и файлов в корне

du -h -d 1 /usr
du -h -d 1 /var
то же в конкретных директориях

du -h -d 2 /
то же что в начале, но на 1 уровень глубже, то есть все папки в корне с подпапками

Поделиться

38

Re: Нехватка памяти для программ

Кстати, вчера столкнулся с проблемой "не хватки". Я так понимаю, что все линуховые "диспетчеры задач" - глюкавые! Так были и на debian и на RedHat, и на Suse, все они, каким-либо образом, глючили! Вот и в maemo глючит. Запескаешь, скачиваешь какую-то программу, потом еще.. и тут тебе сообщение! "Не хватает памяти в выбранном месторасположении"! Фиг, приспускаешься - все ставится! НО! Это тупо неудобно! Видимо не до конца доработан интерфейс!

Поделиться

39

Re: Нехватка памяти для программ

по просьбе KiriK дублирую сдесь свой способ решения проблемы
первоисточник - на M-R
да не заругает меня за это KiriK, как его самого на allnokia)))

littre;2135842 пишет:

рецепт щастья
или, как избавиться от бага НЕДОСТАТОЧНО ПАМЯТИ

ставим пакет rootsh, если это еще не сделано
становимся рутом
root

копируем содержимое /usr на 2 гиговый раздел, длительность этой процедуры зависит от количества установленных до этого момента пакетов. лучше все лишнее пока снести
cp /usr /home -p -R

монтируем скопированную папку в старую точку
mount --bind /home/usr /usr

для обеспечения дальнейшего автомонтирования после ребута, редактируем скрипт, в котором генерится и применяется монтировочный файл fstab
vi /etc/event.d/rcS-late

ищем там этот фрагмент и вставляем нашу волшебную команду в это место

[b]    # We can safely continue booting now.
    initctl emit MOUNTS_OK

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

[color="red"]    mount --bind /home/usr /usr[/color]

    # Setup lowmem module
    echo 32768  > /proc/sys/vm/lowmem_deny_watermark_pages
    echo 98304  > /proc/sys/vm/lowmem_notify_high_pages
    echo 131072 > /proc/sys/vm/lowmem_notify_low_pages
    echo 1024   > /proc/sys/vm/lowmem_nr_decay_pages[/b]

[SIZE="4"][color="green"]сопсна все[/color][/SIZE]
наслаждаемся бесконечностью памяти и возможностью установить из всех реп все пакеты (ну, у которых хотя бы нормальные зависимости, кривые зависимости в принципе тоже можно победить, но об этом в следующий раз)
у меня это лекарство применено в первый же день, с тех пор папка /usr занимает уже больше 500мб, что было бы невозможным, если бы /usr оставался на месте...
правда уже немного раздулась папка /var, уже 50мб, ее тоже можно унести на флешку таким же способом, после прошивки я себе это тоже сделаю


ЗЫ
встроенный редактор vi очень непрост в понимании, поэтому расскажу по шагам, как с ним бороться
сразу после открытия файла применен режим, где можно стрелками найти нужное для редактирования место. стрелками вверх и вниз делаем это
чтобы начать вставлять текст, просто жмем символ "i" (insert)
по окончанию жмем ESC (на экране) и выходим с сохранением командой :qw или shift-zz
печатаем медленно и вдумчиво, ибо в случае ошибки сразу нажать backspace не получится. для этого надо выйти из режима вставки текста кнопкой ESC (как сказано выше) опять в режим, где можно двигать курсор кнопками стрелок, прицеливаемся на неправильный символ, и жмем DEL, которого на телефоне нет ни на экранной, ни на физической клаве, а backspace не работает. нужно вспоминать команды vi
--------------------------
добавлено:
вот, нагуглил
x - уничтожить символ
X - забой

--------------------------
если редактор не поддается, и текст безнадежно испорчен, можно просто выйти без сохранения и начать все заново
ESC
:q!

как вариант, можно не мучиться с редактором vi, а поставить пакет mc, в нем нормальный frendly редакторб но тогда придется смириться с тем, что мс встанет в rootfs и там останется и после переноса, а ставится он именно туда и весит ощутимо, несколько метров
в таком случае вместо команды
vi /etc/event.d/rcS-late
используем такую
mcedit /etc/event.d/rcS-late
там печатаем легко и непринужденно

еще один вариант - прилагаемый измененный файл, который нужно  просто закинуть в папку /etc/event.d/ любым удобным способом
только нужо потом дать ему права на запуск для всех пользователей
chmod 777 /etc/event.d/rcS-late

текстовый файл здесь вложить видимо нельзя, поэтому вот его дамп:

description "late rcS actions"

start on started xomap
stop on stopping bme

console none

script
    # Generate fstab and mount /home
    . /etc/default/mount-opts

    fstab=/etc/fstab
    tmp_fstab=/tmp/fstab

    sfdisk -l /dev/mmcblk0 | awk \
        -v home_opts="$home_opts" -v fat_opts="$fat_opts" \
        -f /usr/lib/genfstab.awk > $tmp_fstab

    cmp -s $tmp_fstab $fstab || cp $tmp_fstab $fstab
    rm -f $tmp_fstab

    /bin/mount /home || echo "Failed to mount /home partition."

    if [ ! -d /home/user ]
    then
      if [ -d /home/preinstalled ]
      then
        mv /home/preinstalled /home/user
      else
        mkdir /home/user
      fi
      cd /etc/skel
      cp -a . /home/user
      chown -R user:users /home/user
    fi

    # We can safely continue booting now.
    initctl emit MOUNTS_OK

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

    mount --bind /home/usr /usr

    # Setup lowmem module
    echo 32768  > /proc/sys/vm/lowmem_deny_watermark_pages
    echo 98304  > /proc/sys/vm/lowmem_notify_high_pages
    echo 131072 > /proc/sys/vm/lowmem_notify_low_pages
    echo 1024   > /proc/sys/vm/lowmem_nr_decay_pages

    # Exclude some UIDs from memory allocation denial.
    # 30000 is messagebus, 30001 could be used by Matchbox
    echo "30000 30001 30002 30003" > /proc/sys/vm/lowmem_allowed_uids

    # Adjust flushing of memory card buffers
    echo 40 > /proc/sys/vm/dirty_ratio
    echo 10 > /proc/sys/vm/dirty_background_ratio

    # Initialize PRNG pool with the HW RNG. Slow, but that's ok.
    URANDOM_POOLSZ=512
    if [ -e /dev/hwrng ]; then
      echo "Seeding entropy pool"
      dd if=/dev/hwrng of=/dev/urandom bs=$URANDOM_POOLSZ count=1
    fi
end script

normal exit 0

способ был изобретен еще в октябре, за месяц до выхода телефона в продажу, отработан и отлажен на живых тестовых аппаратах на РДА
с моей точки зрения, тормозов, глюков способ не имеет
пробуйте, отписывайтесь

разместил статью на заглавной странице сайта
когда Kirik его одобрит, можно будет его увидеть

Поделиться

40

Re: Нехватка памяти для программ

Я солидарен с SR по поводу этого способа. Так что подожду официального решения, тем более, новая прошивка выйдет со дня на день. По поводу du, половину или 2/3 места в корне занимает /usr/lib, но это ни о чем не говорит, потому что вручную что-то оттуда чистить - убивать ось, а "на глаз" хрен че разберешь там внутри.

Поделиться

41

Re: Нехватка памяти для программ

pasaranax пишет:

А скоко там на девайсе из коробки занято?

На сколько я помню свободно чуть меньше 100Mb. Если есть хотя бы 20Mb свободных то это уже нормально.

mihas пишет:

Кстати, вчера столкнулся с проблемой "не хватки". Я так понимаю, что все линуховые "диспетчеры задач" - глюкавые! Так были и на debian и на RedHat, и на Suse, все они, каким-либо образом, глючили! Вот и в maemo глючит. Запескаешь, скачиваешь какую-то программу, потом еще.. и тут тебе сообщение! "Не хватает памяти в выбранном месторасположении"! Фиг, приспускаешься - все ставится! НО! Это тупо неудобно! Видимо не до конца доработан интерфейс!

Никаких глюков не наблюдал. На ext файловых системах всегда по умолчанию 5% пространства зарезервировано для пользователя root (например чтобы при нехватки места система могла продолжать записывать логи). Пользователю при указанию свободного места обычно сразу учитывается что эти 5% ему недоступны. А все программы устанавливаются с правами пользователя root. Вот они на это зарезервированное пространство скорее всего и ставятся. Правда вроде на ubifs место для root не резервируется.
В багтреке я вроде замечал уже баг про то что файловый менеджер не проверяет свободное место до начала установки так можно надеется что в ближайшее время исправят.

Сайт SR

Поделиться

42

Re: Нехватка памяти для программ

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

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

что собственно, мы с SK и делаем

а вам уже самим выбирать, какой способ юзать и юзать ли вообще

Поделиться

43

Re: Нехватка памяти для программ

Данная информация от нокии так же на сколько я видел официально и в багтреке появлялась (или в брейнсторме, сейчас сложнее за всем следить стало).
Я им еще добавил баг о том что /opt сейчас даже не в $PATH (то есть нет возможности по правильному собрать программы указав --prefix=/opt). Для программ приходится обязательно создавать symlinkи в корневой файловой системе на их правильное расположение в /opt. А symlink тоже занимают место (хоть и очень мало). При 32Gb внутренней памяти и возможности подключения карточки памяти при росте числа доступных программ предел свободного пространства можно будет исчерпать даже устанавливая программы из официального репозитория которые полностью будут устанавливаться в /opt.
Cсылка на баг: https://bugs.maemo.org/show_bug.cgi?id=6870
Буду рад голосам, это может помочь разработчикам в портировании программ и в экономии места в корневой файловой системе.

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

Сайт SR

Поделиться

44

Re: Нехватка памяти для программ

littre пишет:

официального решения не будет ни в этой, ни в какой прошивке

то есть Нокиа не считает это проблемой? на самом деле разочаровался немного в аппарате именно из-за этих ничтожных 227 (или сколько там?) мб.. зачем делать в мощном устройстве 32 ГБ памяти, если доступно лишь двести с чем то? видео и музыку я и на плейере могу посмотреть, а телефон мне нужен для связи, игр и полезных приложений.. а тут поставил ОпенАрена - и всё места нет... НЕ ПОНИМАЮ НОКИА

Поделиться

45

Re: Нехватка памяти для программ

Может когда нибудь LMV2 на нее поставят, тогда проще будет распределять место.

Поделиться