$ actualizadob
Encuentre controladores relacionados con scsi
$ localizar scsi*.ko
Buscar controladores relacionados con USB
$ localizar usb*.ko
Estos conductores son
.koes un sufijo y se compila en un módulo de forma predeterminada al instalar el sistema. De hecho, se pueden compilar como parte del kernel, solo necesita elegirlo al compilar el kernel.
[*]Eso es todo. Sin embargo, en muchos casos se compilan como módulos, lo que reduce el tamaño del kernel y proporciona la flexibilidad para cargarlos y descargarlos según sea necesario. A continuación se muestra brevemente cómo descargar un módulo, cargar un módulo y ver el estado de un módulo cargado.
Pasable
/procesosistema de archivos
módulosarchivo para verificar el estado de varios módulos cargados en el kernel, o por
lsmodcomando para verlos directamente.
$ gato /proc/módulos
o
$lsmod
Verifique los controladores relacionados con scsi y usb, los resultados se enumeran como nombre del módulo, tamaño del módulo, referenciados por otros módulos (número de referencias, módulos que hacen referencia a ellos)
$ lsmod |
Desinstalar a continuación
usb ocultoEche un vistazo al módulo (¡no desinstale el controlador scsi! Porque su sistema puede ejecutarse en él. Si realmente desea jugar con él, recuerde guardar los datos antes de desinstalarlo), pase
modmodEsto se puede lograr ejecutando el comando, primero cambie al usuario raíz:
$ sudo -s# rmmod usbhid
Verifique la información del módulo nuevamente. Ya no puede verlo.
$ lsmod | grep ^usbhid
Si tienes un mouse USB, ¿muévelo y descubres que no puedes moverlo? Debido a que los controladores del dispositivo ya no están disponibles, el dispositivo no se puede utilizar. Pero no se ponga nervioso ahora que sabe el motivo, puede recargar el controlador.
insmodManojo
usb ocultoEl módulo se recarga.
$ sudo -s# insmod `localizar usbhid.ko`
localizar usbhid.koes descubrir
usbhid.koLa ruta al módulo, si no había ninguno antes.
actualizadob, Supongo que no podrás encontrarlo usándolo, pero también puedes ir directamente a
/lib/módulosUtilizado en el directorio
encontrarManojo
usbhid.koArchivo encontrado.
# insmod $(find /lib/modules -name *usbhid.ko* | grep `uname -r`)
Ahora el ratón se puede volver a utilizar. Si no lo crees, mueve el ratón de nuevo :-)
En este punto, la relación entre los dispositivos de hardware y los controladores de dispositivos debería ser relativamente clara. Si no, continúa a continuación.
Los controladores de dispositivos Linux están asociados con los archivos de dispositivos correspondientes, y los archivos de dispositivos corresponden a los dispositivos de hardware uno a uno. Estos archivos de dispositivo se almacenan uniformemente en el sistema.
/desarrollador/directorio.
Por ejemplo, el dispositivo scsi corresponde a
/dev/sda,
/dev/sda1,
/dev/sda2...Vea la información de estos dispositivos a continuación.
$ ls -l /dev/sda*brw-rw---- 1 disco raíz 8, 0 2007-12-28 22:49 /dev/sdabrw-rw---- 1 disco raíz 8, 1 2007-12- 28 22:50 /dev/sda1brw-rw---- 1 disco raíz 8, 3 2007-12-28 22:49 /dev/sda3brw-rw---- 1 disco raíz 8, 4 2007-12-28 22:49 /dev/sda4brw-rw---- 1 disco raíz 8, 5 2007-12-28 22: 50 /dev/sda5brw-rw---- 1 disco raíz 8, 6 2007-12-28 22:50 /dev/sda6brw-rw---- 1 disco raíz 8, 7 2007-12-28 22:50 /dev/sda7brw-rw---- 1 disco raíz 8, 8 2007-12-28 22: 50/dev/sda8
Puedes ver que el primer carácter en la primera columna es
b, la quinta columna es el número 8.
bIndica que el archivo es un archivo de dispositivo de bloque, correspondientemente, si es
doSignifica dispositivo de caracteres (como `/dev/ttyS0). En cuanto a la diferencia entre dispositivo de bloque y dispositivo de caracteres, puede ver aquí:
Dispositivo de caracteres: un dispositivo de caracteres es un dispositivo al que se puede acceder como un flujo de bytes. Los terminales de caracteres y los puertos serie son dispositivos de caracteres.
Dispositivos de bloque: los sistemas de archivos se pueden alojar en dispositivos de bloque. A diferencia de los dispositivos de caracteres, los dispositivos de bloques solo pueden transferir uno o más bloques completos a la vez al leer o escribir. En el sistema operativo Linux, las aplicaciones pueden leer y escribir dispositivos de bloques al igual que los dispositivos de caracteres (leyendo o escribiendo bytes arbitrarios de datos a la vez). Por lo tanto, la diferencia entre dispositivos de bloques y dispositivos de caracteres es únicamente la gestión de datos en el núcleo.
El número 8 es el número de dispositivo correspondiente al dispositivo de hardware en el kernel. Se puede encontrar en el kernel.
Documentación/dispositivos.txty
/proc/dispositivosBusque la asignación del número de dispositivo en el archivo. Pero, ¿por qué el mismo dispositivo corresponde a archivos de dispositivos diferentes (
/dev/sda¿Por qué hay números diferentes al final y
esA ellos les corresponde la columna 6 del resultado). En realidad, esto es para diferenciar entre diferentes partes de diferentes dispositivos. Para discos duros, esto maneja diferentes particiones dentro del disco duro. En lo que respecta al kernel, solo necesita encontrar el dispositivo de hardware correspondiente a través del número de dispositivo en la columna 5, pero para el módulo del controlador, también necesita saber cómo manejar diferentes particiones, por lo que hay un número de dispositivo auxiliar adicional. , es decir el contenido correspondiente a la columna 6. De esta forma, un dispositivo tiene un número de dispositivo principal (columna 5) y un número de dispositivo auxiliar (columna 6), facilitando así la gestión de varios dispositivos de hardware.
Debido a que el archivo del dispositivo corresponde al hardware, puede acceder directamente al
/dev/sda(En el caso de
IDEdisco duro, entonces el dispositivo correspondiente
/dev/hda(la) Lea la información del disco duro del dispositivo, por ejemplo:
usar
ddEl comando copia los primeros 512 bytes del disco duro y requiere usuario root
$ sudo dd if=/dev/sda of=mbr.bin bs=512 count=1
usar
archivoComando para ver la información correspondiente
$ archivo mbr.binmbr.bin: sector de inicio x86, cargador de inicio LInux i386; partición 3: ID=0x82, inicio 254, sector de inicio 19535040, 1959930 sectores: ID=0x5, inicio 254, sector de inicio 21494970, 56661255 sectores; compensación 0x48
También se puede utilizar
sobredosisEl comando se lee en formato hexadecimal y se analiza.
$ od -x mbr.bin
bses el tamaño del bloque (en bytes
bytescomo unidad),
contares el numero de bloques
Debido a que esta información no es intuitiva (y se analizará más adelante), echemos un vistazo primero a otro archivo de dispositivo, que podrá demostrar la correspondencia entre el archivo del dispositivo y el hardware de manera muy intuitiva. Tomemos el mouse como ejemplo. Leamos la información del archivo del dispositivo correspondiente al mouse.
$ sudo -s# cat /dev/input/mouse1 |
El controlador de su mouse puede ser diferente, por lo que el archivo del dispositivo puede ser otro, pero todo estará en
/desarrollo/entradaAbajo.
Mueva el mouse y vea si encuentra información diferente. Según este principio, a menudo leemos el archivo del dispositivo en un extremo
/dev/ttyS0contenido en el archivo del dispositivo en el otro extremo
/dev/ttyS0Escriba el contenido para comprobar si la línea del puerto serie está dañada.
En este punto, debería estar más impresionado por la relación entre los controladores de dispositivo, los archivos de dispositivo y los dispositivos de hardware. Si desea comprender en profundidad el principio de funcionamiento de los controladores de dispositivos y la escritura de controladores de dispositivos, consulte la información relevante que se enumera a continuación y comience el proceso de escritura de controladores de dispositivos.
Referencias:
Compilar el kernel de Linux 2.6
Principios de escritura de controladores de hardware para sistemas Linux.
Principios, configuraciones y problemas comunes de los dispositivos USB en Linux
La guía de programación del módulo del kernel de Linux
Desarrollo de controladores de dispositivos Linux
De hecho, la memoria, el disco USB, etc. se pueden utilizar como dispositivo de "almacenamiento" subyacente del sistema de archivos, pero aquí solo usamos el disco duro como ejemplo para presentar la relación entre discos y particiones.
En la actualidad, la partición de Linux todavía adopta el principio de partición utilizado por el primer disco duro de la PC. Este principio de partición se analiza y demuestra paso a paso a continuación.
Primero echemos un vistazo a algunos conceptos:
Gestión y partición de dispositivos
En Linux, cada dispositivo de almacenamiento corresponde a un archivo de dispositivo del sistema. Para discos duros, etc.
IDEy
SCSIdispositivo, en el sistema
/desarrolladorLos caracteres que contienen correspondientes se pueden encontrar en el directorio.
hdy
Dakota del Surarchivos del dispositivo. Dependiendo de la interfaz del dispositivo de la placa base y la interfaz del cable de datos a la que está conectado el disco duro,
hdo
Dakota del SurDespués del personaje, puedes agregar un personaje de
allegar
zpersonajes, por ejemplo
hda,
hdb,
hdcy
sda,
sdb,
COSUDEetc. Además, para distinguir diferentes particiones del mismo dispositivo de hardware, se puede agregar un número al final, por ejemplo
hda1,
hda2,
hda3y
sda1,
sda2,
sda3, entonces en
/desarrolladordirectorio, puede ver muchos archivos de dispositivos similares.
El papel de cada partición.
Al particionar, a menudo nos encontramos con el problema de las particiones primarias y las particiones lógicas. En realidad, esto es para facilitar la expansión de las particiones. Así como la introducción de volúmenes lógicos en el futuro sirve para administrar mejor varios discos duros, la introducción de particiones primarias y particiones lógicas puede hacerlo. realizar fácilmente la gestión de particiones.
Cada dispositivo de disco duro en el sistema Linux consta de hasta 4 particiones primarias (incluidas las particiones extendidas).
La computadora utiliza la partición primaria para iniciar el sistema operativo, por lo que el programa de inicio de cada sistema operativo, o programa de inicio, debe almacenarse en la partición primaria. Linux estipula que la partición primaria (o partición extendida) ocupa los primeros 4 números de partición. Entonces verás que el archivo de dispositivo correspondiente a la partición primaria es
/dev/hda1-4o
/dev/sda1-4, en vez de
hda5o
sda5.
Las particiones extendidas se utilizan para expandir más particiones lógicas. En Linux, las particiones lógicas ocupan.
hda5-16o
sda5-16Espere 12 números.
Tipo de partición
Especifica el tipo de sistema de archivos en esta partición. Linux admite muchos tipos de sistemas de archivos, como msdoc, vfat, ext2, ext3, etc. Se presentará más información en la siguiente sección.
A continuación, analizando los primeros 512 bytes del disco duro (es decir,
MBR) para analizar y comprender particiones.
Primero echemos un vistazo a esta imagen:
se usa para describir
MBRestructura.
MBRIncluyendo la parte de inicio, la tabla de particiones y la marca de finalización `(55AAH), ocupan respectivamente 446 bytes, 64 bytes y 2 bytes de 512 bytes. Aquí solo nos centramos en la parte de la tabla de particiones, es decir, los 64 bytes del medio y la parte izquierda de la figura.
Ya que estoy usando
SCSIdisco duro, lo siguiente es de
/dev/sdaCopie los primeros 512 bytes del disco duro al archivo en el dispositivo
mbr.binmedio.
$ sudo -s# dd if=/dev/sda of=mbr.bin bs=512 count=1
Usar a continuación
archivo,
sobredosis,
disco duroEspere el comando para analizar este párrafo.
MBRdatos y compárelo con el gráfico anterior para una comprensión más profunda.
$ archivo mbr.binmbr.bin: sector de inicio x86, cargador de inicio LInux i386; partición 3: ID=0x82, inicio 254, sector de inicio 19535040, 1959930 sectores: ID=0x5, inicio 254, sector de inicio 21494970, 56661255 sectores; compensar 0x48$ od -x mbr.bin | tail -6 #Solo se centra en los 64 bytes del medio, por lo que se interceptan las últimas 6 líneas del resultado 0000660 0000 0000 0000 0000 a666 a666 0000 01800000700 0001 fe83 ffff 003f 0000 1481 012a 00000000720 0000 0000 0000 0000 0000 0000 0000 fe000000740 ffff fe82 ffff 14c0 012a e7fa 001d fe000000760 ffff fe05 ffff fcba 0147 9507 0360 aa55$ sudo -s# fdisk -l | grep ^/ #Solo analiza las partes relacionadas con MBR, no analiza la parte de la partición lógica /dev/sda1 * 1 1216 9767488+ 83 Linux/dev/sda3 1217 1338 979965 82 Linux intercambio / Solaris/dev/sda4 1339 4865 28330627+ 5 Extendido
archivoEl resultado del comando muestra que los 512 bytes que acabamos de copiar son el sector de arranque y las partes separadas por punto y coma son
gestor de arranque, partición 3 y partición 4. El tipo de partición 3 es 82, es decir
intercambioPartición (se puede hacer mediante
disco durodominante
yocomando para listar información relevante), que corresponde a
disco duroen los resultados de
/dev/sda3En la quinta columna de la fila, el número de sectores en la partición 3 es 1959930, que convertido en bytes es
1959930*512(Actualmente, el tamaño de sector predeterminado para los discos duros es 512 bytes), mientras que
intercambioEl tamaño de bloque predeterminado para una partición es 1024 bytes, por lo que el número de bloques es
:
$ eco 1959930*512/1024 |
Exactamente
disco duroProducir
/dev/sda3El número de bloques correspondientes a la cuarta columna de la fila, de manera similar, se puede comparar
disco duroy
archivoLos resultados se analizan para la partición 4.
veamos de nuevo
sobredosisEl resultado del comando se muestra en hexadecimal. Considere también la partición 3. Después del cálculo, se encuentra que la partición 3 corresponde a.
sobredosisEl resultado del comando es:
fe00 ffff fe82 ffff 14c0 012a e7fa 001d
La primera es la marca de partición,
00H, en la imagen de arriba, puedes ver que no es una partición de arranque (
80HLa marcada es la partición de arranque), ¿y qué pasa con el tipo de partición? para
82H,y
archivoLos resultados de la visualización son consistentes. Ahora prestemos atención al tamaño de la partición, es decir.
archivoEl número de sectores en el resultado.
$ eco ibase=10;obase=16;1959930 |
solo corresponde
e7fa 001d, considere de manera similar los resultados de la partición de arranque:
0180 0001 fe83 ffff 003f 0000 1481 012a
Etiqueta de partición:
80H, que simplemente refleja que esta partición es una partición de arranque, seguida de la situación del sector del disco donde se encuentra la partición de arranque, 010100, es decir, 1 lado, 0 pistas y 1 sector. Se pueden comparar y analizar otros contenidos.
Teniendo en cuenta la limitación de tiempo, consulte la información siguiente o el manual correspondiente del sistema para obtener más detalles.
Suplemento: Al instalar el sistema, puede utilizar
disco duro,
disco duroEspere a que el comando particione. Si desea arrancar desde una determinada partición, debe escribir
80Hetiqueta, por ejemplo a través de
disco duroEstablecer una partición para
de arranquepara lograr.
Referencias:
Dentro del proceso de arranque de Linux
Desarrolla tu propio sistema operativo: arrancando
Introducción a la partición del disco Redhat9
Partición de Linux CÓMO
Antes de la introducción de los volúmenes lógicos, los tipos de partición y los tipos de sistemas de archivos se trataban casi por igual. El proceso de configuración del tipo de partición era el proceso de formatear la partición y establecer el tipo de sistema de archivos correspondiente.
A continuación se presenta principalmente cómo establecer la relación entre las particiones y los tipos de sistemas de archivos, es decir, cómo formatear las particiones como tipos de sistemas de archivos específicos.
Primero echemos un vistazo a los tipos comunes de sistemas de archivos en Linux (si desea ver todos los tipos de archivos admitidos por Linux, puede usar
disco durodominante
yocomando para ver o pasar
hombre fsPara ver, también puedes usar
/proc/sistemas de archivosVerifique los tipos de sistemas de archivos admitidos por el kernel actual)
ext2,
ext3,
ext4: Estos tres son los tipos comúnmente utilizados por los sistemas de archivos raíz de Linux.
intercambio: Este es un sistema de archivos utilizado para implementar la memoria virtual de Linux. Durante la instalación, generalmente es necesario crear una partición especial y formatearla.
intercambiosistema de archivos (si desea agregar más
intercambioPara particionar, puede consultar los materiales de referencia en esta sección para familiarizarse con
dd,
intercambio de mks,
intercambiar,
intercambioUso de otros comandos)
proceso: Este es un sistema de archivos relativamente especial que existe como una interfaz entre el kernel y los usuarios y está integrado en la memoria (se puede acceder a través de
gatoVista de comando
/procesoLos archivos bajo el sistema pueden incluso ser modificados por
/proc/sysEl siguiente archivo puede ajustar la configuración del kernel en tiempo real. La premisa actual es que es necesario.
procesoEn el montaje del sistema de archivos:
montaje -t proc proc /proc
Además de los tipos de sistemas de archivos anteriores, la compatibilidad con Linux incluye
vfat,
ISO,
xfs,
nfsEntre varios tipos de sistemas de archivos comunes, en Linux, puede ver y operar libremente los sistemas de archivos utilizados por otros sistemas operativos como Windows.
Entonces, ¿cómo se establece la asociación entre los discos y estos tipos de sistemas de archivos? formato.
El proceso de formateo es en realidad el proceso de reorganizar la partición, que puede ser
mkfsComando para lograr, por supuesto, también puedes pasar.
disco duroEspere a que se implemente el comando. Aquí sólo presentamos
mkfs,
mkfsSe puede usar para formatear una partición existente, pero no puede realizar operaciones de partición (si desea particionar y formatear un disco, puede usar
disco duro). Después del formateo, los datos de la partición correspondiente se organizan según un tipo de sistema de archivos especial.
Por ejemplo: poner
/dev/sda9La partición está formateada como
ext3sistema de archivos.
$ sudo -s# mkfs -t text3 /dev/sda9
Si desea enumerar los tipos de sistemas de archivos de cada partición, puede usar
fdisk-lOrden.
Consulte los siguientes materiales para obtener más información.
Referencias:
Pasos para cargar la partición de intercambio en Linux
Producción y grabación de archivos de imágenes ISO en Linux
Explicación de la partición del disco RAM:[1],[2]
Guía del implementador del sistema de archivos avanzado
La sección anterior formateó directamente la partición como un determinado tipo de sistema de archivos, pero considerando la necesidad de expandir nuevos dispositivos de almacenamiento, los desarrolladores introdujeron volúmenes lógicos entre el sistema de archivos y la partición. Teniendo en cuenta las limitaciones de tiempo, no entraré en detalles aquí. Consulte la referencia: Explicación detallada de la gestión de volúmenes lógicos de Linux.
Lo que finalmente presenta el sistema de archivos es una estructura visual, que se puede presentar mediante comandos como ls, find y tree. Es como un "árbol" al revés y se pueden montar nuevos "árboles" en los nodos del árbol.
La siguiente es una breve introducción al montaje del sistema de archivos.
Un sistema de archivos se puede montar a través de un dispositivo (
montar) a un directorio, que se denomina punto de montaje. Curiosamente, en Linux, un directorio se puede montar en otro directorio y un archivo formateado también se puede montar a través de un dispositivo especial.
/dev/buclepara montar (por ej.
ISOdocumento). Además, en lo que respecta a los sistemas de archivos, Linux no solo admite sistemas de archivos locales, sino que también admite sistemas de archivos remotos (como
nfs).
A continuación se presentan brevemente varios ejemplos de montaje de sistemas de archivos.
Montaje del sistema de archivos raíz
El montaje requiere permisos de raíz, por ejemplo, montar el sistema de archivos raíz del sistema
/dev/sda1llegar
/mnt
$ sudo -s# montaje -t text3 /dev/sda1 /mnt/
Controlar
/dev/sda1Como puede verse en la situación de montaje, un dispositivo se puede montar varias veces.
$ montar | grep sda1/dev/sda1 en / escriba ext3 (rw,errors=remount-ro)/dev/sda1 en /mnt escriba ext3 (rw)
Para un sistema de archivos ya montado, se puede volver a montar para admitir diferentes atributos.
$ montar -n -o remontar, rw /
Montar un nuevo dispositivo
Si el kernel ya admite la interfaz USB, al insertar la unidad flash USB, puede pasar
dmesgComando para ver el número de dispositivo correspondiente y montarlo.
Controlar
dmesgPara las últimas líneas de los resultados, busque algo como
/dev/sdNinformación para conocer el número de dispositivo correspondiente al disco USB
$dmesg
Aquí se supone que el disco USB está
vfatformato para que también se pueda utilizar en Windows en algunas imprentas
# mount -t vfat /dev/sdN /ruta/al/directorio_punto_de_montaje
Montar un archivo iso o CD
Para algunos archivos iso o discos en formato iso, también puede utilizar
montarComando para montar.
Para archivos iso:
# mount -t iso9660 /ruta/al/isofile /ruta/al/directorio_punto_de_montaje
Para CD:
# mount -t iso9660 /dev/cdrom /ruta/al/directorio_punto_de_montaje
Montar un sistema de archivos remoto
# mount -t nfs ip_remota:/ruta/al/directorio_compartido /ruta/al/directorio_local
Montar un sistema de archivos proc
# montar -t proc proc /proc
procesoEl sistema de archivos está organizado en la memoria, pero se puede montar en un directorio. Normalmente lo montamos en
/procesodirectorio para que algunas herramientas de configuración y administración del sistema puedan usarlo. Por ejemplo
arribaEl comando lo usa para analizar el uso de la memoria (leer
/proc/meminfoy
/proc/estadísticaetc. archivos);
lsmodcomando a través del cual obtener el estado del módulo del kernel (leer
/proc/módulos);
netstatcomando para obtener el estado de la red a través de él (leer
/proc/net/devy otros documentos). Por supuesto, también se pueden escribir herramientas relacionadas. Además, ajustando
/proc/sysLos archivos en el directorio pueden ajustar dinámicamente la configuración del sistema, como ir a
/proc/sys/net/ipv4/ip_forwardEscribir el número 1 en el archivo permite que el kernel admita el reenvío de paquetes. (Para obtener más información, consulte
procesoayuda,
hombre``proc)
Montar un directorio
$ montaje --bind /ruta/al/directorio_necesario de montaje /ruta/al/directorio_punto_de_montaje
Esto es muy interesante, por ejemplo, puede montar un directorio en el directorio raíz del servicio ftp y proporcionar los recursos en el directorio correspondiente para que otros los compartan sin copiar el contenido.
Lo anterior solo menciona el montaje, entonces, ¿cómo desinstalarlo? usar
desmontarSimplemente siga el comando con la dirección de origen o el punto de montaje (dispositivo, archivo, directorio remoto, etc.) del montaje. Por ejemplo:
$ desmontar /ruta/al/directorio_punto_de_montaje
o
$ desmontar /ruta/a/mount_source
Si desea administrar una gran cantidad de servicios montados con frecuencia, montarlos manualmente cada vez es una mala idea. Puedes usarlo ahora
montararchivo de configuración
/etc/fstab,Manojo
montarLos parámetros correspondientes se escriben como
/etc/fstabEl montaje por lotes se puede realizar en la columna correspondiente al archivo (
montar -a) y desinstalar (
desmontar -a).
/etc/fstabLas columnas son sistema de archivos, punto de montaje, tipo y opciones relacionadas. Para obtener más información, consulte
fstabayuda (
hombre fstab).
Referencias:
Partición del disco duro de Linux y su principio de montaje
Mirando el sistema de archivos virtual de Linux desde la E/S de archivos
Análisis del código fuente: diagrama de llamada de función del programa C de análisis estático
Hay algunos directorios básicos en el sistema de archivos de Linux y varios archivos con diferentes funciones se almacenan en diferentes directorios. Los directorios más básicos son
/etc,
/lib,
/desarrollador,
/papeleraetc., que almacenan archivos de configuración del sistema, archivos de biblioteca, archivos de dispositivo y programas ejecutables, respectivamente. Estos directorios son generalmente necesarios cuando se realiza un desarrollo integrado, es necesario utilizarlos manualmente.
caja ocupadaEspere a que las herramientas creen un sistema de archivos tan básico. Aquí solo creamos un sistema de archivos muy simple y realizamos varias operaciones convencionales en el sistema de archivos para profundizar nuestra comprensión del sistema de archivos.
todavía lo recuerdo
dd¿Un pedido? Úselo para generar un archivo de tamaño fijo, este es
1M(1024*1024 bytes)archivos
$ dd if=/dev/zero of=minifs bs=1024 recuento=1024
Ver tipos de archivos aquí
minifaldases un completo
\0archivo sin ninguna estructura de datos específica
$ archivo minifsminifs: datos
ilustrar:
/desarrollo/ceroes un dispositivo muy especial, si lo lees, puedes obtener cualquier número de
\0.
Luego, el archivo se formatea en un sistema de archivos de un tipo de archivo específico. (¿Parece increíble que los archivos también se puedan formatear? Sí, no solo los dispositivos pueden hacerlo, los archivos también se pueden organizar en ciertos tipos de sistemas de archivos, pero cabe señalar que algunos sistemas de archivos (como
ext3) requiere que el objetivo se formatee para que tenga al menos
64Mespacio).
$ mkfs.ext2 minifs
Verifique el tipo de archivo en este momento. En este momento, el archivo.
minifaldassolo toma
ext2Formato del sistema de archivos organizado.
$ file minifsminifs: datos del sistema de archivos ext2 de Linux rev 1.0
Debido a que el archivo está organizado por tipo de sistema de archivos, puede usar
montarcomando para montarlo y usarlo.
Por favor cambie a
raízEl usuario lo monta y pasa.
-o bucleopción para asociarlo con un dispositivo específico
/dev/bucle
$ sudo -s# montar minifs /mnt/ -o bucle
Ver la información del sistema de archivos y solo ver un archivo de directorio
perdido+encontrado
$ ls /mnt/perdido+encontrado
Realice varias operaciones regulares en este sistema de archivos, incluidas lectura, escritura, eliminación, etc. (Antes de cada operación, por favor
minifaldasGuarde una copia del archivo para compararla. Combinada con información relevante, puede realizar un análisis en profundidad de los cambios en el sistema de archivos causados por diversas operaciones, lo que le permitirá comprender en profundidad los principios de implementación del sistema de archivos. organizar datos, etc.)
$ cp minifs minifs.bak$ cd /mnt$ toque hola$ cd -$ cp minifs minifs-touch.bak$ od -x minifs.bak > orig.od$ od -x minifs-touch.bak > touch.od
Después de crear un archivo, compare las similitudes y diferencias entre el sistema de archivos actual y el sistema de archivos anterior.
$ diff orig.od touch.oddiff orig.od touch.od61,63c61,64< 0060020 000c 0202 2e2e 0000 000b 0000 03e8 020a< 0060040 6f6c 7473 662b 756f 646e 0000 0000 0000< 0060060 0000 0000 0000 0000 0000 0000 0000 0000---> 0060020 000c 0202 2e2e 0000 000b 0000 0014 020a> 0060040 6f6c 7473 662b 756f 646e 0000 000c 0000> 0060060 03d4 0105 6568 6c6c 006f 0000 0000 0000> 0060100 0000 0000 0000 0000 0000 0000 0000 0000
Mediante comparación, se descubrió que cuando se agrega un archivo, la ubicación correspondiente del sistema de archivos cambia significativamente.
$ echo hola, mundo > /mnt/hola
implementar
sincronizarcomando para garantizar que los datos en el caché se hayan escrito en el disco (recuerde la Figura 1 de esta sección
caché del búferBueno, aquí está
cacheLos datos se escriben en el disco)
$ sincronización$ cp minifs minifs-echo.bak$ od -x minifs-echo.bak > echo.od
Después de escribir el contenido del archivo, compare las similitudes y diferencias entre el sistema de archivos y el anterior.
$ diff toque.od echo.od
Ver cadenas en el sistema de archivos
$ cadenas minifslost+foundholahola, mundo
borrar
HolaArchivo, ver cambios en el sistema de archivos
$ rm /mnt/hola$ cp minifs minifs-rm.bak$ od -x minifs-rm.bak > rm.od$ diff echo.od rm.od
Al observar las cadenas en el sistema de archivos, descubrimos que el contenido del archivo no se sobrescribió cuando se eliminó el archivo, por lo que, en teoría, el contenido aún es recuperable en este momento.
$ cadenas minifslost+foundholahola, mundo
Lo anterior solo muestra algunas herramientas comunes para analizar sistemas de archivos y analiza varias operaciones comunes. Si desea tener una comprensión muy profunda de los principios de implementación de los sistemas de archivos, familiarícese con el uso de las herramientas anteriores y lea los materiales relevantes.
Referencias:
Construya un mini sistema de archivos en Linux desde cero
Construya un mini sistema de archivos en Linux con BusyBox
sistema de archivos ext2
junto con
fusibleCon la aparición de fuse, es posible desarrollar sistemas de archivos en el espacio del usuario. Si desea desarrollar su propio sistema de archivos, se recomienda leer: Utilice fuse para desarrollar su propio sistema de archivos.
El 22 de diciembre de 2007, recopilé mucha información y escribí el marco general.
El primer borrador se completó la tarde del 28 de diciembre de 2007. Considerando las limitaciones de tiempo, muchos detalles no se analizaron más a fondo. Además, puede haber problemas de comprensión en algunas partes. Las críticas y correcciones son bienvenidas.
La tarde del 28 de diciembre de 2007 se modificaron algunos datos y el documento se publicó oficialmente.
No. 29, agregue una sección sobre controladores de dispositivos y dispositivos de hardware