$ atualizadob
Encontre drivers relacionados ao scsi
$ localizar scsi*.ko
Encontre drivers relacionados a USB
$ localizar usb*.ko
Esses motoristas são
.koé um sufixo e é compilado em um módulo por padrão durante a instalação do sistema. Na verdade, eles podem ser compilados como parte do kernel, você só precisa escolher quando compilar o kernel.
[*]É isso. Entretanto, em muitos casos eles são compilados como módulos, o que reduz o tamanho do kernel e fornece flexibilidade para carregá-los e descarregá-los conforme necessário. A seguir demonstramos brevemente como descarregar um módulo, carregar um módulo e visualizar o status de um módulo carregado.
Passável
/procsistema de arquivos
módulosarquivo para verificar o status de vários módulos carregados no kernel, ou por
lsmodcomando para visualizá-los diretamente.
$ gato /proc/módulos
ou
$lsmod
Verifique os drivers relacionados a scsi e usb, os resultados são listados como nome do módulo, tamanho do módulo, referenciados por outros módulos (número de referências, módulos que os referenciam)
$ lsmod |
Desinstale abaixo
usbhidDê uma olhada no módulo (não desinstale o driver scsi! Porque seu sistema pode rodar nele. Se você realmente quiser brincar com ele, lembre-se de salvar os dados antes de desinstalar), passe
rmodIsso pode ser conseguido executando o comando, primeiro mude para o usuário Root:
$ sudo -s#rmmod usbhid
Verifique as informações do módulo novamente. Você não poderá mais vê-las.
$ lsmod |
Se você tiver um mouse USB, mova-o e descubra que não consegue movê-lo? Como os drivers de dispositivo não estão mais disponíveis, o dispositivo não pode ser usado. Mas não fique nervoso. Agora que você sabe o motivo, basta recarregar o driver.
insmodPacote
usbhidO módulo é recarregado.
$ sudo -s# insmod `locate usbhid.ko`
localize usbhid.koé descobrir
usbhid.koO caminho para o módulo, se não existia antes
atualizadob, acho que você não consegue encontrá-lo usando-o, mas também pode ir diretamente para
/lib/módulosUsado no diretório
encontrarPacote
usbhid.koArquivo encontrado.
# insmod $(find /lib/modules -name *usbhid.ko* | grep `uname -r`)
Agora o mouse pode ser usado novamente. Se você não acredita, mova o mouse novamente :-)
Neste ponto, a relação entre dispositivos de hardware e drivers de dispositivos deve estar relativamente clara. Se não, continue abaixo.
Os drivers de dispositivo Linux estão associados aos arquivos de dispositivo correspondentes e os arquivos de dispositivo correspondem aos dispositivos de hardware um a um. Esses arquivos de dispositivo são armazenados uniformemente no sistema
/dev/diretório.
Por exemplo, o dispositivo scsi corresponde a
/dev/sda,
/dev/sda1,
/dev/sda2...Veja as informações deste dispositivo abaixo.
$ ls -l /dev/sda*brw-rw---- 1 disco raiz 8, 0 2007-12-28 22:49 /dev/sdabrw-rw---- 1 disco raiz 8, 1 2007-12- 28 22:50 /dev/sda1brw-rw---- 1 disco raiz 8, 3 28/12/2007 22:49 /dev/sda3brw-rw---- 1 disco raiz 8, 4 2007-12-28 22:49 /dev/sda4brw-rw---- 1 disco raiz 8, 5 2007-12-28 22: 50 /dev/sda5brw-rw---- 1 disco raiz 8, 6 28/12/2007 22:50 /dev/sda6brw-rw---- 1 disco raiz 8, 7 2007-12-28 22:50 /dev/sda7brw-rw---- 1 disco raiz 8, 8 2007-12-28 22: 50/dev/sda8
Você pode ver que o primeiro caractere na primeira coluna é
b, a quinta coluna é o número 8.
bIndica que o arquivo é um arquivo de dispositivo de bloco, correspondentemente, se for
cSignifica dispositivo de caractere (como `/dev/ttyS0). Em relação à diferença entre dispositivo de bloco e dispositivo de caractere, você pode ver aqui:
Dispositivo de caracteres: Um dispositivo de caracteres é um dispositivo que pode ser acessado como um fluxo de bytes. Terminais de caracteres e portas seriais são dispositivos de caracteres.
Dispositivos de bloco: Os sistemas de arquivos podem ser acomodados em dispositivos de bloco. Ao contrário dos dispositivos de caracteres, os dispositivos de bloco só podem transferir um ou mais blocos completos por vez durante a leitura ou escrita. No sistema operacional Linux, os aplicativos podem ler e gravar dispositivos de bloco da mesma forma que dispositivos de caracteres (lendo ou gravando bytes arbitrários de dados por vez). Portanto, a diferença entre dispositivos de bloco e dispositivos de caracteres é apenas o gerenciamento de dados no kernel.
O número 8 é o número do dispositivo correspondente ao dispositivo de hardware no kernel. Ele pode ser encontrado no kernel.
Documentação/dispositivos.txte
/proc/dispositivosEncontre a atribuição do número do dispositivo no arquivo. Mas por que o mesmo dispositivo corresponde a arquivos de dispositivos diferentes (
/dev/sdaPor que existem números diferentes no final e
euA coluna 6 do resultado corresponde a eles). Na verdade, isso serve para diferenciar diferentes partes de diferentes dispositivos. Para discos rígidos, isso lida com diferentes partições dentro do disco rígido. No que diz respeito ao kernel, ele só precisa encontrar o dispositivo de hardware correspondente através do número do dispositivo na coluna 5, mas para o módulo do driver, ele também precisa saber como lidar com diferentes partições, portanto, há um número de dispositivo auxiliar adicional , isto é, o conteúdo correspondente à coluna 6. Desta forma, um dispositivo possui um número de dispositivo principal (coluna 5) e um número de dispositivo auxiliar (coluna 6), facilitando assim o gerenciamento de vários dispositivos de hardware.
Como o arquivo do dispositivo corresponde ao hardware, você pode acessar diretamente o
/dev/sda(no caso de
Ambiente de desenvolvimento integradodisco rígido, então o dispositivo correspondente é
/dev/hda(la) Leia as informações do disco rígido do dispositivo, por exemplo:
usar
ddO comando copia os primeiros 512 bytes do disco rígido e requer usuário Root
$ sudo dd if=/dev/sda of=mbr.bin bs=512 contagem=1
usar
arquivoComando para visualizar as informações correspondentes
$ arquivo mbr.binmbr.bin: setor de inicialização x86, carregador de inicialização LInux i386; partição 3: ID = 0x82, starthead 254, startsector 19535040, 1959930 setores; deslocamento 0x48
Também pode ser usado
ahO comando é lido em formato hexadecimal e analisado.
$ od -x mbr.bin
besteiraé o tamanho do bloco (em bytes
bytescomo unidade),
contaré o número de blocos
Como essas informações não são intuitivas (e serão analisadas mais adiante), vamos primeiro dar uma olhada em outro arquivo de dispositivo, que será capaz de demonstrar a correspondência entre o arquivo do dispositivo e o hardware de forma muito intuitiva. Tomemos o mouse como exemplo. Vamos ler as informações do arquivo do dispositivo correspondente ao mouse.
$ sudo -s# cat /dev/input/mouse1 |
O driver do seu mouse pode ser diferente, então o arquivo do dispositivo pode ser outro, mas estará tudo em
/dev/entradaAbaixo.
Mova o mouse e veja se você encontra saídas de informações diferentes. Com base neste princípio, muitas vezes lemos o arquivo do dispositivo de um lado para o outro.
/dev/ttyS0conteúdo no arquivo do dispositivo na outra extremidade
/dev/ttyS0Escreva o conteúdo para verificar se a linha da porta serial está danificada.
Neste ponto, você deve estar mais impressionado com a relação entre drivers de dispositivos, arquivos de dispositivos e dispositivos de hardware. Se você deseja ter uma compreensão profunda do princípio de funcionamento dos drivers de dispositivo e da gravação de drivers de dispositivo, dê uma olhada nas informações relevantes listadas abaixo e inicie o processo de gravação de drivers de dispositivo.
Referências:
Compilar o kernel Linux 2.6
Princípios de gravação de drivers de hardware para sistemas Linux
Princípios, configurações e problemas comuns de dispositivos USB no Linux
O Guia de Programação do Módulo Kernel Linux
Desenvolvimento de driver de dispositivo Linux
Na verdade, memória, disco USB, etc. podem ser usados como dispositivos de "armazenamento" subjacentes do sistema de arquivos, mas aqui usamos apenas o disco rígido como exemplo para apresentar a relação entre discos e partições.
Atualmente, o particionamento do Linux ainda adota o princípio de particionamento usado pelo primeiro disco rígido do PC. Este princípio de particionamento é analisado e demonstrado passo a passo abaixo.
Vamos dar uma olhada em alguns conceitos primeiro:
Gerenciamento e particionamento de dispositivos
No Linux, cada dispositivo de armazenamento corresponde a um arquivo de dispositivo do sistema. Para discos rígidos, etc.
Ambiente de desenvolvimento integradoe
SCSIdispositivo, no sistema
/devOs caracteres correspondentes podem ser encontrados no diretório
hde
SDarquivos do dispositivo. Dependendo da interface do dispositivo da placa-mãe e da interface do cabo de dados ao qual o disco rígido está conectado,
hdou
SDApós o personagem, você pode adicionar um personagem de
umchegar
zpersonagens, por exemplo
hda,
HD,
HDe
sda,
sdb,
sdcAlém disso, para distinguir diferentes partições do mesmo dispositivo de hardware, um número pode ser adicionado no final, por exemplo
hda1,
hda2,
hda3e
sda1,
sda2,
sda3, então em
/devdiretório, você pode ver muitos arquivos de dispositivos semelhantes.
O papel de cada partição
Ao particionar, frequentemente encontramos o problema de partições primárias e partições lógicas. Na verdade, isso serve para facilitar a expansão de partições. Assim como a introdução de volumes lógicos posteriormente serve para gerenciar melhor vários discos rígidos, a introdução de partições primárias e partições lógicas pode. ser facilmente realizado.
Cada dispositivo de disco rígido no sistema Linux consiste em até 4 partições primárias (incluindo partições estendidas).
A partição primária é usada pelo computador para iniciar o sistema operacional, portanto, o programa de inicialização de cada sistema operacional, ou programa de inicialização, deve ser armazenado na partição primária. O Linux estipula que a partição primária (ou partição estendida) ocupe os primeiros 4 números de partição. Então você verá que o arquivo do dispositivo correspondente à partição primária é
/dev/hda1-4ou
/dev/sda1-4, em vez de
hda5ou
sda5.
Partições estendidas são usadas para expandir mais partições lógicas. No Linux, as partições lógicas ocupam.
hda5-16ou
sda5-16Aguarde 12 números.
Tipo de partição
Especifica o tipo de sistema de arquivos nesta partição. O Linux suporta muitos tipos de sistemas de arquivos, como msdoc, vfat, ext2, ext3, etc. Mais informações serão apresentadas na próxima seção.
A seguir, analisando os primeiros 512 bytes do disco rígido (ou seja,
MBR) para analisar e compreender partições.
Vamos dar uma olhada nesta foto primeiro:
é usado para descrever
MBRestrutura.
MBRIncluindo a parte de inicialização, tabela de partição e marca final `(55AAH), ocupam respectivamente 446 bytes, 64 bytes e 2 bytes de 512 bytes. Aqui nos concentramos apenas na parte da tabela de partição, ou seja, os 64 bytes do meio e a parte esquerda da figura.
Já que estou usando
SCSIdisco rígido, o seguinte é de
/dev/sdaCopie os primeiros 512 bytes do disco rígido para o arquivo no dispositivo
mbr.binmeio.
$ sudo -s# dd if=/dev/sda of=mbr.bin bs=512 contagem=1
Use abaixo
arquivo,
ah,
fdiskAguarde o comando para analisar este parágrafo
MBRdados e compare-os com o gráfico acima para uma compreensão mais profunda.
$ arquivo mbr.binmbr.bin: setor de inicialização x86, carregador de inicialização LInux i386; partição 3: ID = 0x82, starthead 254, startsector 19535040, 1959930 setores; desvio 0x48$ od -x mbr.bin | tail -6 # Concentre-se apenas nos 64 bytes do meio, para que as últimas 6 linhas do resultado sejam interceptadas 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 ^/ #Apenas analise as partes relacionadas ao MBR, não analise a parte da partição lógica /dev/sda1 * 1 1216 9767488+ 83 Linux/dev/sda3 1217 1338 979965 82 Linux trocar / Solaris/dev/sda4 1339 4865 28330627+ 5 Estendido
arquivoO resultado do comando mostra que os 512 bytes recém copiados são o setor de inicialização e as partes separadas por ponto e vírgula são
carregador de inicialização, partição 3 e partição 4. O tipo de partição 3 é 82, ou seja
trocarPartição (pode ser feita via
fdiskcomandando
eucomando para listar informações relevantes), que corresponde a
fdisknos resultados de
/dev/sda3Na 5ª coluna da linha, o número de setores na partição 3 é 1959930, que convertido em bytes é
1959930*512(Atualmente, o tamanho padrão do setor para discos rígidos é 512 bytes), enquanto
trocarO tamanho de bloco padrão para uma partição é 1024 bytes, portanto o número de blocos é
:
$ eco 1959930*512/1024 |
Exatamente
fdiskResultado em
/dev/sda3O número de blocos correspondente à quarta coluna da linha, da mesma forma, pode ser comparado
fdiske
arquivoOs resultados são analisados para a partição 4.
Vamos ver de novo
ahO resultado do comando é exibido em hexadecimal Considere também a partição 3. Após o cálculo, verifica-se que a partição 3 corresponde à partição 3.
ahO resultado do comando é:
fe00 ffff fe82 ffff 14c0 012a e7fa 001d
A primeira é a marca de partição,
00h, na imagem acima, você pode ver que não é uma partição de inicialização (
80HA marcada é a partição de boot) e o tipo de partição? para
82H,e
arquivoOs resultados da exibição são consistentes. Agora vamos prestar atenção ao tamanho da partição, isto é.
arquivoO número de setores no resultado.
$ echo ibase=10;obase=16;1959930 |
Apenas corresponde
e7fa 001d, considere da mesma forma os resultados da partição de inicialização:
0180 0001 fe83 ffff 003f 0000 1481 012a
Etiqueta de partição:
80H, que apenas reflete que esta partição é uma partição de inicialização, seguida pela situação do setor do disco onde a partição de inicialização está localizada, 010100, ou seja, 1 lado, 0 trilhas e 1 setor. Outros conteúdos podem ser comparados e analisados.
Considerando a restrição de tempo, consulte as informações abaixo ou o manual relevante do sistema para obter mais detalhes.
Suplemento: Ao instalar o sistema, você pode usar
fdisk,
cfdiskAguarde o comando para particionar. Se quiser inicializar a partir de uma determinada partição, você precisa digitar
80Htag, por exemplo, via
cfdiskDefina uma partição para
inicializávelpara alcançar.
Referências:
Dentro do processo de inicialização do Linux
Desenvolva seu próprio sistema operacional: inicializando
Introdução à partição de disco Redhat9
Partição Linux COMO FAZER
Antes da introdução dos volumes lógicos, os tipos de partição e os tipos de sistema de arquivos eram tratados quase igualmente. O processo de configuração do tipo de partição era o processo de formatação da partição e estabelecimento do tipo de sistema de arquivos correspondente.
A seguir, apresentamos principalmente como estabelecer o relacionamento entre partições e tipos de sistemas de arquivos, ou seja, como formatar partições como tipos de sistemas de arquivos especificados.
Vamos primeiro dar uma olhada nos tipos comuns de sistemas de arquivos no Linux (se quiser ver todos os tipos de arquivos suportados pelo Linux, você pode usar
fdiskcomandando
eucomando para visualizar ou passar
homem fsPara visualizar, você também pode usar
/proc/sistemas de arquivosVerifique os tipos de sistema de arquivos suportados pelo kernel atual)
ext2,
ext3,
ext4: Esses três são os tipos comumente usados pelos sistemas de arquivos raiz do Linux.
trocar: Este é um sistema de arquivos usado para implementar a memória virtual do Linux. Durante a instalação, geralmente é necessário criar uma partição especial e formatá-la como.
trocarsistema de arquivos (se você quiser adicionar mais
trocarPara particionamento, você pode consultar os materiais de referência nesta seção para se familiarizar com
dd,
mkswap,
trocar,
trocaUso de outros comandos)
processo: Este é um sistema de arquivos relativamente especial que existe como uma interface entre o kernel e os usuários e é construído na memória (pode ser acessado através
gatoVisualização de comando
/procOs arquivos no sistema podem até ser modificados por
/proc/sysO arquivo abaixo pode ajustar a configuração do kernel em tempo real. A premissa atual é que você precisa fazer isso.
processoNa montagem do sistema de arquivos:
montar -t proc proc /proc
Além dos tipos de sistema de arquivos acima, o suporte ao Linux inclui
vfat,
iso,
xfs,
nfsEntre vários tipos comuns de sistemas de arquivos, no Linux, você pode visualizar e operar livremente sistemas de arquivos usados por outros sistemas operacionais, como o Windows.
Então, como você estabelece a associação entre discos e esses tipos de sistemas de arquivos? formatar.
O processo de formatação é na verdade o processo de reorganização da partição, que pode ser
mkfsComando para alcançar, é claro, você também pode passar
fdiskAguarde a implementação do comando. Aqui apresentamos apenas
mkfs,
mkfsEle pode ser usado para formatar uma partição existente, mas não pode executar operações de partição (se quiser particionar e formatar um disco, você pode usar
fdisk). Após a formatação, os dados na partição correspondente são organizados por um tipo especial de sistema de arquivos.
Por exemplo: colocar
/dev/sda9A partição é formatada como
ext3sistema de arquivos.
$ sudo -s# mkfs -t ext3 /dev/sda9
Se quiser listar os tipos de sistema de arquivos de cada partição, você pode usar
fdisk -lOrdem.
Consulte os seguintes materiais para obter mais informações.
Referências:
Etapas para carregar partição swap no Linux
Produção e gravação de arquivos de imagem ISO no Linux
Explicação da partição do disco RAM:[1],[2]
Guia do implementador avançado de sistema de arquivos
A seção anterior formatou diretamente a partição como um determinado tipo de sistema de arquivos, mas considerando a necessidade de expandir novos dispositivos de armazenamento, os desenvolvedores introduziram volumes lógicos entre o sistema de arquivos e a partição. Levando em consideração as restrições de tempo, não entrarei em detalhes aqui. Consulte a referência: Explicação detalhada do gerenciamento de volume lógico do Linux.
O que o sistema de arquivos finalmente apresenta é uma estrutura visual, que pode ser apresentada usando comandos como ls, find e tree. É como uma “árvore” invertida, e novas “árvores” podem ser montadas nos nós da árvore.
A seguir está uma breve introdução à montagem do sistema de arquivos.
Um sistema de arquivos pode ser montado através de um dispositivo (
montar) para um diretório, que é chamado de ponto de montagem. Curiosamente, no Linux, um diretório em si pode ser montado em outro diretório, e um arquivo formatado também pode ser montado por meio de um dispositivo especial.
/dev/loopmontar (por ex.
isodocumento). Além disso, no que diz respeito aos sistemas de arquivos, o Linux não apenas suporta sistemas de arquivos locais, mas também suporta sistemas de arquivos remotos (como
nfs).
A seguir apresentamos brevemente vários exemplos de montagem de sistema de arquivos.
Montando o sistema de arquivos raiz
A montagem requer permissões de root, por exemplo, montar o sistema de arquivos raiz do sistema
/dev/sda1chegar
/mnt
$ sudo -s# mount -t ext3 /dev/sda1 /mnt/
Verificar
/dev/sda1Como você pode ver pela situação de montagem, um dispositivo pode ser montado diversas vezes.
$ mount | grep sda1/dev/sda1 em / digite ext3 (rw,errors=remount-ro)/dev/sda1 em /mnt digite ext3 (rw)
Para um sistema de arquivos já montado, ele pode ser remontado para suportar atributos diferentes.
$ mount -n -o remontar, rw /
Monte um novo dispositivo
Se o kernel já suporta a interface USB, então ao inserir a unidade flash USB, você pode passar
dmesgComando para visualizar o número do dispositivo correspondente e montá-lo.
Verificar
dmesgNas últimas linhas dos resultados, encontre algo como
/dev/sdNinformações para descobrir o número do dispositivo correspondente ao disco USB
$dmesg
Supõe-se aqui que o disco USB é
vfatformato para que também possa ser usado no Windows em algumas gráficas
# mount -t vfat /dev/sdN /caminho/para/diretório_do ponto de montagem
Monte um arquivo iso ou CD
Para alguns arquivos iso ou discos em formato iso, você também pode usar
montarComando para montar.
Para arquivos iso:
# mount -t iso9660 /caminho/para/isofile /caminho/para/mountpoint_directory
Para CD:
# mount -t iso9660 /dev/cdrom /caminho/para/mountpoint_directory
Monte um sistema de arquivos remoto
# mount -t nfs remote_ip:/caminho/para/share_directory /caminho/para/local_directory
Monte um sistema de arquivos proc
#mount -t proc proc /proc
processoO sistema de arquivos é organizado na memória, mas pode ser montado em um diretório. Geralmente monte-o em
/procdiretório para que algumas ferramentas de gerenciamento e configuração do sistema possam usá-lo. Por exemplo
principalO comando o usa para analisar o uso de memória (leia
/proc/meminfoe
/proc/statetc.);
lsmodcomando através do qual obter o status do módulo do kernel (leia
/proc/módulos);
netstatcomando para obter o status da rede através dele (leia
/proc/net/deve outros documentos). Claro, ferramentas relacionadas também podem ser escritas. Além disso, ajustando
/proc/sysOs arquivos no diretório podem ajustar dinamicamente a configuração do sistema, como ir para
/proc/sys/net/ipv4/ip_forwardEscrever o número 1 no arquivo permite que o kernel suporte o encaminhamento de pacotes. (Para mais informações consulte
processoajuda,
homem``proc)
Monte um diretório
$ mount --bind /caminho/para/needtomount_directory /caminho/para/mountpoint_directory
Isso é muito interessante. Por exemplo, você pode montar um diretório no diretório raiz do serviço FTP e fornecer os recursos no diretório correspondente para que outras pessoas possam compartilhar sem copiar o conteúdo.
A montagem acima mencionada apenas, então como desinstalar? usar
quantidadeBasta seguir o comando com o endereço de origem ou ponto de montagem (dispositivo, arquivo, diretório remoto, etc.) da montagem. Por exemplo:
$ umount /caminho/para/diretório_ponto_de_montagem
ou
$ umount /caminho/para/mount_source
Se você deseja gerenciar um grande número de serviços montados com frequência, montar manualmente cada vez é uma má ideia. Você pode usá-lo agora
montararquivo de configuração
/etc/fstab,Pacote
montarOs parâmetros correspondentes são escritos como
/etc/fstabA montagem em lote pode ser realizada na coluna correspondente ao arquivo (
montar -a) e desinstalar (
quantidade -a).
/etc/fstabAs colunas são sistema de arquivos, ponto de montagem, tipo e opções relacionadas. Para mais informações consulte
fstabajuda (
homem fstab).
Referências:
Partição de disco rígido Linux e seu princípio de montagem
Olhando para o sistema de arquivos virtual Linux a partir de E/S de arquivo
Análise de código-fonte: diagrama de chamada de função de programa C de análise estática
Existem alguns diretórios básicos no sistema de arquivos Linux e vários arquivos com funções diferentes são armazenados em diretórios diferentes. Os diretórios mais básicos são
/etc,
/lib,
/dev,
/binetc., que armazenam arquivos de configuração do sistema, arquivos de biblioteca, arquivos de dispositivos e programas executáveis, respectivamente. Esses diretórios geralmente são necessários ao fazer desenvolvimento incorporado, você precisa usá-los manualmente.
caixa ocupadaAguarde as ferramentas para criar um sistema de arquivos tão básico. Aqui criamos apenas um sistema de arquivos muito simples e realizamos várias operações convencionais no sistema de arquivos para aprofundar nossa compreensão do sistema de arquivos.
ainda me lembro
ddUma ordem? Basta usá-lo para gerar um arquivo de tamanho fixo, isto é
1M(1024*1024bytes)arquivos
$ dd if=/dev/zero of=minifs bs=1024 contagem=1024
Veja os tipos de arquivo aqui
minifsé um completo
\0arquivo sem nenhuma estrutura de dados específica
$ arquivo minifsminifs: dados
ilustrar:
/dev/zeroé um dispositivo muito especial, se você lê-lo, você pode obter qualquer número de
\0.
O arquivo é então formatado em um sistema de arquivos de um tipo de arquivo especificado. (Parece incrível que os arquivos também possam ser formatados? Sim, não apenas os dispositivos podem, os arquivos também podem ser organizados em certos tipos de sistemas de arquivos, mas deve-se notar que alguns sistemas de arquivos (como
ext3) exige que o destino seja formatado para ter pelo menos
64 milhõesespaço).
$ mkfs.ext2 minifs
Verifique o tipo de arquivo neste momento.
minifsBasta pegar
ext2Formato do sistema de arquivos organizado
$ arquivo minifsminifs: dados do sistema de arquivos ext2 Linux rev 1.0
Como o arquivo é organizado por tipo de sistema de arquivos, você pode usar
montarcomando para montá-lo e usá-lo.
Por favor mude para
raizO usuário monta e passa
-o cicloopção para associá-lo a um dispositivo específico
/dev/loop
$ sudo -s# montar minifs /mnt/ -o loop
Visualize as informações do sistema de arquivos e veja apenas um arquivo de diretório
perdido + encontrado
$ ls /mnt/perdido+encontrado
Execute várias operações regulares neste sistema de arquivos, incluindo leitura, gravação, exclusão, etc. (Antes de cada operação, por favor
minifsSalvar uma cópia do arquivo para comparação Combinado com informações relevantes, você pode realizar uma análise aprofundada das alterações no sistema de arquivos causadas por várias operações, compreendendo assim em profundidade os princípios de implementação do sistema de arquivos como forma. para organizar dados, etc.)
$ cp minifs minifs.bak$ cd /mnt$ toque olá$ cd -$ cp minifs minifs-touch.bak$ od -x minifs.bak > orig.od$ od -x minifs-touch.bak > touch.od
Depois de criar um arquivo, compare as semelhanças e diferenças entre o sistema de arquivos atual e o sistema de arquivos 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
Através da comparação, descobriu-se que quando um arquivo é adicionado, a localização correspondente do sistema de arquivos muda significativamente.
$ echo olá, mundo > /mnt/olá
implementar
sincronizarcomando para garantir que os dados no cache foram gravados no disco (lembre-se da Figura 1 desta seção
cache de bufferBem, aqui está
esconderijoOs dados são gravados no disco)
$sync$ cp minifs minifs-echo.bak$ od -x minifs-echo.bak > echo.od
Depois de escrever o conteúdo do arquivo, compare as semelhanças e diferenças entre o sistema de arquivos e o anterior.
$ diff touch.od echo.od
Visualizar strings no sistema de arquivos
$ strings minifslost+foundoláhello, mundo
excluir
oláArquivo, visualizar alterações no sistema de arquivos
$ rm /mnt/hello$ cp minifs minifs-rm.bak$ od -x minifs-rm.bak > rm.od$ diff echo.od rm.od
Observando as strings no sistema de arquivos, descobrimos que o conteúdo do arquivo não foi substituído quando o arquivo foi excluído, portanto, teoricamente, o conteúdo ainda pode ser recuperado neste momento.
$ strings minifslost+foundoláhello, mundo
O texto acima demonstra apenas algumas ferramentas comuns para analisar sistemas de arquivos e analisa várias operações comuns. Se você deseja ter uma compreensão profunda dos princípios de implementação de sistemas de arquivos, familiarize-se com o uso das ferramentas acima e leia os materiais relevantes.
Referências:
Construa um mini sistema de arquivos no Linux do zero
Construa um mini sistema de arquivos no Linux com BusyBox
sistema de arquivos ext2
juntamente com
fusívelCom o surgimento do fuse, tornou-se possível desenvolver sistemas de arquivos no espaço do usuário. Se você deseja desenvolver seu próprio sistema de arquivos, é recomendável ler: Use o fuse para desenvolver seu próprio sistema de arquivos.
Em 22 de dezembro de 2007, coletei muitas informações e escrevi a estrutura geral.
A primeira minuta foi concluída na tarde do dia 28 de dezembro de 2007. Considerando as limitações de tempo, muitos detalhes não foram mais analisados. Além disso, pode haver problemas de compreensão em algumas partes.
Na noite de 28 de dezembro de 2007, algumas informações foram modificadas e o documento foi publicado oficialmente.
Nº 29, adicione uma seção sobre drivers de dispositivos e dispositivos de hardware