E.4 Modificando os arquivos de recurso do ZENworks Imaging

Ocasionalmente, talvez você queira modificar a distribuição de imagens adicionando seus próprios arquivos, que podem ser programas, scripts, arquivos de dados ou drivers Linux atualizados adicionais.

Use um destes métodos para atualizar os arquivos de recurso de criação de imagens:

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

E.4.1 Adicionando arquivos a um CD de boot do Imaging

Se tiver arquivos para adicionar a um CD de boot do Imaging, de modo a disponibilizá-los para uso quando estiver no processo real de criação de imagens (como scripts, mas normalmente não módulos de driver), você poderá copiar os arquivos para o diretório /addfiles localizado no CD. Essa é a maneira mais fácil de inserir seu script ou outros arquivos na distribuição sem modificar o sistema de arquivos initrd ou root. Entretanto, esses arquivos não estarão disponíveis durante as fases de inicialização e de carregamento de módulos.

Os arquivos devem ser inseridos sob o diretório /addfiles, no CD de boot do Imaging, em seus próprios nomes de diretório. Em seguida, eles serão disponibilizados nessa estrutura de diretórios durante o processo de criação de imagens.

Veja a seguir um exemplo de como adicionar arquivos:

  1. Se quiser executar seu próprio script em vez de usar o processo normal de criação de arquivos, crie um arquivo de script denominado myscript.s e insira-o no CD de boot. Por exemplo, /addfiles/bin/myscript.s.

    IMPORTANT:O arquivo de script deve ter os terminadores de linha LF exigidos pelo Linux, e não os caracteres de fim de linha CR e LF do DOS. Isso significa que você não pode usar o Notepad.exe para criar o script; use um editor de texto compatível com o Linux ou o UNIX, como o TextPad.

  2. Para inserir esta linha no arquivo settings.txt, digite:

    export IMGCMD=/bin/myscript.s
    

    Quando o processo de criação de imagens for processado, ele executará /bin/myscript.s, em vez de usar o comando img auto normal.

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

Esse é o método preferencial de atualização dos arquivos de recurso de criação de imagens e deve ser executado em um ambiente Linux.

Antes de executar o procedimento abaixo, verifique se você criou cópias de backup de todos os arquivos que pretende mudar, especificamente do arquivo /srv/tftp/boot/initrd. Se quiser mudar os arquivos contidos em um CD de criação de imagens, você precisará de um programa, como o winiso, ou de algum outro processo para extrair e substituir o arquivo no arquivo de imagem bootcd.iso.

IMPORTANT:Ao atualizar ou adicionar arquivos e drivers Linux no sistema de arquivos initrd ou root, documente as mudanças feitas. Quando você recebe arquivos de recurso atualizados da Novell, eles não contêm suas mudanças personalizadas. Se a versão do kernel tiver mudado como resultado dos arquivos de recurso mais recentes da Novell, os drivers adicionados anteriormente deverão ser atualizados, obtendo-se uma nova versão do fabricante ou recompilando o driver com o código-fonte correto da versão do kernel do Linux.

Você pode executar o procedimento a seguir para o sistema de arquivos root, simplesmente substituindo “initrd” por “root” nas etapas. Entretanto, os drivers Linux devem ser sempre inseridos 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 Section E.4.3, Usando o método do 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 initrd do servidor PXE ou do CD de boot para o novo diretório de trabalho:

    • No caso do PXE, copie \tftp\boot\initrd para o diretório de trabalho da estação de trabalho Linux.
    • No caso do CD, extraia initrd do diretório \boot\loader, no CD de boot, e copie o initrd extraído para o diretório de trabalho da estação de trabalho Linux.
  3. Para renomear initrd para initrd.gz, digite:

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

    gunzip initrd.gz
    
  5. Para criar outro diretório de trabalho a ser usado como ponto de montagem nas etapas seguintes, 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 o driver atualizado para o sistema de arquivos initrd montado, digite:

    cp /seu_caminho/mdulo.ko work/lib/modules/2.6.5-override-default/initrd
    

    onde seu_caminho representa o caminho do arquivo module.ko, e module é o nome do módulo.

    Os 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 compactar o novo arquivo initrd, digite:

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

    cp initrd.gz initrd
    
  11. Para copiar o arquivo de volta à localização original:

    • No caso do PXE, copie o arquivo initrd atualizado para o diretório \tftp\boot no servidor PXE.
    • No caso do CD, copie o arquivo initrd atualizado para o diretório \boot\loader no CD de boot.

E.4.3 Usando o método do 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 inclui a modificação do arquivo driverupdate, localizado no diretório /srv/tftp/boot de seu imaging server ou na raiz (/) de um CD de boot do Imaging.

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 os 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. Crie um diretório de trabalho no imaging server, por exemplo, /work.

  2. (Condicional) Se estiver usando o arquivo driverupdate, faça download do arquivo driverupdate.tgz para o diretório /work e, em seguida, extraia o arquivo 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 Step 3.

  3. (Condicional) Se estiver gerando os diretórios manualmente, crie a seguinte estrutura de diretórios sob o 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
    # atualizao de driver: add files to inst-sys
    for i in /update/[0-9]*/inst-sys ; do
         [ -d "$i" ] && adddir "$i" /
    done
    
    # atualizao de driver: 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 para o 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 para /srv/tftp/boot, digite:

    cp driverupdate /srv/tftp/boot
    
  7. Adicione estas linhas ao final do arquivo /srv/tftp/boot/settings.txt:

    # Atualizao de driver do SUSE
    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 incluídos no arquivo driverupdate agora estarão localizados sob o diretório /update do sistema operacional após a inicialização. Em seguida, o script adddir.s (ou o código adicionado ao arquivo settings.txt na Step 7) criará conexões virtuais no sistema de arquivos root que apontam para os arquivos correspondentes localizados 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 desejar simplesmente incluir um novo driver de hardware ou módulo de kernel no sistema operacional de criação de imagens, um processo mais fácil talvez seja 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.