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:
O método mais fácil é editar o arquivo settings.txt, localizado na raiz do CD de criação de imagens ou em /srv/tftp/boot, no ZENworks Imaging Server para inicialização do PXE.
Onde você estiver usando uma partição do ZENworks, poderá inicializar no modo manual ou de manutenção, montar a partição do ZENworks e, depois, copiar o settings.txt modificado e os arquivos em initrd ou em root na partição montada do ZENworks.
Outro método fácil é editar os arquivos .cfg localizados em /srv/tftp no ZENworks Imaging Server para inicialização do PXE. Esse método somente está disponível em Imaging Servers Linux, pois os arquivos de configuração são fornecidos pela versão da Novell do PXE.
Você pode modificar arquivos nos sistemas de arquivo initrd ou root, mas é preciso um ambiente Linux para executar o processo de modificação. Os arquivos necessários durante a configuração inicial (durante o tempo de processamento do linuxrc), como drivers LAN, precisam ser colocados no sistema de arquivos initrd. Outros arquivos, necessários somente depois que o arquivo de script zenworks.s assumir o controle, podem ser colocados no sistema de arquivos root (por exemplo, um script de criação de imagens) ou você pode usar o arquivo driverupdate.
Esse método é abordado nesta seção.
As seções a seguir fornecem vários métodos para modificar arquivos de recursos 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:
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.
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.
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.
Para modificar o sistema de arquivos initrd:
Usando um dispositivo Linux, crie um diretório de trabalho e alterne para esse diretório.
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.
Para renomear initrd para initrd.gz, digite:
mv initrd initrd.gz
Para descompactar o arquivo initrd.gz, digite:
gunzip initrd.gz
Para criar outro diretório de trabalho para uso como ponto de montagem nas etapas subseqüentes, digite:
mkdir work
cd work
Para extrair initrd para o diretório /work, digite:
cpio -idmuv <../initrd >/dev/null 2>&1
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.
Para remontar o sistema de arquivos initrd, digite:
find . | cpio --quiet -o -H newc > ../initrd
cd ..
Para descompactar o novo arquivo initrd, digite:
gzip -v9c initrd > initrd.gz
Para renomear initrd.gz de volta para initrd, digite:
mv initrd.gz initrd
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.
Para modificar o sistema de arquivos root:
Usando um dispositivo Linux, crie um diretório de trabalho e alterne para esse diretório.
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.
Para renomear root como root.gz, digite:
mv root root.gz
Para descompactar o arquivo root.gz, digite:
gunzip root.gz
Para criar outro diretório de trabalho para uso como ponto de montagem nas etapas subseqüentes, digite:
mkdir work
Para montar o sistema de arquivos raiz no diretório /work, digite:
mount -o loop root work
Faça as mudanças desejadas no diretório /work.
Para desmontar o sistema de arquivos raiz, digite:
umount work
Para compactar o novo arquivo raiz, digite:
gzip -v9c root > root.gz
Para renomear root.gz de volta para raiz, digite:
mv root.gz root
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.
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:
Criar um diretório de trabalho no Imaging Server, por exemplo, /work.
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.
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
Para copiar o programa tree no diretório /bin, digite:
cp /usr/bin/tree dirstruct/linux/suse/i386-9.2/inst-sys/bin/
Para criar o arquivo CRAMFS, digite:
mkfs.cramfs work/ driverupdate
O arquivo CRAMFS é solicitado pela distribuição SUSE.
Para copiar o arquivo driverupdate no servidor /srv/tftp/boot, digite:
cp driverupdate /srv/tftp/boot
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.
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.
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.