dracut (Português)

Status de tradução:
Esse artigo é uma tradução de
dracut
. Data da última tradução: 2020-06-21. Você pode ajudar a sincronizar a tradução, se houver
alterações
na versão em inglês.
Artigos relacionados
mkinitcpio
dracut
cria uma imagem inicial usada pelo kernel para pré-carregar os módulos do dispositivo de bloco (como IDE, SCSI ou RAID) necessários para acessar o sistema de arquivos raiz. Ao instalar o
linux
, você pode escolher entre
mkinitcpio
e dracut. O dracut é usado pelo Fedora, RHEL, Gentoo e Debian, entre outros.
Você pode ler a documentação completa do projeto do dracut
na documentação do kernel
.
Instalação
Instale
o pacote
dracut
ou o pacote
dracut-git
AUR
para a versão de desenvolvimento mais recente.
Dica
Se o dracut funcionar na sua máquina
após você testá-lo
, você pode
desinstalar
o
mkinitcpio
.
Configuração
Se você deseja executar sempre o dracut com um determinado conjunto de sinalizadores, é possível salvar uma configuração especificada em um arquivo
.conf
em
/etc/dracut.conf.d/
. Por exemplo:
/etc/dracut.conf.d/myflags.conf
hostonly="yes"
compress="lz4"
add_drivers+=" i915 "
omit_dracutmodules+=" network iscsi "
Você pode ver mais opções de configuração em
dracut.conf(5)
. Descrições mais completas de cada opção podem ser encontradas em
dracut(8)
.
Opções de linha de comando do kernel
Você pode forçar o dracut a usar parâmetros de linha de comando do kernel no ambiente de initramfs. Esteja ciente de que você deve
usar o esquema de nomenclatura UUID
para especificar dispositivos de bloco.
Não é necessário especificar o dispositivo de bloco raiz para o dracut. A partir de
dracut.cmdline(7)
:
O dispositivo raiz usado pelo kernel é especificado no arquivo de configuração de inicialização na linha de comando do kernel, como sempre.
No entanto, pode ser útil definir alguns parâmetros antecipadamente e você pode ativar recursos adicionais, como solicitar parâmetros adicionais da linha de comando. Veja
dracut.cmdline(7)
para todas as opções. Aqui estão algumas opções de configuração de exemplo:
Continuar a partir de uma partição swap:
resume=UUID=80895b78-7312-45bc-afe5-58eb4b579422
Solicitar parâmetros adicionais da linha de comando do kernel:
rd.cmdline=ask
Exibir saída informativa mesmo se "quiet" estiver definido:
rd.info
As opções de linha de comando do kernel devem ser colocadas linha a linha semelhantes ao estilo
/etc/dracut.conf.d/
, em um arquivo
*.conf
em
/etc/cmdline.d/
. Por exemplo, o arquivo de opções da linha de comando do kernel pode se parecer com:
/etc/cmdline.d/myflags.conf
resume=UUID=80895b78-7312-45bc-afe5-58eb4b579422
rd.cmdline=ask
rd.info
Uso
O dracut é fácil de usar e normalmente não requer configuração do usuário, mesmo ao usar configurações não padrão, como
LVM dentro do LUKS
.
Para gerar um initramfs para o kernel em execução:
# dracut /boot/initramfs-linux.img
Para gerar um initramfs reserva, execute:
# dracut -N /boot/initramfs-linux-fallback.img
/boot/initramfs-linux.img
refere-se ao arquivo de imagem de saída. Se você estiver usando o kernel não regular, considere alterar o nome do arquivo. Por exemplo, para o kernel
linux-lts
, o arquivo de saída deve ser nomeado
/boot/initramfs-linux-lts.img
. No entanto, você pode nomear esses arquivos como desejar, desde que sua configuração do
gerenciador de boot
use os mesmos nomes de arquivo.
Sinalizadores adicionais
O sinalizador
--hostonly
cria uma imagem que contém apenas os arquivos necessários para inicializar o sistema host local, em vez de criar uma imagem genérica com mais arquivos. O uso desse sinalizador reduz o tamanho da imagem gerada, mas você não poderá usá-la em outros computadores ou alternar para um sistema de arquivos raiz diferente sem gerar uma nova imagem.
O sinalizador
--force
sobrescreve o arquivo de imagem se ele já estiver presente.
Mais sinalizadores podem ser encontrados em
dracut(8)
.
Dicas e truques
This article or section needs expansion.
Reason:
Adicionar instruções para criar uma
imagem de kernel unificada
usando a opção
--uefi
. (Discuss in
Talk:Dracut#Unified kernel image
)
Ver informações sobre a imagem gerada
Você pode visualizar informações sobre uma imagem initramfs gerada, que pode desejar visualizar em um paginador:
# lsinitrd
/caminho/para/imagem_initramfs
| less
Este comando listará os argumentos transmitidos ao dracut quando a imagem foi criada, a lista de módulos dracut incluídos e a lista de todos os arquivos incluídos.
Alterar o programa de compactação
Para reduzir o tempo gasto compactando a imagem final, você pode alterar o programa de compactação usado.
Atenção
Verifique se o seu kernel tem o suporte de descompactação escolhido compilado, caso contrário você não poderá inicializar. Você também deve ter o pacote de programa de compactação escolhido instalado.
O kernel Linux não possui suporte a initramfs compactado em zstd.
[1]
Basta adicionar qualquer uma das seguintes linhas (não várias)
à sua configuração do dracut
:
compress="cat"
compress="gzip"
compress="bzip2"
compress="lzma"
compress="xz"
compress="lzo"
compress="lz4"
gzip
é o programa de compactação padrão usado.
compress="cat"
criará o initramfs com nenhuma compatação.
Você também pode usar um programa de compactação sem suporte oficial:
compress="
programa
"
Gerar um novo initramfs na atualização de kernel
É possível gerar automaticamente novas imagens initramfs a cada atualização do kernel. As instruções aqui são para o kernel padrão
linux
, mas deve ser fácil adicionar hooks extras para outros kernels.
Dica
A página
dracut-hook
AUR
[
link quebrado
: package not found]
inclui hooks e scripts similares aos abaixo.
Como o comando para descobrir a versão do kernel é um tanto complexo, ele não funcionará por si só em um
hook do pacman
. Portanto, crie um script em qualquer lugar do seu sistema. Para este exemplo, ele será criado em
/usr/local/bin/
.
O script também copiará o novo arquivo de kernel
vmlinuz
para
/boot/
, pois os pacotes do kernel não colocam mais arquivos em
/boot/
.
[2]
/usr/local/bin/dracut-install.sh
#!/usr/bin/env bash

