Acho que o syslinux pode fazer isso, mas não consigo encontrar a documentação - Lembro-me de usar o pxelinux para escolher entre os kernels de 32/64 bits.
Para o SMP, por que não apenas certificar-se de que você está usando um kernel recente o suficiente com as alternativas SMP ativadas? Dessa forma, o próprio kernel ativará / desativará o suporte ao SMP, se necessário.