Red de conocimiento informático - Conocimiento informático - ¿Utilizar el sistema de archivos initramfs para personalizar el sistema Android?

¿Utilizar el sistema de archivos initramfs para personalizar el sistema Android?

Antes de crear el sistema de archivos Initramfs, primero presento brevemente el sistema de archivos Linux. Linux admite múltiples tipos de sistemas de archivos, incluidos ext2, ext3, vfat, jffs, ramfs, nfs, etc. Para administrar de manera uniforme varios sistemas de archivos, Linux introduce un sistema de archivos virtual (varios sistemas de archivos proporcionan una aplicación unificada). interfaz de programación.

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 kernel

make module_install INSTALL_MOD_PATH=/xxx/rootfs

6. Configure Busybox

Ingrese al directorio de Busybox y ejecute make menuconfig

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.