G.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:

G.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.

O CD de boot de criação de imagens possui um diretório chamado /addfiles no qual você pode adicionar arquivos. Eles devem ser colocados sob esse diretório com seus próprios nomes de diretório. 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, 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.

G.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 os procedimentos exibidos abaixo, verifique se 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.

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

Adicionando ao Initrd

Para modificar o sistema de arquivos initrd:

  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:

    • 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/i386/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:

    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
    
    cd work
    
  6. Para extrair initrd para o diretório /work, digite:

    cpio -idmuv <../initrd >/dev/null 2>&1
    
  7. Para copiar seus arquivos ou driver atualizado para o sistema de arquivos initrd extraído, digite:

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

    onde 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 remontar o sistema de arquivos initrd, digite:

    find . | cpio --quiet -o -H newc > ../initrd
    
    cd ..
    
  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:

    • 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/i386/loader no CD de boot.

Adicionando à raiz

Para modificar o sistema de arquivos root:

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

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

    • No caso do PXE, copie /tftp/boot/root para o diretório de trabalho da estação de trabalho Linux.

    • No caso do CD, extraia a raiz do diretório /boot/i386/ no CD de inicialização e, em seguida, copie a raiz extraída para o diretório de trabalho da estação de trabalho do Linux.

  3. Para renomear root como root.gz, digite:

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

    gunzip root.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 raiz no diretório /work, digite:

    mount -o loop root work
    
  7. Faça as mudanças desejadas no diretório /work.

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

    umount work
    
  9. Para compactar o novo arquivo raiz, digite:

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

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

    • No caso do PXE, copie o arquivo root para o diretório /tftp/boot no servidor PXE.

    • No caso do CD, copie o arquivo root para o diretório /boot/i386/ no CD de inicialização.

G.4.3 Usando o método de arquivo driverupdate

Outra maneira de personalizar a distribuição da criação de imagens da Novell é utilizando o mecanismo de atualização do 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 boot 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 como instalar arquivos e executar um script. Para obter informações sobre os outros dois métodos, consulte “Tech Talk #3 - Spittin' Image” na Novell Connection Magazine. Consulte, especificamente, as seções “SUSE Linux Driver Update” e “Adding files to the distro 'root' file” no artigo.

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, por exemplo, /work.

  2. Se estiver usando o arquivo driveupdate, faça download do arquivo driveupdate.tgz para o diretório /work e, em seguida, 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. Se estiver criando manualmente os diretórios, crie a estrutura de diretórios a seguir no diretório /work:

    `-- linux
        `-- suse
            |-- i386-sles10
                |-- 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 10 Patch 
    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 work/ driverupdate
    

    O arquivo CRAMFS é solicitado pela distribuição SUSE.

  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 10 Patch” seja exibido no prompt de modo de manutenção de criação de imagens 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 na Etapa 7) cria conexões virtuais no sistema de arquivos root, 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.