Добавляем поддержку монтирования Windows шар в Android

Купил недавно себе планшет Samsung Galaxy Tab Pro 10.1 LTE SM-T525 и захотелось дома смотреть на нём фильмы и другие файлы с моего сетевого диска, расшаренного через samba. Для этого в ядре должна быть поддержка CIFS и не только… в андроиде начиная с версии 4.2 это оказалось нетривиальной задачей.

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

Дело в том, что с версии 4.2 в Adnroid ввели многопользовательский режим и вместе с ним все файловые системы теперь монтируются как Slave, это приводит к тому, что файловая система смонтированная одним пользователем, не видна другим пользователям.
В виртуальной машине Dalvik андроида с версии 4.2 в файле vm/Init.cpp есть такой код:

if (mount("rootfs", "/", NULL, (MS_SLAVE | MS_REC), NULL) == -1) {
	        SLOGE("Failed to mount() rootfs as MS_SLAVE: %s", strerror(errno));
	        return -1;
}

Читать дальше →