digamos Fedora e Ubuntu?
... atualmente são sistemas operacionais systemd.
O que acontece nos sistemas operacionais systemd
o mecanismo nativo
O Systemd emprega vários tipos de unidades. .mount
arquivos de unidade instruem-no a montar volumes. .swap
arquivos de unidade instruem-no a informar o kernel sobre partições de troca. (os .service
arquivos da unidade instruem como executar serviços. E assim por diante.) Esses são os mecanismos nativos do sistema. Para promulgá-los, o próprio systemd cria processos filhos que fazem as chamadas relevantes do sistema.
Se você usar o systemctl
comando (with --all
) nesse sistema operacional systemd, ele informará sobre o carregamento.swap
unidades . Por exemplo:
dev-disk-by \ x2dpartuuid-40549710 \ x2d05.swap ativo ativo carregado / dev / disk / by-partuuid / 40549710-05
Dev-disk-by \ x2duuid-1bb589e8 \ x2d929f \ x2d4041 \ x2d81f4 \ x2dff2b339b4e2a.swap ativo carregado / dev / disk / by-uuid / 1bb589e8-929f-4041-81f4-ff2b339
dev-sda5.swap ativo carregado / dev / sda5
Ele também informará sobre as .mount
unidades.
Um administrador do sistema pode realmente escrever esses .swap
arquivos de unidade à mão, assim como xe pode escrever .service
, .socket
e outros arquivos de unidade com a mão. O systemd em si apenas procura por arquivos de unidade no sistema de arquivos. Eles são seu mecanismo nativo.
Pode-se até fazer com que systemd mostre o que há nesses arquivos de unidade e onde eles podem ser encontrados no sistema de arquivos:
$ systemctl cat dev-disk-by \\ x2duuid-1bb589e8 \\ x2d929f \\ x2d4041 \\ x2d81f4 \\ x2dff2b339b4e2a.swap
# /run/systemd/generator/dev-disk-by\x2duuid-1bb589e8\x2d929f\x2d4041\x2d81f4\x2dff2b339b4e2a.swap
# Gerado automaticamente pelo systemd-fstab-generator
[Unidade]
SourcePath = / etc / fstab
Documentação = man: fstab (5) man: systemd-fstab-generator (8)
[Troca]
O que = / dev / disk / by-uuid / 1bb589e8-929f-4041-81f4-ff2b339b4e2a
Opções = sw
$
arquivos de unidade gerados automaticamente
Pode-se escrevê-los à mão. Geralmente, porém, esses arquivos .mount
e .swap
unidades são gerados automaticamente por programas conhecidos como geradores . Dois desses geradores são systemd-fstab-generator
e systemd-gpt-auto-generator
. Ambos são executados no início do processo de auto-inicialização e em resposta a um systemctl daemon-reload
comando e (como você pode ver acima) geram uma carga inteira de arquivos de unidade em um subdiretório não documentado no Windows /run/systemd/
. O próprio systemd usa apenas os arquivos de unidade gerados .
O gerador anterior lê /etc/fstab
, reconhecendo várias extensões systemd para esse formato de arquivo. Como apontei em um comentário de resposta, tradicionalmente as partições de troca têm o tipo de montagemsw
e é assim que alguém descobrirá que outros sistemas operacionais reconhecem registros de troca nesta tabela. Mas os softwares Linux adotaram o caminho alternativo de reconhecer o tipo VFS , procurando swap
como o tipo VFS. systemd-fstab-generator
não é uma exceção aqui, e é assim que ele interpreta /etc/fstab
ao convertê-lo nos mecanismos nativos.
O último gerador processa a tabela de partição EFI que está no mesmo disco que contém a Partição do Sistema EFI, procurando entradas da tabela de partição EFI que possuem vários GUIDs do tipo de partição conhecidos . Um desses GUIDs é o GUID convencional atribuído às partições de troca do Linux; e se systemd-gpt-auto-generator
encontrar uma partição com esse GUID (que satisfaça os critérios fornecidos no systemd doco), fará uma .swap
unidade para ele; não está /etc/fstab
envolvido .
Obviamente, esse processo tem muitos efeitos colaterais. Por exemplo, como /etc/fstab
não possui chave primária na tabela, os registros podem ter campos "spec" e "file" duplicados (ou seja, "what" e "where"). No mecanismo systemd nativo, no entanto, o campo "arquivo" (ou seja, "onde") é uma chave exclusiva para .mount
unidades, incorporada aos nomes das unidades. Duas .mount
unidades não podem compartilhá-lo. Para .swap
unidades, o campo "spec" (ou seja, "what") é a chave exclusiva para unidades. Não há duas .swap
unidades que possam compartilhar isso. Portanto, nem todos os registros /etc/fstab
são necessariamente conversíveis nos mecanismos nativos e funcionarão, especialmente se as pessoas fizerem coisas como listar o mesmo ponto de montagem para dois propósitos diferentes ou listar a mesma partição de troca de duas maneiras diferentes.
Da mesma forma, como foi traduzido /etc/fstab
para o mecanismo nativo e o mecanismo nativo do systemd possui outras maneiras de ativar unidades , o comportamento é sutilmente diferente daquele dos sistemas operacionais que não são do systemd. Por .mount
padrão, uma unidade será ativada automaticamentesystemd-udevd
, mesmo após a inicialização, em resposta à aparência do dispositivo de armazenamento montado. Ou pode ser listado como um Wants=
ou Requires=
de alguns .service
ou .socket
unidade, o que significa que será (re) ativado quando estiver. Existe até RequiresMountsFor=
.
programas instaladores e a maneira systemd
Tradicionalmente, os programas de instalação do sistema operacional e o administrador do sistema após a reconfiguração do sistema têm sw
entradas gravadas no /etc/fstab
. E é assim que o nativo .mount
e as .swap
unidades acabam sendo gerados automaticamente. O utilitário de instalação / configuração "sabe" onde o arquivo de troca foi colocado, porque em sua interface com o usuário o administrador do sistema fez algum tipo de escolha e grava uma /etc/fstab
correspondência. Às vezes, essa opção é que preciso que você me faça uma partição de troca como parte da instalação. ; às vezes é apenas use a partição swap que você já encontrou no disco. (instaladores olhando para os tipos de partição também).
Mas as pessoas do sistema têm essa idéia de sistemas operacionais que se configuram automaticamente a partir de uma /etc
árvore em grande parte vazia , os chamados sistemas sem estado , e é isso que mecanismos como o gerador que lê a tabela de partições EFI. No plano das pessoas do sistema, não existem /etc/fstab
e, de fato, não existem dados de configuração persistentes /etc
, e todo esse material é deduzido do conteúdo da tabela de partições em disco , a cada inicialização e a qualquer momento systemctl daemon-reload
. Atualmente, eles estão promovendo programas de instalação de sistemas operacionais do/etc/fstab
que os que não escrevem .
No esquema tradicional, é claro que você pode realmente ter cada sistema operacional com sua própria partição de troca privada, e não fazer com que eles toquem nas partições de troca um do outro. E, de fato, se você estiver usando o hibernate em disco por meio de uma partição de swap e esperando poder fazer a inicialização múltipla em outro sistema operacional enquanto hibernado (o que é uma péssima idéia, porque é muito fácil causar corrupção no sistema de arquivos dessa maneira ), isso será necessário.
No esquema systemd, mesmo que o sistema operacional ainda não esteja como as pessoas do sistema o imaginam e "sem estado", os geradores mencionados anteriormente são executados; e, portanto, todas as partições de troca (no disco ESP / raiz) com o tipo de partição necessário são empregadas automaticamente por todos os sistemas operacionais systemd. Como eles compartilharão todas as partições de swap descobertas automaticamente, não é necessário criar uma partição de swap por sistema operacional instalado.
Leitura adicional