É possível criar um ramdisk tmpfs de crescimento automático em um Android 4.x enraizado? Se sim, como?
É possível criar um ramdisk tmpfs de crescimento automático em um Android 4.x enraizado? Se sim, como?
Respostas:
Se você fizer um, cat /proc/filesystems
deverá observar o tmpfs . Portanto, se você tiver acesso ao mount
comando, deverá poder
mkdir MYDIRECTORY
)mount -t tmpfs tmpfs MYDIRECTROY
)Por padrão, um tmpfs-mount usará metade da RAM disponível no seu sistema. Portanto, em vez de "auto-crescimento", você pode pensar nele como "auto-encolhimento" - ou seja, quanto mais você usá-lo, menos RAM estará disponível. Na pior das hipóteses, seu sistema pode começar a trocar (o que você não deseja). Você pode usar opções para usar um tamanho de RAM diferente para essa montagem.
28-02-2017 atualização: devido às restrições impostas pelo Android, você deve escolher um ponto de montagem abaixo do gravável em todos os aplicativos. Como um cartão SD.
mount -o size=16M -t tmpfs tmpfs /data/local/tmp
ls -Fal
dentro do diretório montado?
ls -Fal
no diretório montado não fornece saída. Acabei de receber o aviso de volta. Se eu listar o diretório do pai, eu ficodrwxrwxrwt root root 2014-04-06 20:18 tmp
Do link que o OP incluiu, a parte principal resumiu:
O tmpfs é suportado pelo kernel do Linux a partir da versão 2.4 e posterior. [3] O tmpfs (anteriormente conhecido como shmfs) é baseado no código ramfs usado durante a inicialização
Ênfase minha, é disso que trata o RAMDisk! Ele permite que o kernel monte temporariamente o sistema de arquivos raiz e continue executando os scripts necessários na inicialização.
O mesmo se aplica neste caso do Android, cada um boot.img
que é exibido na /boot
partição, seja por Odin, fastboot, Kies, Sony Update Software, Heimdall, etc., contém o "código ramfs", que possui uma estrutura de diretórios que contém os pertinentes estão incluídos:
/dev
para arquivos de dispositivo/sbin
para binários do sistema/sys
para uso da interação com os arquivos do dispositivo após a /proc
montagemO script de inicialização lê a estrutura do diretório ramfs e a monta após a montagem bem-sucedida /system
no estágio inicial da inicialização.
Como em relação à palavra-chave do OP na pergunta:
criar um crescimento automático ...
Ele não cresce automaticamente por si só, pelo contrário, é limitado pela estrutura ramfs e pela quantidade de RAM disponível e, mais importante, desaparece na reinicialização!
A confusão vem de inter-mistura "RAMDisk" com "RAMDrive" alternadamente, tecnicamente um RAMDrive, é um espaço de troca na partição swap nativa, comumente encontrada no desktop Linux Se você está pensando do velho era DOS, onde RAMDrive foi usado , para simular uma unidade de disco residente na memória e programas quando copiados para esse disco e carregados mais rapidamente , não executados mais rapidamente , em vez de serem carregados pelas antigas unidades de disco MFM / RLL ( veja a lista de diretórios do DOS rolando muito lentamente nessas unidades ? ) isso também era conhecido como RAMDisk! (Para piorar as coisas, naquela época, diferentes fabricantes produziam RAMDRIVE.SYS ou mesmo RAMDISK.SYS!)
No caso do ponto de vista do kernel Linux, tanto no desktop quanto no Android, o RAMDisk é tmpfs , mas não se destina a usuários normais para armazenar dados / documentos etc., pois é exclusivamente para uso pelo próprio kernel!
Para anotar o comentário do @ nil abaixo, você pode montá-lo sim, mas ele vem com um custo, os recursos alocados para o meio tmpfs
são reduzidos à metade e consomem metade do restante da quantidade de RAM restante. Realisticamente falando, não é um caminho ideal para se persuadir do ponto de vista do Android em dispositivos.
É aí que /sdcard
entra, armazenar dados / documentos do usuário apenas por esse motivo; por isso, omiti o fato de que você pode, mas, novamente, por quê ?
mount -t tmpfs
.
mount -t tmpfs
após a leitura dos ramfs (que possui um script init barebones), uma vez montada, o resto do sistema é exibido como no pós-boot, que é o ambiente Android. Além disso, ao fazer isso posteriormente, por exemplo adb shell
, você está reduzindo os recursos do sistema, especialmente no caso de smartphones com memória e recursos limitados!