Configurando LTSP 5 no Linux Mint 20.1 (Revisado – mas ainda por melhorar)

O projeto LTSP sofreu uma grande atualização e passou do LTSP 5 para LTSP 2020.
Mas um dos problemas que encontrei na nova versão é que os processos são executados nas estações e não no servidor. O que pode não ser útil no caso de uso de computadores mais antigos e com menor capacidade de processamento.
Infelizmente desde a versão 20 do Linux Mint e também nas ultimas versões do Ubuntu e na próxima versão do Debian 11 Bullseye somente a versão 2020 do LTSP está disponível.
Então vou mostrar como configurar o LTSP 5 no Linux Mint 20.1 usando pacotes do Ubuntu 18.04 Bionic e as estações usando a versão Debian 10 Buster.

Para começar o primeiro passo é aplicar todas as atualização disponíveis até o momento. Para isto execute os comandos:
apt-get update 
apt-get upgrade 
apt-get dist-upgrade 
Com o sistema já atualizado também configure um endereço de IP fixo para o seu servidor. É importante lembrar que qualquer outro servidor DHCP na rede é interessante desativar os mesmos para evitar conflitos na rede.
Eu particularmente não gosto muito da estrutura de DNS fornecida pelo systemd. Por isto vamos desativar este serviço.
systemctl disable systemd-resolved
systemctl stop systemd-resolved
rm /etc/resolv.conf

cat /etc/NetworkManager/NetworkManager.conf | grep -q "^dns=default" || {
	sed -i "s|\[main\]|\[main\]\ndns=default|" /etc/NetworkManager/NetworkManager.conf
}

systemctl restart NetworkManager
Caso tenho configurado seu IP de rede no arquivo /etc/network/interfaces também vamos configurar manualmente o dns no arquivo /etc/resolv.conf
echo "nameserver 8.8.8.8" > /etc/resolv.conf
Também vamos desativar o protocolo IPV6.
echo "net.ipv6.conf.all.disable_ipv6=1" > /etc/sysctl.d/disableipv6.conf
Para um melhor funcionamento das estações vamos remover o pacote dbus-user-session e instalar o pacote dbus-x11.
apt remove dbus-user-session
apt install dbus-x11
Agora vamos instalar os pacotes necessários para a instalação do LTSP.
apt-get -y install \
	isc-dhcp-server \
	tftpd-hpa \
	nfs-kernel-server \
	nbd-server \
	debconf-utils \
	debootstrap \
	tcpd \
	openbsd-inetd \
	ldm-server
O passo seguinte é adicionar o repositório do Ubuntu 18.04 para podermos instalar os pacotes LTSP 5 que foram removidos das versões recentes.
echo "deb http://archive.ubuntu.com/ubuntu bionic main restricted universe multiverse" > /etc/apt/sources.list.d/bionic.list
Vamos atualizar novamente a informação dos pacotes com o novo repositório.
apt-get update
Se eventualmente tiver o pacote dnsmasq instalado vamos removê-lo.
apt-get remove dnsmasq
apt-get -f install
apt-get autoremove
Agora podemos instalar os pacotes LTSP.
apt-get -y install \
   ltsp-server \
   ltsp-server-standalone \
   ltspfs
Se chegou até aqui sem erros finalmente então vamos proceder a configuração do LTSP. Eu particularmente prefiro configurar usando a arquitetura i386 que dá suporte a equipamentos mais antigos. Se não for o seu caso experimente também a versão amd64.
Para definir o uso de versão i386 nos terminais vamos editar o arquivo /etc/ltsp/ltsp-build-client.conf com o conteúdo abaixo:
ARCH="i386"
#ARCH="amd64"
MIRROR="http://deb.debian.org/debian/"
DIST="buster"
A chave para não ter erros da instalação do LTSP no Mint são a definição do mirror http://deb.debian.org/debian/ feito acima no arquivo /etc/ltsp/ltsp-build-client.conf e também criar um link simbólico na pasta ltsp-build-client. Para isto execute os comandos abaixo.
cd /usr/share/ltsp/plugins/ltsp-build-client
ln -sf Debian Linuxmint
Agora podemos completar a instalação do Servidor LTSP executando o comando ltsp-build-client.
ltsp-build-client --copy-package-cache
O parâmetro –copy-package-cache é util pois caso tenha um erro na instalação e tenha que fazer novamente os arquivos foram salvos em /var/cache/apt/archives o que evitará que se tenha que baixar os mesmos novamente.

