/ dev contém todas as partições, então o que segura / dev?

2

Estou um pouco confuso (mesmo depois de ler este postar, sobre como funcionam partições * nix.

Pelo que entendi, sda geralmente se refere ao disco e sda1 , sda2 , etc, referem-se às primeiras, segundas e assim por diante, partições localizadas no disco. Isso parece lógico, mas também li que alguns diretórios (ou então eu pensei que fossem diretórios), são na verdade partições, como /boot/ , /var e /tmp .

Onde essas partições estão localizadas? Se sda é o disco e lsblk mostra que as únicas partições em sda são sda1 - sda8 e essas 8 partições começam do início e vão até o final do disco, onde poderiam essas outras partições existir?

  1. Os diretórios são como /boot e /var , na verdade, partições?
  2. Em caso afirmativo, onde eles estão localizados no disco em referência às partições sdaX ?
  3. Não consegui encontrar nenhuma informação sobre esses diretórios / partições do parted, fdisk ou lsblk. Como posso saber mais sobre isso na minha máquina?
  4. Se /dev/sda for o disco, então o que é / e onde está em sda ?
por Matthew Cliatt 04.06.2016 / 02:10

5 respostas

11

/dev não possui nenhuma partição. /dev é, de fato, um lugar de destaque para manter todos os nós de dispositivo . Originalmente, /dev era um diretório simples no sistema de arquivos raiz (para que os nós de dispositivo criados sobrevivessem à reinicialização do sistema). Atualmente, o sistema de arquivos virtual especial suportado pela RAM é usado pela maioria das distribuições Linux.

Não existe um padrão de qualquer tipo para ter algum sistema de arquivos em uma partição específica ou o número total de partições necessárias.

Existem várias boas práticas / padrões específicos de distribuição para colocar partes de um sistema em partições separadas.

Você pode encontrar uma instalação do Linux que ocupa uma única partição para todas as suas necessidades.

Em uma instalação com várias partições, o '/ boot' é geralmente uma partição separada para manter sua legibilidade pelo BIOS e / ou pelo carregador de boot. Além disso, alguns carregadores de inicialização e kernels têm restrições no tipo de sistema de arquivos raiz a serem usados.

O resto é com você na maioria dos casos, então você divide o disco em partições de acordo com suas necessidades (requisitos de armazenamento de dados, arquivos temporários, logs, etc.)

    
por 04.06.2016 / 02:47
3

Um arquivo ou diretório no sistema de arquivos não precisa realmente corresponder a nada no disco. Por exemplo, você pode ter um sistema de arquivos (e seus arquivos) ou parte dele existir inteiramente na memória.

Mas eles não precisam ser arquivos, pelo menos no sentido em que geralmente usamos o termo. Pense no sistema de arquivos e seus "arquivos" como uma interface abstrata. Quase todos os seus arquivos irão simplesmente corresponder a um arquivo em um disco (ou outro dispositivo de armazenamento) em algum lugar, mas teoricamente pode corresponder a qualquer coisa que possa manipular dados em um formato de fluxo. É verdade que esse tipo de coisa raramente é visto fora do diretório / dev, exceto para coisas especiais, como pipes e sockets.

Por exemplo, enquanto isso provavelmente está simplificando um pouco as coisas, pode haver uma porta no seu computador chamada / dev / someport e escrever a string "foo" nesse "arquivo" irá enviar a string "foo" pelo porta sem nunca tocar em qualquer disco.

    
por 04.06.2016 / 09:15
2

A única coisa que lembra uma partição em /dev/ é udev , que é um pseudo sistema de arquivos usado para alocação dinâmica de dispositivos, que é um recurso do kernel para tornar arquivos de dispositivos flexíveis e fáceis de usar.

O que você vê em /dev/ são arquivos de dispositivos que realmente se referem a dispositivos reais, incluindo discos rígidos ( /dev/sda ) e suas partições ( /dev/sda1 ).

As partições são montadas no que é chamado de ponto de montagem: o local onde a partição está vinculada na árvore do sistema de arquivos existente.

/ é o ponto de montagem da partição principal (raiz). /boot/ é comumente um ponto de montagem para a partição de inicialização. /var não é comumente um ponto de montagem. /tmp é comumente um sistema de arquivos tmpfs projetado especificamente para lidar com arquivos temporários na memória.

Para listar as partições montadas, use mount . Os pontos de montagem predefinidos são definidos em /etc/fstab .

    
por 04.06.2016 / 02:41
1

/boot e /var não estão necessariamente em sua própria partição, mas você pode fazê-lo ao instalar um sistema operacional * nix ... Personnaly my /home tem sua própria partição

Os dados que essas pastas realmente contêm estão localizados em partes do disco rígido real, e como eu acho que os arquivos /dev/sda* são apenas informações sobre a partição real do disco (como seu beginnig e end no disco, seu sistema de arquivos .. .)

Você não recebe informações sobre essas partições suponíveis, talvez seja apenas porque você não as possui. Você pode ter pulado esta opção enquanto instala seu Ubuntu (ou * nix).

Portanto, /dev/sda não é o disco em si, é um arquivo que descreve o disco rígido.
E / geralmente é sua partição /dev/sda2 , se você tiver uma partição de inicialização

    
por 04.06.2016 / 03:00
1

Você parece confuso.

/boot é um diretório. É possível colocar os conteúdos de /boot em uma partição diferente, mas /boot em si é um diretório normal. Não faz sentido dizer " /boot é uma partição".

É costume ter um diretório chamado /dev , que contém "nós de dispositivo", como sda , sda1 e assim por diante. Esses arquivos parecem , mas se você abrir (digamos) /dev/sda e ler bytes dele, verá os bytes brutos no primeiro disco rígido. E se você escrever, os bytes serão gravados diretamente no disco rígido (destruindo assim a tabela de partição de disco e outras informações, portanto, não tente isso!)

Existem outros nós de dispositivos; por exemplo, se você abrir o arquivo /dev/zero e ler a partir dele, não importa quantos bytes você pedir para ler, você nunca chegará ao final do arquivo e os bytes serão sempre zeros. É como se /dev/zero fosse um arquivo que contivesse infinito bytes de zeros!

É claro que /dev/zero não realmente contém bytes infinitos. Na verdade, é apenas um pequeno esboço com alguns números de códigos mágicos dizendo ao kernel Linux para falar com um driver de dispositivo específico. Da mesma forma, /dev/sda aponta para um driver diferente (aquele para discos rígidos), /dev/sr0 aponta para outro (o driver de CD-ROM) e assim por diante. (Você pode encontrar /dev/soundcard , /dev/tty3 e assim por diante.)

Eu acho que sua pergunta é basicamente "Precisamos de /dev para acessar os discos, mas o /dev está armazenado no disco, então ... wuh ?!"

Quando a partição que contém /dev estiver montada, você poderá acessar apenas /dev normalmente. Mas como chegamos a essa posição em primeiro lugar? Bem, essa é a magia negra da seqüência de inicialização do Linux. ; -)

A maneira antiga era escrever um parâmetro do kernel Linux que diz algo como root=(hd0,3) para dizer que montar a partição # 3 no disco # 0 como o sistema de arquivos raiz e continuar a partir daí. (Em particular, o kernel carrega /bin/init como processo # 1.)

A nova maneira é usar algo chamado "disco RAM inicial" ("initrd"). O jeito ainda mais novo é o "initramfs", que é sutilmente diferente de uma maneira que eu não vou aborrecê-lo agora. De qualquer forma, o seu carregador de inicialização (normalmente o GRUB) carrega o kernel Linux e initrd na memória.

Basicamente, o initrd contém uma pequena mini-versão do seu sistema operacional; contém arquivos e pastas e outras coisas. Em particular, ele contém os scripts de inicialização que sabiam onde encontrar a partição de inicialização real e monta-a para você. Uma das coisas que o initrd contém é uma pasta /dev cheia de nós de dispositivos. Eventualmente, quando os scripts de inicialização fazem suas coisas, você encontra o dispositivo de inicialização real e o monta sobre o topo do conteúdo do initrd. E a partir daí, você pode acessar seus arquivos reais normalmente.

    
por 04.06.2016 / 15:50