Linux · 6 min read · Jan 03, 2026

IHLFS: Controle Total Sobre o Que Você Está Instalando

IHLFS: Verifique O Que Você Está Instalando (E Mais)

Introdução

Como usuário do LFS (veja: Linux From Scratch), estou interessado nos pacotes instalados no meu sistema.

Uma breve introdução sobre LFS: LFS não é uma distribuição como Suse ou RedHat, a comunidade LFS visa fornecer um guia para configurar seu próprio sistema Linux. No site está descrito de forma muito detalhada como você pode construir seu próprio sistema Linux do zero. Cada pacote é instalado compilando e instalando a fonte.

Na comunidade LFS, houve investigações sobre como acompanhar os pacotes instalados. Neste momento, ainda não existe uma ferramenta desse tipo.

Jhalfs, a ferramenta mais recente para automatizar o processo de construção de um sistema LFS, tem a capacidade de usar o Paco, (veja: paco.sf.net)..

Paco é baseado no mecanismo LD_PRELOAD, a mesma técnica é usada, por exemplo, no Gentoo. Esta técnica parece promissora, mas tem algumas desvantagens sérias.

Eu estive procurando outra maneira de acompanhar o que um comando como

make install

faz no meu sistema. Eu encontrei esta solução, graças à excelente ideia de Pierre Hebert. Ele descreve em um howto na seção “Dicas” do site LFS ou em um espelho (veja: Ler Dicas Online, “TRIP, um Empacotador TRIvial para LFS (e outros sistemas linux)”) como você pode ter controle total sobre o que um comando de instalação arbitrário faz. Com isso, você pode acompanhar cada arquivo adicionado, cada modificação e arquivo ou diretório excluído. Não funciona apenas com o comando “make install” mencionado acima, mas também pode acompanhar tudo o que um comando como RMP faz.

A ferramenta IHLFS que desenvolvi é muito básica e é baseada na mesma técnica que o TRIP. Ela permite que você tenha uma prévia de como seu sistema ficará depois que você instalar arquivos ou um pacote inteiro ou qualquer coisa que você queira adicionar ao seu sistema. Quando não estiver satisfeito com a aparência das coisas - por exemplo, você quer que partes sejam instaladas em lugares diferentes - você pode sempre voltar.

O nome IHLFS significa:

Install Helper Linux From Scratch

Isso é feito criando uma cópia exata do seu sistema (uma espécie de sistema virtual). Nesta cópia, você está completamente livre para fazer o que quiser, sem absolutamente nenhum efeito para o sistema original. A qualquer momento, o usuário tem a opção de “mover” ou “limpar” as modificações do sistema virtual para o real.

Outro uso para esta técnica é criar um ambiente para um usuário, que pensa que está em um sistema real, e age dessa forma. Mas, enquanto isso, ele pode fazer o que quiser, sem causar nenhum dano ao sistema real.

Técnica básica

Isso pode soar como mágica, mas na realidade é apenas possível combinando algumas técnicas de todas as disponíveis para Linux.

Usando o sistema de arquivos Unionfs, um chroot e alguns diretórios remontados bem escolhidos, você pode configurar este sistema virtual.

Unionfs

A parte mais importante é o uso do unionfs. O Unionfs lhe dá a possibilidade de criar um sistema de arquivos, que é a união de pelo menos dois outros. Veja www.unionfs.org para mais informações. Agora, ao deixar o novo sistema de arquivos ser a união do nosso sistema de arquivos original (a raiz) em modo somente leitura, e de um sistema de arquivos temporário (o cache) em modo leitura e gravação, você terá um sistema de arquivos que parece exatamente como seu sistema de arquivos original, mas no qual você pode modificar, excluir e/ou adicionar arquivos sem fazer nada ao seu sistema original. Isso não é possível, porque a raiz está montada como somente leitura. Cada modificação é armazenada pelo unionfs no cache.

A única diferença entre o sistema original e o recém-criado é o caminho: no novo sistema, ele sempre começa com o caminho do ponto de montagem da união. É por isso que o próximo passo é necessário.

Chroot

Ao chrootar para este ponto de montagem, você entra em um ambiente que é absolutamente uma cópia do seu sistema. Você pode fazer o que quiser, até mesmo remover diretórios e arquivos cruciais. Teste! Veja até onde você pode ir antes que seu sistema fique preso.