Caso tenha executado tudo corretamente a sua instalação deve ter concluído sem erros.

Por padrão esta instalação foi feita usando o método NBD. Este modelo tem suas vantagens mas uma desvantagem que me incomoda é que toda vez que alguma modificação for feita para algum terminal editando o arquivo lts.conf uma nova imagem tem que ser gerada, o que pode ser um pouco chato pela demora. Caso prefira trabalhar no formato NFS edite o arquivo /opt/ltsp/i386/etc/ltsp/update-kernels.conf.
sed -i "s|^BOOT_METHODS=\"NBD AOE NFS\"|BOOT_METHODS=\"NFS NBD AOE\"|" /opt/ltsp/i386/usr/share/ltsp/update-kernels
	chroot /opt/ltsp/i386 /usr/share/ltsp/update-kernels
	ltsp-update-kernels
Caso tenha optado por configurar usando NFS é necessário configurar o arquivo /etc/exports. Você pode configurar assim:
/opt/ltsp	*(ro,no_root_squash,async,no_subtree_check)
Ou deixar explicito sua faixa de rede assim como no exemplo. Modifique de acordo com sua faixa de rede.
/opt/ltsp	192.168.0.0/24(ro,no_root_squash,async,no_subtree_check)
Depois de modificar o arquivo /etc/exports temos que reiniciar o serviço NFS usando o comando abaixo
/etc/init.d/nfs-kernel-server restart
Mas nada vai funcionar se não configurarmos o DHCP. Eu prefiro trabalhar com o isc-dhcp-server pra quem usa dnsmasq não vou entrar em detalhes pois nunca implementei nada usando o mesmo. Caso tenha mais de uma placa de rede no seu servidor edite o arquivo /etc/default/isc-dhcp-server como no exemplo abaixo. Nele comentei o uso do protocolo IPV6 e indiquei minha placa de rede em INTERFACESv4. Esta configuração nem sempre é necessária. Mas configurar corretamente não fará nenhum mal.
INTERFACESv4="enp0s3"
#INTERFACESv6=""
Agora vamos configurar o arquivo /etc/dhcp/dhcpd.conf adicionando ao fim do arquivo a linha abaixo.
include "/etc/ltsp/dhcpd.conf";
A instalação já terá criado um arquivo modelo em /etc/ltsp/dhcpd.conf. Mas precisamos editar o mesmo de acordo com sua rede. Veja o exemplo abaixo.
#
# Default LTSP dhcpd.conf config file.
#

authoritative;

subnet 192.168.0.0 netmask 255.255.255.0 {
    range 192.168.0.20 192.168.0.45;
    option domain-name "edeg.localnet";
    option domain-name-servers 192.168.0.1;
    option broadcast-address 192.168.0.255;
    option routers 192.168.0.1;
    next-server 192.168.0.200;
#    get-lease-hostnames true;
    option subnet-mask 255.255.255.0;
    option root-path "/opt/ltsp/i386";
    if substring( option vendor-class-identifier, 0, 9 ) = "PXEClient" {
        filename "/ltsp/i386/pxelinux.0";
    } else {
        filename "/ltsp/i386/nbi.img";
    }
}
Fique atento a linha next-server, ela deve apontar para o endereço IP do seu servidor LTSP Após tudo configurado reinicie o servidor DHCP
/etc/init.d/isc-dhcp-server restart
ou
service isc-dhcp-server restart
Ajustes para as estações devem ser feitos em /opt/ltsp/i386/etc/lts.conf. Mas eu gosto de criar um link para /etc/ltsp
cd /etc/ltsp
ln -sf /opt/ltsp/i386/etc/lts.conf  ./
Se tudo deu certo seu servidor LTSP já está funcionando corretamente.