F.4 Modificando arquivos de recursos do ZENworks Imaging

De vez em quando, talvez você queira modificar uma distribuição de criação de imagens adicionando seus próprios arquivos. Eles podem ser scripts, arquivos de dados, programas adicionais ou drivers Linux atualizados.

É possível usar os métodos a seguir para atualizar arquivos de recursos de criação de imagens:

As seções a seguir fornecem vários métodos para modificar arquivos de recursos de criação de imagens:

F.4.1 Adicionando arquivos a um CD de boot de criação de imagens

Se você tiver arquivos para adicionar ao CD de inicialização de criação de imagens, para usá-los quando estiver criando imagens (como scripts, normalmente não módulos de drivers), poderá copiar os arquivos para o diretório /addfiles no CD de criação de imagens. Essa é uma forma fácil de inserir o script ou outros arquivos na distribuição sem modificar os sistemas de arquivos initrd ou root . Entretanto, esses arquivos não estão disponíveis durante as fases de inicialização e de carregamento do módulo.

Os arquivos devem ser colocados abaixo do diretório /addfiles no CD de inicialização de criação de imagens em seus nomes de diretório próprios. Assim, eles estarão disponíveis nessa estrutura de diretório durante o processo de criação de imagens.

Um exemplo de como você pode adicionar arquivos:

  1. Se desejar executar seu próprio script em vez do processo de criação de imagens normal, crie um arquivo de script chamado myscript.s e coloque-o no CD de boot. Por exemplo, /addfiles/bin/myscript.s.

    IMPORTANTE:O arquivo de script precisa ter terminadores de linha LF adequados, exigidos pelo Linux, que não sejam os caracteres de fim de linha CR e LF do DOS. Em outras palavras, você não pode usar o Notepad.exe para criar o script; é preciso usar um editor de texto compatível com Linux ou UNIX, como o TextPad.

  2. Para colocar a linha a seguir no arquivo settings.txt, digite:

    export IMGCMD=/bin/myscript.s
    

    Quando a criação de imagens estiver em execução, /bin/myscript.s será executado, em vez do comando normal img auto.

F.4.2 Adicionando arquivos ao sistema de arquivos initrd ou root

Este é o método preferido para atualizar arquivos de recursos de criação de imagens e deve ser executado em um ambiente Linux.

Antes de executar o procedimento exibido abaixo, certifique-se de que criou cópias de backup de quaisquer arquivos que planeje mudar, especialmente o arquivo /srv/tftp/boot/initrd. Se desejar mudar os arquivos em um CD de criação de imagens, será preciso um editor ISO ou algum outro processo para extrair e substituir o arquivo que está no arquivo de imagem bootcd.iso.

IMPORTANTE:Ao atualizar ou adicionar arquivos e drivers Linux nos sistemas de arquivos initrd ou root, documente as mudanças feitas. Quando você recebe arquivos de recursos atualizados da Novell, eles não contêm suas mudanças personalizadas. Se a versão de kernel mudou com os arquivos de recursos mais recentes da Novell, os drivers anteriormente adicionados precisarão ser atualizados através da obtenção de uma nova versão do fabricante ou da recompilação do driver usando a origem correta da versão de kernel do Linux.

Você pode usar o seguinte procedimento para o sistema de arquivos root apenas substituindo “initrd” por “root” nas etapas. Entretanto, os drivers do Linux devem sempre ser colocados no sistema de arquivos initrd e não no sistema de arquivos root.

Para adicionar arquivos ao sistema de arquivos root, você também pode usar o método do arquivo driverupdate, descrito na Seção F.4.3, Usando o método de arquivo driverupdate.

Para modificar o sistema de arquivos initrd ou root:

  1. Usando um dispositivo Linux, crie um diretório de trabalho e alterne para esse diretório.

  2. Para copiar o initrd do servidor PXE ou do CD de boot para o novo diretório de trabalho:

    • Para o PXE, copie \tftp\boot\initrd para o diretório da estação de trabalho Linux.

    • Para o CD, extraia initrd do diretório \boot\loader no CD de inicialização e depois copie o initrd extraído para o diretório de trabalho da estação de trabalho do Linux.

  3. Para renomear initrd para initrd.gz, digite:

    mv initrd initrd.gz
    
  4. Para descompactar o arquivo initrd.gz, digite:

    gunzip initrd.gz
    
  5. Para criar outro diretório de trabalho para uso como ponto de montagem nas etapas subseqüentes, digite:

    mkdir work
    
  6. Para montar o sistema de arquivos initrd no diretório /work, digite:

    mount -o loop initrd work
    
  7. Para copiar seus arquivos ou driver atualizado para o sistema de arquivos initrd montado, digite:

    cp /your_path/module.ko work/lib/modules/2.6.5-override-default/initrd
    

    em que seu_caminho é o caminho para o arquivo módulo.ko e módulo é o nome do módulo.

    Outros arquivos a serem incluídos no sistema de arquivos initrd devem ser copiados para o diretório apropriado.

  8. Para desmontar o sistema de arquivos initrd, digite:

    umount work
    
  9. Para descompactar o novo arquivo initrd, digite:

    gzip -v9c initrd > initrd.gz
    
  10. Para renomear initrd.gz de volta para initrd, digite:

    mv initrd.gz initrd
    
  11. Para copiar o arquivo de volta:

    • Para o PXE, copie o arquivo initrd atualizado para o diretório \tftp\boot no servidor PXE.

    • Para o CD, copie o arquivo initrd atualizado para o diretório \boot\loader no CD de inicialização.

