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:
Esse método é discutido nesta seção.
As seções a seguir fornecem vários métodos para a modificação dos arquivos de recurso de criação de imagens:
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:
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.
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.
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:
Usando um dispositivo Linux, crie um diretório de trabalho e alterne para esse diretório.
Para copiar initrd do servidor PXE ou do CD de boot para o novo diretório de trabalho:
Para renomear initrd para initrd.gz, digite:
cp initrd initrd.gz
Para descompactar o arquivo initrd.gz, digite:
gunzip initrd.gz
Para criar outro diretório de trabalho a ser usado como ponto de montagem nas etapas seguintes, digite:
mkdir work
Para montar o sistema de arquivos initrd no diretório /work, digite:
mount -o loop initrd work
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.
Para desmontar o sistema de arquivos initrd, digite:
umount work
Para compactar o novo arquivo initrd, digite:
gzip -v9c initrd > initrd.gz
Para renomear initrd.gz novamente para initrd, digite:
cp initrd.gz initrd
Para copiar o arquivo de volta à localização original:
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:
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:
Crie um diretório de trabalho no imaging server, por exemplo, /work.
(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.
(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
Para copiar o programa tree para o 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 dirstruct/ driverupdate
Para copiar o arquivo driverupdate para /srv/tftp/boot, digite:
cp driverupdate /srv/tftp/boot
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.
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.
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.