1

Тема: Перенос данных Android на карту памяти / общий доступ с нативными

В этом сообщении мои рассуждения по теме.
Могу в чем-то ошибаться, исправляйте, если что smile

Отдельно спасибо Sailfish OS за классическую реализацию fstab, в отличие от всяких Android!

Есть известная проблема, которая заключается в том, что из-за прав доступа Android-приложения не всегда корректно работают с файлами пользователя:
* нативные приложения работают от пользователя nemo в группе nemo
* Android-приложения работают от пользователя 10045 (не существующего?) и группы sdcard_rw

Причем, в качестве некоторой "песочницы" для Android-приложений используется директория /sdcard (точнее, /data/sdcard, на которую указывает симлинк /sdcard).
Появилась идея монтировать в эту папку файловую систему, которая не контролирует доступ к файлам.
Да, есть условная угроза безопасности, но совершенно не критично для музыки, видео, картинок и прочего хлама, создаваемого с помощью Alien Dalvik.

Самый простой и вполне работающий способ - монтировать fat32.
Но это как-то не здорово.
Особенно если учесть, что у меня есть свободная microsd на 64 ГБ.
Увы, поддержки exfat сейчас в Sailfish OS нет.

Ничего связанного с bindfs в pkcon не обнаружилось, но оказалось, что он находит и устанавливает пакет acl с утилитами для работы с (не поверите!) ACL.
Я подумал, что, значит, можно управлять правами, отформатировал карточку в btrfs и попытался подключать ее с опцией acl. Увы, не монтируется с такой опцией почему-то, только noacl.


Так что, пока моя карточка разбита на два раздела:
* fat32 на 32 ГБ, который монтируется в /data/sdcard
* brtfs на остальное пространство, который монтируется в /home
И сделаны перенаправления для папок с мультимедиа из /data/sdcard в /home/nemo.
Костыльность такого решения очевидна, но как лучше сделать не придумал.

fstab выглядит так

UUID=0f8a2490-53ed-4ff6-ba34-b81df3430387  /             btrfs   defaults,autodefrag,noatime                    0  0
#UUID=0f8a2490-53ed-4ff6-ba34-b81df3430387  /home         btrfs   subvol=@home                                   0  0
UUID=0f8a2490-53ed-4ff6-ba34-b81df3430387  /swap         btrfs   subvol=@swap                                   0  0
devpts                                     /dev/pts      devpts  gid=5,mode=620                                 0  0
tmpfs                                      /dev/shm      tmpfs   defaults                                       0  0
proc                                       /proc         proc    defaults                                       0  0
sysfs                                      /sys          sysfs   defaults                                       0  0
/dev/mmcblk1p1                             /data/sdcard  vfat    defaults,umask=000,utf8                        0  0
/dev/mmcblk1p2                             /home         btrfs   space_cache,compress,noatime,ssd_spread,noacl  0  0

/data/sdcard/Audiobooks  /home/nemo/Audiobooks  none  bind  0  0
/data/sdcard/Documents   /home/nemo/Documents   none  bind  0  0
/data/sdcard/Downloads   /home/nemo/Downloads   none  bind  0  0
/data/sdcard/Music       /home/nemo/Music       none  bind  0  0
/data/sdcard/Pictures    /home/nemo/Pictures    none  bind  0  0
/data/sdcard/Playlists   /home/nemo/Playlists   none  bind  0  0
/data/sdcard/Public      /home/nemo/Public      none  bind  0  0
/data/sdcard/Templates   /home/nemo/Templates   none  bind  0  0
/data/sdcard/Videos      /home/nemo/Videos      none  bind  0  0
На то, о чем можно спросить на форуме, не отвечаю через личные сообщения, аську, почту и т.п. для общения есть jabber-конференция: maemo@conference.jabber.org.
QKit - инструментарий для быстрого кроссплатформенного создания приложений на QML.
FAQ по Nokia N9 - читаем, пополняем.
Прежде, чем задать вопрос, воспользуйтесь поиском!

2

Re: Перенос данных Android на карту памяти / общий доступ с нативными

Вот так получилось сделать, чтобы карточка с exfat увиделась.
Но, похоже, с fstab так не работает - телефон не грузится sad

Добавлено: 22.03.2014 16:32:40

А, нет. Все отлично монтируется вот такой строкой в fstab

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

Сайт KiRiK

Поделиться

3

Re: Перенос данных Android на карту памяти / общий доступ с нативными

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

Монологичный топик получился smile

Добавлено: 22.03.2014 17:10:08

Итоговый fstab

