Estou construindo um kernel Android personalizado baseado no código-fonte do kernel da Cyanogenmod ROM. Gostaria de adicionar pastas e arquivos à pasta raiz do sistema operacional ( /
). Por exemplo, depois de compilar meu kernel, eu gostaria que uma pasta extra chamada toto
(caminho absoluto = /toto
) fosse criada.
Eu realmente não tenho idéia de quais arquivos precisam ser editados e como fazer o trabalho.
Nota: Se você é um usuário do Android (não um desenvolvedor de ROM) e deseja adicionar arquivos ao seu rootfs
, consulte a pergunta relevante do Android.SE .
linux-kernel
compiling
android
deadeert
fonte
fonte
userspace,
mas de outros Linux, ain-kernel
diferença é de apenas um punhado de patches. De fato, a popularidade do Android é uma grande força motriz por trás do desenvolvimento do kernel, e existe há alguns anos. Dê uma olhada nos changelogs do kernel.org e decida por si mesmo quantos são relevantes para os sistemas móveis - o Android em particular.boot.img
para portar ROM? : as respostas lá explicam como buscar e editar oboot.img
arquivo, permitindo alterar persistentemente o conteúdo do diretório raiz do dispositivo.Respostas:
No Android, como em muitos sistemas baseados em Linux, o kernel primeiro monta um initramfs on
/
. O initramfs é armazenado na RAM; ele é carregado de um arquivo CPIO que é armazenado junto com o próprio kernel (ou em algum outro local onde o gerenciador de inicialização pode encontrá-lo).A maioria dos sistemas Linux de desktop possui um pequeno initramfs que contém apenas programas e arquivos de configuração suficientes para montar o sistema de arquivos raiz real, que é então montado
/
, substituindo o initramfs. O Android, como alguns sistemas Linux embarcados, mantém os initramfs montados para sempre. Initramfs do Android contém apenas/init
,adbd
e alguns arquivos de configuração.Para o Cyanogenmod, você pode encontrar instruções de construção no guia de portabilidade . Você deseja copiar mais arquivos para o ramdisk (a imagem initramfs, na terminologia do Android), portanto, você deve adicioná-los à
PRODUCT_COPY_FILES
lista nodevice_*.mk
makefile do seu dispositivo.fonte
initramfs
imagem é o que contém esses arquivos de configuração, oinitramfs
sistema de arquivos é compilado em todos os kernel.Os documentos do kernel explicam como compactar uma imagem no próprio kernel. Do kernel.org :
fonte