args=('--force' '--no-hostonly-cmdline')

while read -r line; do
	if [[ "$line" == 'usr/lib/modules/'+([^/])'/pkgbase' ]]; then
		read -r pkgbase < "/${line}"
		kver="${line#'usr/lib/modules/'}"
		kver="${kver%'/pkgbase'}"

		install -Dm0644 "/${line%'/pkgbase'}/vmlinuz" "/boot/vmlinuz-${pkgbase}"
		dracut "${args[@]}" --hostonly "/boot/initramfs-${pkgbase}.img" --kver "$kver"
		dracut "${args[@]}" --no-hostonly "/boot/initramfs-${pkgbase}-fallback.img" --kver "$kver"
	fi
done
/usr/local/bin/dracut-remove.sh
#!/usr/bin/env bash

while read -r line; do
	if [[ "$line" == 'usr/lib/modules/'+([^/])'/pkgbase' ]]; then
		read -r pkgbase < "/${line}"
		rm -f "/boot/vmlinuz-${pkgbase}" "/boot/initramfs-${pkgbase}.img" "/boot/initramfs-${pkgbase}-fallback.img"
	fi
done
Você precisa tornar os scripts
executáveis
. Se você deseja adicionar ou remover sinalizadores, você deve
adicioná-los à sua configuração do dracut
.
O próximo passo é criar
hooks do pacman
:
/etc/pacman.d/hooks/90-dracut-install.hook
[Trigger]
Type = Path
Operation = Install
Operation = Upgrade
Target = usr/lib/modules/*/pkgbase

[Action]
Description = Updating linux initcpios (with dracut!)...
When = PostTransaction
Exec = /usr/local/bin/dracut-install.sh
NeedsTargets
/etc/pacman.d/hooks/60-dracut-remove.hook
[Trigger]
Type = Path
Operation = Remove
Target = usr/lib/modules/*/pkgbase

[Action]
Description = Removing linux initcpios...
When = PreTransaction
Exec = /usr/local/bin/dracut-remove.sh
NeedsTargets
Você tem que impedir o
mkinitcpio
de criar e remover imagens initramfs também, removendo
mkinitcpio
ou com os seguintes comandos:
# ln -sf /dev/null /etc/pacman.d/hooks/90-mkinitcpio-install.hook
# ln -sf /dev/null /etc/pacman.d/hooks/60-mkinitcpio-remove.hook
Solução de problemas
Espaços nos parâmetros do kernel
O dracut não tem suporte a valores entre aspas com espaços nos
parâmetros do kernel
root=
e
resume=
. Por exemplo,
root="PARTLABEL=Arch Linux"
. Consulte o
issue 720 do dracut
.
Você precisará especificar os parâmetros usando um esquema de nomeação de dispositivo de bloco diferente como
UUID
.
Veja também
Wikipedia:dracut (software)
Gentoo:Dracut