UUID=0f8a2490-53ed-4ff6-ba34-b81df3430387  /             btrfs       defaults,autodefrag,noatime  0  0
UUID=0f8a2490-53ed-4ff6-ba34-b81df3430387  /home         btrfs       subvol=@home                 0  0
UUID=0f8a2490-53ed-4ff6-ba34-b81df3430387  /swap         btrfs       subvol=@swap                 0  0
devpts                                     /dev/pts      devpts      gid=5,mode=620               0  0
tmpfs                                      /dev/shm      tmpfs       defaults                     0  0
proc                                       /proc         proc        defaults                     0  0
sysfs                                      /sys          sysfs       defaults                     0  0
/dev/mmcblk1p1                             /data/sdcard  exfat-fuse  defaults                     0  0

/data/sdcard/Audiobooks  /home/nemo/Audiobooks  none  bind  0  0
/data/sdcard/Documents   /home/nemo/Documents   none  bind  0  0
/data/sdcard/Downloads   /home/nemo/Downloads   none  bind  0  0
/data/sdcard/Music       /home/nemo/Music       none  bind  0  0
/data/sdcard/Pictures    /home/nemo/Pictures    none  bind  0  0
/data/sdcard/Playlists   /home/nemo/Playlists   none  bind  0  0
/data/sdcard/Public      /home/nemo/Public      none  bind  0  0
/data/sdcard/Templates   /home/nemo/Templates   none  bind  0  0
/data/sdcard/Videos      /home/nemo/Videos      none  bind  0  0
На то, о чем можно спросить на форуме, не отвечаю через личные сообщения, аську, почту и т.п. для общения есть jabber-конференция: maemo@conference.jabber.org.
QKit - инструментарий для быстрого кроссплатформенного создания приложений на QML.
FAQ по Nokia N9 - читаем, пополняем.
Прежде, чем задать вопрос, воспользуйтесь поиском!

4

Re: Перенос данных Android на карту памяти / общий доступ с нативными

Отдельная инструкция по добавлению поддержки exFAT: http://maemo.su/wiki/Sailfish_OS/exFAT

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

5

Re: Перенос данных Android на карту памяти / общий доступ с нативными

После обновления для Android-приложений домашней считается директорией /home/nemo/android_storage.
Кто-нибудь знает как переделать?

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

Сайт KiRiK

Поделиться

6

Re: Перенос данных Android на карту памяти / общий доступ с нативными

По теме нашлось чтиво здесь и здесь.
Сейчас не буду разбираться. Быть может, потом.

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

Сайт KiRiK

Поделиться

7

Re: Перенос данных Android на карту памяти / общий доступ с нативными

Я, все-таки, сделал это по-нормальному smile
Итак..

Что происходит.

  • MicroSD карта форматируется в btrfs с подразделами @home и @data.

  • Данные пользователей (директория /home) переносятся в раздел @home на MicroSD карточке.

  • Данные Android-приложений (директория /data) переносятся в раздел @data на MicroSD карточке.

  • MicroSD карту теперь не стоит извлекать во время работы смартфона.

  • Вы должны понимать, что делается с устройством. Если все сломается, то вините себя.

Для чего это нужно.

  • Доступ к данным даже если смартфон поломался.

  • Объем доступного пространства ограничен только объемом MicroSD карты. Я использую карточку на 64 гигабайта против 16 гигабайт встроенной памяти.

Что потребуется.

  • Jolla Phone с активированным режимом разработчика.

  • Компьютер, на который установлена операционная система из семейства Linux или любая другая с возможностью подключения к внешним устройствам по ssh и telnet.

  • USB кабель для подключения Jolla Phone к компьютеру.

  • MicroSD карточка. Вся старая информация на ней будет удалена во время настройки.

Как сделать.
1. Вставить MicroSD карточку в устройство.
2. Выполнить на устройстве с правами суперпользователя:

# umount /dev/mmcblk1
# umount /dev/mmcblk1p1
# mkfs.btrfs -L "Jolla Phone" /dev/mmcblk1 -f -O ^extref
# mount /dev/mmcblk1 /mnt
# btrfs subvolume create /mnt/@home
# btrfs subvolume create /mnt/@data
# umount /mnt

2. Отредактировать файл /etc/fstab (можно с помощью vi или mcedit, если стоит пакет mc) или скопировать на устройство с помощью scp.

UUID=0f8a2490-53ed-4ff6-ba34-b81df3430387  /         btrfs   defaults,ssd,noatime               0  0
#UUID=0f8a2490-53ed-4ff6-ba34-b81df3430387  /home     btrfs   defaults,ssd,subvol=@home          0  0
/dev/mmcblk1                               /home     btrfs   defaults,ssd,noatime,subvol=@home  0  0
/dev/mmcblk1                               /data     btrfs   defaults,ssd,noatime,subvol=@data  0  0
devpts                                     /dev/pts  devpts  gid=5,mode=620                     0  0
tmpfs                                      /dev/shm  tmpfs   defaults                           0  0
proc                                       /proc     proc    defaults                           0  0
sysfs                                      /sys      sysfs   defaults                           0  0

