Salve Salve Pessoal!
Quando acessamos um ESXi via console, vemos que o shell dele tem uma familiaridade muito grade de comandos com um Linux, porém também vemos que não existem diversos comandos que encontramos no Linux.
O que acontece é o seguinte, o ESXi utiliza o BusyBox para execução de alguns desses comandos que você também encontra em um Linux.
Para quem não conhece o busybox, ele é um canivete suíço para dispositivos embarcados usando Linux.
O BusyBox combina pequenas versões de muitos utilitários comuns do *Unix em um único pequeno executável. Ele fornece substituições para a maioria dos utilitários que normalmente encontramos em um *Unix.
Os utilitários no BusyBox geralmente têm menos opções, no entanto, as opções incluídas fornecem a funcionalidade esperada.
Para maiores informações sobre o BusyBox acesse o link abaixo:
Mas para quê eu desejaria fazer isso?
Respondo essa pergunta no final do post! 😛
Vamos ao que interessa 😀
!!!! ISTO NÃO É SUPORTADO PELA VMWARE – FAÇA POR SUA PRÓPRIA CONTA E RISCO !!!!
Para descobrirmos quais comandos são executado pelo BusyBox no ESXi, basta executarmos o comando ls -l no diretório /sbin ou /bin.
# ls -l /sbin
ou
# ls -l /bin
Como podemos ver na imagem abaixo, vários comandos são link simbólicos para o mesmo executável.
Agora já sabemos quais comandos são na verdade executados pelo Busybox.
Vamos entrar na pasta onde se encontra o BusyBox e ver algumas informações sobre a versão do mesmo.
# cd /usr/lib/vmware/busybox/bin/
Se executarmos um ls -la veremos que existe apenas o BusyBox no diretório.
# ls -la
Se executarmos ele sem passar nenhum parâmetro, veremos algumas informações sobre ele, como a versão e os comandos disponíveis.
# ./busybox
Como podemos ver a versão atual do BusyBox é a 1.22.1 e também é exibido os comandos disponíveis nessa versão.
Como o projeto é aberto e podemos compilar nossa própria versão, com nosso próprios comandos personalizados.
Vamos compilar a nossa própria versão 😀
A versão atual do BusyBox é a 1.29.1, você precisará de um sistema operacional Linux para fazer o processo.
Como uso o Red Hat 7.5, precisei instalar pacote ncurses-devel(dependência) para realizar o procedimento.
Baixe o source do BusyBox 1.29.1.
# wget https://busybox.net/downloads/busybox-1.29.1.tar.bz2
Extraia os arquivos.
# tar -xvf busybox-1.29.1.tar.bz2
Entre na pasta do BusyBox.
# cd busybox-1.29.1
1 – Execute o comando abaixo para selecionar os pacotes desejados no BusyBox.
# make menuconfig
No meu caso deixei o padrão, mas você pode navegar entre as opções e selecionar apenas os pacotes que lhe interessam, depois selecione Save Configuration to an Alternate File.
2 – Deixe com o nome padrão e selecione OK.
3 – Selecione Exit.
4 – E salve a nova configuração.
Agora execute o make e depois o make install.
#make #make install
Pronto, seu BusyBox foi criado, como podemos ver na imagem abaixo:
OBS: Observe a versão e a quantidade de comandos disponíveis nessa nossa versão 😉
Agora só enviar para o ESXi.
Agora só substituir o BusyBox do ESXi pelo o que foi criado.
# mv busybox /usr/lib/vmware/busybox/bin/
Agora só entrar na pasta /usr/lib/vmware/busybox/bin/ e verificar a versão que estará lá.
# ./busybox
Como podemos observar já estamos usando a versão atualizada 😀
Respondendo a pergunta feita no inicio do post “Mas para quê eu desejaria fazer isso?”
Como vimos podemos criar nosso próprio BusyBox, dentro dele podemos colocar o comando/serviço que desejarmos, como por exemplo o telnet, que já veio nessa versão padrão do 1.29.1.
OBS: Existem comandos que não terão compatibilidade com o ESXi, como por exemplo: ip, free, etc. Então o ideal é você saber sua real necessidade e compilar apenas aquilo que deseja usar.
Existe uma má notícia, é que quando o sistema for reiniciado o BusyBox que acabamos de criar e enviar será substituído pela versão original do ESXi.
Podemos contornar isso, mas como falei no post anterior, isso será tema de um post dedicado.
Espero que tenham gostado e até a próxima! 😀
Seja o primeiro a comentar