Os dispositivos de bloco são completamente separados dos dispositivos de caracteres. O fato de os números maior / menor do dispositivo serem iguais significa nada: você pode pensar no bit de dispositivo de bloco / caractere como um bit extra e mais significativo nos números de dispositivos.
Conceitualmente, os números dos dispositivos são índices na grande tabela de dispositivos do kernel. Historicamente, costumava haver uma tabela para dispositivos de caracteres e outra para dispositivos de bloco. Eu acho que Linus Torvalds considera essa divisão apenas como um artefato histórico e pode querer literalmente tratar o bit de dispositivo de bloco / caractere como apenas um dígito binário extra para o número do dispositivo. Mas, por enquanto, alguns softwares antigos presumem que qualquer sistema semelhante ao Unix possui dispositivos de bloco e dispositivos de caracteres e que suas naturezas são fundamentalmente diferentes e, assim, alguma aparência deste design antigo permanecerá.
Os dispositivos /dev/ram*
são definidos na configuração do kernel com as opções CONFIG_BLK_DEV_RAM*
de tempo de compilação:
- CONFIG_BLK_DEV_RAM determina se esses dispositivos são integrados ao kernel, compilados como um módulo (
brd.ko
) ou completamente omitidos. O Debian 9 tem isso como um módulo. - CONFIG_BLK_DEV_RAM_COUNT determina o número de dispositivos / dev / ram * a serem criados. Kernel "padrão de fábrica" é de 16 dispositivos.
- CONFIG_BLK_DEV_RAM_SIZE definirá o tamanho de cada dispositivo / dev / ram *: o kernel "padrão de fábrica" é de 4 MiB por dispositivo, o Debian 9 usa 16 MiB. Sua distribuição aparentemente usa 8 MiB.
Se o driver de disco RAM for compilado como um módulo do kernel, você poderá modificar o número e o tamanho de /dev/ram*
dispositivos usando os parâmetros do módulo.
Os dispositivos /dev/ram*
são normalmente usados pelos instaladores do Linux e assim, para permitir a configuração de algo razoavelmente semelhante a um sistema normal quando não há disco real disponível.
Eles são dispositivos de bloco baseados em RAM, então eles se comportam geralmente como discos: eles têm um tamanho finito, você pode criar sistemas de arquivos neles. Você poderia criar uma tabela de partições neles, mas não há números de dispositivos padrão alocados para partições de disco RAM. Se você precisar de um disco RAM particionado, poderá usar o comando kpartx
para contornar isso facilmente: os dispositivos de partição resultantes para /dev/ramX
normalmente receberão o nome /dev/mapper/ramXpY
. Obviamente, tudo que você armazenar nos dispositivos /dev/ram*
será perdido na reinicialização ou na perda de energia - ou quando você descarregar o módulo brd.ko
, se aplicável.
Acho que algumas distribuições (usadas?) usam os dispositivos /dev/ram*
ao criar o initramfs / initrd. (Sempre que um novo pacote do kernel é instalado, um novo arquivo initramfs é geralmente criado automaticamente. Ele não pode vir pré-empacotado, pois o arquivo initramfs precisa incluir várias configurações específicas para o seu sistema.)