Como a instalação do CentOS funciona por dentro?

9

Estou tentando entender o conteúdo do arquivo de imagem ISO de uma distribuição Linux e como o processo de instalação ocorre. Aqui estou falando especificamente sobre o CentOS 6.4 em sua versão mínima.

Então o ISOLINUX é acionado e eu recebo o menu exibido. Então eu apertei instalar.

Carrega o kernel e o sistema de arquivos initrd.

Minhas perguntas são:

  1. Como é chamado o Anaconda ?

  2. Qual é a função do arquivo images / install.img? (Quem chama / monta?)

  3. O Anaconda instala Packages / *. Rpm? Se eu quisesse adicionar um, posso, e ele seria instalado?

Spredzy
fonte
@Livinglifeback - se você resumisse esse segmento como resposta, agregaria valor ao site StackExchange?
EightBitTony
1
Nota para futuros visitantes: isso, especialmente o número 3, varia de distribuição para distribuição e até na mesma distribuição. Compare, por exemplo, o instalador Ubiquity do Ubuntu e seu instalador alternativo.
strugee
1
@EightBitTony Comecei a resumir, no entanto, não acho que seria capaz de responder completamente à pergunta. Eu acho que o link pode ajudá-los a aprender mais.
precisa
@ LiveLifeback Obrigado, na verdade, me ajudou a cercar mais o problema. Ainda estou investigando para poder responder totalmente à minha própria pergunta. Quando eu puder, postarei a resposta que encontrei. Fazer a ligação foi apreciado :)
Spredzy

Respostas:

16

Sou um dos autores / mantenedores da Anaconda. Eu poderia entrar em muitos detalhes sobre como o instalador inicializa, mas tentarei ser breve.

(Observe que isso se aplica apenas ao RHEL / CentOS 6.x ou Fedora 14 e versões anteriores; o instalador foi quase completamente reescrito entre o Fedora 15, 16 e 17; portanto, as coisas estão muito diferentes agora.)

  1. Como é chamado o Anaconda?
  2. Qual é a função do arquivo images / install.img? (Quem chama / monta?)

A initrd.imgmídia de instalação é o que chamamos de imagem stage1 . Ele contém um programa chamado loader, cuja única tarefa é encontrar e carregar images/install.img.

install.imgé a imagem stage2 . É aqui que o Anaconda realmente vive - é uma imagem squashfs que contém o sistema de arquivos raiz do instalador.

Existem várias maneiras diferentes de encontrar o carregador install.img, mas quando você inicializa a partir do DVD, é simples: o carregador percebe o DVD do instalador, monta e monta images/install.imgcomo seu sistema de arquivos raiz.

Depois que a imagem stage2 é montada, o carregador inicia o Anaconda, que inicia o Xorg e coloca um shell tty2e todas essas coisas legais, e o instalador realmente inicia.

3. O Anaconda instala Packages / *. Rpm? Se eu quisesse adicionar um, posso e ele seria instalado?

Não, não basta instalar tudo lá. Ele usa o comps.xmlarquivo (in repodata/) para decidir quais grupos de pacotes estão disponíveis (e quais pacotes estão nesses grupos) - é assim que a interface do usuário de seleção de pacotes é preenchida.

Se você adicionar algo ao Packages/diretório (por exemplo, se estiver tentando criar uma imagem de DVD personalizada) e desejar que ele seja instalável, será necessário usar createrepopara regenerar o repodata/diretório. Isso permitirá que você instale seus pacotes via kickstart, pelo menos.

Se você precisar que eles apareçam na interface do usuário, precisará editar comps.xmltambém.

bosques
fonte
1

Ao inicializar a partir do CD, você obtém o gerenciador de inicialização ISOLINUX, que carrega o kernel do Linux e o ramdisk inicial. Isso inicia o Anaconda, que carrega várias partes, como o install.img. O Anaconda então cuida da instalação dos vários pacotes, etc.

A maneira mais fácil de fazer o Anaconda instalar pacotes adicionais (ou fazer configurações adicionais) é escrevendo um script de kickstart. Um script de kickstart informa ao Anaconda quais pacotes instalar, como configurar o sistema operacional e assim por diante. Para dizer ao anaconda para usar um script de kickstart específico, digite "install ks = http://example.com/my_kickstart.ks " no prompt do ISOLINUX. Ele fará o download do arquivo kickstart (de um servidor da Web neste exemplo) e o utilizará para saber quais pacotes instalar.

Mais detalhes sobre os scripts do kickstart estão disponíveis em http://fedoraproject.org/wiki/Anaconda/Kickstart

jsmith
fonte
0

Quando você inicializa o CD de instalação, ele carrega o Kernel e o initrd, como você mencionou. Isso basicamente carrega um sistema Linux mínimo na memória do seu computador. O Anaconda é executado como um serviço na inicialização e o programa é iniciado. O Anaconda encontra seus HDs e os monta como / mnt / sysimage. O Anaconda instala Packages / *. Rpm a partir do CD de instalação e você pode adicionar um RPM ao diretório Packages e re-gravar o iso, mas o Anaconda ainda não saberia que precisava ser instalado. Quanto a hackear o Anaconda para fazer o programa procurar o RPM, não tenho uma resposta.

Jeight
fonte