(Re)Montagem

Uma coisa extra que você terá que fazer é (re)montar vários diretórios cruciais como /dev, /proc e /sys. Isso ocorre porque o sistema de arquivos de união não preserva os pontos de montagem existentes.

Também é recomendado remontar alguns diretórios especiais como /tmp. Este diretório é usado pelo script de configuração e pelo comando make para armazenar resultados temporários intermediários. Você não quer que o programa ihlfs registre isso como mudanças sérias. Isso também se aplica ao diretório onde a fonte é construída.

Requisitos

Claro que você precisará de uma versão recente do Linux. Procure no site os kernels que são suportados e a versão do Unionfs que você precisa. Um kernel diferente significa uma versão diferente do unionfs.

Seu kernel deve suportar o carregamento de módulos.

Além disso, uma partição com espaço suficiente para montar o cache. Neste momento, esta é uma partição separada.

Comparei o desempenho de uma construção no meu sistema normal e no sistema virtual, não vi diferença significativa.

Finalmente, o IHLFS usa comandos que devem estar em qualquer sistema Linux (como tar, chroot, modprobe, mount, bash, find, grep e bzip2).

Instalação

Baixe o pacote do meu site:

wget http://linux.bononline.nl/linux/ihlfs/src/ihlfs-1.0.tar.bz2

Descompacte o arquivo em um diretório adequado:

tar -xjf ihlfs-1.0.tar.bz2  
cd ihlfs-1.0

A instalação do ihlfs é feita através do

./install.sh

script. Ele simplesmente cria alguns diretórios e copia alguns arquivos.

Como funciona

Antes de começar, certifique-se de que o sistema de arquivos onde o cache irá, está montado. E verifique as configurações no arquivo de configuração /etc/ihlfs/ihlfs.conf. Quando tudo estiver ok, inicie o programa com:

ih-lfs

Você receberá algumas mensagens, e quando tudo estiver ok, mostrará um prompt:

/:>

Agora você pode inserir qualquer comando que desejar. Note que a união não suporta a preservação de pontos de montagem. Isso pode causar efeitos como diretórios de origem que estão montados onde você normalmente constrói seu software não estarem disponíveis.

Quando você quiser ver as mudanças até agora, digite:

list

Isso mostra um resumo das mudanças.

Quando você quiser mover todas as mudanças do cache para a raiz, digite:

flush

Este comando também cria um backup dos arquivos e diretórios que serão sobrescritos, modificados ou excluídos e um backup de tudo que será instalado.

Remover todas as mudanças é feito através de:

clean

Finalmente, parar a sessão é feito com:

quit ou exit

Exemplos

Aqui estão alguns exemplos simples. Adicione um arquivo:

~:>touch /tmp/test4ihlfs  
~:>list

dá no visualizador mcview:

Resumo.
--------
Não foram encontrados arquivos e/ou diretórios adicionados, excluídos, modificados ou sobrescritos!

Isso era esperado, o diretório /tmp está contornando a união.
Agora crie um arquivo em outro lugar:

~:>touch /var/tmp/test4ihlfs  
~:>list
Resumo.
--------
Arquivos adicionados.
------------
/var/tmp/test4ihlfs

Contato

Se você encontrar bugs ou tiver uma ideia de como as coisas poderiam ser feitas de uma maneira melhor, por favor, me avise! Meu endereço de e-mail é stef at bononline dot nl. Mas antes de você ir mais longe, eu gostaria de dizer que sei que a maneira como programei as coisas pode não ser sempre a mais eficaz. Eu fiz isso deliberadamente. Quando se trata de estilo de programação, eu prefiro fácil leitura em vez de eficácia.

TODO

Este pacote ainda não está finalizado. Qualquer um que saiba algo sobre gerenciadores de pacotes pode apontá-los:

  • colocar a escolha do editor no arquivo de configuração

  • agora o ihlfs tem apenas um modo: interativo. Ele cria um ambiente para o usuário. Um modo de linha de comando como:

ih-lfs --command "make install"

também deve ser possível.

  • adicionar flags para identificar o nome do pacote e a versão que está sendo instalada.

  • adicionar alguns exemplos com vários comandos

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.