Я не уверен, что у всех должно быть UUID=0f8a2490-53ed-4ff6-ba34-b81df3430387. Посмотрите значение в исходном файле  /etc/fstab и, пожалуйста, напишите в комментариях результат.
3. Выключить устройство. После выключения устройство, скорее всего, не загрузится без дальнейших действий.
4. Включить устройство в режиме восстановления (с зажатой кнопкой уменьшения громкости) и подключить USB-кабелем к компьютеру.
5. Выполнить на компьютере:

$ telnet 10.42.66.66

После этого должно появиться меню восстановления Jolla Phone. В нем нужно выбрать пункт 4 (Shell), нажать Enter и согласиться с тем, что появляется возможность навредить устройству (y).
6. В  консоли выполнить:

# mount /dev/mmcblk0p28 /mnt -o subvol=@home
# mkdir /home
# mount /dev/mmcblk1 /home -o subvol=@home,ssd,compress=lzo
# mv /mnt/* /home
# umount /home
# umount /mnt
# mount /dev/mmcblk0p28 /mnt -o subvol=@
# mkdir /data
# mount /dev/mmcblk1 /data -o subvol=@data,ssd,compress=lzo
# mv /mnt/data/* /data
# umount /data
# umount /mnt
# exit

7. Выбрать пункт меню 2 (Reboot device) и нажать Enter.
8. Устройство должно загрузиться в обычном режиме.

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

8

Re: Перенос данных Android на карту памяти / общий доступ с нативными

KiRiK пишет:

Посмотрите значение в исходном файле  /etc/fstab и, пожалуйста, напишите в комментариях результат.

UUID действительно разный. В моем случае UUID=86180ca0-d351-4551-b262-22b49e1adf47.
Еще в режиме восстановления во время выполнения команды mv /mnt/* /home , вылезло окошко с предупреждением. Там было что-то про файлы с атрибутами только для чтения. Но несмотря на это, все прошло хорошо.

И такой вопрос. Когда выйдет следующее обновление ОС, все эти манипуляции с картой памяти не повлияют на процесс обновления телефона? Может, нужно будет вернуть все как было или можно смело обновляться?

Поделиться

9

Re: Перенос данных Android на карту памяти / общий доступ с нативными

kiratonin пишет:

UUID действительно разный. В моем случае UUID=86180ca0-d351-4551-b262-22b49e1adf47.

Спасибо. Это нужно будет иметь в виду.

kiratonin пишет:

Может, нужно будет вернуть все как было или можно смело обновляться?

Проверю smile
Думаю, что должно прокатить.

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

Сайт KiRiK

Поделиться

10 (25.09.2014 23:42:14 отредактировано ptrvc)

Re: Перенос данных Android на карту памяти / общий доступ с нативными

KiRiK пишет:


kiratonin пишет:

Может, нужно будет вернуть все как было или можно смело обновляться?

Проверю smile
Думаю, что должно прокатить.

Сообщи о результатах, пожалуйста. Сам желаю активнее использовать SD-карточку, которая сейчас бессмысленно болтается в /media, но страшно. И да, можно подробнее о запуске в режиме восстановления? Что это такое и убивает ли оно /home/nemo и мои настройки?

Поделиться

11

Re: Перенос данных Android на карту памяти / общий доступ с нативными

ptrvc пишет:

Сообщи о результатах, пожалуйста.

Обновление будет - и проверю.

ptrvc пишет:

И да, можно подробнее о запуске в режиме восстановления?

http://maemo.su/wiki/Jolla_Phone/Recovery_Mode

ptrvc пишет:

убивает ли оно /home/nemo и мои настройки?

Само по себе нет.

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

12 (26.09.2014 12:42:46 отредактировано ptrvc)

Re: Перенос данных Android на карту памяти / общий доступ с нативными

KiRiK пишет:


ptrvc пишет:

И да, можно подробнее о запуске в режиме восстановления?

http://maemo.su/wiki/Jolla_Phone/Recovery_Mode

Так это, оказывается, всего-навсего Recovery Mode! А я-то подумал о чем-либо похожем на сброс устройства в коробочное состояние. Вот наглядный пример, насколько ухудшается понимание при трансляции английской техно-терминологии на родной язык.

13

Re: Перенос данных Android на карту памяти / общий доступ с нативными

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

Поделиться

14

Re: Перенос данных Android на карту памяти / общий доступ с нативными

Мм.. Не ставить андроид-приложения?
Или попробовать изменить права на чтение в соответствующих папках.
можно еще создать subvolume, который бут автоматически монтироваться как флешка.

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

15

Re: Перенос данных Android на карту памяти / общий доступ с нативными

Желаю выразить благодарность! Нашел время всё вышенаписанное осуществить, теперь наслаждаюсь кучей свободного места на девайсе,-)

Вот только…

KiRiK пишет:


[*]MicroSD карточка. Вся старая информация на ней будет удалена во время настройки.[/*]

Короче, у меня данные почему-то не удалились…
Все осталось невредимым и на месте, по адресу /media/sdcard
Просто дописались дополнительные под-тома @home и @data