F.4.3 Usando o método de arquivo driverupdate

Outra maneira de personalizar a distribuição de imagens é utilizando o mecanismo de atualização de driver incorporado a todas as distribuições SUSE. Isso exige a modificação do arquivo chamado driverupdate localizado no diretório /srv/tftp/boot do imaging server ou na raiz ( /) de um CD de inicialização de criação de imagens.

Esse método é um pouco menos invasivo do que a modificação do sistema de arquivos initrd ou root. Você simplesmente cria um arquivo adicional que é incorporado ao sistema operacional de criação de imagens durante a inicialização.

Três tipos de operação de atualização de driver podem ser executados:

  • Instalar os módulos de kernel ou os drivers de hardware

  • Instalar arquivos e executar um script

  • Simplesmente inserir arquivos no sistema operacional

Esta seção descreve o segundo método. Para obter mais informações sobre outros métodos, consulte “Tech Talk #3 - Spittin’ Image” na Novell Connection Magazine.

O exemplo desta seção usa o programa “tree”, indisponível no momento na distribuição de imagens, e instala-o durante a inicialização.

O mecanismo de atualização de driver busca o arquivo driverupdate, que contém uma estrutura de diretórios que reproduz a estrutura de diretórios do sistema operacional após a inicialização de um dispositivo com a distribuição do ZENworks. Se estiver presente, o linuxrc fará seu download durante a inicialização e o incorporará dinamicamente ao sistema operacional.

O driverupdate é um arquivo que pode fazer parte de qualquer tipo de sistema de arquivos, como o EXT3 ou o REISER. Para simplificar, usaremos o sistema de arquivos CRAMFS em nosso exemplo.

Para inserir o programa tree no arquivo driverupdate:

  1. Criar um diretório de trabalho no imaging server, como /work.

  2. (Condicional) Se você estiver usando o arquivo driverupdate, faça download do arquivo driverupdate.tgz para o diretório /work e depois modifique-o, digitando:

    mkdir work
    cd work
    wget http://www.novell.com/connectionmagazine/2005/11/download/driverupdate.tgz
    tar -xzvf driverupdate.tgz
    

    O arquivo driverupdate.tgz contém a mesma estrutura de diretórios criada na Etapa 3.

  3. (Condicional) Se você estiver criando manualmente os diretórios, crie a estrutura de diretórios a seguir no diretório /work:

    `-- dirstruct
        `-- linux
            `-- suse
                |-- i386-9.2
                    |-- dud.config
                    |-- inst-sys
                        `-- lib
                        `-- bin
                    |-- adddir.s
    

    O conteúdo do arquivo dud.config deve conter linhas semelhantes às listadas abaixo. Mantenha as palavras-chave, fornecendo seus próprios dados. Entretanto, você pode usar os valores listados:

    UpdateName:     ZENworks 7 Patch 1
    UpdateID:       a37f92556e4dd99e
    UpdatePriority: 100
    

    O arquivo adddir.s deve ser um script executável contendo estas linhas:

    echo "Processing: adddir.s" > /dev/tty3 2>&1
    # driver update: add files to inst-sys
    for i in /update/[0-9]*/inst-sys ; do
         [ -d "$i" ] && adddir "$i" /
    done
    
    # driver update: run update.pre scripts
    for i in /update/[0?9]*/install/update.pre ; do
         echo "Processing: $i" > /dev/tty3 2>&1
         [ -x "$i" ] && "$i"
    done
    
  4. Para copiar o programa tree no diretório /bin, digite:

    cp /usr/bin/tree dirstruct/linux/suse/i386-9.2/inst-sys/bin/
    
  5. Para criar o arquivo CRAMFS, digite:

    mkfs.cramfs dirstruct/ driverupdate
    
  6. Para copiar o arquivo driverupdate no servidor /srv/tftp/boot, digite:

    cp driverupdate /srv/tftp/boot
    
  7. Adicione as seguintes linhas no final do arquivo /srv/tftp/boot/settings.txt:

    # SUSE driver update
    for i in /update/[0?9]*/install/adddir.s ; do
         [ -x "$i" ] && "$i"
         rm $i
    done
    

    Isso executará o script adddir.s, que cria conexões virtuais para todos os novos arquivos que estiverem sendo copiados.

    Essas linhas talvez já estejam presentes no arquivo settings.txt.

  8. Reinicialize o dispositivo habilitado para PXE.

    É necessário que o texto “ZENworks 7 Patch 1” seja exibido no prompt bash após a inicialização do sistema operacional.

  9. Execute o programa tree.

Todos os arquivos colocados no arquivo driverupdate agora estarão no diretório /update do sistema operacional após a inicialização. Depois, o script adddir.s(ou o código que você adicionou ao arquivo settings.txt em Etapa 7) cria conexões virtuais no sistema de arquivos raiz, que aponta para os arquivos correspondentes na estrutura de diretórios /update. Para verificar isso, execute:

/# which tree
/bin/tree
/# ll /bin/tree
lrwxrwxrwx  1 root root 29 Aug 31 21:45 /bin/tree -> /update/000/inst-sys/bin/tree

Se quiser simplesmente incluir um novo driver de hardware ou módulo kernel no sistema operacional de criação de imagens, um processo mais fácil é o de copiar o arquivo .ko para o diretório /dirstruct/linux/suse/i386-9.2/modules/. Em seguida, o sistema operacional de criação de imagens carregará automaticamente qualquer arquivo .ko localizado nesse diretório.