Ir ao conteúdo
  • Cadastre-se

Recommended Posts

Passos para construir o pacote no Fedora e derivados (estou usando o CentOS 7). Olhei com mais calma o pacote oficial e ele também não roda o daemon como root. As diferenças principais deste aqui é o uso exclusivo do systemd, o local onde os binários são instalados (/opt), o local dos dados, incluindo a configuração, (/var/opt) e o nome do usuário criado para rodar o daemon (fahclient-cdh). O pacote chama-se fahclient-cdh e conflita com o fahclient original. Não podem ser instalados simultaneamente (não testei).

As dependências diretas dos binários são adicionadas automaticamente pelo RPM: libstdc++, libgcc, zlib, bzip2 (lib). Do pacote: shadow-utils e systemd. Os binários oficiais, usados sem modificação, são compilados no CentOS 5 (!) e rodam em qualquer Linux desde lá. Uma instalação mínima em modo texto é o suficiente.

Do systemd estamos usando KillMode=process para sinalizar apenas o processo principal FAHClient, que executa (através do FAHCoreWrapper) os binários dos "cores". Segui o init script. O binário principal roda sem ir para segundo plano, pois é desnecessário. De segurança temos três providências. A primeira é o daemon rodar como usuário normal. Depois, NoNewPrivileges=yes para prevenir escalações de privilégio e por fim PrivateTmp=yes para não expor as pastas /tmp e /var/tmp inteiras ao daemon. Existem mais recursos úteis disponíveis, porém requerem versões pós-208. Nossa referência é a versão 208 do CentOS 7. Precisa funcionar nela. Como é gerado um arquivo de log (log.txt) na pasta de dados, estou suprimindo stdout e stderr dos binários, que são captados pelo systemd e enviados para o journal, assim evitamos enviar logs para dois lugares ao mesmo tempo (menos atividade de disco). Caso o daemon seja finalizado com um exit code ou sinal anormal, será reiniciado automaticamente pelo init. A pasta de dados pertence ao grupo "adm" (propagado para as filhas via SETGID). Usuários que fizerem parte dele poderão acessar somente leitura. Liberar acesso leitura/escrita dependeria do daemon criar pastas e arquivos com permissão de escrita para o grupo, o que não é feito (open() e família são sempre chamadas com modo 644/755). Pelo umask não podemos adicionar bits, apenas remover. :-(

Faço o pacote não deixar restos ao ser desinstalado, removendo a pasta de dados e também o usuário criado na instalação. Mensagem é exibida para alertar durante a instalação. O script auxiliar fahclient-cdh-config foi inspirado no pacote do AUR, com a adição de uma verificação de estado do SELinux e um relabel na pasta de dados caso o restorecon esteja presente. Não tenho muita certeza da necessidade disso. É que num dos meus testes o arquivo config.xml ficou com um label diferente do que deveria herdar da pasta pai; depois, não consegui reproduzir mais. Deixa assim por enquanto.

Fiz um teste rápido no openSUSE 13.2 e Mageia 4. Aparentemente tudo OK. Adeus init script! Testarei mais um pouco e, quando sentir mais firmeza no pacote, podemos pensar em disponibilizá-lo aqui já pronto.

A interface web funciona sem precisar de configuração adicional através do localhost: http://127.0.0.1:7396. Bem interessante para ver o status e ter um controle básico das funções principais.

Eu não pretendo empacotar o FAHControl. Portanto, quem usa-o, não instale este pacote aqui e fique com o oficial.

Apenas versão 64-bit provavelmente (o CentOS 7 é só 64-bit). Não vejo sentido disponibilizar versão 32-bit. x86-32 já era. Aliás, rodar o Folding num processador que não suporte x86-64 deve demorar uns seis meses para terminar uma molécula. kkk

Seria bom documentar qual pacote de cada distro deve ser instalado para fazê-lo funcionar com CUDA. Não tenho ideia quais sejam.

Sugestões são bem-vindas.

Instruções

Cuidado: nunca rode o rpmbuild como root!

 

# yum -y install wget cpio rpm-build rpmdevtools redhat-rpm-config binutils$ rpmdev-setuptree$ wget https://fah.stanford.edu/file-releases/public/release/fahclient/centos-5.3-64bit/v7.4/fahclient-7.4.4-1.x86_64.rpm -O /tmp/fahclient-orig.rpm$ rpm2cpio /tmp/fahclient-orig.rpm > /tmp/fahclient-tmp.cpio$ mkdir /tmp/fah && cd /tmp/fah$ cat /tmp/fahclient-tmp.cpio | cpio -idmv --no-absolute-filenames$ cd ~$ cp -p /tmp/fah/usr/bin/* rpmbuild/SOURCES$ cp -p /tmp/fah/usr/share/doc/fahclient/* rpmbuild/SOURCES
Coloque o arquivo fahclient-cdh.spec (link abaixo) dentro da pasta ~/rpmbuild/SPECS e crie o pacote:

 

$ rpmbuild -bb rpmbuild/SPECS/fahclient-cdh.spec
O RPM estará em ~/rpmbuild/RPMS/x86_64 .

SPEC: http://fpaste.org/168981/14211444/

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

OK. Acho que já está na hora de colocar uns links aqui.

 

RPM: http://www.mediafire.com/download/1iap39qbiablht2/fahclient-cdh-7.4.4-8.x86_64.rpm

 

SRPM: http://www.mediafire.com/download/2ioixnnv7u0qjb6/fahclient-cdh-7.4.4-8.src.rpm

 

[24/06/2015] Versão -8.

 

(o SRPM só é necessário se você quiser construir o pacote aí na sua máquina, baixe apenas o primeiro se não pretender fazer isso)

 

INSTALAÇÃO

 

A instalação pode ser feita via linha de comando ou usando a ferramenta do seu ambiente desktop, como o GNOME Software.

 

1 - GNOME Software: dê duplo clique no arquivo e siga as instruções.

post-748347-0-71869400-1427925457.png

 

post-748347-0-94569900-1427925474.png

2 - Linha de comando

openSUSE:
zypper in fahclient-cdh-7.4.4-6.x86_64.rpm

Fedora/CentOS:
yum localinstall fahclient-cdh-7.4.4-6.x86_64.rpm

 

A imagem a seguir é do openSUSE 13.2.

 

post-748347-0-48668000-1427925527_thumb.

CONFIGURAÇÃO

Abra um terminal e rode como root (pode ser através do sudo) o script /opt/fahclient-cdh/fahclient-cdh-config

post-748347-0-26322300-1427925559_thumb.

Depois de digitar cada opção, aperte <Enter>. As três últimas opções podem ser deixadas em seus valores padrão simplesmente pressionando <Enter> sem colocar nada. Na passkey, use copiar/colar para facilitar.

PEQUENA AULA DE SYSTEMCTL DO TIO MARCOS

Um serviço é habilitado, ou seja, será iniciado automaticamente durante o boot, usando

systemctl enable blabla.service

e é desabilitado com

systemctl disable blabla.service

Nota: ao habilitar um serviço, ele continuará parado até você inciá-lo manualmente ou iniciar a máquina novamente. Ao desabilitar um serviço, se ele estiver em execução, assim continuará até ser parado manualmente ou você desligar o sistema. Os estados habilitado/desabilitado e inciado/parado são independentes. De forma geral é isso. Serviços ativados por soquete comportam-se de maneira diferente, mas não é o caso aqui.

Um serviço é iniciado com

systemctl start blabla.service

e parado com

systemctl stop blabla.service

Serviços podem ser iniciados sem precisarem estar habilitados. Não existe problema. Serviços em execução serão automaticamente parados no desligamento do sistema de forma limpa.

Para reiniciar um serviço:

systemctl restart blabla.service

Para ver o status de um serviço:

systemctl status blabla.service

post-748347-0-89397600-1427925580_thumb.

PERSONALIZANDO AS OPÇÕES DE LINHA DE COMANDO DO DAEMON
(provavelmente você não precise mexer nisso!)

Edite o arquivo /etc/sysconfig/fahclient-cdh e reinicie o serviço fahclient-cdh.service.

post-748347-0-88476400-1427925592_thumb.

Usuários membros do grupo wheel (usado pelo sudo) têm acesso somente leitura à pasta de dados /var/opt/fahclient-cdh.

post-748347-0-59365300-1427925616_thumb.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×