¿Utilizar el sistema de archivos initramfs para personalizar el sistema Android?
Para administrar de manera uniforme varios sistemas de archivos, Linux introduce un sistema de archivos virtual, que proporciona una interfaz de programación de aplicaciones unificada para varios sistemas de archivos.
Los principales tipos de sistemas de archivos son los siguientes:
Dependiendo de las características del hardware y los requisitos del sistema del dispositivo de almacenamiento, los diferentes tipos de sistemas de archivos tienen diferentes aplicaciones. En las aplicaciones Linux integradas, los principales dispositivos de almacenamiento son ram y flash. Los tipos de sistemas de archivos más utilizados basados en dispositivos de almacenamiento incluyen: jffs2, yaffs, cramfs, ramdisk, ramfs, etc.
Sistema de archivos basado en memoria flash
La memoria flash (memoria flash), como principal medio de almacenamiento para sistemas integrados, tiene dos tecnologías principales: Nor y Nand. La memoria flash tiene un número limitado de borrados y la memoria flash Nand tiene interfaces de hardware especiales y tiempos de lectura/escritura. Por lo tanto, las características de hardware de la memoria flash deben diseñarse de acuerdo con los requisitos de aplicación del sistema de archivos.
jffs2: se utiliza principalmente para memoria flash de tipo nor, que es legible y grabable y admite un sistema de archivos de registro de compresión de datos.
yaffs/yaffs2: Se utiliza principalmente para memoria flash tipo nand y admite multiplataforma.
cramfs: sistema de archivos comprimidos de sólo lectura.
ramdisk: sistema de archivos basado en memoria. Es una porción de memoria de tamaño fijo que se utiliza como dispositivo de bloque. No es un sistema de archivos real, sino un mecanismo para cargar el sistema de archivos real en la memoria. El uso de un disco RAM para colocar en la memoria los archivos a los que se accede con frecuencia y que no necesitan cambiarse puede mejorar significativamente el rendimiento del sistema.
initramfs: Sistema de archivos basado en memoria. initramfs, introducido en el kernel 2.6, es un sistema de archivos basado en memoria similar a tmpfs que se puede utilizar sin crear un dispositivo de bloque de memoria. Agregar archivos a ramfs asigna automáticamente más memoria y eliminar o truncar archivos libera memoria. (Si el disco RAM no está lleno, la memoria adicional ocupada no se puede utilizar para otros fines; si el disco RAM está lleno, pero todavía hay memoria sin usar en otro lugar, se debe reformatear antes de poder expandirlo)
nfs: es una tecnología desarrollada por Sun para disfrutar de archivos a través de una red entre diferentes máquinas. Durante las etapas de desarrollo y depuración de sistemas Linux integrados, puede utilizar esta tecnología para crear un sistema de archivos raíz basado en NFS en el host, luego montarlo en el dispositivo integrado y modificar fácilmente el contenido del sistema de archivos raíz.
El sistema de archivos Initramfs es en realidad un sistema de archivos ramdisk comprimido. Se estima que pocas personas han oído hablar de él, pero esta vez utilicé el sistema de archivos NFS para depurar la placa. y descubrí que en el archivo solidificado no hay una buena opción para el sistema. u-boot no puede admitir directamente yaffs2 y necesita ser parcheado; ramdisk no se puede solidificar directamente en flash y cramfs necesita otras herramientas para hacerlo. Se encontró el sistema de archivos Initramfs. initramfs es un sistema de archivos que compila archivos ramdisk en el kernel. En realidad, es el sistema de archivos ramdisk (sistema de archivos ramdisk inicial).
Al crear el sistema de archivos initramfs, primero debemos crear el sistema de archivos ramdisk. Esto es relativamente simple y la información es relativamente completa. Lo presentaré brevemente aquí:
1.
mkdir rootfs
cd rootfs
mkdir bin dev etc lib proc sbin sys usr mnt tmp var
mkdir usr/bin usr/ lib usr/sbin lib /modules
2 Crear archivos de dispositivo
cd /dev
mknod -m 666 console c 5 1
mknod -m 666 null c 3 1
cd .
3. Instalar /etc
tar etc.tar.gz -c /xxx/rootfs<. /p>
No proporcionaré recursos para este paso. También encontré la búsqueda integrada en China. Si está interesado, puede buscarlo usted mismo.
4. Compile los módulos del kernel
Ingrese al directorio del kernel de Linux (linux-2.6.30.4)
crea módulos Nota: Lo mejor es poner la raíz del kernel en el Makefile Cambie el ARCH para armar CROSS-COMPILE en el directorio a arm-linux-, porque estas dos variables de entorno se usan en muchos lugares. Estas dos variables de entorno se utilizan en muchos lugares. Al mismo tiempo, al compilar el controlador en el host, si estas dos variables no se modifican, se informarán errores extraños: /pengrui18/article/details/12044369
<. p> 5, instale los módulos del kernelmake module_install INSTALL_MOD_PATH=/xxx/rootfs
6. Configure Busybox
Ingrese al directorio de Busybox y ejecute make menuconfig p>
a. Vaya a configuración de Busybox-gt;
Opciones de compilación-gt;
[]"Construir Busybox como un binario estático"//enlace dinámico
Prefijo de compilación cruzada (arm-linux-)
Opción de instalación -gt;
[*]No usar usr/usr// Evite instalar Busybox en usr directorio del sistema host
Prefijo de instalación de Busybox (/xxx/rootfs) //Ubicación de instalación
Otras opciones predeterminadas
7. Compile e instale Busybox
p>make<
make install
Básicamente, siga los pasos anteriores para completar la creación del sistema de archivos.