Usando algum hardware barato em uma configuração thin-client, usamos um PXE sem disco inicializando um pequeno kernel Linux. Atualmente, leva algum tempo para inicializá-lo totalmente e estamos analisando algumas otimizações aqui. O maior problema agora é a inicialização do link de rede pelo kernel.
Durante a inicialização da ROM da Opção PXE, ela adquire um link, endereço IP e opções que o PXELinux usa para fazer a ação TFTP para carregar o kernel e um pequeno initrd. Ao carregar o kernel, ou mais especificamente o módulo do kernel Ethernet, ele recicla o link e faz uma nova negociação com o switch. Nós cronometramos isto para ser pelo menos quatro segundos no hardware que nós temos aqui. Em um ambiente corporativo, isso pode levar algum tempo adicional no switch antes que ele consiga falar com o restante da rede (por exemplo, Cisco sem portfast). Tudo isso e tem que ser percorrido duas vezes a partir do ponto um bate o botão de energia. Evitar isso pela segunda vez seria de grande valor aqui.
Resumindo: seria possível que o driver da rede Linux (ethernet) não tomasse o estado do link adquirido pelo subsistema de inicialização PXE? Além disso, se isso for válido apenas para hardware específico, eu estaria bem interessado em saber sobre isso.
editar:
O módulo jme
envolve apenas esses três parâmetros do módulo:
parm: force_pseudohp:Enable pseudo hot-plug feature manually by driver
instead of BIOS. (int)
parm: no_pseudohp:Disable pseudo hot-plug feature. (int)
parm: no_extplug:Do not use external plug signal for pseudo hot-plug. (int)
Olhando para o código-fonte, não há condições para executar a função de link de reinicialização ao inicializar o hardware. (especificamente, .ndo_open
- > jme_open
- > incondicional jme_reset_link(jme);
)
Tags ethernet pxe linux-kernel